From 367f2f84216f6940c3338ca15b455f1872048fcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Vinot?= Date: Mon, 26 Nov 2018 14:59:53 +0100 Subject: [PATCH] new: Force usage of redis-py 3+ --- bgpranking/parser.py | 8 ++++---- bgpranking/ranking.py | 14 +++++++------- bin/start.py | 6 ++++++ 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/bgpranking/parser.py b/bgpranking/parser.py index cb71485..3c92ef3 100644 --- a/bgpranking/parser.py +++ b/bgpranking/parser.py @@ -11,7 +11,7 @@ from uuid import uuid4 from io import BytesIO import importlib -from typing import List, Union, Tuple +from typing import List import types from .libs.helpers import safe_create_dir, set_running, unset_running, get_socket_path @@ -74,9 +74,9 @@ class RawFilesParser(): else: datetime = self.datetime uuid = uuid4() - p.hmset(uuid, {'ip': ip, 'source': self.source, - 'datetime': datetime.isoformat()}) - p.sadd('intake', uuid) + p.hmset(str(uuid), {'ip': ip, 'source': self.source, + 'datetime': datetime.isoformat()}) + p.sadd('intake', str(uuid)) p.execute() self._archive(filepath) except Exception as e: diff --git a/bgpranking/ranking.py b/bgpranking/ranking.py index c47f014..137c529 100644 --- a/bgpranking/ranking.py +++ b/bgpranking/ranking.py @@ -51,13 +51,13 @@ class Ranking(): for ip_ts in self.storage.smembers(f'{day}|{source}|{asn}|{prefix}')]) py_prefix = ip_network(prefix) prefix_rank = float(len(ips)) / py_prefix.num_addresses - r_pipeline.zadd(f'{day}|{source}|{asn}|v{py_prefix.version}|prefixes', prefix_rank, prefix) + r_pipeline.zadd(f'{day}|{source}|{asn}|v{py_prefix.version}|prefixes', {prefix: prefix_rank}) if py_prefix.version == 4: asn_rank_v4 += len(ips) * self.config_files[source]['impact'] - r_pipeline.zincrby(prefixes_aggregation_key_v4, prefix, prefix_rank * self.config_files[source]['impact']) + r_pipeline.zincrby(prefixes_aggregation_key_v4, prefix_rank * self.config_files[source]['impact'], prefix) else: asn_rank_v6 += len(ips) * self.config_files[source]['impact'] - r_pipeline.zincrby(prefixes_aggregation_key_v6, prefix, prefix_rank * self.config_files[source]['impact']) + r_pipeline.zincrby(prefixes_aggregation_key_v6, prefix_rank * self.config_files[source]['impact'], prefix) v4info = self.ipasn.asn_meta(asn=asn, source='caida', address_family='v4', date=day) v6info = self.ipasn.asn_meta(asn=asn, source='caida', address_family='v6', date=day) ipasnhistory_date_v4 = list(v4info['response'].keys())[0] @@ -68,14 +68,14 @@ class Ranking(): asn_rank_v4 /= float(v4count) if asn_rank_v4: r_pipeline.set(f'{day}|{source}|{asn}|v4', asn_rank_v4) - r_pipeline.zincrby(asns_aggregation_key_v4, asn, asn_rank_v4) - r_pipeline.zadd(source_aggregation_key_v4, asn_rank_v4, asn) + r_pipeline.zincrby(asns_aggregation_key_v4, asn_rank_v4, asn) + r_pipeline.zadd(source_aggregation_key_v4, {asn: asn_rank_v4}) if v6count: asn_rank_v6 /= float(v6count) if asn_rank_v6: r_pipeline.set(f'{day}|{source}|{asn}|v6', asn_rank_v6) - r_pipeline.zincrby(asns_aggregation_key_v6, asn, asn_rank_v6) - r_pipeline.zadd(source_aggregation_key_v6, asn_rank_v4, asn) + r_pipeline.zincrby(asns_aggregation_key_v6, asn_rank_v6, asn) + r_pipeline.zadd(source_aggregation_key_v6, {asn: asn_rank_v6}) self.ranking.delete(*to_delete) r_pipeline.execute() diff --git a/bin/start.py b/bin/start.py index 69af911..0cf1f49 100755 --- a/bin/start.py +++ b/bin/start.py @@ -4,6 +4,12 @@ from subprocess import Popen from bgpranking.libs.helpers import get_homedir +import redis +import sys + +if redis.VERSION < (3, ): + print('redis-py >= 3 is required.') + sys.exit() if __name__ == '__main__': # Just fail if the env isn't set.