@startuml struct CiscoCreateData { + ip: str + login: str + password: str + port: str = DEFAULT_SSH_PORT + device_name: str + device_protocol: str + manufacturer: str = CISCO_ASA_MANUFACTURER } struct CiscoAuthenticationCheckDataPyModel { + ip: str + manufacturer: NOT NEEDED - SET CISCO + login: str + password: str + port: int + device_name: str } package CiscoApp { class AsaBackendService { + {static} create_cisco_asa_insatnce(\n name: str,\n ip: str,\n user: str,\n password: str,\n enable_password: str,\n connection_type: Optional[str] = CONNECTION_CLI_TYPE,\n protocol: Optional[str] = CONNECTION_SSH_PROTOCOL,\n rsa_limit: Optional[int] = 0,\n port: Optional[str] = DEFAULT_ASA_PORT,\n description: Optional[str] = "",\n administrators: Optional[list] = None\n) } AsaBackendService --> CiscoASAUnifiedStrategy : "Использование статического\nметода create_cisco_asa_instance" class CiscoFTDRepository { + {static} create_instance(create_data: Dict) } CiscoFTDRepository --> CiscoFTDUnifiedStrategy : "Использование статического\nметода create_instance" class CiscoFTDCreateDataModel { name: str ip: str username: str password: str connection_type: str = CONNECTION_CLI_TYPE port: int = DEFAULT_FTD_PORT description: str = "" administrators: List[int] = [] } CiscoFTDCreateDataModel --> CiscoFTDRepository : "Pydantic model\nдля валидации create_data" abstract CiscoUnifiedStrategyABC{ + create_instance(cisco_create_data: Dict) + check_authentication_status(cisco_connect_data: Dict) } class CiscoFTDUnifiedStrategy { + create_instance(cisco_create_data: Dict) + check_authentication_status(cisco_connect_data: Dict) } CiscoFTDUnifiedStrategy ..|> CiscoUnifiedStrategyABC class CiscoASAUnifiedStrategy { + create_instance(cisco_create_data: Dict) + check_authentication_status(cisco_connect_data: Dict) } CiscoASAUnifiedStrategy ..|> CiscoUnifiedStrategyABC class CiscoUnifiedManager { + cisco_create_strategy: CiscoCreateStrategyABC + create_cisco_instance(cisco_create_data: Dict) + check_authentication(cisco_connect_data: Dict) } CiscoUnifiedStrategyABC --* CiscoUnifiedManager CiscoUnifiedManager --* .PingServices.FirewallAuthStatusService } package PingServices { class FirewallAuthStatusService { + manufacturer: str + ip: str + login: str + password: str + port: str + device_name: Optional[str] + device_protocol: Optional[str] } } @enduml