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
This commit is contained in:
parent
85bd42474b
commit
b5d50ddd89
@ -27,11 +27,14 @@ from heatclient import exc as heatexc
|
|||||||
from magnum.common import clients
|
from magnum.common import clients
|
||||||
from magnum.common import context as mag_ctx
|
from magnum.common import context as mag_ctx
|
||||||
from magnum.common import exception
|
from magnum.common import exception
|
||||||
|
from magnum.common import keystone
|
||||||
|
from magnum.common import octavia
|
||||||
from magnum.common import short_id
|
from magnum.common import short_id
|
||||||
from magnum.conductor.handlers.common import cert_manager
|
from magnum.conductor.handlers.common import cert_manager
|
||||||
from magnum.conductor.handlers.common import trust_manager
|
from magnum.conductor.handlers.common import trust_manager
|
||||||
from magnum.conductor import utils as conductor_utils
|
from magnum.conductor import utils as conductor_utils
|
||||||
from magnum.drivers.common import driver
|
from magnum.drivers.common import driver
|
||||||
|
from magnum.drivers.common import k8s_monitor
|
||||||
from magnum.i18n import _
|
from magnum.i18n import _
|
||||||
from magnum.objects import fields
|
from magnum.objects import fields
|
||||||
|
|
||||||
@ -238,6 +241,31 @@ class HeatDriver(driver.Driver):
|
|||||||
osc.heat().stacks.delete(cluster.stack_id)
|
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):
|
class HeatPoller(object):
|
||||||
|
|
||||||
def __init__(self, openstack_client, context, cluster, cluster_driver):
|
def __init__(self, openstack_client, context, cluster, cluster_driver):
|
||||||
|
@ -12,12 +12,11 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from magnum.drivers.common import k8s_monitor
|
|
||||||
from magnum.drivers.heat import driver
|
from magnum.drivers.heat import driver
|
||||||
from magnum.drivers.k8s_coreos_v1 import template_def
|
from magnum.drivers.k8s_coreos_v1 import template_def
|
||||||
|
|
||||||
|
|
||||||
class Driver(driver.HeatDriver):
|
class Driver(driver.KubernetesDriver):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def provides(self):
|
def provides(self):
|
||||||
@ -29,17 +28,3 @@ class Driver(driver.HeatDriver):
|
|||||||
|
|
||||||
def get_template_definition(self):
|
def get_template_definition(self):
|
||||||
return template_def.CoreOSK8sTemplateDefinition()
|
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'")
|
|
||||||
|
@ -17,16 +17,13 @@ from pbr.version import SemanticVersion as SV
|
|||||||
|
|
||||||
from magnum.common import clients
|
from magnum.common import clients
|
||||||
from magnum.common import exception
|
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.heat import driver
|
||||||
from magnum.drivers.k8s_fedora_atomic_v1 import template_def
|
from magnum.drivers.k8s_fedora_atomic_v1 import template_def
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class Driver(driver.HeatDriver):
|
class Driver(driver.KubernetesDriver):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def provides(self):
|
def provides(self):
|
||||||
@ -39,22 +36,6 @@ class Driver(driver.HeatDriver):
|
|||||||
def get_template_definition(self):
|
def get_template_definition(self):
|
||||||
return template_def.AtomicK8sTemplateDefinition()
|
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,
|
def upgrade_cluster(self, context, cluster, cluster_template,
|
||||||
max_batch_size, nodegroup, scale_manager=None,
|
max_batch_size, nodegroup, scale_manager=None,
|
||||||
rollback=False):
|
rollback=False):
|
||||||
|
@ -12,12 +12,11 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from magnum.drivers.common import k8s_monitor
|
|
||||||
from magnum.drivers.heat import driver
|
from magnum.drivers.heat import driver
|
||||||
from magnum.drivers.k8s_fedora_ironic_v1 import template_def
|
from magnum.drivers.k8s_fedora_ironic_v1 import template_def
|
||||||
|
|
||||||
|
|
||||||
class Driver(driver.HeatDriver):
|
class Driver(driver.KubernetesDriver):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def provides(self):
|
def provides(self):
|
||||||
@ -29,16 +28,3 @@ class Driver(driver.HeatDriver):
|
|||||||
|
|
||||||
def get_template_definition(self):
|
def get_template_definition(self):
|
||||||
return template_def.FedoraK8sIronicTemplateDefinition()
|
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'")
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user