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

1from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource 

2 

3 

4class MultiNetworkPolicy(NamespacedResource): 

5 """ 

6 MultiNetworkPolicy object. 

7 

8 API reference: 

9 https://docs.openshift.com/container-platform/4.14/networking/multiple_networks/configuring-multi-network-policy.html 

10 """ 

11 

12 api_group = NamespacedResource.ApiGroup.K8S_CNI_CNCF_IO 

13 

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 

25 

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 

39 

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'") 

45 

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