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
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()
databases: list
List of databases classes.
A class is loaded if it inherits from Database
and parameters are given in config.cfg