@@ -140,8 +140,9 @@ def delete(self):
140140
141141
142142class Base :
143- def __init__ (self , api : pykube .HTTPClient ):
143+ def __init__ (self , api : pykube .HTTPClient , namespace = "magnum-system" ):
144144 self .api = api
145+ self .namespace = namespace
145146
146147 def apply (self ) -> None :
147148 resource = self .get_object ()
@@ -167,14 +168,18 @@ def delete(self) -> None:
167168
168169
169170class Namespace (Base ):
171+ def __init__ (self , api : pykube .HTTPClient , name = "magnum-system" ):
172+ super ().__init__ (api , name )
173+ self .name = name
174+
170175 def get_object (self ) -> pykube .Namespace :
171176 return pykube .Namespace (
172177 self .api ,
173178 {
174179 "apiVersion" : pykube .Namespace .version ,
175180 "kind" : pykube .Namespace .kind ,
176181 "metadata" : {
177- "name" : "magnum-system" ,
182+ "name" : self . namespace ,
178183 },
179184 },
180185 )
@@ -681,7 +686,7 @@ def get_object(self) -> objects.KubeadmControlPlaneTemplate:
681686 "kind" : objects .KubeadmControlPlaneTemplate .kind ,
682687 "metadata" : {
683688 "name" : CLUSTER_CLASS_NAME ,
684- "namespace" : "magnum-system" ,
689+ "namespace" : self . namespace ,
685690 },
686691 "spec" : {
687692 "template" : {
@@ -796,7 +801,7 @@ def get_object(self) -> objects.KubeadmConfigTemplate:
796801 "kind" : objects .KubeadmConfigTemplate .kind ,
797802 "metadata" : {
798803 "name" : CLUSTER_CLASS_NAME ,
799- "namespace" : "magnum-system" ,
804+ "namespace" : self . namespace ,
800805 },
801806 "spec" : {
802807 "template" : {
@@ -833,7 +838,7 @@ def get_object(self) -> objects.OpenStackMachineTemplate:
833838 "kind" : objects .OpenStackMachineTemplate .kind ,
834839 "metadata" : {
835840 "name" : CLUSTER_CLASS_NAME ,
836- "namespace" : "magnum-system" ,
841+ "namespace" : self . namespace ,
837842 },
838843 "spec" : {
839844 "template" : {
@@ -862,7 +867,7 @@ def get_object(self) -> objects.OpenStackClusterTemplate:
862867 "kind" : objects .OpenStackClusterTemplate .kind ,
863868 "metadata" : {
864869 "name" : CLUSTER_CLASS_NAME ,
865- "namespace" : "magnum-system" ,
870+ "namespace" : self . namespace ,
866871 },
867872 "spec" : {
868873 "template" : {
@@ -890,7 +895,7 @@ def get_object(self) -> objects.ClusterClass:
890895 "kind" : objects .ClusterClass .kind ,
891896 "metadata" : {
892897 "name" : CLUSTER_CLASS_NAME ,
893- "namespace" : "magnum-system" ,
898+ "namespace" : self . namespace ,
894899 },
895900 "spec" : {
896901 "controlPlane" : {
@@ -1881,13 +1886,6 @@ def get_object(self) -> objects.ClusterClass:
18811886 "variable" : "clusterIdentityRefName"
18821887 },
18831888 },
1884- {
1885- "op" : "add" ,
1886- "path" : "/spec/template/spec/disableAPIServerFloatingIP" ,
1887- "valueFrom" : {
1888- "variable" : "disableAPIServerFloatingIP"
1889- },
1890- },
18911889 {
18921890 "op" : "add" ,
18931891 "path" : "/spec/template/spec/externalNetwork" ,
@@ -1903,6 +1901,30 @@ def get_object(self) -> objects.ClusterClass:
19031901 },
19041902 ],
19051903 },
1904+ {
1905+ "name" : "disableAPIServerFloatingIP" ,
1906+ "enabledIf" : "{{ if .disableAPIServerFloatingIP }}true{{end}}" ,
1907+ "definitions" : [
1908+ {
1909+ "selector" : {
1910+ "apiVersion" : objects .OpenStackClusterTemplate .version ,
1911+ "kind" : objects .OpenStackClusterTemplate .kind ,
1912+ "matchResources" : {
1913+ "infrastructureCluster" : True ,
1914+ },
1915+ },
1916+ "jsonPatches" : [
1917+ {
1918+ "op" : "add" ,
1919+ "path" : "/spec/template/spec/disableAPIServerFloatingIP" ,
1920+ "valueFrom" : {
1921+ "variable" : "disableAPIServerFloatingIP"
1922+ },
1923+ },
1924+ ],
1925+ },
1926+ ],
1927+ },
19061928 {
19071929 "name" : "controlPlaneAvailabilityZones" ,
19081930 "enabledIf" : '{{ if ne (index .controlPlaneAvailabilityZones 0) "" }}true{{end}}' ,
@@ -2393,17 +2415,18 @@ def get_object(self) -> objects.ClusterClass:
23932415
23942416def create_cluster_class (
23952417 api : pykube .HTTPClient ,
2418+ namespace : str = "magnum-system" ,
23962419) -> ClusterClass :
23972420 """
23982421 Create a ClusterClass and all of it's supporting resources from a Magnum
23992422 cluster template using server-side apply.
24002423 """
24012424
2402- KubeadmControlPlaneTemplate (api ).apply ()
2403- KubeadmConfigTemplate (api ).apply ()
2404- OpenStackMachineTemplate (api ).apply ()
2405- OpenStackClusterTemplate (api ).apply ()
2406- ClusterClass (api ).apply ()
2425+ KubeadmControlPlaneTemplate (api , namespace ).apply ()
2426+ KubeadmConfigTemplate (api , namespace ).apply ()
2427+ OpenStackMachineTemplate (api , namespace ).apply ()
2428+ OpenStackClusterTemplate (api , namespace ).apply ()
2429+ ClusterClass (api , namespace ).apply ()
24072430
24082431
24092432def mutate_machine_deployment (
@@ -2545,10 +2568,12 @@ def __init__(
25452568 context : context .RequestContext ,
25462569 api : pykube .HTTPClient ,
25472570 cluster : magnum_objects .Cluster ,
2571+ namespace : str = "magnum-system" ,
25482572 ):
25492573 self .context = context
25502574 self .api = api
25512575 self .cluster = cluster
2576+ self .namespace = namespace
25522577
25532578 @property
25542579 def labels (self ) -> dict :
@@ -2567,7 +2592,7 @@ def labels(self) -> dict:
25672592 return {** super ().labels , ** labels }
25682593
25692594 def get_or_none (self ) -> objects .Cluster :
2570- return objects .Cluster .objects (self .api , namespace = "magnum-system" ).get_or_none (
2595+ return objects .Cluster .objects (self .api , namespace = self . namespace ).get_or_none (
25712596 name = self .cluster .stack_id
25722597 )
25732598
@@ -2593,7 +2618,7 @@ def get_object(self) -> objects.Cluster:
25932618 "kind" : objects .Cluster .kind ,
25942619 "metadata" : {
25952620 "name" : self .cluster .stack_id ,
2596- "namespace" : "magnum-system" ,
2621+ "namespace" : self . namespace ,
25972622 "labels" : self .labels ,
25982623 },
25992624 "spec" : {
@@ -2720,7 +2745,9 @@ def get_object(self) -> objects.Cluster:
27202745 "name" : "cloudControllerManagerConfig" ,
27212746 "value" : base64 .encode_as_text (
27222747 utils .generate_cloud_controller_manager_config (
2723- self .context , self .api , self .cluster
2748+ self .context ,
2749+ self .api ,
2750+ self .cluster ,
27242751 )
27252752 ),
27262753 },
0 commit comments