classVerifyAPIHttpStatus(AntaTest):""" Verifies if eAPI HTTP server is disabled globally. Expected Results: * success: The test will pass if eAPI HTTP server is disabled globally. * failure: The test will fail if eAPI HTTP server is NOT disabled globally. """name="VerifyAPIHttpStatus"description="Verifies if eAPI HTTP server is disabled globally."categories=["security"]commands=[AntaCommand(command="show management api http-commands")]@AntaTest.anta_testdeftest(self)->None:""" Run VerifyAPIHTTPStatus validation. """command_output=self.instance_commands[0].json_outputifcommand_output["enabled"]andnotcommand_output["httpServer"]["running"]:self.result.is_success()else:self.result.is_failure("eAPI HTTP server is enabled globally")
@AntaTest.anta_testdeftest(self)->None:""" Run VerifyAPIHTTPStatus validation. """command_output=self.instance_commands[0].json_outputifcommand_output["enabled"]andnotcommand_output["httpServer"]["running"]:self.result.is_success()else:self.result.is_failure("eAPI HTTP server is enabled globally")
classVerifyAPIHttpsSSL(AntaTest):""" Verifies if eAPI HTTPS server SSL profile is configured and valid. Expected results: * success: The test will pass if the eAPI HTTPS server SSL profile is configured and valid. * failure: The test will fail if the eAPI HTTPS server SSL profile is NOT configured, misconfigured or invalid. * skipped: The test will be skipped if the SSL profile is not provided. """name="VerifyAPIHttpsSSL"description="Verifies if eAPI HTTPS server SSL profile is configured and valid."categories=["security"]commands=[AntaCommand(command="show management api http-commands")]@AntaTest.anta_testdeftest(self,profile:Optional[str]=None)->None:""" Run VerifyAPIHttpsSSL validation. Args: profile: SSL profile to verify. """ifnotprofile:self.result.is_skipped(f"{self.__class__.name} did not run because profile was not supplied")returncommand_output=self.instance_commands[0].json_outputtry:ifcommand_output["sslProfile"]["name"]==profileandcommand_output["sslProfile"]["state"]=="valid":self.result.is_success()else:self.result.is_failure(f"eAPI HTTPS server SSL profile ({profile}) is misconfigured or invalid")exceptKeyError:self.result.is_failure(f"eAPI HTTPS server SSL profile ({profile}) is not configured")
@AntaTest.anta_testdeftest(self,profile:Optional[str]=None)->None:""" Run VerifyAPIHttpsSSL validation. Args: profile: SSL profile to verify. """ifnotprofile:self.result.is_skipped(f"{self.__class__.name} did not run because profile was not supplied")returncommand_output=self.instance_commands[0].json_outputtry:ifcommand_output["sslProfile"]["name"]==profileandcommand_output["sslProfile"]["state"]=="valid":self.result.is_success()else:self.result.is_failure(f"eAPI HTTPS server SSL profile ({profile}) is misconfigured or invalid")exceptKeyError:self.result.is_failure(f"eAPI HTTPS server SSL profile ({profile}) is not configured")
classVerifyAPIIPv4Acl(AntaTest):""" Verifies if eAPI has the right number IPv4 ACL(s) configured for a specified VRF. Expected results: * success: The test will pass if eAPI has the provided number of IPv4 ACL(s) in the specified VRF. * failure: The test will fail if eAPI has not the right number of IPv4 ACL(s) in the specified VRF. * skipped: The test will be skipped if the number of IPv4 ACL(s) or VRF parameter is not provided. """name="VerifyAPIIPv4Acl"description="Verifies if eAPI has the right number IPv4 ACL(s) configured for a specified VRF."categories=["security"]commands=[AntaCommand(command="show management api http-commands ip access-list summary")]@AntaTest.anta_testdeftest(self,number:Optional[int]=None,vrf:str="default")->None:""" Run VerifyAPIIPv4Acl validation. Args: number: The number of expected IPv4 ACL(s). vrf: The name of the VRF in which to check for eAPI. Defaults to 'default'. """ifnotnumberornotvrf:self.result.is_skipped(f"{self.__class__.name} did not run because number or vrf was not supplied")returncommand_output=self.instance_commands[0].json_outputipv4_acl_list=command_output["ipAclList"]["aclList"]ipv4_acl_number=len(ipv4_acl_list)not_configured_acl_list=[]ifipv4_acl_number!=number:self.result.is_failure(f"Expected {number} eAPI IPv4 ACL(s) in vrf {vrf} but got {ipv4_acl_number}")returnforipv4_aclinipv4_acl_list:ifvrfnotinipv4_acl["configuredVrfs"]orvrfnotinipv4_acl["activeVrfs"]:not_configured_acl_list.append(ipv4_acl["name"])ifnot_configured_acl_list:self.result.is_failure(f"eAPI IPv4 ACL(s) not configured or active in vrf {vrf}: {not_configured_acl_list}")else:self.result.is_success()
@AntaTest.anta_testdeftest(self,number:Optional[int]=None,vrf:str="default")->None:""" Run VerifyAPIIPv4Acl validation. Args: number: The number of expected IPv4 ACL(s). vrf: The name of the VRF in which to check for eAPI. Defaults to 'default'. """ifnotnumberornotvrf:self.result.is_skipped(f"{self.__class__.name} did not run because number or vrf was not supplied")returncommand_output=self.instance_commands[0].json_outputipv4_acl_list=command_output["ipAclList"]["aclList"]ipv4_acl_number=len(ipv4_acl_list)not_configured_acl_list=[]ifipv4_acl_number!=number:self.result.is_failure(f"Expected {number} eAPI IPv4 ACL(s) in vrf {vrf} but got {ipv4_acl_number}")returnforipv4_aclinipv4_acl_list:ifvrfnotinipv4_acl["configuredVrfs"]orvrfnotinipv4_acl["activeVrfs"]:not_configured_acl_list.append(ipv4_acl["name"])ifnot_configured_acl_list:self.result.is_failure(f"eAPI IPv4 ACL(s) not configured or active in vrf {vrf}: {not_configured_acl_list}")else:self.result.is_success()
classVerifyAPIIPv6Acl(AntaTest):""" Verifies if eAPI has the right number IPv6 ACL(s) configured for a specified VRF. Expected results: * success: The test will pass if eAPI has the provided number of IPv6 ACL(s) in the specified VRF. * failure: The test will fail if eAPI has not the right number of IPv6 ACL(s) in the specified VRF. * skipped: The test will be skipped if the number of IPv6 ACL(s) or VRF parameter is not provided. """name="VerifyAPIIPv6Acl"description="Verifies if eAPI has the right number IPv6 ACL(s) configured for a specified VRF."categories=["security"]commands=[AntaCommand(command="show management api http-commands ipv6 access-list summary")]@AntaTest.anta_testdeftest(self,number:Optional[int]=None,vrf:str="default")->None:""" Run VerifyAPIIPv6Acl validation. Args: number: The number of expected IPv6 ACL(s). vrf: The name of the VRF in which to check for eAPI. Defaults to 'default'. """ifnotnumberornotvrf:self.result.is_skipped(f"{self.__class__.name} did not run because number or vrf was not supplied")returncommand_output=self.instance_commands[0].json_outputipv6_acl_list=command_output["ipv6AclList"]["aclList"]ipv6_acl_number=len(ipv6_acl_list)not_configured_acl_list=[]ifipv6_acl_number!=number:self.result.is_failure(f"Expected {number} eAPI IPv6 ACL(s) in vrf {vrf} but got {ipv6_acl_number}")returnforipv6_aclinipv6_acl_list:ifvrfnotinipv6_acl["configuredVrfs"]orvrfnotinipv6_acl["activeVrfs"]:not_configured_acl_list.append(ipv6_acl["name"])ifnot_configured_acl_list:self.result.is_failure(f"eAPI IPv6 ACL(s) not configured or active in vrf {vrf}: {not_configured_acl_list}")else:self.result.is_success()
@AntaTest.anta_testdeftest(self,number:Optional[int]=None,vrf:str="default")->None:""" Run VerifyAPIIPv6Acl validation. Args: number: The number of expected IPv6 ACL(s). vrf: The name of the VRF in which to check for eAPI. Defaults to 'default'. """ifnotnumberornotvrf:self.result.is_skipped(f"{self.__class__.name} did not run because number or vrf was not supplied")returncommand_output=self.instance_commands[0].json_outputipv6_acl_list=command_output["ipv6AclList"]["aclList"]ipv6_acl_number=len(ipv6_acl_list)not_configured_acl_list=[]ifipv6_acl_number!=number:self.result.is_failure(f"Expected {number} eAPI IPv6 ACL(s) in vrf {vrf} but got {ipv6_acl_number}")returnforipv6_aclinipv6_acl_list:ifvrfnotinipv6_acl["configuredVrfs"]orvrfnotinipv6_acl["activeVrfs"]:not_configured_acl_list.append(ipv6_acl["name"])ifnot_configured_acl_list:self.result.is_failure(f"eAPI IPv6 ACL(s) not configured or active in vrf {vrf}: {not_configured_acl_list}")else:self.result.is_success()
classVerifySSHIPv4Acl(AntaTest):""" Verifies if the SSHD agent has the right number IPv4 ACL(s) configured for a specified VRF. Expected results: * success: The test will pass if the SSHD agent has the provided number of IPv4 ACL(s) in the specified VRF. * failure: The test will fail if the SSHD agent has not the right number of IPv4 ACL(s) in the specified VRF. * skipped: The test will be skipped if the number of IPv4 ACL(s) or VRF parameter is not provided. """name="VerifySSHIPv4Acl"description="Verifies if the SSHD agent has IPv4 ACL(s) configured."categories=["security"]commands=[AntaCommand(command="show management ssh ip access-list summary")]@AntaTest.anta_testdeftest(self,number:Optional[int]=None,vrf:str="default")->None:""" Run VerifySSHIPv4Acl validation. Args: number: The number of expected IPv4 ACL(s). vrf: The name of the VRF in which to check for the SSHD agent. Defaults to 'default'. """ifnotnumberornotvrf:self.result.is_skipped(f"{self.__class__.name} did not run because number or vrf was not supplied")returncommand_output=self.instance_commands[0].json_outputipv4_acl_list=command_output["ipAclList"]["aclList"]ipv4_acl_number=len(ipv4_acl_list)not_configured_acl_list=[]ifipv4_acl_number!=number:self.result.is_failure(f"Expected {number} SSH IPv4 ACL(s) in vrf {vrf} but got {ipv4_acl_number}")returnforipv4_aclinipv4_acl_list:ifvrfnotinipv4_acl["configuredVrfs"]orvrfnotinipv4_acl["activeVrfs"]:not_configured_acl_list.append(ipv4_acl["name"])ifnot_configured_acl_list:self.result.is_failure(f"SSH IPv4 ACL(s) not configured or active in vrf {vrf}: {not_configured_acl_list}")else:self.result.is_success()
@AntaTest.anta_testdeftest(self,number:Optional[int]=None,vrf:str="default")->None:""" Run VerifySSHIPv4Acl validation. Args: number: The number of expected IPv4 ACL(s). vrf: The name of the VRF in which to check for the SSHD agent. Defaults to 'default'. """ifnotnumberornotvrf:self.result.is_skipped(f"{self.__class__.name} did not run because number or vrf was not supplied")returncommand_output=self.instance_commands[0].json_outputipv4_acl_list=command_output["ipAclList"]["aclList"]ipv4_acl_number=len(ipv4_acl_list)not_configured_acl_list=[]ifipv4_acl_number!=number:self.result.is_failure(f"Expected {number} SSH IPv4 ACL(s) in vrf {vrf} but got {ipv4_acl_number}")returnforipv4_aclinipv4_acl_list:ifvrfnotinipv4_acl["configuredVrfs"]orvrfnotinipv4_acl["activeVrfs"]:not_configured_acl_list.append(ipv4_acl["name"])ifnot_configured_acl_list:self.result.is_failure(f"SSH IPv4 ACL(s) not configured or active in vrf {vrf}: {not_configured_acl_list}")else:self.result.is_success()
classVerifySSHIPv6Acl(AntaTest):""" Verifies if the SSHD agent has the right number IPv6 ACL(s) configured for a specified VRF. Expected results: * success: The test will pass if the SSHD agent has the provided number of IPv6 ACL(s) in the specified VRF. * failure: The test will fail if the SSHD agent has not the right number of IPv6 ACL(s) in the specified VRF. * skipped: The test will be skipped if the number of IPv6 ACL(s) or VRF parameter is not provided. """name="VerifySSHIPv6Acl"description="Verifies if the SSHD agent has IPv6 ACL(s) configured."categories=["security"]commands=[AntaCommand(command="show management ssh ipv6 access-list summary")]@AntaTest.anta_testdeftest(self,number:Optional[int]=None,vrf:str="default")->None:""" Run VerifySSHIPv6Acl validation. Args: number: The number of expected IPv6 ACL(s). vrf: The name of the VRF in which to check for the SSHD agent. Defaults to 'default'. """ifnotnumberornotvrf:self.result.is_skipped(f"{self.__class__.name} did not run because number or vrf was not supplied")returncommand_output=self.instance_commands[0].json_outputipv6_acl_list=command_output["ipv6AclList"]["aclList"]ipv6_acl_number=len(ipv6_acl_list)not_configured_acl_list=[]ifipv6_acl_number!=number:self.result.is_failure(f"Expected {number} SSH IPv6 ACL(s) in vrf {vrf} but got {ipv6_acl_number}")returnforipv6_aclinipv6_acl_list:ifvrfnotinipv6_acl["configuredVrfs"]orvrfnotinipv6_acl["activeVrfs"]:not_configured_acl_list.append(ipv6_acl["name"])ifnot_configured_acl_list:self.result.is_failure(f"SSH IPv6 ACL(s) not configured or active in vrf {vrf}: {not_configured_acl_list}")else:self.result.is_success()
@AntaTest.anta_testdeftest(self,number:Optional[int]=None,vrf:str="default")->None:""" Run VerifySSHIPv6Acl validation. Args: number: The number of expected IPv6 ACL(s). vrf: The name of the VRF in which to check for the SSHD agent. Defaults to 'default'. """ifnotnumberornotvrf:self.result.is_skipped(f"{self.__class__.name} did not run because number or vrf was not supplied")returncommand_output=self.instance_commands[0].json_outputipv6_acl_list=command_output["ipv6AclList"]["aclList"]ipv6_acl_number=len(ipv6_acl_list)not_configured_acl_list=[]ifipv6_acl_number!=number:self.result.is_failure(f"Expected {number} SSH IPv6 ACL(s) in vrf {vrf} but got {ipv6_acl_number}")returnforipv6_aclinipv6_acl_list:ifvrfnotinipv6_acl["configuredVrfs"]orvrfnotinipv6_acl["activeVrfs"]:not_configured_acl_list.append(ipv6_acl["name"])ifnot_configured_acl_list:self.result.is_failure(f"SSH IPv6 ACL(s) not configured or active in vrf {vrf}: {not_configured_acl_list}")else:self.result.is_success()
classVerifySSHStatus(AntaTest):""" Verifies if the SSHD agent is disabled in the default VRF. Expected Results: * success: The test will pass if the SSHD agent is disabled in the default VRF. * failure: The test will fail if the SSHD agent is NOT disabled in the default VRF. """name="VerifySSHStatus"description="Verifies if the SSHD agent is disabled in the default VRF."categories=["security"]commands=[AntaCommand(command="show management ssh",ofmt="text")]@AntaTest.anta_testdeftest(self)->None:""" Run VerifySSHStatus validation. """command_output=self.instance_commands[0].text_outputline=[lineforlineincommand_output.split("\n")ifline.startswith("SSHD status")][0]status=line.split("is ")[1]ifstatus=="disabled":self.result.is_success()else:self.result.is_failure(line)
classVerifyTelnetStatus(AntaTest):""" Verifies if Telnet is disabled in the default VRF. Expected Results: * success: The test will pass if Telnet is disabled in the default VRF. * failure: The test will fail if Telnet is NOT disabled in the default VRF. """name="VerifyTelnetStatus"description="Verifies if Telnet is disabled in the default VRF."categories=["security"]commands=[AntaCommand(command="show management telnet")]@AntaTest.anta_testdeftest(self)->None:""" Run VerifyTelnetStatus validation. """command_output=self.instance_commands[0].json_outputifcommand_output["serverState"]=="disabled":self.result.is_success()else:self.result.is_failure("Telnet status for Default VRF is enabled")
@AntaTest.anta_testdeftest(self)->None:""" Run VerifyTelnetStatus validation. """command_output=self.instance_commands[0].json_outputifcommand_output["serverState"]=="disabled":self.result.is_success()else:self.result.is_failure("Telnet status for Default VRF is enabled")