Coverage for ocp_resources/multi_network_policy.py: 0%
24 statements
« prev ^ index » next coverage.py v7.6.10, created at 2025-01-30 10:48 +0200
« prev ^ index » next coverage.py v7.6.10, created at 2025-01-30 10:48 +0200
1from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
4class MultiNetworkPolicy(NamespacedResource):
5 """
6 MultiNetworkPolicy object.
8 API reference:
9 https://docs.openshift.com/container-platform/4.14/networking/multiple_networks/configuring-multi-network-policy.html
10 """
12 api_group = NamespacedResource.ApiGroup.K8S_CNI_CNCF_IO
14 def __init__(
15 self,
16 network_name=None,
17 policy_types=None,
18 ingress=None,
19 egress=None,
20 pod_selector=None,
21 **kwargs,
22 ):
23 """
24 Create and manage MultiNetworkPolicy
26 Args:
27 network_name (str): The name of the NetworkAttachmentDefinition that the policy will impact.
28 policy_types (list, optional): One or more of the valid ip policies.
29 ingress (list, optional): list containing a dictionary specifying the allowed "from" parameters.
30 egress (list, optional): list containing a dictionary specifying the allowed "to" parameters.
31 pod_selector (dict): Map a label to match.
32 """
33 super().__init__(**kwargs)
34 self.network_name = network_name
35 self.policy_types = policy_types
36 self.pod_selector = pod_selector
37 self.ingress = ingress
38 self.egress = egress
40 def to_dict(self) -> None:
41 super().to_dict()
42 if not self.kind_dict and not self.yaml_file:
43 if not self.network_name and self.pod_selector is None:
44 raise MissingRequiredArgumentError("'network_name' and 'pod_selector'")
46 self.res["metadata"]["annotations"] = {
47 f"{NamespacedResource.ApiGroup.K8S_V1_CNI_CNCF_IO}/policy-for": f"{self.namespace}/{self.network_name}"
48 }
49 self.res["spec"] = {}
50 self.res["spec"]["podSelector"] = self.pod_selector
51 if self.policy_types:
52 self.res["spec"]["policyTypes"] = self.policy_types
53 if self.ingress is not None:
54 self.res["spec"]["ingress"] = self.ingress
55 if self.egress is not None:
56 self.res["spec"]["egress"] = self.egress