diff options
author | Markos Chandras <mchandras@suse.de> | 2017-10-26 09:49:20 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@opnfv.org> | 2017-10-26 09:49:20 +0000 |
commit | b90e6f66144309a1d9a63d8a29abf65a97ee31ad (patch) | |
tree | 800f20754ee48f9992d8217b976f1c151efb4a50 | |
parent | f2727f7ab48423e3950a42af96de60b2e1b7abfb (diff) | |
parent | 481f9031ff8cd0a3b0692c110af6c8e2d04460da (diff) |
Merge changes from topic 'add-role-hooks'
* changes:
xci: playbooks: Add generic playbook for scenarios to plug their roles
xci: Clone all XCI scenarios in advance similar to a-r-r
xci: xci-deploy.sh: Allow scenarios to overrides XCI variables.
-rw-r--r-- | xci/opnfv-scenario-requirements.yml | 18 | ||||
-rw-r--r-- | xci/playbooks/bootstrap-scenarios.yml | 10 | ||||
-rw-r--r-- | xci/playbooks/configure-opnfvhost.yml | 1 | ||||
-rw-r--r-- | xci/playbooks/get-opnfv-scenario-requirements.yml | 61 | ||||
-rw-r--r-- | xci/playbooks/roles/.gitignore | 8 | ||||
-rwxr-xr-x | xci/xci-deploy.sh | 21 |
6 files changed, 118 insertions, 1 deletions
diff --git a/xci/opnfv-scenario-requirements.yml b/xci/opnfv-scenario-requirements.yml new file mode 100644 index 00000000..ee9b2baf --- /dev/null +++ b/xci/opnfv-scenario-requirements.yml @@ -0,0 +1,18 @@ +--- +# SPDX-license-identifier: Apache-2.0 +############################################################################## +# Copyright (c) 2017 SUSE LINUX GmbH and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +# +# OPNFV scenarios participating in XCI must create their own entry in this file so +# XCI can make use of them. +# +- scenario: os-odl-sfc + scm: git + src: https://gerrit.opnfv.org/gerrit/sfc + version: master + role: scenarios/os-odl-sfc/role/os-odl-sfc diff --git a/xci/playbooks/bootstrap-scenarios.yml b/xci/playbooks/bootstrap-scenarios.yml new file mode 100644 index 00000000..e7bd7dc9 --- /dev/null +++ b/xci/playbooks/bootstrap-scenarios.yml @@ -0,0 +1,10 @@ +--- +# +# This file is aimed to be used by scenarios to plug into the XCI. +# Ideally, all they need to do at this point is to include their +# role using a statement like the following one +# +# - name: Include foobar role +# include_role: +# name: "foobar" +# when: OPNFV_SCENARIO == "foobar" diff --git a/xci/playbooks/configure-opnfvhost.yml b/xci/playbooks/configure-opnfvhost.yml index faae623f..798fe522 100644 --- a/xci/playbooks/configure-opnfvhost.yml +++ b/xci/playbooks/configure-opnfvhost.yml @@ -98,6 +98,7 @@ shell: "/bin/cp -rf {{OPNFV_RELENG_PATH}}/xci/file/openstack_services.yml {{OPENSTACK_OSA_PATH}}/playbooks/defaults/repo_packages/openstack_services.yml" when: - OPENSTACK_OSA_VERSION != "master" + - include: bootstrap-scenarios.yml - name: bootstrap ansible on opnfv host command: "/bin/bash ./scripts/bootstrap-ansible.sh" args: diff --git a/xci/playbooks/get-opnfv-scenario-requirements.yml b/xci/playbooks/get-opnfv-scenario-requirements.yml new file mode 100644 index 00000000..23aa1d41 --- /dev/null +++ b/xci/playbooks/get-opnfv-scenario-requirements.yml @@ -0,0 +1,61 @@ +--- +# Copyright 2016, Rackspace US, Inc. +# Copyright 2017, SUSE LINUX GmbH. +# +# 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: Clone the scenario requirements + hosts: localhost + connection: local + gather_facts: true + tasks: + - name: Remove target directory + file: + path: "{{ item.path | default(scenario_path_default) + '/' + item.scenario }}" + state: absent + when: + - item.scm == "git" or item.scm is undefined + with_items: "{{ scenarios }}" + + - name: Clone git repos (with git) + git: + repo: "{{ item.src }}" + dest: "{{ item.path | default(scenario_path_default) }}/{{ item.scenario | default(item.src | basename) }}" + version: "{{ item.version | default('master') }}" + refspec: "{{ item.refspec | default(omit) }}" + update: true + force: true + when: + - item.scm == "git" or item.scm is undefined + with_items: "{{ scenarios }}" + register: git_clone + until: git_clone | success + retries: "{{ git_clone_retries }}" + delay: "{{ git_clone_retry_delay }}" + + - name: Plug in the roles to XCI + file: + state: link + src: "{{ item.path | default(scenario_path_default) }}/{{ item.scenario | default(item.src | basename) }}/{{ item.role }}" + dest: "{{ role_path_default }}/{{ item.scenario }}" + force: yes + with_items: "{{ scenarios }}" + + vars: + ansible_python_interpreter: "/usr/bin/python" + scenarios: "{{ lookup('file', scenario_file) | from_yaml }}" + scenario_file: '../opnfv-scenario-requirements.yml' + scenario_path_default: "{{ lookup('env', 'XCI_PATH') }}/.cache/repos/scenarios" + role_path_default: "{{ playbook_dir }}/roles" + git_clone_retries: 2 + git_clone_retry_delay: 5 diff --git a/xci/playbooks/roles/.gitignore b/xci/playbooks/roles/.gitignore new file mode 100644 index 00000000..e0b47770 --- /dev/null +++ b/xci/playbooks/roles/.gitignore @@ -0,0 +1,8 @@ +* +!.gitignore +!clone-repository/ +!configure-network/ +!configure-nfs/ +!prepare-functest/ +!remote-folders/ +!synchronize-time/ diff --git a/xci/xci-deploy.sh b/xci/xci-deploy.sh index d73cf5cd..d33e0c80 100755 --- a/xci/xci-deploy.sh +++ b/xci/xci-deploy.sh @@ -50,7 +50,7 @@ fi # override any of them. #------------------------------------------------------------------------------- # find where are we -XCI_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +export XCI_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # source user vars source $XCI_PATH/config/user-vars # source pinned versions @@ -128,6 +128,25 @@ fi # TODO: The xci playbooks can be put into a playbook which will be done later. +# Clone OPNFV scenario repositories +#------------------------------------------------------------------------------- +# This playbook +# - removes existing scenario roles +# - clones OPNFV scenario roles based on the file/opnfv-scenario-requirements.yml file +#------------------------------------------------------------------------------- +echo "Info: Cloning OPNFV scenario repositories" +echo "-------------------------------------------------------------------------" +cd $XCI_PATH/playbooks +ansible-playbook ${XCI_ANSIBLE_VERBOSITY} -i inventory get-opnfv-scenario-requirements.yml +echo "-------------------------------------------------------------------------" + +#------------------------------------------------------------------------------- +# Get scenario variables overrides +#------------------------------------------------------------------------------- +if [[ -f $XCI_PATH/scenarios/${OPNFV_SCENARIO:-_no_scenario_}/xci_overrides ]]; then + source $XCI_PATH/scenarios/$OPNFV_SCENARIO/xci_overrides +fi + #------------------------------------------------------------------------------- # Start provisioning VM nodes #------------------------------------------------------------------------------- |