diff options
author | Ross Brattain <ross.b.brattain@intel.com> | 2017-08-11 17:47:29 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@opnfv.org> | 2017-08-11 17:47:29 +0000 |
commit | 0949884ab431a16dc1841118e13c0b893fa11b85 (patch) | |
tree | ba8588f8fbaf0a17179b339f5512d949386a77a7 /ansible/roles/create_storperf_admin_rc | |
parent | 43bf12d6ab7bcaea16dc75ed4ccbe3895cf51da3 (diff) | |
parent | c7c51d5100e8eba93337c34bd9eb101ec4cf70df (diff) |
Merge "yardstick setup ansible, including load_images"
Diffstat (limited to 'ansible/roles/create_storperf_admin_rc')
3 files changed, 201 insertions, 0 deletions
diff --git a/ansible/roles/create_storperf_admin_rc/library/my_os_project_facts.py b/ansible/roles/create_storperf_admin_rc/library/my_os_project_facts.py new file mode 100644 index 000000000..debb8dd5b --- /dev/null +++ b/ansible/roles/create_storperf_admin_rc/library/my_os_project_facts.py @@ -0,0 +1,167 @@ +#!/usr/bin/python +# Copyright (c) 2016 Hewlett-Packard Enterprise Corporation +# +# This module is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This software is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this software. If not, see <http://www.gnu.org/licenses/>. + +import sys + +try: + import shade + HAS_SHADE = True +except ImportError: + HAS_SHADE = False + +DOCUMENTATION = ''' +--- +module: os_project_facts +short_description: Retrieve facts about one or more OpenStack projects +extends_documentation_fragment: openstack +version_added: "2.1" +author: "Ricardo Carrillo Cruz (@rcarrillocruz)" +description: + - Retrieve facts about a one or more OpenStack projects +requirements: + - "python >= 2.6" + - "shade" +options: + name: + description: + - Name or ID of the project + required: true + domain: + description: + - Name or ID of the domain containing the project if the cloud supports domains + required: false + default: None + filters: + description: + - A dictionary of meta data to use for further filtering. Elements of + this dictionary may be additional dictionaries. + required: false + default: None +''' + +EXAMPLES = ''' +# Gather facts about previously created projects +- my_os_project_facts: + cloud: awesomecloud +- debug: var=openstack_projects + +# Gather facts about a previously created project by name +- my_os_project_facts: + cloud: awesomecloud + name: demoproject +- debug: var=openstack_projects + +# Gather facts about a previously created project in a specific domain +- my_os_project_facts + cloud: awesomecloud + name: demoproject + domain: admindomain +- debug: var=openstack_projects + +# Gather facts about a previously created project in a specific domain + with filter +- my_os_project_facts + cloud: awesomecloud + name: demoproject + domain: admindomain + filters: + enabled: False +- debug: var=openstack_projects +''' + + +RETURN = ''' +openstack_projects: + description: has all the OpenStack facts about projects + returned: always, but can be null + type: complex + contains: + id: + description: Unique UUID. + returned: success + type: string + name: + description: Name given to the project. + returned: success + type: string + description: + description: Description of the project + returned: success + type: string + enabled: + description: Flag to indicate if the project is enabled + returned: success + type: bool + domain_id: + description: Domain ID containing the project (keystone v3 clouds only) + returned: success + type: bool +''' + +def main(): + + argument_spec = openstack_full_argument_spec( + name=dict(required=False, default=None), + domain=dict(required=False, default=None), + filters=dict(required=False, type='dict', default=None), + ) + + module = AnsibleModule(argument_spec) + + if not HAS_SHADE: + module.fail_json(msg='shade is required for this module') + + try: + name = module.params['name'] + domain = module.params['domain'] + filters = module.params['filters'] + + opcloud = shade.operator_cloud(**module.params) + # module.exit_json(changed=False, ansible_facts=dict( + # openstack_prjects=opcloud.cloud_config.get_auth_args())) + + if domain: + try: + # We assume admin is passing domain id + dom = opcloud.get_domain(domain)['id'] + domain = dom + except: + # If we fail, maybe admin is passing a domain name. + # Note that domains have unique names, just like id. + dom = opcloud.search_domains(filters={'name': domain}) + if dom: + domain = dom[0]['id'] + else: + module.fail_json(msg='Domain name or ID does not exist') + + if not filters: + filters = {} + + filters['domain_id'] = domain + + # projects = opcloud.search_projects(name, filters) + projects = opcloud.list_projects(name, filters) + module.exit_json(changed=False, ansible_facts=dict( + openstack_projects=projects)) + + except shade.OpenStackCloudException as e: + module.fail_json(msg=str(e)) + +from ansible.module_utils.basic import * +from ansible.module_utils.openstack import * + +if __name__ == '__main__': + main() diff --git a/ansible/roles/create_storperf_admin_rc/tasks/main.yml b/ansible/roles/create_storperf_admin_rc/tasks/main.yml new file mode 100644 index 000000000..bd1418e89 --- /dev/null +++ b/ansible/roles/create_storperf_admin_rc/tasks/main.yml @@ -0,0 +1,27 @@ +# Copyright (c) 2017 Intel Corporation. +# +# 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. +--- +- name: Fetch TENANT_ID + os_project_facts: + name: admin + environment: "{{ openrc }}" + +- name: Fetch TENANT_ID + set_fact: + os_tenant_id: "{{ openstack_projects[0].id }}" + +- name: Create storperf_admin-rc + template: + src: storperf_admin-rc.j2 + dest: "{{ storperf_rc }}" diff --git a/ansible/roles/create_storperf_admin_rc/templates/storperf_admin-rc.j2 b/ansible/roles/create_storperf_admin_rc/templates/storperf_admin-rc.j2 new file mode 100644 index 000000000..410ab24df --- /dev/null +++ b/ansible/roles/create_storperf_admin_rc/templates/storperf_admin-rc.j2 @@ -0,0 +1,7 @@ +OS_AUTH_URL="{{ openrc.OS_AUTH_URL }}" +OS_USERNAME="{{ openrc.OS_USERNAME|default('admin') }}" +OS_PASSWORD="{{ openrc.OS_PASSWORD|default('console') }}" +OS_TENANT_NAME="{{ openrc.OS_TENANT_NAME|default('admin') }}" +OS_VOLUME_API_VERSION="{{ openrc.OS_VOLUME_API_VERSION|default('2') }}" +OS_PROJECT_NAME="{{ openrc.OS_PROJECT_NAME|default(openrc.OS_TENANT_NAME) }}" +OS_TENANT_ID="{{ os_tenant_id }}" |