Coverage for ocp_resources/user_defined_network.py: 0%
74 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
1# Generated using https://github.com/RedHatQE/openshift-python-wrapper/blob/main/scripts/resource/README.md
3from typing import Any, Dict, Optional
4from ocp_resources.resource import NamespacedResource, MissingRequiredArgumentError
5from typing import List
8class UserDefinedNetwork(NamespacedResource):
9 """
10 UserDefinedNetwork describes network request for a Namespace.
11 """
13 api_group: str = NamespacedResource.ApiGroup.K8S_OVN_ORG
15 def __init__(
16 self,
17 layer2: Optional[Dict[str, Any]] = None,
18 layer3: Optional[Dict[str, Any]] = None,
19 local_net: Optional[Dict[str, Any]] = None,
20 topology: Optional[str] = "",
21 **kwargs: Any,
22 ) -> None:
23 """
24 Args:
25 layer2 (Dict[str, Any]): Layer2 is the Layer2 topology configuration.
27 layer3 (Dict[str, Any]): Layer3 is the Layer3 topology configuration.
29 local_net (Dict[str, Any]): LocalNet is the LocalNet topology configuration.
31 topology (str): Topology describes network configuration. Allowed values are
32 "Layer3", "Layer2", "LocalNet". Layer3 topology creates a layer 2
33 segment per node, each with a different subnet. Layer 3 routing is
34 used to interconnect node subnets. Layer2 topology creates one
35 logical switch shared by all nodes. LocalNet topology creates a
36 cluster-wide logical switch connected to a physical network.
38 """
39 super().__init__(**kwargs)
41 self.layer2 = layer2
42 self.layer3 = layer3
43 self.local_net = local_net
44 self.topology = topology
46 def to_dict(self) -> None:
47 super().to_dict()
49 if not self.kind_dict and not self.yaml_file:
50 if not all([
51 self.topology,
52 ]):
53 raise MissingRequiredArgumentError(argument="topology")
55 self.res["spec"] = {}
56 _spec = self.res["spec"]
58 _spec["topology"] = self.topology
60 if self.layer2:
61 _spec["layer2"] = self.layer2
63 if self.layer3:
64 _spec["layer3"] = self.layer3
66 if self.local_net:
67 _spec["localNet"] = self.local_net
69 # End of generated code
71 def wait_for_network_ready(self, timeout: int = 30) -> None:
72 """
73 Wait for the network to be ready.
75 Args:
76 timeout (int, optional): Maximum time to wait in seconds. Defaults to 30.
78 Raises:
79 TimeoutExpiredError: If the network is not ready within the specified timeout.
80 """
81 self.wait_for_condition(
82 condition=self.Condition.NETWORK_READY,
83 status=self.Condition.Status.TRUE,
84 timeout=timeout,
85 )
88class Layer2UserDefinedNetwork(UserDefinedNetwork):
89 """
90 UserDefinedNetwork layer2 object.
92 API reference:
93 https://ovn-kubernetes.io/api-reference/userdefinednetwork-api-spec/#layer2config
94 """
96 LAYER2: str = "Layer2"
98 def __init__(
99 self,
100 role: Optional[str] = None,
101 mtu: Optional[int] = None,
102 subnets: Optional[List[str]] = None,
103 join_subnets: Optional[List[str]] = None,
104 ipam_lifecycle: Optional[str] = None,
105 **kwargs,
106 ):
107 """
108 Create and manage UserDefinedNetwork with layer2 configuration
110 Args:
111 role (Optional[str]): role describes the network role in the pod.
112 mtu (Optional[int]): mtu is the maximum transmission unit for a network.
113 subnets (Optional[List[str]]): subnets are used for the pod network across the cluster.
114 join_subnets (Optional[List[str]]): join_subnets are used inside the OVN network topology.
115 ipam_lifecycle (Optional[str]): ipam_lifecycle controls IP addresses management lifecycle.
116 """
117 super().__init__(
118 topology=self.LAYER2,
119 **kwargs,
120 )
121 self.role = role
122 self.mtu = mtu
123 self.subnets = subnets
124 self.join_subnets = join_subnets
125 self.ipam_lifecycle = ipam_lifecycle
127 def to_dict(self) -> None:
128 super().to_dict()
129 if not self.kind_dict and not self.yaml_file:
130 if not self.role:
131 raise MissingRequiredArgumentError(argument="role")
133 self.res["spec"][self.LAYER2.lower()] = {"role": self.role}
134 _layer2 = self.res["spec"][self.LAYER2.lower()]
136 if self.mtu:
137 _layer2["mtu"] = self.mtu
139 if self.subnets:
140 _layer2["subnets"] = self.subnets
142 if self.join_subnets:
143 _layer2["joinSubnets"] = self.join_subnets
145 if self.ipam_lifecycle:
146 _layer2["ipamLifecycle"] = self.ipam_lifecycle
149class Layer3UserDefinedNetwork(UserDefinedNetwork):
150 """
151 UserDefinedNetwork layer3 object.
153 API reference:
154 https://ovn-kubernetes.io/api-reference/userdefinednetwork-api-spec/#layer3config
155 """
157 LAYER3: str = "Layer3"
159 def __init__(
160 self,
161 role: Optional[str] = None,
162 mtu: Optional[int] = None,
163 subnets: Optional[List[Dict[str, Any]]] = None,
164 join_subnets: Optional[List[str]] = None,
165 **kwargs,
166 ):
167 """
168 Create and manage UserDefinedNetwork with layer3 configuration
170 Args:
171 role (Optional[str]): role describes the network role in the pod.
172 mtu (Optional[int]): mtu is the maximum transmission unit for a network.
173 subnets (Optional[List[Dict]]): subnets are used for the pod network across the cluster, each expecting:
174 - `cidr` (str): IP range in CIDR notation.
175 - `hostSubnet` (Optional[int]): Host-specific subnet.
176 API reference:
177 https://ovn-kubernetes.io/api-reference/userdefinednetwork-api-spec/#layer3subnet
178 join_subnets (Optional[List[str]]): join_subnets are used inside the OVN network topology.
179 """
180 super().__init__(
181 topology=self.LAYER3,
182 **kwargs,
183 )
184 self.role = role
185 self.mtu = mtu
186 self.subnets = subnets
187 self.join_subnets = join_subnets
189 def to_dict(self) -> None:
190 super().to_dict()
191 if not self.kind_dict and not self.yaml_file:
192 if not self.role:
193 raise MissingRequiredArgumentError(argument="role")
194 if not self.subnets:
195 raise MissingRequiredArgumentError(argument="subnets")
197 self.res["spec"][self.LAYER3.lower()] = {"role": self.role}
198 _layer3 = self.res["spec"][self.LAYER3.lower()]
200 if self.mtu:
201 _layer3["mtu"] = self.mtu
203 if self.join_subnets:
204 _layer3["joinSubnets"] = self.join_subnets
206 if self.subnets:
207 _layer3["subnets"] = self.subnets