Skip to content

Commit 73edf99

Browse files
committed
Restructure abstract method handling in plugin
Signed-off-by: Toni Finger <[email protected]>
1 parent 5392c5e commit 73edf99

File tree

3 files changed

+35
-66
lines changed

3 files changed

+35
-66
lines changed

Tests/kaas/plugin/interface.py

Lines changed: 6 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,4 @@
11
from abc import abstractmethod
2-
from typing import final
3-
import os
4-
import os.path
5-
import shutil
6-
import logging
7-
8-
logger = logging.getLogger("interface")
92

103

114
class KubernetesClusterPlugin():
@@ -15,64 +8,19 @@ class KubernetesClusterPlugin():
158
plugins must be derived as child classes
169
"""
1710

18-
kubeconfig = None
19-
cluster_name = None
20-
k8s_api_client = None
21-
working_directory = None
22-
23-
@final
24-
def __init__(self, config_file=None):
25-
logger.info(f"Init provider plug-in of type {self.__class__.__name__}")
26-
self.config = config_file
27-
logger.debug(self.config)
28-
self.working_directory = os.getcwd()
29-
logger.debug(f"Working from {self.working_directory}")
30-
3111
@abstractmethod
32-
def _create_cluster(self, cluster_name) -> (str, int):
12+
def create_cluster(self, cluster_name="scs-cluster", version=None, kubeconfig_filepath=None) -> (str):
3313
"""
34-
Create a Kubernetes cluster to test aggainst.
14+
This method is to be called to create a k8s cluster
3515
:param: cluster_name:
36-
:return: kubeconfig: kubeconfig of the cluster used for testing
16+
:param: version:
17+
:param: kubeconfig_filepath:
18+
:return: kubeconfig_filepath
3719
"""
38-
pass
3920

4021
@abstractmethod
41-
def _delete_cluster(self, cluster_name) -> (str, int):
42-
"""
43-
Delete the Kubernetes cluster.
44-
:param: cluster_name:
45-
:return: None
46-
"""
47-
pass
48-
49-
@final
50-
def create(self, name="scs-cluster", version=None, kubeconfig_filepath=None):
51-
"""
52-
This method is to be called to create a k8s cluster
53-
:param: kubernetes_version:
54-
:return: uuid
55-
"""
56-
self.cluster_name = name
57-
self.cluster_version = version
58-
59-
self._create_cluster()
60-
61-
if kubeconfig_filepath:
62-
shutil.move(self.kubeconfig, kubeconfig_filepath)
63-
else:
64-
kubeconfig_filepath = str(self.kubeconfig)
65-
66-
return kubeconfig_filepath
67-
68-
@final
69-
def delete(self, cluster_name=None):
22+
def delete_cluster(self, cluster_name=None):
7023
"""
7124
This method is to be called in order to unprovision a cluster
7225
:param: cluster_uuid:
7326
"""
74-
self.cluster_name = cluster_name
75-
try:
76-
self._delete_cluster()
77-
except Exception as e:
78-
logging.exception(e)

Tests/kaas/plugin/plugin_kind.py

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,50 @@
1+
import shutil
2+
import os
3+
import os.path
14
from interface import KubernetesClusterPlugin
25
from pytest_kind import KindCluster
6+
import logging
7+
logger = logging.getLogger("plugin_kind")
38

49

510
class PluginKind(KubernetesClusterPlugin):
611
"""
712
Plugin to handle the provisioning of kubernetes cluster for
813
conformance testing purpose with the use of Kind
914
"""
15+
def __init__(self, config_file=None):
16+
logger.info(f"Init provider plug-in of type {self.__class__.__name__}")
17+
self.config = config_file
18+
logger.debug(self.config)
19+
self.working_directory = os.getcwd()
20+
logger.debug(f"Working from {self.working_directory}")
1021

11-
def _create_cluster(self):
12-
cluster_version = self.cluster_version
22+
def create_cluster(self, cluster_name="scs-cluster", version=None, kubeconfig_filepath=None):
23+
"""
24+
This method is to be called to create a k8s cluster
25+
:param: kubernetes_version:
26+
:return: kubeconfig_filepath
27+
"""
28+
cluster_version = version
1329
if cluster_version == '1.29':
1430
cluster_version = 'v1.29.8'
1531
elif cluster_version == '1.30':
1632
cluster_version = 'v1.30.4'
1733
elif cluster_version == '1.31' or cluster_version == 'default':
1834
cluster_version = 'v1.31.1'
1935
cluster_image = f"kindest/node:{cluster_version}"
20-
self.cluster = KindCluster(name=self.cluster_name, image=cluster_image)
36+
self.cluster = KindCluster(name=cluster_name, image=cluster_image)
2137
if self.config is None:
2238
self.cluster.create()
2339
else:
2440
self.cluster.create(self.config)
2541
self.kubeconfig = str(self.cluster.kubeconfig_path.resolve())
42+
if kubeconfig_filepath:
43+
shutil.move(self.kubeconfig, kubeconfig_filepath)
44+
else:
45+
kubeconfig_filepath = str(self.kubeconfig)
46+
return kubeconfig_filepath
2647

27-
def _delete_cluster(self):
28-
self.cluster = KindCluster(self.cluster_name)
48+
def delete_cluster(self, cluster_name=None):
49+
self.cluster = KindCluster(cluster_name)
2950
self.cluster.delete()

Tests/kaas/plugin/run_plugin.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
#!/usr/bin/env python3
22
import logging
33
import os.path
4-
54
import click
65
import yaml
76

7+
88
from plugin_kind import PluginKind
99
from plugin_static import PluginStatic
1010

@@ -24,12 +24,12 @@ def init_plugin(plugin_kind, config=None):
2424

2525
def run_plugin_create(plugin_kind, plugin_config, clusterspec_cluster, clusterspec):
2626
plugin = init_plugin(plugin_kind, plugin_config)
27-
plugin.create(clusterspec_cluster, clusterspec[clusterspec_cluster]['branch'], os.path.abspath(clusterspec[clusterspec_cluster]['kubeconfig']))
27+
plugin.create_cluster(clusterspec_cluster, clusterspec[clusterspec_cluster]['branch'], os.path.abspath(clusterspec[clusterspec_cluster]['kubeconfig']))
2828

2929

3030
def run_plugin_delete(plugin_kind, plugin_config, clusterspec_cluster, clusterspec):
3131
plugin = init_plugin(plugin_kind, plugin_config)
32-
plugin.delete(clusterspec_cluster)
32+
plugin.delete_cluster(clusterspec_cluster)
3333

3434

3535
def load_spec(clusterspec_path):

0 commit comments

Comments
 (0)