From 4c1be188401e8cf3aa7ff818f1e285756f2a4d7c Mon Sep 17 00:00:00 2001 From: Markos Chandras Date: Thu, 12 Oct 2017 09:11:59 +0100 Subject: xci: Clone all XCI scenarios in advance similar to a-r-r In order to plug the scenarios' roles properly, we need to have all roles physically present in advance. As such, add a opnfv-scenario-requirements.yml file which can be used to populate the roles directory with all the scenarios. Change-Id: I0cdadb63849e4565c31559817660d23217879053 Signed-off-by: Markos Chandras --- xci/opnfv-scenario-requirements.yml | 18 +++++++ xci/playbooks/get-opnfv-scenario-requirements.yml | 61 +++++++++++++++++++++++ xci/playbooks/roles/.gitignore | 8 +++ xci/xci-deploy.sh | 14 +++++- 4 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 xci/opnfv-scenario-requirements.yml create mode 100644 xci/playbooks/get-opnfv-scenario-requirements.yml create mode 100644 xci/playbooks/roles/.gitignore (limited to 'xci') 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/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 1e70d0dd..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,18 @@ 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 #------------------------------------------------------------------------------- -- cgit 1.2.3-korg