From c7c51d5100e8eba93337c34bd9eb101ec4cf70df Mon Sep 17 00:00:00 2001 From: Malanik Jan Date: Tue, 18 Jul 2017 12:54:10 -0400 Subject: yardstick setup ansible, including load_images also update to cirros 0.3.5 added PROX compilation add create_node_pod_yaml role JIRA: YARDSTICK-639 Change-Id: If5999841287a54c7e5c64a7cc487c6394df90424 Signed-off-by: Malanik Jan Signed-off-by: Ross Brattain --- .../library/my_os_project_facts.py | 167 +++++++++++++++++++++ .../roles/create_storperf_admin_rc/tasks/main.yml | 27 ++++ .../templates/storperf_admin-rc.j2 | 7 + 3 files changed, 201 insertions(+) create mode 100644 ansible/roles/create_storperf_admin_rc/library/my_os_project_facts.py create mode 100644 ansible/roles/create_storperf_admin_rc/tasks/main.yml create mode 100644 ansible/roles/create_storperf_admin_rc/templates/storperf_admin-rc.j2 (limited to 'ansible/roles/create_storperf_admin_rc') 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 . + +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 }}" -- cgit 1.2.3-korg