Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions magnum_cluster_api/objects.py
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,10 @@ class ClusterClass(NamespacedAPIObject):
endpoint = "clusterclasses"
kind = "ClusterClass"

@property
def variable_names(self):
return [variable["name"] for variable in self.obj["spec"]["variables"]]


class Cluster(NamespacedAPIObject):
version = "cluster.x-k8s.io/v1beta1"
Expand Down
4 changes: 3 additions & 1 deletion magnum_cluster_api/resources.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,8 @@ def apply(self) -> None:
resource.api.raise_for_status(resp)
resource.set_obj(resp.json())

return self

def delete(self) -> None:
resource = self.get_object()
resource.delete()
Expand Down Expand Up @@ -2426,7 +2428,7 @@ def create_cluster_class(
KubeadmConfigTemplate(api, namespace).apply()
OpenStackMachineTemplate(api, namespace).apply()
OpenStackClusterTemplate(api, namespace).apply()
ClusterClass(api, namespace).apply()
return ClusterClass(api, namespace).apply()


def mutate_machine_deployment(
Expand Down
57 changes: 57 additions & 0 deletions magnum_cluster_api/tests/functional/fixtures.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Copyright (c) 2025 VEXXHOST, Inc.
# SPDX-License-Identifier: Apache-2.0


import fixtures # type: ignore

from magnum_cluster_api import resources


class ClusterClassFixture(fixtures.Fixture):
def __init__(self, api, namespace, mutate_callback=None):
super(ClusterClassFixture, self).__init__()
self.api = api
self.namespace = namespace
self.mutate_callback = mutate_callback

def _setUp(self):
self.cluster_class = resources.ClusterClass(
self.api, namespace=self.namespace.name
)

original_get_object = self.cluster_class.get_object

def get_object_override():
resource = original_get_object()
if self.mutate_callback:
self.mutate_callback(resource)
return resource

self.cluster_class.get_object = get_object_override
self.cluster_class.apply()


class ClusterFixture(fixtures.Fixture):
def __init__(self, context, api, namespace, magnum_cluster, mutate_callback=None):
super(ClusterFixture, self).__init__()
self.context = context
self.api = api
self.namespace = namespace
self.magnum_cluster = magnum_cluster
self.mutate_callback = mutate_callback

def _setUp(self):
self.cluster = resources.Cluster(
self.context, self.api, self.magnum_cluster, namespace=self.namespace.name
)

original_get_object = self.cluster.get_object

def get_object_override():
resource = original_get_object()
if self.mutate_callback:
self.mutate_callback(resource)
return resource

self.cluster.get_object = get_object_override
self.cluster.apply()
Loading
Loading