From b5d50ddd89cbb41cf1f122de3b9aabb1f3cb8c02 Mon Sep 17 00:00:00 2001 From: Mohammed Naser Date: Thu, 20 Jun 2019 15:43:03 -0400 Subject: [PATCH] k8s: refactor functions into KubernetesDriver We currently have a lot of duplicate functions across our drivers which use Kubernetes. This takes them and brings them into a common class called KubernetesDriver and cleans up the subclasses. Change-Id: I6f880cb03ed43ec3bc9d3d9e5a7b87eaceda40e9 --- magnum/drivers/heat/driver.py | 28 +++++++++++++++++++ magnum/drivers/k8s_coreos_v1/driver.py | 17 +---------- magnum/drivers/k8s_fedora_atomic_v1/driver.py | 21 +------------- magnum/drivers/k8s_fedora_ironic_v1/driver.py | 16 +---------- 4 files changed, 31 insertions(+), 51 deletions(-) diff --git a/magnum/drivers/heat/driver.py b/magnum/drivers/heat/driver.py index f85072b6da..aba3d86e80 100755 --- a/magnum/drivers/heat/driver.py +++ b/magnum/drivers/heat/driver.py @@ -27,11 +27,14 @@ from heatclient import exc as heatexc from magnum.common import clients from magnum.common import context as mag_ctx from magnum.common import exception +from magnum.common import keystone +from magnum.common import octavia from magnum.common import short_id from magnum.conductor.handlers.common import cert_manager from magnum.conductor.handlers.common import trust_manager from magnum.conductor import utils as conductor_utils from magnum.drivers.common import driver +from magnum.drivers.common import k8s_monitor from magnum.i18n import _ from magnum.objects import fields @@ -238,6 +241,31 @@ class HeatDriver(driver.Driver): osc.heat().stacks.delete(cluster.stack_id) +class KubernetesDriver(HeatDriver): + """Base driver for Kubernetes clusters.""" + + def get_monitor(self, context, cluster): + return k8s_monitor.K8sMonitor(context, cluster) + + def get_scale_manager(self, context, osclient, cluster): + # FIXME: Until the kubernetes client is fixed, remove + # the scale_manager. + # https://bugs.launchpad.net/magnum/+bug/1746510 + return None + + def pre_delete_cluster(self, context, cluster): + """Delete cloud resources before deleting the cluster.""" + if keystone.is_octavia_enabled(): + LOG.info("Starting to delete loadbalancers for cluster %s", + cluster.uuid) + octavia.delete_loadbalancers(context, cluster) + + def upgrade_cluster(self, context, cluster, cluster_template, + max_batch_size, nodegroup, scale_manager=None, + rollback=False): + raise NotImplementedError("Must implement 'upgrade_cluster'") + + class HeatPoller(object): def __init__(self, openstack_client, context, cluster, cluster_driver): diff --git a/magnum/drivers/k8s_coreos_v1/driver.py b/magnum/drivers/k8s_coreos_v1/driver.py index 68d4ef4c10..dafb0112c7 100644 --- a/magnum/drivers/k8s_coreos_v1/driver.py +++ b/magnum/drivers/k8s_coreos_v1/driver.py @@ -12,12 +12,11 @@ # License for the specific language governing permissions and limitations # under the License. -from magnum.drivers.common import k8s_monitor from magnum.drivers.heat import driver from magnum.drivers.k8s_coreos_v1 import template_def -class Driver(driver.HeatDriver): +class Driver(driver.KubernetesDriver): @property def provides(self): @@ -29,17 +28,3 @@ class Driver(driver.HeatDriver): def get_template_definition(self): return template_def.CoreOSK8sTemplateDefinition() - - def get_monitor(self, context, cluster): - return k8s_monitor.K8sMonitor(context, cluster) - - def get_scale_manager(self, context, osclient, cluster): - # FIXME: Until the kubernetes client is fixed, remove - # the scale_manager. - # https://bugs.launchpad.net/magnum/+bug/1746510 - return None - - def upgrade_cluster(self, context, cluster, cluster_template, - max_batch_size, nodegroup, scale_manager=None, - rollback=False): - raise NotImplementedError("Must implement 'upgrade_cluster'") diff --git a/magnum/drivers/k8s_fedora_atomic_v1/driver.py b/magnum/drivers/k8s_fedora_atomic_v1/driver.py index d5311a17ca..90293ea713 100644 --- a/magnum/drivers/k8s_fedora_atomic_v1/driver.py +++ b/magnum/drivers/k8s_fedora_atomic_v1/driver.py @@ -17,16 +17,13 @@ from pbr.version import SemanticVersion as SV from magnum.common import clients from magnum.common import exception -from magnum.common import keystone -from magnum.common import octavia -from magnum.drivers.common import k8s_monitor from magnum.drivers.heat import driver from magnum.drivers.k8s_fedora_atomic_v1 import template_def LOG = logging.getLogger(__name__) -class Driver(driver.HeatDriver): +class Driver(driver.KubernetesDriver): @property def provides(self): @@ -39,22 +36,6 @@ class Driver(driver.HeatDriver): def get_template_definition(self): return template_def.AtomicK8sTemplateDefinition() - def get_monitor(self, context, cluster): - return k8s_monitor.K8sMonitor(context, cluster) - - def get_scale_manager(self, context, osclient, cluster): - # FIXME: Until the kubernetes client is fixed, remove - # the scale_manager. - # https://bugs.launchpad.net/magnum/+bug/1746510 - return None - - def pre_delete_cluster(self, context, cluster): - """Delete cloud resources before deleting the cluster.""" - if keystone.is_octavia_enabled(): - LOG.info("Starting to delete loadbalancers for cluster %s", - cluster.uuid) - octavia.delete_loadbalancers(context, cluster) - def upgrade_cluster(self, context, cluster, cluster_template, max_batch_size, nodegroup, scale_manager=None, rollback=False): diff --git a/magnum/drivers/k8s_fedora_ironic_v1/driver.py b/magnum/drivers/k8s_fedora_ironic_v1/driver.py index 8eb656fc8c..e34b95cd92 100644 --- a/magnum/drivers/k8s_fedora_ironic_v1/driver.py +++ b/magnum/drivers/k8s_fedora_ironic_v1/driver.py @@ -12,12 +12,11 @@ # License for the specific language governing permissions and limitations # under the License. -from magnum.drivers.common import k8s_monitor from magnum.drivers.heat import driver from magnum.drivers.k8s_fedora_ironic_v1 import template_def -class Driver(driver.HeatDriver): +class Driver(driver.KubernetesDriver): @property def provides(self): @@ -29,16 +28,3 @@ class Driver(driver.HeatDriver): def get_template_definition(self): return template_def.FedoraK8sIronicTemplateDefinition() - - def get_monitor(self, context, cluster): - return k8s_monitor.K8sMonitor(context, cluster) - - def get_scale_manager(self, context, osclient, cluster): - # FIXME: Until the kubernetes client is fixed, remove - # the scale_manager. - # https://bugs.launchpad.net/magnum/+bug/1746510 - return None - - def upgrade_cluster(self, context, cluster, scale_manager=None, - rollback=False): - raise NotImplementedError("Must implement 'upgrade_cluster'")