Merge "Switch coe_cluster_template module to OpenStackModule"
This commit is contained in:
commit
3ce4455bc8
|
@ -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__":
|
||||||
|
|
Loading…
Reference in New Issue