
openstacksdk's first major release brings new features and bug fixes, e.g. for Magnum clusters and cluster templates [1], [2], [3]. [1] https://review.opendev.org/c/openstack/openstacksdk/+/865267 [2] https://review.opendev.org/c/openstack/openstacksdk/+/871648 [3] https://review.opendev.org/c/openstack/openstacksdk/+/871987 Change-Id: Ic7aa998ac5fa5c05dbea188a4d3b76ea774ff797
98 lines
2.4 KiB
Python
98 lines
2.4 KiB
Python
#!/usr/bin/python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
# Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
|
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
|
|
DOCUMENTATION = r'''
|
|
---
|
|
module: config
|
|
short_description: Get OpenStack Client config
|
|
author: OpenStack Ansible SIG
|
|
description:
|
|
- Get OpenStack cloud credentials and configuration,
|
|
e.g. from clouds.yaml and environment variables.
|
|
options:
|
|
clouds:
|
|
description:
|
|
- List of clouds to limit the return list to.
|
|
- When I(clouds) is not defined, then data
|
|
is returned for all configured clouds.
|
|
default: []
|
|
type: list
|
|
elements: str
|
|
requirements:
|
|
- "python >= 3.6"
|
|
- "openstacksdk >= 1.0.0"
|
|
'''
|
|
|
|
RETURN = r'''
|
|
clouds:
|
|
description: List of OpenStack cloud configurations.
|
|
returned: always
|
|
type: list
|
|
elements: dict
|
|
contains:
|
|
name:
|
|
description: Name of the cloud.
|
|
type: str
|
|
config:
|
|
description: A dict of configuration values for the CloudRegion and
|
|
its services. The key for a ${config_option} for a
|
|
specific ${service} should be ${service}_${config_option}.
|
|
type: dict
|
|
'''
|
|
|
|
EXAMPLES = r'''
|
|
- name: Read configuration of all defined clouds
|
|
openstack.cloud.config:
|
|
register: config
|
|
|
|
- name: Print clouds which do not support security groups
|
|
loop: "{{ config.clouds }}"
|
|
when: item.config.secgroup_source|default(None) != None
|
|
debug:
|
|
var: item
|
|
|
|
- name: Read configuration of a two specific clouds
|
|
openstack.cloud.config:
|
|
clouds:
|
|
- devstack
|
|
- mordred
|
|
'''
|
|
|
|
from ansible.module_utils.basic import AnsibleModule
|
|
|
|
try:
|
|
import openstack.config
|
|
from openstack import exceptions
|
|
HAS_OPENSTACKSDK = True
|
|
except ImportError:
|
|
HAS_OPENSTACKSDK = False
|
|
|
|
|
|
def main():
|
|
module = AnsibleModule(
|
|
argument_spec=dict(
|
|
clouds=dict(type='list', default=[], elements='str'),
|
|
)
|
|
)
|
|
|
|
if not HAS_OPENSTACKSDK:
|
|
module.fail_json(msg='openstacksdk is required for this module')
|
|
|
|
try:
|
|
clouds = [dict(name=cloud.name, config=cloud.config)
|
|
for cloud in openstack.config.OpenStackConfig().get_all()
|
|
if not module.params['clouds']
|
|
or cloud.name in module.params['clouds']]
|
|
|
|
module.exit_json(changed=False, clouds=clouds)
|
|
|
|
except exceptions.SDKException as e:
|
|
module.fail_json(msg=str(e))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|