Skip to content

Commit 550efe8

Browse files
authored
Add tests for adding/removing variables between CC (#490)
1 parent 0b0295b commit 550efe8

File tree

4 files changed

+305
-46
lines changed

4 files changed

+305
-46
lines changed

magnum_cluster_api/objects.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,10 @@ class ClusterClass(NamespacedAPIObject):
239239
endpoint = "clusterclasses"
240240
kind = "ClusterClass"
241241

242+
@property
243+
def variable_names(self):
244+
return [variable["name"] for variable in self.obj["spec"]["variables"]]
245+
242246

243247
class Cluster(NamespacedAPIObject):
244248
version = "cluster.x-k8s.io/v1beta1"

magnum_cluster_api/resources.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,8 @@ def apply(self) -> None:
162162
resource.api.raise_for_status(resp)
163163
resource.set_obj(resp.json())
164164

165+
return self
166+
165167
def delete(self) -> None:
166168
resource = self.get_object()
167169
resource.delete()
@@ -2426,7 +2428,7 @@ def create_cluster_class(
24262428
KubeadmConfigTemplate(api, namespace).apply()
24272429
OpenStackMachineTemplate(api, namespace).apply()
24282430
OpenStackClusterTemplate(api, namespace).apply()
2429-
ClusterClass(api, namespace).apply()
2431+
return ClusterClass(api, namespace).apply()
24302432

24312433

24322434
def mutate_machine_deployment(
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# Copyright (c) 2025 VEXXHOST, Inc.
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
5+
import fixtures # type: ignore
6+
7+
from magnum_cluster_api import resources
8+
9+
10+
class ClusterClassFixture(fixtures.Fixture):
11+
def __init__(self, api, namespace, mutate_callback=None):
12+
super(ClusterClassFixture, self).__init__()
13+
self.api = api
14+
self.namespace = namespace
15+
self.mutate_callback = mutate_callback
16+
17+
def _setUp(self):
18+
self.cluster_class = resources.ClusterClass(
19+
self.api, namespace=self.namespace.name
20+
)
21+
22+
original_get_object = self.cluster_class.get_object
23+
24+
def get_object_override():
25+
resource = original_get_object()
26+
if self.mutate_callback:
27+
self.mutate_callback(resource)
28+
return resource
29+
30+
self.cluster_class.get_object = get_object_override
31+
self.cluster_class.apply()
32+
33+
34+
class ClusterFixture(fixtures.Fixture):
35+
def __init__(self, context, api, namespace, magnum_cluster, mutate_callback=None):
36+
super(ClusterFixture, self).__init__()
37+
self.context = context
38+
self.api = api
39+
self.namespace = namespace
40+
self.magnum_cluster = magnum_cluster
41+
self.mutate_callback = mutate_callback
42+
43+
def _setUp(self):
44+
self.cluster = resources.Cluster(
45+
self.context, self.api, self.magnum_cluster, namespace=self.namespace.name
46+
)
47+
48+
original_get_object = self.cluster.get_object
49+
50+
def get_object_override():
51+
resource = original_get_object()
52+
if self.mutate_callback:
53+
self.mutate_callback(resource)
54+
return resource
55+
56+
self.cluster.get_object = get_object_override
57+
self.cluster.apply()

0 commit comments

Comments
 (0)