diff --git a/doc/source/modules/modules-tripleo_get_flatten_stack.rst b/doc/source/modules/modules-tripleo_get_flatten_stack.rst new file mode 100644 index 000000000..41da63522 --- /dev/null +++ b/doc/source/modules/modules-tripleo_get_flatten_stack.rst @@ -0,0 +1,14 @@ +================================== +Module - tripleo_get_flatten_stack +================================== + + +This module provides for the following ansible plugin: + + * tripleo_get_flatten_stack + + +.. ansibleautoplugin:: + :module: tripleo_ansible/ansible_plugins/modules/tripleo_get_flatten_stack.py + :documentation: true + :examples: true diff --git a/doc/source/modules/modules-tripleo_get_flavor_profile.rst b/doc/source/modules/modules-tripleo_get_flavor_profile.rst new file mode 100644 index 000000000..bbcad9035 --- /dev/null +++ b/doc/source/modules/modules-tripleo_get_flavor_profile.rst @@ -0,0 +1,14 @@ +=================================== +Module - tripleo_get_flavor_profile +=================================== + + +This module provides for the following ansible plugin: + + * tripleo_get_flavor_profile + + +.. ansibleautoplugin:: + :module: tripleo_ansible/ansible_plugins/modules/tripleo_get_flavor_profile.py + :documentation: true + :examples: true diff --git a/doc/source/modules/modules-tripleo_get_introspected_data.rst b/doc/source/modules/modules-tripleo_get_introspected_data.rst new file mode 100644 index 000000000..c8b32518d --- /dev/null +++ b/doc/source/modules/modules-tripleo_get_introspected_data.rst @@ -0,0 +1,14 @@ +====================================== +Module - tripleo_get_introspected_data +====================================== + + +This module provides for the following ansible plugin: + + * tripleo_get_introspected_data + + +.. ansibleautoplugin:: + :module: tripleo_ansible/ansible_plugins/modules/tripleo_get_introspected_data.py + :documentation: true + :examples: true diff --git a/doc/source/modules/modules-tripleo_get_role_list.rst b/doc/source/modules/modules-tripleo_get_role_list.rst new file mode 100644 index 000000000..d45246228 --- /dev/null +++ b/doc/source/modules/modules-tripleo_get_role_list.rst @@ -0,0 +1,14 @@ +============================== +Module - tripleo_get_role_list +============================== + + +This module provides for the following ansible plugin: + + * tripleo_get_role_list + + +.. ansibleautoplugin:: + :module: tripleo_ansible/ansible_plugins/modules/tripleo_get_role_list.py + :documentation: true + :examples: true diff --git a/doc/source/modules/modules-tripleo_reset_params.rst b/doc/source/modules/modules-tripleo_reset_params.rst new file mode 100644 index 000000000..a1e61244b --- /dev/null +++ b/doc/source/modules/modules-tripleo_reset_params.rst @@ -0,0 +1,14 @@ +============================= +Module - tripleo_reset_params +============================= + + +This module provides for the following ansible plugin: + + * tripleo_reset_params + + +.. ansibleautoplugin:: + :module: tripleo_ansible/ansible_plugins/modules/tripleo_reset_params.py + :documentation: true + :examples: true diff --git a/tripleo_ansible/ansible_plugins/module_utils/tripleo_common_utils.py b/tripleo_ansible/ansible_plugins/module_utils/tripleo_common_utils.py index 51f9ad363..e458a3c88 100644 --- a/tripleo_ansible/ansible_plugins/module_utils/tripleo_common_utils.py +++ b/tripleo_ansible/ansible_plugins/module_utils/tripleo_common_utils.py @@ -154,13 +154,12 @@ class TripleOCommon(object): if 'swift_client' in self.client_cache: return self.client_cache['swift_client'] else: - self.client_cache['swift_client'] = \ - swift_client.Connection( - session=self.sess, - retries=10, - starting_backoff=3, - max_backoff=120 - ) + self.client_cache['swift_client'] = swift_client.Connection( + session=self.sess, + retries=10, + starting_backoff=3, + max_backoff=120 + ) return self.client_cache['swift_client'] def baremetal_configure_boot(self, kwargs): diff --git a/tripleo_ansible/ansible_plugins/modules/baremetal_register_or_update_nodes.py b/tripleo_ansible/ansible_plugins/modules/baremetal_register_or_update_nodes.py index 3130ef8b3..071460ee9 100644 --- a/tripleo_ansible/ansible_plugins/modules/baremetal_register_or_update_nodes.py +++ b/tripleo_ansible/ansible_plugins/modules/baremetal_register_or_update_nodes.py @@ -64,6 +64,7 @@ options: author: - Adriano Petrich (@frac) +requirements: ["openstacksdk", "tripleo-common"] ''' diff --git a/tripleo_ansible/ansible_plugins/modules/os_tripleo_baremetal_configure.py b/tripleo_ansible/ansible_plugins/modules/os_tripleo_baremetal_configure.py index 7f8168c8c..43e02b753 100644 --- a/tripleo_ansible/ansible_plugins/modules/os_tripleo_baremetal_configure.py +++ b/tripleo_ansible/ansible_plugins/modules/os_tripleo_baremetal_configure.py @@ -46,7 +46,7 @@ options: type: dict required: true -requirements: ["openstacksdk"] +requirements: ["openstacksdk", "tripleo-common"] """ EXAMPLES = """ diff --git a/tripleo_ansible/ansible_plugins/modules/tripleo_fernet_keys_rotate.py b/tripleo_ansible/ansible_plugins/modules/tripleo_fernet_keys_rotate.py index c5e116c30..0cf2a0313 100644 --- a/tripleo_ansible/ansible_plugins/modules/tripleo_fernet_keys_rotate.py +++ b/tripleo_ansible/ansible_plugins/modules/tripleo_fernet_keys_rotate.py @@ -53,6 +53,7 @@ options: default: overcloud author: - Rabi Mishra (@ramishra) +requirements: ["openstacksdk", "tripleo-common"] ''' EXAMPLES = ''' diff --git a/tripleo_ansible/ansible_plugins/modules/tripleo_get_flatten_stack.py b/tripleo_ansible/ansible_plugins/modules/tripleo_get_flatten_stack.py new file mode 100644 index 000000000..6410d7dcd --- /dev/null +++ b/tripleo_ansible/ansible_plugins/modules/tripleo_get_flatten_stack.py @@ -0,0 +1,92 @@ +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils import tripleo_common_utils as tc +from ansible.module_utils.openstack import openstack_full_argument_spec +from ansible.module_utils.openstack import openstack_module_kwargs +from ansible.module_utils.openstack import openstack_cloud_from_module + + +DOCUMENTATION = """ +--- +module: tripleo_get_flatten_stack +short_description: Get the heat stack tree and parameters in flattened structure +extends_documentation_fragment: openstack +author: + - "Kevin Carter (@cloudnull)" +version_added: "2.10" +description: + - This method validates the stack of the container and returns the + parameters and the heat stack tree. The heat stack tree is + flattened for easy consumption. +options: + container: + description: + - Name of plan / container + type: str + required: true + +requirements: ["openstacksdk", "tripleo-common"] +""" + +EXAMPLES = """ +- name: Get flattened stack + tripleo_get_flatten_stack: + cloud: undercloud + container: overcloud + register: flattened_params +""" + + +import yaml + +from tripleo_common.utils import stack_parameters as stack_param_utils + + +def main(): + result = dict( + success=False, + changed=False, + error=None, + ) + module = AnsibleModule( + openstack_full_argument_spec( + **yaml.safe_load(DOCUMENTATION)['options'] + ), + **openstack_module_kwargs() + ) + _, conn = openstack_cloud_from_module(module) + tripleo = tc.TripleOCommon(session=conn.session) + try: + result['stack_data'] = stack_param_utils.get_flattened_parameters( + tripleo.get_object_client(), + tripleo.get_orchestration_client(), + module.params["container"] + ) + except Exception as exp: + result['error'] = str(exp) + result['msg'] = 'Error flattening stack data for plan {}: {}'.format( + module.params["container"], + exp + ) + module.fail_json(**result) + else: + result['success'] = True + module.exit_json(**result) + + +if __name__ == "__main__": + main() diff --git a/tripleo_ansible/ansible_plugins/modules/tripleo_get_flavor_profile.py b/tripleo_ansible/ansible_plugins/modules/tripleo_get_flavor_profile.py new file mode 100644 index 000000000..401d1b12a --- /dev/null +++ b/tripleo_ansible/ansible_plugins/modules/tripleo_get_flavor_profile.py @@ -0,0 +1,94 @@ +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils import tripleo_common_utils as tc +from ansible.module_utils.openstack import openstack_full_argument_spec +from ansible.module_utils.openstack import openstack_module_kwargs +from ansible.module_utils.openstack import openstack_cloud_from_module + + +DOCUMENTATION = """ +--- +module: tripleo_get_flavor_profile +short_description: Get the flavor profile data +extends_documentation_fragment: openstack +author: + - "Kevin Carter (@cloudnull)" +version_added: "2.10" +description: + - Pull profile from a given flavor +options: + flavor_name: + description: + - Name of flavor + type: str + required: true + +requirements: ["openstacksdk", "tripleo-common"] +""" + +EXAMPLES = """ +- name: Get flavor profile + tripleo_get_flavor_profile: + flavor_name: m1.tiny + register: flavor_profile +""" + + +import os + +import yaml + +from tripleo_common import exception +from tripleo_common.utils import stack_parameters as stack_param_utils + + +def main(): + result = dict( + success=False, + changed=False, + error=None, + ) + module = AnsibleModule( + openstack_full_argument_spec( + **yaml.safe_load(DOCUMENTATION)['options'] + ), + **openstack_module_kwargs() + ) + _, conn = openstack_cloud_from_module(module) + tripleo = tc.TripleOCommon(session=conn.session) + try: + result['profile'] = tripleo.return_flavor_profile( + module.params["flavor_name"] + ) + except exception.DeriveParamsError: + result['profile'] = None + result['success'] = True + module.exit_json(**result) + except Exception as exp: + result['error'] = str(exp) + result['msg'] = 'Error pulling flavor properties for {}: {}'.format( + module.params["flavor_name"], + exp + ) + module.fail_json(**result) + else: + result['success'] = True + module.exit_json(**result) + + +if __name__ == "__main__": + main() diff --git a/tripleo_ansible/ansible_plugins/modules/tripleo_get_introspected_data.py b/tripleo_ansible/ansible_plugins/modules/tripleo_get_introspected_data.py new file mode 100644 index 000000000..3fdb554c7 --- /dev/null +++ b/tripleo_ansible/ansible_plugins/modules/tripleo_get_introspected_data.py @@ -0,0 +1,89 @@ +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils import tripleo_common_utils as tc +from ansible.module_utils.openstack import openstack_full_argument_spec +from ansible.module_utils.openstack import openstack_module_kwargs +from ansible.module_utils.openstack import openstack_cloud_from_module + + +DOCUMENTATION = """ +--- +module: tripleo_get_introspected_data +short_description: Retrieve introspection data +extends_documentation_fragment: openstack +author: + - "Kevin Carter (@cloudnull)" +version_added: "2.10" +description: + - Pull introspection data from a baremetal node. +options: + node_id: + description: + - ID of the baremetal node + type: str + required: true + +requirements: ["openstacksdk", "tripleo-common"] +""" + +EXAMPLES = """ +- name: Get introspected data + tripleo_get_introspected_data: + node_id: xxx + register: introspected_data +""" + + +import os + +import yaml + +from tripleo_common import exception + + +def main(): + result = dict( + success=False, + changed=False, + error=None, + ) + module = AnsibleModule( + openstack_full_argument_spec( + **yaml.safe_load(DOCUMENTATION)['options'] + ), + **openstack_module_kwargs() + ) + _, conn = openstack_cloud_from_module(module) + tripleo = tc.TripleOCommon(session=conn.session) + try: + result['data'] = tripleo.return_introspected_node_data( + node_id=module.params["node_id"] + ) + except Exception as exp: + result['error'] = str(exp) + result['msg'] = 'Error pulling introspection data for {}: {}'.format( + module.params["node_id"], + exp + ) + module.fail_json(**result) + else: + result['success'] = True + module.exit_json(**result) + + +if __name__ == "__main__": + main() diff --git a/tripleo_ansible/ansible_plugins/modules/tripleo_get_role_list.py b/tripleo_ansible/ansible_plugins/modules/tripleo_get_role_list.py new file mode 100644 index 000000000..8782cd8bd --- /dev/null +++ b/tripleo_ansible/ansible_plugins/modules/tripleo_get_role_list.py @@ -0,0 +1,107 @@ +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils import tripleo_common_utils as tc +from ansible.module_utils.openstack import openstack_full_argument_spec +from ansible.module_utils.openstack import openstack_module_kwargs +from ansible.module_utils.openstack import openstack_cloud_from_module + + +DOCUMENTATION = """ +--- +module: tripleo_get_role_list +short_description: Lists deployment roles +extends_documentation_fragment: openstack +author: + - "Kevin Carter (@cloudnull)" +version_added: "2.10" +description: + - This action lists all deployment roles residing in the undercloud. A + deployment plan consists of a container marked with metadata + 'x-container-meta-usage-tripleo'. +options: + container: + description: + - Name of plan / container + type: str + required: true + role_file_name: + description: + - File name + type: str + default: roles_data.yaml + detail: + description: + - If false displays role names only. + If true, returns all roles data. + type: bool + default: false + valid: + description: + - check if the role has count > 0 in heat environment + type: bool + default: true +requirements: ["openstacksdk", "tripleo-common"] +""" + +EXAMPLES = """ +- name: configure boot + tripleo_get_role_list: + register: role_list +""" + + +import os + +import yaml + +from tripleo_common.utils import roles as roles_utils + + +def main(): + result = dict( + success=False, + changed=False, + error=None, + ) + module = AnsibleModule( + openstack_full_argument_spec( + **yaml.safe_load(DOCUMENTATION)['options'] + ), + **openstack_module_kwargs() + ) + _, conn = openstack_cloud_from_module(module) + tripleo = tc.TripleOCommon(session=conn.session) + object_client = tripleo.get_object_client() + try: + result['roles'] = roles_utils.get_roles_from_plan( + object_client, + container=module.params['container'], + role_file_name=module.params['role_file_name'], + detail=module.params['detail'], + valid=module.params['valid'] + ) + except Exception as exp: + result['error'] = str(exp) + result['msg'] = 'Error listing roles: {}'.format(exp) + module.fail_json(**result) + else: + result['success'] = True + module.exit_json(**result) + + +if __name__ == "__main__": + main() diff --git a/tripleo_ansible/ansible_plugins/modules/tripleo_image_params_prepare.py b/tripleo_ansible/ansible_plugins/modules/tripleo_image_params_prepare.py index 4ea01e84b..f75ce4e65 100644 --- a/tripleo_ansible/ansible_plugins/modules/tripleo_image_params_prepare.py +++ b/tripleo_ansible/ansible_plugins/modules/tripleo_image_params_prepare.py @@ -59,6 +59,7 @@ options: default: false author: - Rabi Mishra (@ramishra) +requirements: ["openstacksdk", "tripleo-common"] ''' EXAMPLES = ''' diff --git a/tripleo_ansible/ansible_plugins/modules/tripleo_nova_image_cache.py b/tripleo_ansible/ansible_plugins/modules/tripleo_nova_image_cache.py index 86e60346f..b3aa0dcdb 100644 --- a/tripleo_ansible/ansible_plugins/modules/tripleo_nova_image_cache.py +++ b/tripleo_ansible/ansible_plugins/modules/tripleo_nova_image_cache.py @@ -65,7 +65,7 @@ options: - Fallback to image download if scp fails default: false -requirements: ["openstacksdk"] +requirements: ["openstacksdk", "tripleo-common"] ''' EXAMPLES = ''' diff --git a/tripleo_ansible/ansible_plugins/modules/tripleo_passwords_rotate.py b/tripleo_ansible/ansible_plugins/modules/tripleo_passwords_rotate.py index 550f0def2..13aacec8e 100644 --- a/tripleo_ansible/ansible_plugins/modules/tripleo_passwords_rotate.py +++ b/tripleo_ansible/ansible_plugins/modules/tripleo_passwords_rotate.py @@ -63,6 +63,7 @@ options: no_log: true author: - Rabi Mishra (@ramishra) +requirements: ["openstacksdk", "tripleo-common"] ''' EXAMPLES = ''' diff --git a/tripleo_ansible/ansible_plugins/modules/tripleo_plan_deploy.py b/tripleo_ansible/ansible_plugins/modules/tripleo_plan_deploy.py index b766d1615..05aa88cb9 100644 --- a/tripleo_ansible/ansible_plugins/modules/tripleo_plan_deploy.py +++ b/tripleo_ansible/ansible_plugins/modules/tripleo_plan_deploy.py @@ -65,6 +65,7 @@ options: author: - Rabi Mishra (@ramishra) +requirements: ["openstacksdk", "tripleo-common"] ''' EXAMPLES = ''' diff --git a/tripleo_ansible/ansible_plugins/modules/tripleo_plan_parameters_update.py b/tripleo_ansible/ansible_plugins/modules/tripleo_plan_parameters_update.py index 2a78a2d6d..7dbcab444 100644 --- a/tripleo_ansible/ansible_plugins/modules/tripleo_plan_parameters_update.py +++ b/tripleo_ansible/ansible_plugins/modules/tripleo_plan_parameters_update.py @@ -70,6 +70,7 @@ options: author: - Rabi Mishra (@ramishra) +requirements: ["openstacksdk", "tripleo-common"] ''' EXAMPLES = ''' diff --git a/tripleo_ansible/ansible_plugins/modules/tripleo_reset_params.py b/tripleo_ansible/ansible_plugins/modules/tripleo_reset_params.py new file mode 100644 index 000000000..ed77bc1ba --- /dev/null +++ b/tripleo_ansible/ansible_plugins/modules/tripleo_reset_params.py @@ -0,0 +1,97 @@ +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils import tripleo_common_utils as tc +from ansible.module_utils.openstack import openstack_full_argument_spec +from ansible.module_utils.openstack import openstack_module_kwargs +from ansible.module_utils.openstack import openstack_cloud_from_module + + +DOCUMENTATION = """ +--- +module: tripleo_reset_params +short_description: Reset params +extends_documentation_fragment: openstack +author: + - "Kevin Carter (@cloudnull)" +version_added: "2.10" +description: + - This method will reset params for a given parmeter key. +options: + container: + description: + - Name of plan / container + type: str + required: true + parameter_key: + description: + - Heat parameter key + type: str + default: parameter_defaults +requirements: ["openstacksdk", "tripleo-common"] +""" + +EXAMPLES = """ +- name: configure boot + tripleo_reset_params: + cloud: undercloud + container: overcloud + parameter_key: parameter_defaults +""" + + +import os + +import yaml + +from tripleo_common.utils import stack_parameters as stack_param_utils + + +def main(): + result = dict( + success=False, + changed=False, + error=None, + ) + module = AnsibleModule( + openstack_full_argument_spec( + **yaml.safe_load(DOCUMENTATION)['options'] + ), + **openstack_module_kwargs() + ) + _, conn = openstack_cloud_from_module(module) + tripleo = tc.TripleOCommon(session=conn.session) + try: + stack_param_utils.reset_parameters( + swift=tripleo.get_object_client(), + container=module.params["container"], + key=module.params["parameter_key"] + ) + result['changed'] = True + except Exception as exp: + result['error'] = str(exp) + result['msg'] = 'Error resetting params for plan {}: {}'.format( + module.params["container"], + exp + ) + module.fail_json(**result) + else: + result['success'] = True + module.exit_json(**result) + + +if __name__ == "__main__": + main() diff --git a/tripleo_ansible/ansible_plugins/modules/tripleo_swift_tempurl.py b/tripleo_ansible/ansible_plugins/modules/tripleo_swift_tempurl.py index 3d7145eea..da2f9ac97 100644 --- a/tripleo_ansible/ansible_plugins/modules/tripleo_swift_tempurl.py +++ b/tripleo_ansible/ansible_plugins/modules/tripleo_swift_tempurl.py @@ -65,6 +65,7 @@ options: author: - Rabi Mishra (@ramishra) +requirements: ["openstacksdk", "tripleo-common"] ''' EXAMPLES = ''' diff --git a/tripleo_ansible/ansible_plugins/modules/tripleo_templates_upload.py b/tripleo_ansible/ansible_plugins/modules/tripleo_templates_upload.py index 6c8d1389f..1762d19c1 100644 --- a/tripleo_ansible/ansible_plugins/modules/tripleo_templates_upload.py +++ b/tripleo_ansible/ansible_plugins/modules/tripleo_templates_upload.py @@ -59,6 +59,7 @@ options: default: '/usr/share/openstack-tripleo-heat-templates/' author: - Rabi Mishra (@ramishra) +requirements: ["openstacksdk", "tripleo-common"] ''' EXAMPLES = '''