summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkos Chandras <mchandras@suse.de>2017-10-12 09:11:59 +0100
committerMarkos Chandras <mchandras@suse.de>2017-10-19 13:58:28 +0100
commit4c1be188401e8cf3aa7ff818f1e285756f2a4d7c (patch)
tree5f8f669b562700a59fc594cde28e80ccb97967ee
parenta3b26d9b48c04c51b15807184ace868294dbe7f9 (diff)
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 <mchandras@suse.de>
-rw-r--r--xci/opnfv-scenario-requirements.yml18
-rw-r--r--xci/playbooks/get-opnfv-scenario-requirements.yml61
-rw-r--r--xci/playbooks/roles/.gitignore8
-rwxr-xr-xxci/xci-deploy.sh14
4 files changed, 100 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/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
#-------------------------------------------------------------------------------