Adding upstream version 1.4.0.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-05-15 09:34:27 +02:00
parent dc7df702ea
commit 7996c81031
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
166 changed files with 13787 additions and 11959 deletions

View file

@ -5,182 +5,127 @@
from __future__ import annotations
from typing import Any
import sys
from typing import TYPE_CHECKING, Any
from anta.models import AntaTest
from anta.result_manager.models import AntaTestStatus
from anta.tests.cvx import VerifyActiveCVXConnections, VerifyCVXClusterStatus, VerifyManagementCVX, VerifyMcsClientMounts, VerifyMcsServerMounts
from tests.units.anta_tests import test
DATA: list[dict[str, Any]] = [
{
"name": "success",
"test": VerifyMcsClientMounts,
if TYPE_CHECKING:
from tests.units.anta_tests import AntaUnitTestDataDict
DATA: AntaUnitTestDataDict = {
(VerifyMcsClientMounts, "success"): {
"eos_data": [{"mountStates": [{"path": "mcs/v1/toSwitch/28-99-3a-8f-93-7b", "type": "Mcs::DeviceConfigV1", "state": "mountStateMountComplete"}]}],
"inputs": None,
"expected": {"result": "success"},
"expected": {"result": AntaTestStatus.SUCCESS},
},
{
"name": "success-haclient",
"test": VerifyMcsClientMounts,
(VerifyMcsClientMounts, "success-haclient"): {
"eos_data": [
{
"mountStates": [
{"path": "mcs/v1/apiCfgRedState", "type": "Mcs::ApiConfigRedundancyState", "state": "mountStateMountComplete"},
{"path": "mcs/v1/toSwitch/00-1c-73-74-c0-8b", "type": "Mcs::DeviceConfigV1", "state": "mountStateMountComplete"},
]
},
}
],
"inputs": None,
"expected": {"result": "success"},
"expected": {"result": AntaTestStatus.SUCCESS},
},
{
"name": "success-partial-non-mcs",
"test": VerifyMcsClientMounts,
(VerifyMcsClientMounts, "success-partial-non-mcs"): {
"eos_data": [
{
"mountStates": [
{"path": "blah/blah/blah", "type": "blah::blah", "state": "mountStatePreservedUnmounted"},
{"path": "mcs/v1/toSwitch/00-1c-73-74-c0-8b", "type": "Mcs::DeviceConfigV1", "state": "mountStateMountComplete"},
]
},
}
],
"inputs": None,
"expected": {"result": "success"},
"expected": {"result": AntaTestStatus.SUCCESS},
},
{
"name": "failure-nomounts",
"test": VerifyMcsClientMounts,
"eos_data": [
{"mountStates": []},
],
"inputs": None,
"expected": {"result": "failure", "messages": ["MCS Client mount states are not present"]},
(VerifyMcsClientMounts, "failure-nomounts"): {
"eos_data": [{"mountStates": []}],
"expected": {"result": AntaTestStatus.FAILURE, "messages": ["MCS Client mount states are not present"]},
},
{
"name": "failure-mountStatePreservedUnmounted",
"test": VerifyMcsClientMounts,
(VerifyMcsClientMounts, "failure-mountStatePreservedUnmounted"): {
"eos_data": [{"mountStates": [{"path": "mcs/v1/toSwitch/28-99-3a-8f-93-7b", "type": "Mcs::DeviceConfigV1", "state": "mountStatePreservedUnmounted"}]}],
"inputs": None,
"expected": {
"result": "failure",
"result": AntaTestStatus.FAILURE,
"messages": ["MCS Client mount states are not valid - Expected: mountStateMountComplete Actual: mountStatePreservedUnmounted"],
},
},
{
"name": "failure-partial-haclient",
"test": VerifyMcsClientMounts,
(VerifyMcsClientMounts, "failure-partial-haclient"): {
"eos_data": [
{
"mountStates": [
{"path": "mcs/v1/apiCfgRedState", "type": "Mcs::ApiConfigRedundancyState", "state": "mountStateMountComplete"},
{"path": "mcs/v1/toSwitch/00-1c-73-74-c0-8b", "type": "Mcs::DeviceConfigV1", "state": "mountStatePreservedUnmounted"},
]
},
}
],
"inputs": None,
"expected": {
"result": "failure",
"result": AntaTestStatus.FAILURE,
"messages": ["MCS Client mount states are not valid - Expected: mountStateMountComplete Actual: mountStatePreservedUnmounted"],
},
},
{
"name": "failure-full-haclient",
"test": VerifyMcsClientMounts,
(VerifyMcsClientMounts, "failure-full-haclient"): {
"eos_data": [
{
"mountStates": [
{"path": "blah/blah/blah", "type": "blah::blahState", "state": "mountStatePreservedUnmounted"},
{"path": "mcs/v1/toSwitch/00-1c-73-74-c0-8b", "type": "Mcs::DeviceConfigV1", "state": "mountStatePreservedUnmounted"},
]
},
}
],
"inputs": None,
"expected": {
"result": "failure",
"result": AntaTestStatus.FAILURE,
"messages": ["MCS Client mount states are not valid - Expected: mountStateMountComplete Actual: mountStatePreservedUnmounted"],
},
},
{
"name": "failure-non-mcs-client",
"test": VerifyMcsClientMounts,
"eos_data": [
{"mountStates": [{"path": "blah/blah/blah", "type": "blah::blahState", "state": "mountStatePreservedUnmounted"}]},
],
"inputs": None,
"expected": {"result": "failure", "messages": ["MCS Client mount states are not present"]},
(VerifyMcsClientMounts, "failure-non-mcs-client"): {
"eos_data": [{"mountStates": [{"path": "blah/blah/blah", "type": "blah::blahState", "state": "mountStatePreservedUnmounted"}]}],
"expected": {"result": AntaTestStatus.FAILURE, "messages": ["MCS Client mount states are not present"]},
},
{
"name": "failure-partial-mcs-client",
"test": VerifyMcsClientMounts,
(VerifyMcsClientMounts, "failure-partial-mcs-client"): {
"eos_data": [
{
"mountStates": [
{"path": "blah/blah/blah", "type": "blah::blahState", "state": "mountStatePreservedUnmounted"},
{"path": "blah/blah/blah", "type": "Mcs::DeviceConfigV1", "state": "mountStatePreservedUnmounted"},
]
},
}
],
"inputs": None,
"expected": {
"result": "failure",
"result": AntaTestStatus.FAILURE,
"messages": ["MCS Client mount states are not valid - Expected: mountStateMountComplete Actual: mountStatePreservedUnmounted"],
},
},
{
"name": "success-enabled",
"test": VerifyManagementCVX,
"eos_data": [
{
"clusterStatus": {
"enabled": True,
}
}
],
(VerifyManagementCVX, "success-enabled"): {
"eos_data": [{"clusterStatus": {"enabled": True}}],
"inputs": {"enabled": True},
"expected": {"result": "success"},
"expected": {"result": AntaTestStatus.SUCCESS},
},
{
"name": "success-disabled",
"test": VerifyManagementCVX,
"eos_data": [
{
"clusterStatus": {
"enabled": False,
}
}
],
(VerifyManagementCVX, "success-disabled"): {
"eos_data": [{"clusterStatus": {"enabled": False}}],
"inputs": {"enabled": False},
"expected": {"result": "success"},
"expected": {"result": AntaTestStatus.SUCCESS},
},
{
"name": "failure-invalid-state",
"test": VerifyManagementCVX,
"eos_data": [
{
"clusterStatus": {
"enabled": False,
}
}
],
(VerifyManagementCVX, "failure-invalid-state"): {
"eos_data": [{"clusterStatus": {"enabled": False}}],
"inputs": {"enabled": True},
"expected": {"result": "failure", "messages": ["Management CVX status is not valid: Expected: enabled Actual: disabled"]},
"expected": {"result": AntaTestStatus.FAILURE, "messages": ["Management CVX status is not valid: Expected: enabled Actual: disabled"]},
},
{
"name": "failure-no-enabled state",
"test": VerifyManagementCVX,
(VerifyManagementCVX, "failure-no-enabled state"): {
"eos_data": [{"clusterStatus": {}}],
"inputs": {"enabled": False},
"expected": {"result": "failure", "messages": ["Management CVX status - Not configured"]},
"expected": {"result": AntaTestStatus.FAILURE, "messages": ["Management CVX status - Not configured"]},
},
{
"name": "failure - no clusterStatus",
"test": VerifyManagementCVX,
(VerifyManagementCVX, "failure - no clusterStatus"): {
"eos_data": [{}],
"inputs": {"enabled": False},
"expected": {"result": "failure", "messages": ["Management CVX status - Not configured"]},
"expected": {"result": AntaTestStatus.FAILURE, "messages": ["Management CVX status - Not configured"]},
},
{
"name": "success",
"test": VerifyMcsServerMounts,
(VerifyMcsServerMounts, "success"): {
"eos_data": [
{
"connections": [
@ -205,21 +150,17 @@ DATA: list[dict[str, Any]] = [
}
],
"inputs": {"connections_count": 1},
"expected": {"result": "success"},
"expected": {"result": AntaTestStatus.SUCCESS},
},
{
"name": "failure-no-mounts",
"test": VerifyMcsServerMounts,
(VerifyMcsServerMounts, "failure-no-mounts"): {
"eos_data": [{"connections": [{"hostname": "media-leaf-1", "mounts": []}]}],
"inputs": {"connections_count": 1},
"expected": {
"result": "failure",
"result": AntaTestStatus.FAILURE,
"messages": ["Host: media-leaf-1 - No mount status found", "Incorrect CVX successful connections count - Expected: 1 Actual: 0"],
},
},
{
"name": "failure-unexpected-number-paths",
"test": VerifyMcsServerMounts,
(VerifyMcsServerMounts, "failure-unexpected-number-paths"): {
"eos_data": [
{
"connections": [
@ -244,17 +185,15 @@ DATA: list[dict[str, Any]] = [
],
"inputs": {"connections_count": 1},
"expected": {
"result": "failure",
"result": AntaTestStatus.FAILURE,
"messages": [
"Host: media-leaf-1 - Incorrect number of mount path states - Expected: 3 Actual: 2",
"Host: media-leaf-1 - Unexpected MCS path type - Expected: Mcs::ApiConfigRedundancyStatus, Mcs::ActiveFlows, "
"Mcs::Client::Status Actual: Mcs::ApiStatus",
"Host: media-leaf-1 - Unexpected MCS path type - Expected: Mcs::ApiConfigRedundancyStatus, "
"Mcs::ActiveFlows, Mcs::Client::Status Actual: Mcs::ApiStatus",
],
},
},
{
"name": "failure-unexpected-path-type",
"test": VerifyMcsServerMounts,
(VerifyMcsServerMounts, "failure-unexpected-path-type"): {
"eos_data": [
{
"connections": [
@ -280,16 +219,14 @@ DATA: list[dict[str, Any]] = [
],
"inputs": {"connections_count": 1},
"expected": {
"result": "failure",
"result": AntaTestStatus.FAILURE,
"messages": [
"Host: media-leaf-1 - Unexpected MCS path type - Expected: Mcs::ApiConfigRedundancyStatus, Mcs::ActiveFlows, Mcs::Client::Status"
" Actual: Mcs::ApiStatus"
"Host: media-leaf-1 - Unexpected MCS path type - Expected: Mcs::ApiConfigRedundancyStatus, Mcs::ActiveFlows, "
"Mcs::Client::Status Actual: Mcs::ApiStatus"
],
},
},
{
"name": "failure-invalid-mount-state",
"test": VerifyMcsServerMounts,
(VerifyMcsServerMounts, "failure-invalid-mount-state"): {
"eos_data": [
{
"connections": [
@ -315,16 +252,14 @@ DATA: list[dict[str, Any]] = [
],
"inputs": {"connections_count": 1},
"expected": {
"result": "failure",
"result": AntaTestStatus.FAILURE,
"messages": [
"Host: media-leaf-1 Path Type: Mcs::ApiConfigRedundancyStatus - MCS server mount state is not valid - Expected: mountStateMountComplete"
" Actual:mountStateMountFailed"
"Host: media-leaf-1 Path Type: Mcs::ApiConfigRedundancyStatus - MCS server mount state is not valid - "
"Expected: mountStateMountComplete Actual:mountStateMountFailed"
],
},
},
{
"name": "failure-no-mcs-mount",
"test": VerifyMcsServerMounts,
(VerifyMcsServerMounts, "failure-no-mcs-mount"): {
"eos_data": [
{
"connections": [
@ -341,69 +276,46 @@ DATA: list[dict[str, Any]] = [
}
],
"inputs": {"connections_count": 1},
"expected": {"result": "failure", "messages": ["MCS mount state not detected", "Incorrect CVX successful connections count - Expected: 1 Actual: 0"]},
"expected": {
"result": AntaTestStatus.FAILURE,
"messages": ["MCS mount state not detected", "Incorrect CVX successful connections count - Expected: 1 Actual: 0"],
},
},
{
"name": "failure-connections",
"test": VerifyMcsServerMounts,
(VerifyMcsServerMounts, "failure-connections"): {
"eos_data": [{}],
"inputs": {"connections_count": 1},
"expected": {"result": "failure", "messages": ["CVX connections are not available"]},
"expected": {"result": AntaTestStatus.FAILURE, "messages": ["CVX connections are not available"]},
},
{
"name": "success",
"test": VerifyActiveCVXConnections,
(VerifyActiveCVXConnections, "success"): {
"eos_data": [
{
"connections": [
{
"switchId": "fc:bd:67:c3:16:55",
"hostname": "lyv563",
"oobConnectionActive": True,
},
{
"switchId": "00:1c:73:3c:e3:9e",
"hostname": "tg264",
"oobConnectionActive": True,
},
{"switchId": "fc:bd:67:c3:16:55", "hostname": "lyv563", "oobConnectionActive": True},
{"switchId": "00:1c:73:3c:e3:9e", "hostname": "tg264", "oobConnectionActive": True},
]
}
],
"inputs": {"connections_count": 2},
"expected": {"result": "success"},
"expected": {"result": AntaTestStatus.SUCCESS},
},
{
"name": "failure",
"test": VerifyActiveCVXConnections,
(VerifyActiveCVXConnections, "failure"): {
"eos_data": [
{
"connections": [
{
"switchId": "fc:bd:67:c3:16:55",
"hostname": "lyv563",
"oobConnectionActive": False,
},
{
"switchId": "00:1c:73:3c:e3:9e",
"hostname": "tg264",
"oobConnectionActive": True,
},
{"switchId": "fc:bd:67:c3:16:55", "hostname": "lyv563", "oobConnectionActive": False},
{"switchId": "00:1c:73:3c:e3:9e", "hostname": "tg264", "oobConnectionActive": True},
]
}
],
"inputs": {"connections_count": 2},
"expected": {"result": "failure", "messages": ["CVX active connections count - Expected: 2 Actual: 1"]},
"expected": {"result": AntaTestStatus.FAILURE, "messages": ["CVX active connections count - Expected: 2 Actual: 1"]},
},
{
"name": "failure-no-connections",
"test": VerifyActiveCVXConnections,
(VerifyActiveCVXConnections, "failure-no-connections"): {
"eos_data": [{}],
"inputs": {"connections_count": 2},
"expected": {"result": "failure", "messages": ["CVX connections are not available"]},
"expected": {"result": AntaTestStatus.FAILURE, "messages": ["CVX connections are not available"]},
},
{
"name": "success-all",
"test": VerifyCVXClusterStatus,
(VerifyCVXClusterStatus, "success-all"): {
"eos_data": [
{
"enabled": True,
@ -424,11 +336,9 @@ DATA: list[dict[str, Any]] = [
{"peer_name": "cvx-red-3", "registrationState": "Registration complete"},
],
},
"expected": {"result": "success"},
"expected": {"result": AntaTestStatus.SUCCESS},
},
{
"name": "failure-invalid-role",
"test": VerifyCVXClusterStatus,
(VerifyCVXClusterStatus, "failure-invalid-role"): {
"eos_data": [
{
"enabled": True,
@ -449,56 +359,24 @@ DATA: list[dict[str, Any]] = [
{"peer_name": "cvx-red-3", "registrationState": "Registration complete"},
],
},
"expected": {"result": "failure", "messages": ["CVX Role is not valid: Expected: Master Actual: Standby"]},
"expected": {"result": AntaTestStatus.FAILURE, "messages": ["CVX Role is not valid: Expected: Master Actual: Standby"]},
},
{
"name": "failure-cvx-enabled",
"test": VerifyCVXClusterStatus,
"eos_data": [
{
"enabled": False,
"clusterMode": True,
"clusterStatus": {
"role": "Master",
"peerStatus": {},
},
}
],
"inputs": {
"role": "Master",
"peer_status": [],
},
"expected": {"result": "failure", "messages": ["CVX Server status is not enabled"]},
(VerifyCVXClusterStatus, "failure-cvx-enabled"): {
"eos_data": [{"enabled": False, "clusterMode": True, "clusterStatus": {"role": "Master", "peerStatus": {}}}],
"inputs": {"role": "Master", "peer_status": []},
"expected": {"result": AntaTestStatus.FAILURE, "messages": ["CVX Server status is not enabled"]},
},
{
"name": "failure-cluster-enabled",
"test": VerifyCVXClusterStatus,
"eos_data": [
{
"enabled": True,
"clusterMode": False,
"clusterStatus": {},
}
],
"inputs": {
"role": "Master",
"peer_status": [],
},
"expected": {"result": "failure", "messages": ["CVX Server is not a cluster"]},
(VerifyCVXClusterStatus, "failure-cluster-enabled"): {
"eos_data": [{"enabled": True, "clusterMode": False, "clusterStatus": {}}],
"inputs": {"role": "Master", "peer_status": []},
"expected": {"result": AntaTestStatus.FAILURE, "messages": ["CVX Server is not a cluster"]},
},
{
"name": "failure-missing-peers",
"test": VerifyCVXClusterStatus,
(VerifyCVXClusterStatus, "failure-missing-peers"): {
"eos_data": [
{
"enabled": True,
"clusterMode": True,
"clusterStatus": {
"role": "Master",
"peerStatus": {
"cvx-red-2": {"peerName": "cvx-red-2", "registrationState": "Registration complete"},
},
},
"clusterStatus": {"role": "Master", "peerStatus": {"cvx-red-2": {"peerName": "cvx-red-2", "registrationState": "Registration complete"}}},
}
],
"inputs": {
@ -508,21 +386,10 @@ DATA: list[dict[str, Any]] = [
{"peer_name": "cvx-red-3", "registrationState": "Registration complete"},
],
},
"expected": {"result": "failure", "messages": ["Unexpected number of peers - Expected: 2 Actual: 1", "cvx-red-3 - Not present"]},
"expected": {"result": AntaTestStatus.FAILURE, "messages": ["Unexpected number of peers - Expected: 2 Actual: 1", "cvx-red-3 - Not present"]},
},
{
"name": "failure-invalid-peers",
"test": VerifyCVXClusterStatus,
"eos_data": [
{
"enabled": True,
"clusterMode": True,
"clusterStatus": {
"role": "Master",
"peerStatus": {},
},
}
],
(VerifyCVXClusterStatus, "failure-invalid-peers"): {
"eos_data": [{"enabled": True, "clusterMode": True, "clusterStatus": {"role": "Master", "peerStatus": {}}}],
"inputs": {
"role": "Master",
"peer_status": [
@ -530,11 +397,12 @@ DATA: list[dict[str, Any]] = [
{"peer_name": "cvx-red-3", "registrationState": "Registration complete"},
],
},
"expected": {"result": "failure", "messages": ["Unexpected number of peers - Expected: 2 Actual: 0", "cvx-red-2 - Not present", "cvx-red-3 - Not present"]},
"expected": {
"result": AntaTestStatus.FAILURE,
"messages": ["Unexpected number of peers - Expected: 2 Actual: 0", "cvx-red-2 - Not present", "cvx-red-3 - Not present"],
},
},
{
"name": "failure-registration-error",
"test": VerifyCVXClusterStatus,
(VerifyCVXClusterStatus, "failure-registration-error"): {
"eos_data": [
{
"enabled": True,
@ -555,6 +423,9 @@ DATA: list[dict[str, Any]] = [
{"peer_name": "cvx-red-3", "registrationState": "Registration complete"},
],
},
"expected": {"result": "failure", "messages": ["cvx-red-2 - Invalid registration state - Expected: Registration complete Actual: Registration error"]},
"expected": {
"result": AntaTestStatus.FAILURE,
"messages": ["cvx-red-2 - Invalid registration state - Expected: Registration complete Actual: Registration error"],
},
},
]
}