Merge "Switch coe_cluster_template module to OpenStackModule"

This commit is contained in:
Zuul 2021-06-16 08:20:22 +00:00 committed by Gerrit Code Review
commit 3ce4455bc8
1 changed files with 58 additions and 58 deletions

View File

@ -281,26 +281,11 @@ EXAMPLES = '''
public: no public: no
''' '''
from ansible.module_utils.basic import AnsibleModule from ansible_collections.openstack.cloud.plugins.module_utils.openstack import OpenStackModule
from ansible_collections.openstack.cloud.plugins.module_utils.openstack import (openstack_full_argument_spec,
openstack_module_kwargs,
openstack_cloud_from_module)
def _parse_labels(labels): class CoeClusterTemplateModule(OpenStackModule):
if isinstance(labels, str): argument_spec = dict(
labels_dict = {}
for kv_str in labels.split(","):
k, v = kv_str.split("=")
labels_dict[k] = v
return labels_dict
if not labels:
return {}
return labels
def main():
argument_spec = openstack_full_argument_spec(
coe=dict(required=True, choices=['kubernetes', 'swarm', 'mesos']), coe=dict(required=True, choices=['kubernetes', 'swarm', 'mesos']),
dns_nameserver=dict(default='8.8.8.8'), dns_nameserver=dict(default='8.8.8.8'),
docker_storage_driver=dict(choices=['devicemapper', 'overlay', 'overlay2']), docker_storage_driver=dict(choices=['devicemapper', 'overlay', 'overlay2']),
@ -327,61 +312,76 @@ def main():
tls_disabled=dict(type='bool', default=False), tls_disabled=dict(type='bool', default=False),
volume_driver=dict(choices=['cinder', 'rexray']), volume_driver=dict(choices=['cinder', 'rexray']),
) )
module_kwargs = openstack_module_kwargs() module_kwargs = dict()
module = AnsibleModule(argument_spec, **module_kwargs)
params = module.params.copy() def _parse_labels(self, labels):
if isinstance(labels, str):
labels_dict = {}
for kv_str in labels.split(","):
k, v = kv_str.split("=")
labels_dict[k] = v
return labels_dict
if not labels:
return {}
return labels
state = module.params['state'] def run(self):
name = module.params['name'] params = self.params.copy()
coe = module.params['coe']
image_id = module.params['image_id'] state = self.params['state']
name = self.params['name']
coe = self.params['coe']
image_id = self.params['image_id']
kwargs = dict( kwargs = dict(
dns_nameserver=module.params['dns_nameserver'], dns_nameserver=self.params['dns_nameserver'],
docker_storage_driver=module.params['docker_storage_driver'], docker_storage_driver=self.params['docker_storage_driver'],
docker_volume_size=module.params['docker_volume_size'], docker_volume_size=self.params['docker_volume_size'],
external_network_id=module.params['external_network_id'], external_network_id=self.params['external_network_id'],
fixed_network=module.params['fixed_network'], fixed_network=self.params['fixed_network'],
fixed_subnet=module.params['fixed_subnet'], fixed_subnet=self.params['fixed_subnet'],
flavor_id=module.params['flavor_id'], flavor_id=self.params['flavor_id'],
floating_ip_enabled=module.params['floating_ip_enabled'], floating_ip_enabled=self.params['floating_ip_enabled'],
keypair_id=module.params['keypair_id'], keypair_id=self.params['keypair_id'],
labels=_parse_labels(params['labels']), labels=self._parse_labels(params['labels']),
http_proxy=module.params['http_proxy'], http_proxy=self.params['http_proxy'],
https_proxy=module.params['https_proxy'], https_proxy=self.params['https_proxy'],
master_lb_enabled=module.params['master_lb_enabled'], master_lb_enabled=self.params['master_lb_enabled'],
master_flavor_id=module.params['master_flavor_id'], master_flavor_id=self.params['master_flavor_id'],
network_driver=module.params['network_driver'], network_driver=self.params['network_driver'],
no_proxy=module.params['no_proxy'], no_proxy=self.params['no_proxy'],
public=module.params['public'], public=self.params['public'],
registry_enabled=module.params['registry_enabled'], registry_enabled=self.params['registry_enabled'],
server_type=module.params['server_type'], server_type=self.params['server_type'],
tls_disabled=module.params['tls_disabled'], tls_disabled=self.params['tls_disabled'],
volume_driver=module.params['volume_driver'], volume_driver=self.params['volume_driver'],
) )
sdk, cloud = openstack_cloud_from_module(module)
try:
changed = False changed = False
template = cloud.get_coe_cluster_template(name_or_id=name, filters={'coe': coe, 'image_id': image_id}) template = self.conn.get_coe_cluster_template(
name_or_id=name, filters={'coe': coe, 'image_id': image_id})
if state == 'present': if state == 'present':
if not template: if not template:
template = cloud.create_coe_cluster_template(name, coe=coe, image_id=image_id, **kwargs) template = self.conn.create_coe_cluster_template(
name, coe=coe, image_id=image_id, **kwargs)
changed = True changed = True
else: else:
changed = False changed = False
module.exit_json(changed=changed, cluster_template=template, id=template['uuid']) self.exit_json(
changed=changed, cluster_template=template, id=template['uuid'])
elif state == 'absent': elif state == 'absent':
if not template: if not template:
module.exit_json(changed=False) self.exit_json(changed=False)
else: else:
cloud.delete_coe_cluster_template(name) self.conn.delete_coe_cluster_template(name)
module.exit_json(changed=True) self.exit_json(changed=True)
except sdk.exceptions.OpenStackCloudException as e:
module.fail_json(msg=str(e), extra_data=e.extra_data)
def main():
module = CoeClusterTemplateModule()
module()
if __name__ == "__main__": if __name__ == "__main__":