[WIP] ng-7: Adapt parameter and output mappings
With this change parameter and output mappings can support multiple stacks. Change-Id: I45cf765977c7f5a92f28ae12c469b98435763163
This commit is contained in:
parent
05c29563cf
commit
9f1fda7028
|
@ -66,42 +66,49 @@ class CoreOSK8sTemplateDefinition(k8s_template_def.K8sTemplateDefinition):
|
|||
self.add_parameter('docker_storage_driver',
|
||||
cluster_template_attr='docker_storage_driver')
|
||||
|
||||
def add_nodegroup_params(self, cluster):
|
||||
def add_nodegroup_params(self, cluster, nodegroups=None):
|
||||
super(CoreOSK8sTemplateDefinition,
|
||||
self).add_nodegroup_params(cluster)
|
||||
worker_ng = cluster.default_ng_worker
|
||||
master_ng = cluster.default_ng_master
|
||||
self.add_parameter('number_of_minions',
|
||||
nodegroup_attr='node_count',
|
||||
nodegroup_uuid=worker_ng.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
self.add_parameter('minion_flavor',
|
||||
nodegroup_attr='flavor_id',
|
||||
nodegroup_uuid=worker_ng.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
self.add_parameter('master_flavor',
|
||||
nodegroup_attr='flavor_id',
|
||||
nodegroup_uuid=master_ng.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
self).add_nodegroup_params(cluster, nodegroups=nodegroups)
|
||||
nodegroups = nodegroups or [cluster.default_ng_worker,
|
||||
cluster.default_ng_master]
|
||||
for nodegroup in nodegroups:
|
||||
if nodegroup.role == 'master':
|
||||
self.add_parameter(
|
||||
'master_flavor', nodegroup_attr='flavor_id',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
else:
|
||||
self.add_parameter(
|
||||
'number_of_minions', nodegroup_attr='node_count',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
self.add_parameter(
|
||||
'minion_flavor', nodegroup_attr='flavor_id',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
|
||||
def update_outputs(self, stack, cluster_template, cluster):
|
||||
worker_ng = cluster.default_ng_worker
|
||||
master_ng = cluster.default_ng_master
|
||||
|
||||
self.add_output('kube_minions',
|
||||
nodegroup_attr='node_addresses',
|
||||
nodegroup_uuid=worker_ng.uuid,
|
||||
mapping_type=NodeAddressOutputMapping)
|
||||
self.add_output('kube_masters',
|
||||
nodegroup_attr='node_addresses',
|
||||
nodegroup_uuid=master_ng.uuid,
|
||||
mapping_type=MasterAddressOutputMapping)
|
||||
self.add_output('number_of_minions',
|
||||
nodegroup_attr='node_count',
|
||||
nodegroup_uuid=worker_ng.uuid,
|
||||
is_stack_param=True)
|
||||
def update_outputs(self, stack, cluster_template, cluster,
|
||||
nodegroups=None):
|
||||
nodegroups = nodegroups or [cluster.default_ng_worker,
|
||||
cluster.default_ng_master]
|
||||
for nodegroup in nodegroups:
|
||||
if nodegroup.role == 'master':
|
||||
self.add_output('kube_masters',
|
||||
nodegroup_attr='node_addresses',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
mapping_type=MasterAddressOutputMapping)
|
||||
else:
|
||||
self.add_output('kube_minions',
|
||||
nodegroup_attr='node_addresses',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
mapping_type=NodeAddressOutputMapping)
|
||||
self.add_output('number_of_minions',
|
||||
nodegroup_attr='node_count',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
is_stack_param=True)
|
||||
super(CoreOSK8sTemplateDefinition,
|
||||
self).update_outputs(stack, cluster_template, cluster)
|
||||
self).update_outputs(stack, cluster_template, cluster,
|
||||
nodegroups=nodegroups)
|
||||
|
||||
def get_params(self, context, cluster_template, cluster, **kwargs):
|
||||
extra_params = kwargs.pop('extra_params', {})
|
||||
|
|
|
@ -69,20 +69,27 @@ class K8sFedoraTemplateDefinition(k8s_template_def.K8sTemplateDefinition):
|
|||
self.add_parameter('docker_storage_driver',
|
||||
cluster_template_attr='docker_storage_driver')
|
||||
|
||||
def update_outputs(self, stack, cluster_template, cluster):
|
||||
worker_ng = cluster.default_ng_worker
|
||||
master_ng = cluster.default_ng_master
|
||||
def update_outputs(self, stack, cluster_template, cluster,
|
||||
nodegroups=None):
|
||||
nodegroups = nodegroups or [cluster.default_ng_worker,
|
||||
cluster.default_ng_master]
|
||||
for nodegroup in nodegroups:
|
||||
if nodegroup.role == 'master':
|
||||
self.add_output(
|
||||
'kube_masters',
|
||||
nodegroup_attr='node_addresses',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
mapping_type=MasterAddressOutputMapping)
|
||||
else:
|
||||
self.add_output(
|
||||
'kube_minions',
|
||||
nodegroup_attr='node_addresses',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
mapping_type=NodeAddressOutputMapping)
|
||||
|
||||
self.add_output('kube_minions',
|
||||
nodegroup_attr='node_addresses',
|
||||
nodegroup_uuid=worker_ng.uuid,
|
||||
mapping_type=NodeAddressOutputMapping)
|
||||
self.add_output('kube_masters',
|
||||
nodegroup_attr='node_addresses',
|
||||
nodegroup_uuid=master_ng.uuid,
|
||||
mapping_type=MasterAddressOutputMapping)
|
||||
super(K8sFedoraTemplateDefinition,
|
||||
self).update_outputs(stack, cluster_template, cluster)
|
||||
self).update_outputs(stack, cluster_template, cluster,
|
||||
nodegroups=nodegroups)
|
||||
|
||||
def get_params(self, context, cluster_template, cluster, **kwargs):
|
||||
extra_params = kwargs.pop('extra_params', {})
|
||||
|
@ -117,9 +124,6 @@ class K8sFedoraTemplateDefinition(k8s_template_def.K8sTemplateDefinition):
|
|||
'"cinder" volume driver needs "cloud_provider_enabled" label '
|
||||
'to be true or unset.'))
|
||||
|
||||
extra_params['master_image'] = cluster_template.image_id
|
||||
extra_params['minion_image'] = cluster_template.image_id
|
||||
|
||||
label_list = ['coredns_tag',
|
||||
'kube_tag', 'container_infra_prefix',
|
||||
'availability_zone',
|
||||
|
|
|
@ -86,33 +86,50 @@ class K8sTemplateDefinition(template_def.BaseTemplateDefinition):
|
|||
self.add_output('kube_masters_private',
|
||||
cluster_attr=None)
|
||||
|
||||
def add_nodegroup_params(self, cluster):
|
||||
def add_nodegroup_params(self, cluster, nodegroups=None):
|
||||
super(K8sTemplateDefinition,
|
||||
self).add_nodegroup_params(cluster)
|
||||
worker_ng = cluster.default_ng_worker
|
||||
master_ng = cluster.default_ng_master
|
||||
self.add_parameter('number_of_minions',
|
||||
nodegroup_attr='node_count',
|
||||
nodegroup_uuid=worker_ng.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
self.add_parameter('minion_flavor',
|
||||
nodegroup_attr='flavor_id',
|
||||
nodegroup_uuid=worker_ng.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
self.add_parameter('master_flavor',
|
||||
nodegroup_attr='flavor_id',
|
||||
nodegroup_uuid=master_ng.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
self).add_nodegroup_params(cluster, nodegroups=nodegroups)
|
||||
nodegroups = nodegroups or [cluster.default_ng_worker,
|
||||
cluster.default_ng_master]
|
||||
for nodegroup in nodegroups:
|
||||
if nodegroup.role == 'master':
|
||||
self.add_parameter(
|
||||
'master_flavor',
|
||||
nodegroup_attr='flavor_id',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
self.add_parameter(
|
||||
'master_image', nodegroup_attr='image_id',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
else:
|
||||
self.add_parameter(
|
||||
'number_of_minions',
|
||||
nodegroup_attr='node_count',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
self.add_parameter(
|
||||
'minion_flavor',
|
||||
nodegroup_attr='flavor_id',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
self.add_parameter(
|
||||
'minion_image', nodegroup_attr='image_id',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
|
||||
def update_outputs(self, stack, cluster_template, cluster):
|
||||
worker_ng = cluster.default_ng_worker
|
||||
self.add_output('number_of_minions',
|
||||
nodegroup_attr='node_count',
|
||||
nodegroup_uuid=worker_ng.uuid,
|
||||
is_stack_param=True,
|
||||
mapping_type=template_def.NodeGroupOutputMapping)
|
||||
def update_outputs(self, stack, cluster_template, cluster,
|
||||
nodegroups=None):
|
||||
nodegroups = nodegroups or [cluster.default_ng_worker]
|
||||
for nodegroup in nodegroups:
|
||||
if nodegroup.role != 'master':
|
||||
self.add_output(
|
||||
'number_of_minions', nodegroup_attr='node_count',
|
||||
nodegroup_uuid=nodegroup.uuid, is_stack_param=True,
|
||||
mapping_type=template_def.NodeGroupOutputMapping)
|
||||
super(K8sTemplateDefinition,
|
||||
self).update_outputs(stack, cluster_template, cluster)
|
||||
self).update_outputs(stack, cluster_template, cluster,
|
||||
nodegroups=nodegroups)
|
||||
|
||||
def get_params(self, context, cluster_template, cluster, **kwargs):
|
||||
extra_params = kwargs.pop('extra_params', {})
|
||||
|
|
|
@ -78,43 +78,53 @@ class SwarmFedoraTemplateDefinition(template_def.BaseTemplateDefinition):
|
|||
self.add_output('discovery_url',
|
||||
cluster_attr='discovery_url')
|
||||
|
||||
def add_nodegroup_params(self, cluster):
|
||||
def add_nodegroup_params(self, cluster, nodegroups=None):
|
||||
super(SwarmFedoraTemplateDefinition,
|
||||
self).add_nodegroup_params(cluster)
|
||||
master_ng = cluster.default_ng_master
|
||||
worker_ng = cluster.default_ng_worker
|
||||
self.add_parameter('number_of_nodes',
|
||||
nodegroup_attr='node_count',
|
||||
nodegroup_uuid=worker_ng.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
self.add_parameter('node_flavor',
|
||||
nodegroup_attr='flavor_id',
|
||||
nodegroup_uuid=worker_ng.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
self.add_parameter('master_flavor',
|
||||
nodegroup_attr='flavor_id',
|
||||
nodegroup_uuid=master_ng.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
self).add_nodegroup_params(cluster, nodegroups=nodegroups)
|
||||
nodegroups = nodegroups or [cluster.default_ng_master,
|
||||
cluster.default_ng_worker]
|
||||
for nodegroup in nodegroups:
|
||||
if nodegroup.role == 'master':
|
||||
self.add_parameter(
|
||||
'master_flavor',
|
||||
nodegroup_attr='flavor_id',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
else:
|
||||
self.add_parameter(
|
||||
'number_of_nodes',
|
||||
nodegroup_attr='node_count',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
self.add_parameter(
|
||||
'node_flavor',
|
||||
nodegroup_attr='flavor_id',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
|
||||
def update_outputs(self, stack, cluster_template, cluster):
|
||||
worker_ng = cluster.default_ng_worker
|
||||
master_ng = cluster.default_ng_master
|
||||
def update_outputs(self, stack, cluster_template, cluster,
|
||||
nodegroups=None):
|
||||
nodegroups = nodegroups or [cluster.default_ng_worker,
|
||||
cluster.default_ng_master]
|
||||
|
||||
self.add_output('swarm_masters',
|
||||
nodegroup_attr='node_addresses',
|
||||
nodegroup_uuid=master_ng.uuid,
|
||||
mapping_type=template_def.NodeGroupOutputMapping)
|
||||
self.add_output('swarm_nodes',
|
||||
nodegroup_attr='node_addresses',
|
||||
nodegroup_uuid=worker_ng.uuid,
|
||||
mapping_type=template_def.NodeGroupOutputMapping)
|
||||
self.add_output('number_of_nodes',
|
||||
nodegroup_attr='node_count',
|
||||
nodegroup_uuid=worker_ng.uuid,
|
||||
is_stack_param=True,
|
||||
mapping_type=template_def.NodeGroupOutputMapping)
|
||||
for nodegroup in nodegroups:
|
||||
if nodegroup.role == 'master':
|
||||
self.add_output(
|
||||
'swarm_masters', nodegroup_attr='node_addresses',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
mapping_type=template_def.NodeGroupOutputMapping)
|
||||
else:
|
||||
self.add_output(
|
||||
'swarm_nodes', nodegroup_attr='node_addresses',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
mapping_type=template_def.NodeGroupOutputMapping)
|
||||
self.add_output(
|
||||
'number_of_nodes', nodegroup_attr='node_count',
|
||||
nodegroup_uuid=nodegroup.uuid, is_stack_param=True,
|
||||
mapping_type=template_def.NodeGroupOutputMapping)
|
||||
super(SwarmFedoraTemplateDefinition,
|
||||
self).update_outputs(stack, cluster_template, cluster)
|
||||
self).update_outputs(stack, cluster_template, cluster,
|
||||
nodegroups=nodegroups)
|
||||
|
||||
def get_params(self, context, cluster_template, cluster, **kwargs):
|
||||
extra_params = kwargs.pop('extra_params', {})
|
||||
|
|
|
@ -141,43 +141,52 @@ class SwarmModeTemplateDefinition(template_def.BaseTemplateDefinition):
|
|||
extra_params=extra_params,
|
||||
**kwargs)
|
||||
|
||||
def add_nodegroup_params(self, cluster):
|
||||
def add_nodegroup_params(self, cluster, nodegroups=None):
|
||||
super(SwarmModeTemplateDefinition,
|
||||
self).add_nodegroup_params(cluster)
|
||||
worker_ng = cluster.default_ng_worker
|
||||
master_ng = cluster.default_ng_master
|
||||
self.add_parameter('number_of_nodes',
|
||||
nodegroup_attr='node_count',
|
||||
nodegroup_uuid=worker_ng.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
self.add_parameter('node_flavor',
|
||||
nodegroup_attr='flavor_id',
|
||||
nodegroup_uuid=worker_ng.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
self.add_parameter('master_flavor',
|
||||
nodegroup_attr='flavor_id',
|
||||
nodegroup_uuid=master_ng.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
self).add_nodegroup_params(cluster, nodegroups=nodegroups)
|
||||
nodegroups = nodegroups or [cluster.default_ng_worker,
|
||||
cluster.default_ng_master]
|
||||
for nodegroup in nodegroups:
|
||||
if nodegroup.role == 'master':
|
||||
self.add_parameter(
|
||||
'master_flavor',
|
||||
nodegroup_attr='flavor_id',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
else:
|
||||
self.add_parameter(
|
||||
'number_of_nodes',
|
||||
nodegroup_attr='node_count',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
self.add_parameter(
|
||||
'node_flavor',
|
||||
nodegroup_attr='flavor_id',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
|
||||
def update_outputs(self, stack, cluster_template, cluster):
|
||||
worker_ng = cluster.default_ng_worker
|
||||
master_ng = cluster.default_ng_master
|
||||
|
||||
self.add_output('swarm_masters',
|
||||
nodegroup_attr='node_addresses',
|
||||
nodegroup_uuid=master_ng.uuid,
|
||||
mapping_type=MasterAddressOutputMapping)
|
||||
self.add_output('swarm_nodes',
|
||||
nodegroup_attr='node_addresses',
|
||||
nodegroup_uuid=worker_ng.uuid,
|
||||
mapping_type=NodeAddressOutputMapping)
|
||||
self.add_output('number_of_nodes',
|
||||
nodegroup_attr='node_count',
|
||||
nodegroup_uuid=worker_ng.uuid,
|
||||
is_stack_param=True,
|
||||
mapping_type=template_def.NodeGroupOutputMapping)
|
||||
def update_outputs(self, stack, cluster_template, cluster,
|
||||
nodegroups=None):
|
||||
nodegroups = nodegroups or [cluster.default_ng_worker,
|
||||
cluster.default_ng_master]
|
||||
for nodegroup in nodegroups:
|
||||
if nodegroup.role == 'master':
|
||||
self.add_output('swarm_masters',
|
||||
nodegroup_attr='node_addresses',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
mapping_type=MasterAddressOutputMapping)
|
||||
else:
|
||||
self.add_output('swarm_nodes',
|
||||
nodegroup_attr='node_addresses',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
mapping_type=NodeAddressOutputMapping)
|
||||
self.add_output(
|
||||
'number_of_nodes', nodegroup_attr='node_count',
|
||||
nodegroup_uuid=nodegroup.uuid, is_stack_param=True,
|
||||
mapping_type=template_def.NodeGroupOutputMapping)
|
||||
super(SwarmModeTemplateDefinition,
|
||||
self).update_outputs(stack, cluster_template, cluster)
|
||||
self).update_outputs(stack, cluster_template, cluster,
|
||||
nodegroups=nodegroups)
|
||||
|
||||
def get_env_files(self, cluster_template, cluster):
|
||||
env_files = []
|
||||
|
|
|
@ -187,6 +187,7 @@ class TemplateDefinition(object):
|
|||
def __init__(self):
|
||||
self.param_mappings = list()
|
||||
self.output_mappings = list()
|
||||
self.nodegroup_output_mappings = list()
|
||||
|
||||
def add_parameter(self, *args, **kwargs):
|
||||
param_class = kwargs.pop('param_class', ParameterMapping)
|
||||
|
@ -196,7 +197,10 @@ class TemplateDefinition(object):
|
|||
def add_output(self, *args, **kwargs):
|
||||
mapping_type = kwargs.pop('mapping_type', OutputMapping)
|
||||
output = mapping_type(*args, **kwargs)
|
||||
self.output_mappings.append(output)
|
||||
if kwargs.get('cluster_attr', None):
|
||||
self.output_mappings.append(output)
|
||||
else:
|
||||
self.nodegroup_output_mappings.append(output)
|
||||
|
||||
def get_output(self, *args, **kwargs):
|
||||
for output in self.output_mappings:
|
||||
|
@ -295,12 +299,15 @@ class TemplateDefinition(object):
|
|||
def resolve_ambiguous_values(self, context, heat_param, heat_value, value):
|
||||
return str(value)
|
||||
|
||||
def add_nodegroup_params(self, cluster):
|
||||
def add_nodegroup_params(self, cluster, nodegroups=None):
|
||||
pass
|
||||
|
||||
def update_outputs(self, stack, cluster_template, cluster):
|
||||
def update_outputs(self, stack, cluster_template, cluster,
|
||||
nodegroups=None):
|
||||
for output in self.output_mappings:
|
||||
output.set_output(stack, cluster_template, cluster)
|
||||
for output in self.nodegroup_output_mappings:
|
||||
output.set_output(stack, cluster_template, cluster)
|
||||
|
||||
@abc.abstractproperty
|
||||
def driver_module_path(self):
|
||||
|
@ -350,8 +357,9 @@ class BaseTemplateDefinition(TemplateDefinition):
|
|||
def get_params(self, context, cluster_template, cluster, **kwargs):
|
||||
osc = self.get_osc(context)
|
||||
|
||||
nodegroups = kwargs.pop('nodegroups', None)
|
||||
# Add all the params from the cluster's nodegroups
|
||||
self.add_nodegroup_params(cluster)
|
||||
self.add_nodegroup_params(cluster, nodegroups=nodegroups)
|
||||
|
||||
extra_params = kwargs.pop('extra_params', {})
|
||||
extra_params['trustee_domain_id'] = osc.keystone().trustee_domain_id
|
||||
|
@ -394,25 +402,36 @@ class BaseTemplateDefinition(TemplateDefinition):
|
|||
return super(BaseTemplateDefinition, self).resolve_ambiguous_values(
|
||||
context, heat_param, heat_value, value)
|
||||
|
||||
def add_nodegroup_params(self, cluster):
|
||||
def add_nodegroup_params(self, cluster, nodegroups=None):
|
||||
# Assuming that all the drivers that will not override
|
||||
# this method do not support more than two nodegroups.
|
||||
# Meaning that we have one master and one worker.
|
||||
master_ng = cluster.default_ng_master
|
||||
self.add_parameter('number_of_masters',
|
||||
nodegroup_attr='node_count',
|
||||
nodegroup_uuid=master_ng.uuid,
|
||||
param_class=NodeGroupParameterMapping)
|
||||
nodegroups = nodegroups or [cluster.default_ng_master]
|
||||
for nodegroup in nodegroups:
|
||||
if nodegroup.role == 'master':
|
||||
self.add_parameter('number_of_masters',
|
||||
nodegroup_attr='node_count',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
param_class=NodeGroupParameterMapping)
|
||||
self.add_parameter('role',
|
||||
nodegroup_attr='role',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
param_class=NodeGroupParameterMapping)
|
||||
|
||||
def update_outputs(self, stack, cluster_template, cluster):
|
||||
def update_outputs(self, stack, cluster_template, cluster,
|
||||
nodegroups=None):
|
||||
master_ng = cluster.default_ng_master
|
||||
self.add_output('number_of_masters',
|
||||
nodegroup_attr='node_count',
|
||||
nodegroup_uuid=master_ng.uuid,
|
||||
is_stack_param=True,
|
||||
mapping_type=NodeGroupOutputMapping)
|
||||
nodegroups = nodegroups or [cluster.default_ng_master]
|
||||
for nodegroup in nodegroups:
|
||||
if nodegroup.role == 'master':
|
||||
self.add_output('number_of_masters',
|
||||
nodegroup_attr='node_count',
|
||||
nodegroup_uuid=master_ng.uuid,
|
||||
is_stack_param=True,
|
||||
mapping_type=NodeGroupOutputMapping)
|
||||
super(BaseTemplateDefinition,
|
||||
self).update_outputs(stack, cluster_template, cluster)
|
||||
self).update_outputs(stack, cluster_template, cluster,
|
||||
nodegroups=nodegroups)
|
||||
|
||||
def validate_discovery_url(self, discovery_url, expect_size):
|
||||
url = str(discovery_url)
|
||||
|
|
|
@ -43,42 +43,49 @@ class UbuntuMesosTemplateDefinition(template_def.BaseTemplateDefinition):
|
|||
self.add_output('mesos_slaves_private',
|
||||
cluster_attr=None)
|
||||
|
||||
def add_nodegroup_params(self, cluster):
|
||||
def add_nodegroup_params(self, cluster, nodegroups=None):
|
||||
super(UbuntuMesosTemplateDefinition,
|
||||
self).add_nodegroup_params(cluster)
|
||||
master_ng = cluster.default_ng_master
|
||||
worker_ng = cluster.default_ng_worker
|
||||
self.add_parameter('number_of_slaves',
|
||||
nodegroup_attr='node_count',
|
||||
nodegroup_uuid=worker_ng.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
self.add_parameter('slave_flavor',
|
||||
nodegroup_attr='flavor_id',
|
||||
nodegroup_uuid=worker_ng.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
self.add_parameter('master_flavor',
|
||||
nodegroup_attr='flavor_id',
|
||||
nodegroup_uuid=master_ng.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
self).add_nodegroup_params(cluster, nodegroups=nodegroups)
|
||||
nodegroups = nodegroups or [cluster.default_ng_master,
|
||||
cluster.default_ng_worker]
|
||||
for nodegroup in nodegroups:
|
||||
if nodegroup.role == 'master':
|
||||
self.add_parameter(
|
||||
'master_flavor', nodegroup_attr='flavor_id',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
else:
|
||||
self.add_parameter(
|
||||
'number_of_slaves', nodegroup_attr='node_count',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
self.add_parameter(
|
||||
'slave_flavor', nodegroup_attr='flavor_id',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
param_class=template_def.NodeGroupParameterMapping)
|
||||
|
||||
def update_outputs(self, stack, cluster_template, cluster):
|
||||
worker_ng = cluster.default_ng_worker
|
||||
master_ng = cluster.default_ng_master
|
||||
self.add_output('mesos_master',
|
||||
nodegroup_attr='node_addresses',
|
||||
nodegroup_uuid=master_ng.uuid,
|
||||
mapping_type=template_def.NodeGroupOutputMapping)
|
||||
self.add_output('mesos_slaves',
|
||||
nodegroup_attr='node_addresses',
|
||||
nodegroup_uuid=worker_ng.uuid,
|
||||
mapping_type=template_def.NodeGroupOutputMapping)
|
||||
self.add_output('number_of_slaves',
|
||||
nodegroup_attr='node_count',
|
||||
nodegroup_uuid=worker_ng.uuid,
|
||||
is_stack_param=True,
|
||||
mapping_type=template_def.NodeGroupOutputMapping)
|
||||
def update_outputs(self, stack, cluster_template, cluster,
|
||||
nodegroups=None):
|
||||
nodegroups = nodegroups or [cluster.default_ng_worker,
|
||||
cluster.default_ng_master]
|
||||
for nodegroup in nodegroups:
|
||||
if nodegroup.role == 'master':
|
||||
self.add_output(
|
||||
'mesos_master', nodegroup_attr='node_addresses',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
mapping_type=template_def.NodeGroupOutputMapping)
|
||||
else:
|
||||
self.add_output(
|
||||
'mesos_slaves', nodegroup_attr='node_addresses',
|
||||
nodegroup_uuid=nodegroup.uuid,
|
||||
mapping_type=template_def.NodeGroupOutputMapping)
|
||||
self.add_output(
|
||||
'number_of_slaves', nodegroup_attr='node_count',
|
||||
nodegroup_uuid=nodegroup.uuid, is_stack_param=True,
|
||||
mapping_type=template_def.NodeGroupOutputMapping)
|
||||
super(UbuntuMesosTemplateDefinition,
|
||||
self).update_outputs(stack, cluster_template, cluster)
|
||||
self).update_outputs(stack, cluster_template, cluster,
|
||||
nodegroups=nodegroups)
|
||||
|
||||
def get_params(self, context, cluster_template, cluster, **kwargs):
|
||||
extra_params = kwargs.pop('extra_params', {})
|
||||
|
|
Loading…
Reference in New Issue