Edit on GitHub

bin.Databases.database

 1from abc import ABC, abstractmethod
 2
 3
 4class Database(ABC):
 5    name = None
 6    """This variable is used for configuration file
 7
 8    You must specify it in config to load an instance"""
 9
10    def __init__(self):
11        pass
12
13    @abstractmethod
14    def save(self, record):
15        pass
16
17    @abstractmethod
18    def start(self):
19        pass
20
21    @abstractmethod
22    def stop(self):
23        pass
24
25    @abstractmethod
26    def get(
27        self,
28        time_start,
29        time_end,
30        record_type=None,
31        peer_asn=None,
32        collector=None,
33        country=None,
34        asn=None,
35        prefix=None,
36        path=None,
37    ):
38        pass
39
40
41class BGPDatabases:
42    def __init__(self, database_conf=[]):
43        self.__databases = []
44        self.databases = database_conf
45        self.start()
46
47    @property
48    def databases(self) -> list:
49        """
50        List of databases classes.
51
52        A class is loaded if it inherits from `Database`
53        and parameters are given in config.cfg"""
54        return self.__databases
55
56    @databases.setter
57    def databases(self, config):
58        if config is not None:
59            for db in config:
60                for db_class in Database.__subclasses__():
61                    if db_class.name == db:
62                        self.__databases.append(db_class(config[db]))
63
64    def save(self, record):
65        for db in self.__databases:
66            db.save(record)
67
68    def start(self):
69        for db in self.__databases:
70            db.start()
71
72    def stop(self):
73        for db in self.__databases:
74            db.stop()
class Database(abc.ABC):
 5class Database(ABC):
 6    name = None
 7    """This variable is used for configuration file
 8
 9    You must specify it in config to load an instance"""
10
11    def __init__(self):
12        pass
13
14    @abstractmethod
15    def save(self, record):
16        pass
17
18    @abstractmethod
19    def start(self):
20        pass
21
22    @abstractmethod
23    def stop(self):
24        pass
25
26    @abstractmethod
27    def get(
28        self,
29        time_start,
30        time_end,
31        record_type=None,
32        peer_asn=None,
33        collector=None,
34        country=None,
35        asn=None,
36        prefix=None,
37        path=None,
38    ):
39        pass

Helper class that provides a standard way to create an ABC using inheritance.

name = None

This variable is used for configuration file

You must specify it in config to load an instance

@abstractmethod
def save(self, record):
14    @abstractmethod
15    def save(self, record):
16        pass
@abstractmethod
def start(self):
18    @abstractmethod
19    def start(self):
20        pass
@abstractmethod
def stop(self):
22    @abstractmethod
23    def stop(self):
24        pass
@abstractmethod
def get( self, time_start, time_end, record_type=None, peer_asn=None, collector=None, country=None, asn=None, prefix=None, path=None):
26    @abstractmethod
27    def get(
28        self,
29        time_start,
30        time_end,
31        record_type=None,
32        peer_asn=None,
33        collector=None,
34        country=None,
35        asn=None,
36        prefix=None,
37        path=None,
38    ):
39        pass
class BGPDatabases:
42class BGPDatabases:
43    def __init__(self, database_conf=[]):
44        self.__databases = []
45        self.databases = database_conf
46        self.start()
47
48    @property
49    def databases(self) -> list:
50        """
51        List of databases classes.
52
53        A class is loaded if it inherits from `Database`
54        and parameters are given in config.cfg"""
55        return self.__databases
56
57    @databases.setter
58    def databases(self, config):
59        if config is not None:
60            for db in config:
61                for db_class in Database.__subclasses__():
62                    if db_class.name == db:
63                        self.__databases.append(db_class(config[db]))
64
65    def save(self, record):
66        for db in self.__databases:
67            db.save(record)
68
69    def start(self):
70        for db in self.__databases:
71            db.start()
72
73    def stop(self):
74        for db in self.__databases:
75            db.stop()
BGPDatabases(database_conf=[])
43    def __init__(self, database_conf=[]):
44        self.__databases = []
45        self.databases = database_conf
46        self.start()
databases: list

List of databases classes.

A class is loaded if it inherits from Database and parameters are given in config.cfg

def save(self, record):
65    def save(self, record):
66        for db in self.__databases:
67            db.save(record)
def start(self):
69    def start(self):
70        for db in self.__databases:
71            db.start()
def stop(self):
73    def stop(self):
74        for db in self.__databases:
75            db.stop()