@startuml class InitServiceMixin { firewall services_classes : dict } class RulesDownloaderService { services_classes : dict get_all_rules() remove_oldest_objects() } RulesDownloaderService --|> InitServiceMixin package "CISCO firewalls downloaders" { class CiscoFTDDownloaderService { CLASS_NAME : str cisco_ftd create_rule(rule: CiscoFTDPolicyPyModel) -> Optional[Rule] download_rules_from_firewall() -> List[dict] load_rules_to_database(rules: List[CiscoFTDPolicyPyModel]) -> List[Rule] } CiscoFTDDownloaderService --* RulesDownloaderService class CiscoDownloaderService { all_objects_by_context : dict create_rule(rule: models.CiscoRule) -> Rule download_rules_from_firewall() -> List[dict] get_action(rule: models.CiscoRule) -> str get_context(rule: models.CiscoRule) -> str get_description(rule: models.CiscoRule) -> str get_destinations(rule: models.CiscoRule) -> List[NetworkObject] get_enabled(rule: models.CiscoRule) -> bool get_logging(rule: models.CiscoRule) -> Optional[Logging] get_name(rule: models.CiscoRule) -> str get_parsed_data(rule: models.CiscoRule) -> dict get_path_to_rule(rule: models.CiscoRule) -> dict get_policy_name(rule: models.CiscoRule) -> str get_position(rule: models.CiscoRule) -> int get_rule_id(rule: models.CiscoRule) -> str get_services(rule: models.CiscoRule) -> List get_sources(rule: models.CiscoRule) -> List[NetworkObject] get_times(rule: models.CiscoRule) -> List[Time] get_users(rule: models.CiscoRule) -> List[User] load_rules_to_database(rules: List[dict]) -> List[Rule] } } CiscoDownloaderService --* RulesDownloaderService @enduml