Merge "Increase timeout for heat env creation"
diff --git a/jobs/pipelines/deploy-cicd-and-run-tests.groovy b/jobs/pipelines/deploy-cicd-and-run-tests.groovy
index 1af17d1..fb039d3 100644
--- a/jobs/pipelines/deploy-cicd-and-run-tests.groovy
+++ b/jobs/pipelines/deploy-cicd-and-run-tests.groovy
@@ -145,9 +145,16 @@
archiveArtifacts artifacts: "**/*.xml,**/*.ini,**/*.log,**/*.tar.gz"
}
if ("${env.REPORT_TO_TESTRAIL}" != "false") {
- stage("report results to testrail") {
- shared.swarm_testrail_report(steps, node_with_reports)
+ stage("report results to testrail") {
+ common.printMsg("Running on: " + node_with_reports, "blue")
+ shared.swarm_testrail_report(steps, node_with_reports)
}
+ stage("Store TestRail reports to job description from ${jenkins_slave_node_name}") {
+ if (fileExists("description.txt")) {
+ def String description = readFile("description.txt")
+ currentBuild.description += "${description}"
+ }
+ }
}
}
}
@@ -157,12 +164,20 @@
archiveArtifacts artifacts: "**/*.xml,**/*.ini,**/*.log,**/*.tar.gz"
}
if ("${env.REPORT_TO_TESTRAIL}" != "false") {
- stage("report results to testrail") {
- shared.swarm_testrail_report(steps, node_with_reports)
+ stage("report results to testrail from jenkins master") {
+ common.printMsg("Running on: " + node_with_reports, "blue")
+ common.printMsg("Running on: " + env.NODE_NAME, "blue")
+ shared.verbose_sh("""\
+ [ -d /home/jenkins/venv_testrail_reporter ] || virtualenv /home/jenkins/venv_testrail_reporter""", true, false, true)
+ shared.run_cmd("""\
+ . /home/jenkins/venv_testrail_reporter/bin/activate; pip install git+https://github.com/dis-xcom/testrail_reporter -U""")
+ shared.swarm_testrail_report(steps, env.NODE_NAME)
}
stage("Store TestRail reports to job description") {
- def String description = readFile("description.txt")
- currentBuild.description += "${description}"
+ if (fileExists("description.txt")) {
+ def String description = readFile("description.txt")
+ currentBuild.description += "${description}"
+ }
}
}
} // try
diff --git a/jobs/pipelines/packer-image-create.groovy b/jobs/pipelines/packer-image-create.groovy
new file mode 100644
index 0000000..94133a7
--- /dev/null
+++ b/jobs/pipelines/packer-image-create.groovy
@@ -0,0 +1,114 @@
+/**
+ *
+ * Deploy the product cluster using Jenkins master on CICD cluster
+ *
+ * Expected parameters:
+
+ * IMAGE_NAME Name of the resulting image in the Glance or in artifacts
+
+ * BUILD_CONFIG_DRIVE_PATH Relative path in tcp-qa to the directory with meta-data and user-data files
+ * BUILD_PACKER_CONFIG_PATH Relative path in tcp-qa to the file with packer config (packer.json)
+ * BASE_IMAGE_URL Base image to build a new image, in qcow2. For example, released ubuntu cloud image
+ * BASE_IMAGE_MD5 Base image MD5 checksum. Image will be re-downloaded if not match with the local image checksum
+
+ * PACKER_URL URL to the zip archive with packer binary, see https://releases.hashicorp.com/packer/
+ * PACKER_ZIP_MD5 MD5 of the zip archive with packer binary
+
+ * OS_AUTH_URL OpenStack keystone catalog URL
+ * OS_PROJECT_NAME OpenStack project (tenant) name
+ * OS_USER_DOMAIN_NAME OpenStack user domain name
+ * OS_CREDENTIALS OpenStack username and password credentials ID in Jenkins
+ * UPLOAD_IMAGE_TO_GLANCE If True: upload image to glance; if False: store as an artifact
+
+ * TCP_QA_REFS Reference to the tcp-qa change on review.gerrithub.io, like refs/changes/46/418546/41
+ */
+
+@Library('tcp-qa')_
+
+def common = new com.mirantis.mk.Common()
+def shared = new com.mirantis.system_qa.SharedPipeline()
+
+timeout(time: 6, unit: 'HOURS') {
+ node () {
+ try {
+
+ stage("Clean the environment and clone tcp-qa") {
+ deleteDir()
+ shared.run_cmd("""\
+ git clone https://github.com/Mirantis/tcp-qa.git ${WORKSPACE}
+ """)
+ shared.update_working_dir(false)
+ sh "mkdir ./tmp"
+ }
+
+ def packer_zipname = "/tmp/packer.zip"
+ def configdrive_isoname = "./tmp/config-drive.iso"
+
+ stage("Prepare Packer") {
+ // Check that the archive is already downloaded and has a correct checksum. Remove if not match
+ if (fileExists(packer_zipname)) {
+ sh(script: "bash -cex 'md5sum -c --status <(echo ${PACKER_ZIP_MD5} ${packer_zipname})' || rm -f ${packer_zipname}", returnStdout: true)
+ }
+ // If the file is missing or removed, then download it and check the checksum
+ if (!fileExists(packer_zipname)) {
+ sh(script: "wget --quiet -O ${packer_zipname} ${PACKER_URL}", returnStdout: true)
+ // Should fail the job if not match
+ sh(script: "bash -cex 'md5sum -c --status <(echo ${PACKER_ZIP_MD5} ${packer_zipname})'", returnStdout: true)
+ }
+ sh "unzip ${packer_zipname}"
+ }
+
+ stage("Build the cloudinit ISO") {
+ // Check that genisoimage is installed, or try to install it
+ sh "which genisoimage || sudo apt-get -y install genisoimage"
+ // Generate config-drive ISO
+ sh "mkisofs -o ${configdrive_isoname} -V cidata -r -J --quiet ${BUILD_CONFIG_DRIVE_PATH}"
+ }
+
+ stage("Build the image '${IMAGE_NAME}'") {
+ // Build the image
+ sh (script: """\
+ set -ex;
+ export PACKER_LOG=1;
+ export PACKER_CACHE_DIR='/tmp/packer_cache_${IMAGE_NAME}/';
+ mkdir -p \${PACKER_CACHE_DIR};
+ ./packer build -machine-readable -parallel=false -only='qemu' ${BUILD_PACKER_CONFIG_PATH};
+ """, returnStdout: true)
+ }
+
+
+ if (env.UPLOAD_IMAGE_TO_GLANCE) {
+
+ stage("Upload generated config drive ISO into volume on cfg01 node") {
+ withCredentials([
+ [$class : 'UsernamePasswordMultiBinding',
+ credentialsId : env.OS_CREDENTIALS,
+ passwordVariable: 'OS_PASSWORD',
+ usernameVariable: 'OS_USERNAME']
+ ]) {
+ env.OS_IDENTITY_API_VERSION = 3
+
+ def imagePath = "tmp/${IMAGE_NAME}/${IMAGE_NAME}.qcow2"
+ shared.run_cmd("""\
+ openstack --insecure image delete ${IMAGE_NAME} || true
+ sleep 3
+ openstack --insecure image create ${IMAGE_NAME} --file ${imagePath} --disk-format qcow2 --container-format bare
+ """)
+ }
+ }
+ } else {
+
+ stage("Archive artifacts") {
+ archiveArtifacts artifacts: "tmp/${IMAGE_NAME}/${IMAGE_NAME}.qcow2"
+ }
+ }
+
+ } catch (e) {
+ common.printMsg("Job is failed", "purple")
+ throw e
+ } finally {
+ // Remove the image after job is finished
+ sh "rm -f ./tmp/${IMAGE_NAME}.qcow2 || true"
+ } // try
+ } // node
+} // timeout
\ No newline at end of file
diff --git a/jobs/pipelines/swarm-bootstrap-salt-cluster-devops.groovy b/jobs/pipelines/swarm-bootstrap-salt-cluster-devops.groovy
index 1adc18a..86b5122 100644
--- a/jobs/pipelines/swarm-bootstrap-salt-cluster-devops.groovy
+++ b/jobs/pipelines/swarm-bootstrap-salt-cluster-devops.groovy
@@ -70,6 +70,7 @@
export ENV_MANAGER=devops
export PYTHONIOENCODING=UTF-8
export REPOSITORY_SUITE=${MCP_VERSION}
+ export UPDATE_VERSION=${UPDATE_VERSION}
export TEST_GROUP=test_create_environment
export LOG_NAME=swarm_test_create_environment.log
py.test -vvv -s -p no:django -p no:ipdb --junit-xml=deploy_hardware.xml -k \${TEST_GROUP}
@@ -123,6 +124,7 @@
export BOOTSTRAP_TIMEOUT=1800
export PYTHONIOENCODING=UTF-8
export REPOSITORY_SUITE=${MCP_VERSION}
+ export UPDATE_VERSION=${UPDATE_VERSION}
export TEST_GROUP=test_bootstrap_salt
export LOG_NAME=swarm_test_bootstrap_salt.log
py.test -vvv -s -p no:django -p no:ipdb --junit-xml=${xml_report_name} -k \${TEST_GROUP}
diff --git a/jobs/pipelines/swarm-bootstrap-salt-cluster-heat.groovy b/jobs/pipelines/swarm-bootstrap-salt-cluster-heat.groovy
index 3776926..0d497ab 100644
--- a/jobs/pipelines/swarm-bootstrap-salt-cluster-heat.groovy
+++ b/jobs/pipelines/swarm-bootstrap-salt-cluster-heat.groovy
@@ -28,6 +28,7 @@
* OS_USER_DOMAIN_NAME OpenStack user domain name
* OS_CREDENTIALS OpenStack username and password credentials ID in Jenkins
* JENKINS_PIPELINE_BRANCH Should be set in release/proposed/2019.2.0 when we test non-released version
+ * UPDATE_VERSION Version of update to deploy
* LAB_PARAM_DEFAULTS Filename placed in tcp_tests/templates/_heat_environments, with default parameters for the heat template
*
* CREATE_JENKINS_NODE_CREDENTIALS Jenkins username and password with rights to add/delete Jenkins agents
@@ -155,6 +156,7 @@
export SHUTDOWN_ENV_ON_TEARDOWN=false
export PYTHONIOENCODING=UTF-8
export REPOSITORY_SUITE=${MCP_VERSION}
+ export UPDATE_VERSION=${UPDATE_VERSION}
export ENV_NAME=${ENV_NAME}
export LAB_CONFIG_NAME=${LAB_CONFIG_NAME}
export LAB_PARAM_DEFAULTS=${LAB_PARAM_DEFAULTS}
@@ -290,6 +292,7 @@
export BOOTSTRAP_TIMEOUT=3600
export PYTHONIOENCODING=UTF-8
export REPOSITORY_SUITE=${MCP_VERSION}
+ export UPDATE_VERSION=${UPDATE_VERSION}
export TEST_GROUP=test_bootstrap_salt
export LOG_NAME=swarm_test_bootstrap_salt.log
py.test -vvv -s -p no:django -p no:ipdb --junit-xml=${xml_report_name} -k \${TEST_GROUP}
diff --git a/jobs/pipelines/swarm-create-cfg-config-drive.groovy b/jobs/pipelines/swarm-create-cfg-config-drive.groovy
index 0707fec..86b9eec 100644
--- a/jobs/pipelines/swarm-create-cfg-config-drive.groovy
+++ b/jobs/pipelines/swarm-create-cfg-config-drive.groovy
@@ -20,6 +20,8 @@
// smc['LOCAL_REPOS'] = 'true'
smc['MCP_SALT_REPO_KEY'] = "${MCP_SALT_REPO_KEY}"
smc['MCP_SALT_REPO_URL'] = "${MCP_SALT_REPO_URL}"
+smc['MCP_SALT_REPO_UPDATES'] = "${MCP_SALT_REPO_UPDATES}"
+
def entries(m) {
m.collect {k, v -> [k, v]}
@@ -186,6 +188,8 @@
# export LOCAL_REPOS="true"
# export MCP_SALT_REPO_KEY="${MCP_SALT_REPO_KEY}"
# export MCP_SALT_REPO_URL="${MCP_SALT_REPO_URL}"
+# export MCP_SALT_REPO_UPDATES="${MCP_SALT_REPO_UPDATES}"
+# export ENABLE_MCP_SALT_REPO_UPDATES="true"
output:
all: '| tee -a /var/log/cloud-init-output.log /dev/tty0'
diff --git a/jobs/pipelines/swarm-deploy-cicd.groovy b/jobs/pipelines/swarm-deploy-cicd.groovy
index 0183016..dd2df11 100644
--- a/jobs/pipelines/swarm-deploy-cicd.groovy
+++ b/jobs/pipelines/swarm-deploy-cicd.groovy
@@ -52,6 +52,12 @@
stage("Run Jenkins job on salt-master [deploy_openstack:${env.STACK_INSTALL}]") {
shared.run_job_on_day01_node(env.STACK_INSTALL, install_timeout)
}
+ stage("Create env_jenkins_cicd and env_k8s files") {
+ shared.run_cmd("""\
+ export TESTS_CONFIGS=\$(pwd)/${ENV_NAME}_salt_deployed.ini
+ python ./tcp_tests/utils/create_env_jenkins_cicd.py
+ """)
+ }
for (stack in "${env.STACK_INSTALL}".split(",")) {
stage("Sanity check the deployed component [${stack}]") {
diff --git a/src/com/mirantis/system_qa/SharedPipeline.groovy b/src/com/mirantis/system_qa/SharedPipeline.groovy
index 5a78a9f..300aad5 100644
--- a/src/com/mirantis/system_qa/SharedPipeline.groovy
+++ b/src/com/mirantis/system_qa/SharedPipeline.groovy
@@ -185,15 +185,18 @@
""")
}
-def update_working_dir() {
+def update_working_dir(Boolean updateRequirements=true) {
// Use to fetch a patchset from gerrit to the working dir
run_cmd("""\
if [ -n "$TCP_QA_REFS" ]; then
set -e
git fetch https://review.gerrithub.io/Mirantis/tcp-qa $TCP_QA_REFS && git checkout FETCH_HEAD || exit \$?
- fi
- pip install -r tcp_tests/requirements.txt
- """)
+ fi""")
+ if (updateRequirements) {
+ run_cmd("""\
+ pip install -r tcp_tests/requirements.txt
+ """)
+ }
}
def swarm_bootstrap_salt_cluster_devops() {
@@ -205,6 +208,7 @@
def mk_pipelines_ref = env.MK_PIPELINES_REF ?: ''
def pipeline_library_ref = env.PIPELINE_LIBRARY_REF ?: ''
def cookiecutter_ref_change = env.COOKIECUTTER_REF_CHANGE ?: ''
+ def mcp_common_scripts_refs = env.MCP_COMMON_SCRIPTS_REFS ?: ''
def environment_template_ref_change = env.ENVIRONMENT_TEMPLATE_REF_CHANGE ?: ''
def mcp_salt_repo_url = env.MCP_SALT_REPO_URL ?: ''
def mcp_salt_repo_key = env.MCP_SALT_REPO_KEY ?: ''
@@ -214,6 +218,7 @@
def env_lab_mgm_iface = env.LAB_MANAGEMENT_IFACE ?: ''
def env_lab_ctl_iface = env.LAB_CONTROL_IFACE ?: ''
def update_repo_custom_tag = env.UPDATE_REPO_CUSTOM_TAG ?: ''
+ def update_version = env.UPDATE_VERSION ?: ''
def parameters = [
string(name: 'PARENT_NODE_NAME', value: "${NODE_NAME}"),
string(name: 'PARENT_WORKSPACE', value: pwd()),
@@ -239,6 +244,8 @@
string(name: 'LAB_CONTROL_IFACE', value: env_lab_ctl_iface),
string(name: 'UPDATE_REPO_CUSTOM_TAG', value: "${update_repo_custom_tag}"),
string(name: 'JENKINS_PIPELINE_BRANCH', value: "${jenkins_pipelines_branch}"),
+ string(name: 'MCP_COMMON_SCRIPTS_REFS', value: "${mcp_common_scripts_refs}"),
+ string(name: 'UPDATE_VERSION', value: "${update_version}"),
booleanParam(name: 'SHUTDOWN_ENV_ON_TEARDOWN', value: false),
]
@@ -250,6 +257,7 @@
def common = new com.mirantis.mk.Common()
def cookiecutter_template_commit = env.COOKIECUTTER_TEMPLATE_COMMIT ?: "release/${env.MCP_VERSION}"
def salt_models_system_commit = env.SALT_MODELS_SYSTEM_COMMIT ?: "release/${env.MCP_VERSION}"
+ def mcp_common_scripts_refs = env.MCP_COMMON_SCRIPTS_REFS ?: ''
def tcp_qa_refs = env.TCP_QA_REFS ?: ''
def mk_pipelines_ref = env.MK_PIPELINES_REF ?: ''
def jenkins_pipelines_branch = env.JENKINS_PIPELINE_BRANCH ?: ''
@@ -263,6 +271,7 @@
def env_lab_mgm_iface = env.LAB_MANAGEMENT_IFACE ?: ''
def env_lab_ctl_iface = env.LAB_CONTROL_IFACE ?: ''
def update_repo_custom_tag = env.UPDATE_REPO_CUSTOM_TAG ?: ''
+ def update_version = env.UPDATE_VERSION ?: ''
def parameters = [
string(name: 'PARENT_NODE_NAME', value: "${NODE_NAME}"),
string(name: 'JENKINS_SLAVE_NODE_NAME', value: jenkins_slave_node_name),
@@ -282,6 +291,8 @@
string(name: 'ENVIRONMENT_TEMPLATE_REF_CHANGE', value: "${environment_template_ref_change}"),
string(name: 'MCP_SALT_REPO_URL', value: "${mcp_salt_repo_url}"),
string(name: 'MCP_SALT_REPO_KEY', value: "${mcp_salt_repo_key}"),
+ string(name: 'MCP_COMMON_SCRIPTS_REFS', value: "${mcp_common_scripts_refs}"),
+ string(name: 'UPDATE_VERSION', value: "${update_version}"),
string(name: 'IPMI_USER', value: env_ipmi_user),
string(name: 'IPMI_PASS', value: env_ipmi_pass),
string(name: 'LAB_MANAGEMENT_IFACE', value: env_lab_mgm_iface),
@@ -416,6 +427,7 @@
def cookiecutter_ref_change = env.COOKIECUTTER_REF_CHANGE ?: ''
def jenkins_pipelines_branch=env.JENKINS_PIPELINE_BRANCH ?: ''
def update_repo_custom_tag = env.UPDATE_REPO_CUSTOM_TAG ?: ''
+ def update_version = env.UPDATE_VERSION ?: ''
def parameters = [
string(name: 'LAB_CONTEXT_NAME', value: "${LAB_CONFIG_NAME}"),
@@ -436,6 +448,8 @@
string(name: 'UPDATE_REPO_CUSTOM_TAG', value: "${update_repo_custom_tag}"),
string(name: 'JENKINS_PIPELINE_BRANCH', value: "${jenkins_pipelines_branch}"),
string(name: 'IMAGE_PATH_CFG01_DAY01', value: env.IMAGE_PATH_CFG01_DAY01),
+ string(name: 'UPDATE_VERSION', value: "${update_version}"),
+
]
build_shell_job('swarm-cookied-model-generator', parameters, "deploy_generate_model.xml")
@@ -447,8 +461,10 @@
println("ADMIN_NETWORK_GW=" + ADMIN_NETWORK_GW)
def mk_pipelines_ref = env.MK_PIPELINES_REF ?: ''
+ def mcp_common_scripts_ref = env.MCP_COMMON_SCRIPTS_REFS ?: ''
def pipeline_library_ref = env.PIPELINE_LIBRARY_REF ?: ''
def tcp_qa_refs = env.TCP_QA_REFS ?: ''
+ def update_version = env.UPDATE_VERSION?: 'proposed'
def mcp_salt_repo_url = env.MCP_SALT_REPO_URL ?: ''
def mcp_salt_repo_key = env.MCP_SALT_REPO_KEY ?: ''
def deploy_network_mask = env.DEPLOY_NETWORK_NETMASK ?: ''
@@ -472,6 +488,9 @@
string(name: 'PIPELINE_LIBRARY_REF', value: "${pipeline_library_ref}"),
string(name: 'MK_PIPELINES_REF', value: "${mk_pipelines_ref}"),
string(name: 'TCP_QA_REFS', value: "${tcp_qa_refs}"),
+ string(name: 'UPDATE_VERSION', value: "${update_version}"),
+ string(name: 'MCP_COMMON_SCRIPTS_REFS', value: "${mcp_common_scripts_ref}"),
+ string(name: 'MCP_SALT_REPO_UPDATES', value: "'deb [arch=amd64] http://mirror.mirantis.com/update/${UPDATE_VERSION}/salt-formulas/xenial xenial main'"),
]
build_pipeline_job('swarm-create-cfg-config-drive', parameters)
}
@@ -649,7 +668,7 @@
def testPlanDesc = env.LAB_CONFIG_NAME
def testrailURL = "https://mirantis.testrail.com"
def testrailProject = "Mirantis Cloud Platform"
- def testPlanNamePrefix = env.TEST_PLAN_NAME_PREFIX ?: "[MCP-Q2]System"
+ def testPlanNamePrefix = env.TEST_PLAN_NAME_PREFIX ?: "[2019.2.0-update]System"
def testPlanName = "${testPlanNamePrefix}-${MCP_VERSION}-${new Date().format('yyyy-MM-dd')}"
def testrailMilestone = "MCP1.1"
def testrailCaseMaxNameLenght = 250
diff --git a/tcp_tests/managers/runtestmanager.py b/tcp_tests/managers/runtestmanager.py
index bc71427..eb646d1 100644
--- a/tcp_tests/managers/runtestmanager.py
+++ b/tcp_tests/managers/runtestmanager.py
@@ -123,8 +123,17 @@
barbican_integration = self.__salt_api.get_single_pillar(
tgt="ctl01*",
pillar="_param:barbican_integration_enabled")
+ if self.__salt_api.local('I@opencontrail:compute:enabled:true',
+ 'match.pillar',
+ 'opencontrail:compute:enabled:true'
+ ).get('return', [{}]) != [{}]:
+ contrail_integration = True
+ else:
+ contrail_integration = False
LOG.info("Barbican integration {0}".format(barbican_integration))
+ LOG.info("Opencontrail integration {0}".format(contrail_integration))
+
commands = [
{
'description': ("Install docker-ce package and "
@@ -147,6 +156,62 @@
"runtest.orchestrate.tempest")},
]
+ if contrail_integration:
+ vsrx_router = self.__salt_api.get_single_pillar(
+ tgt="I@opencontrail:control:role:primary",
+ pillar="_param:opencontrail_router01_address")
+ public_network = "192.168.200.0"
+ contrail_commands = [
+ {
+ 'description': "Iproute to vsrx router",
+ 'node_name': self.target_name,
+ 'cmd': ("set -ex; ip route replace " +
+ public_network + "/24 via " + vsrx_router)},
+ {
+ 'description': "Align security group: remove all rules",
+ 'node_name': self.target_name,
+ 'cmd': ("set -ex;" +
+ "salt 'ctl01*' cmd.run '. /root/keystonercv3; " +
+ "openstack security group rule list --column ID " +
+ "-f value | xargs " +
+ "openstack security group rule delete|true';")},
+ {
+ 'description': "Align security group: remove all default",
+ 'node_name': self.target_name,
+ 'cmd': ("set -ex;" +
+ " salt ctl01* cmd.run '. /root/keystonercv3; " +
+ "openstack security group " +
+ "list --column ID --column Name -f value|" +
+ "grep default|cut -d \" \" -f 1|" +
+ "xargs openstack security group delete|true'")},
+ {
+ 'description': "Align security group: add rules",
+ 'node_name': self.target_name,
+ 'cmd': ("set -ex;" +
+ "salt 'ctl01*' cmd.run '. /root/keystonercv3; " +
+ "openstack security group rule create default " +
+ "--egress --protocol tcp'; " +
+ "salt 'ctl01*' cmd.run '. /root/keystonercv3; " +
+ "openstack security group rule create default " +
+ "--ingress --protocol tcp'; " +
+ "salt 'ctl01*' cmd.run '. /root/keystonercv3; " +
+ "openstack security group rule create default " +
+ "--egress --protocol icmp'; " +
+ "salt 'ctl01*' cmd.run '. /root/keystonercv3; " +
+ "openstack security group rule create default " +
+ "--ingress --protocol icmp'; ")},
+ {
+ 'description': "Create public network with target",
+ 'node_name': self.target_name,
+ 'cmd': ("set -ex;" +
+ "salt -C 'I@opencontrail:control:role:primary' " +
+ "contrail.virtual_network_create public " +
+ "'{\"external\":true,\"ip_prefix\":\"" +
+ public_network + "\",\"ip_prefix_len\":24," +
+ "\"asn\":64512,\"target\":10000}'")},
+ ]
+ commands = contrail_commands + commands
+
if barbican_integration:
commands.append({
'description': "Configure barbican",
diff --git a/tcp_tests/managers/saltmanager.py b/tcp_tests/managers/saltmanager.py
index 737edcd..a33bb11 100644
--- a/tcp_tests/managers/saltmanager.py
+++ b/tcp_tests/managers/saltmanager.py
@@ -14,7 +14,6 @@
import netaddr
import pkg_resources
-import yaml
from collections import defaultdict
@@ -64,8 +63,8 @@
label="Install and configure salt")
self.create_env_salt()
self.create_env_jenkins_day01()
- self.create_env_jenkins_cicd()
- self.create_env_k8s()
+ # self.create_env_jenkins_cicd()
+ # self.create_env_k8s()
def change_creds(self, username, password):
self.__user = username
@@ -371,34 +370,21 @@
env_jenkins_cicd_filename = pkg_resources.resource_filename(
settings.__name__, 'utils/env_jenkins_cicd')
- domain_name = self.get_single_pillar(
- tgt="I@salt:master", pillar="_param:cluster_domain")
- LOG.info("Domain: {}".format(domain_name))
- cid01 = 'cid01.' + domain_name
- LOG.info("{}".format(cid01))
- command = "reclass -n {}".format(cid01)
- LOG.info("{}".format(command))
- cfg = self.__underlay.get_target_node_names('cfg01')[0]
- LOG.info("cfg node_name: {}".format(cfg))
- output = self.__underlay.check_call(
- node_name=cfg,
- cmd=command)
- result = yaml.load(output.stdout_str)
- jenkins_params = result.get(
- 'parameters', {}).get(
- 'jenkins', {}).get(
- 'client', {}).get(
- 'master', {})
- if not jenkins_params:
+
+ tgt = 'I@docker:client:stack:jenkins and cid01*'
+ try:
+ jenkins_params = self.get_single_pillar(
+ tgt=tgt, pillar="jenkins:client:master")
+ except LookupError as e:
+ LOG.error("Skipping creation {0} because cannot get Jenkins CICD "
+ "parameters from '{1}': {2}"
+ .format(env_jenkins_cicd_filename, tgt, e.message))
return
+
jenkins_host = jenkins_params['host']
- LOG.info("jenkins_host: {}".format(jenkins_host))
jenkins_port = jenkins_params['port']
- LOG.info("jenkins_port: {}".format(jenkins_port))
jenkins_user = jenkins_params['username']
- LOG.info("jenkins_user: {}".format(jenkins_user))
jenkins_pass = jenkins_params['password']
- LOG.info("jenkins_pass: {}".format(jenkins_pass))
with open(env_jenkins_cicd_filename, 'w') as f:
f.write(
@@ -426,46 +412,23 @@
env_k8s_filename = pkg_resources.resource_filename(
settings.__name__, 'utils/env_k8s')
- domain_name = self.get_single_pillar(
- tgt="I@salt:master", pillar="_param:cluster_domain")
- LOG.info("Domain: {}".format(domain_name))
- ctl01 = 'ctl01.' + domain_name
- LOG.info("{}".format(ctl01))
- command = "reclass -n {}".format(ctl01)
- LOG.info("{}".format(command))
- cfg = self.__underlay.get_target_node_names('cfg01')[0]
- LOG.info("cfg node_name: {}".format(cfg))
- output = self.__underlay.check_call(
- node_name=cfg,
- cmd=command)
- result = yaml.load(output.stdout_str)
- haproxy_params = result.get(
- 'parameters', {}).get(
- 'haproxy', {}).get(
- 'proxy', {}).get(
- 'listen', {}).get(
- 'k8s_secure', {}).get(
- 'binds', {})
- if not haproxy_params:
+
+ tgt = 'I@haproxy:proxy:enabled:true and I@kubernetes:master and *01*'
+ try:
+ haproxy_params = self.get_single_pillar(
+ tgt=tgt, pillar="haproxy:proxy:listen:k8s_secure:binds")[0]
+ k8s_params = self.get_single_pillar(
+ tgt=tgt, pillar="kubernetes:master:admin")
+ except LookupError as e:
+ LOG.error("Skipping creation {0} because cannot get Kubernetes "
+ "parameters from '{1}': {2}"
+ .format(env_k8s_filename, tgt, e.message))
return
- k8s_params = result.get(
- 'kubernetes', {}).get(
- 'master', {}).get(
- 'admin', {})
- if not k8s_params:
- return
+
kube_host = haproxy_params['address']
- LOG.info("kube_host: {}".
- format(kube_host))
kube_apiserver_port = haproxy_params['port']
- LOG.info("kube_apiserver_port: {}".
- format(kube_apiserver_port))
kubernetes_admin_user = k8s_params['username']
- LOG.info("kubernetes_admin_user: {}".
- format(kubernetes_admin_user))
kubernetes_admin_password = k8s_params['password']
- LOG.info("kubernetes_admin_password: {}".
- format(kubernetes_admin_password))
with open(env_k8s_filename, 'w') as f:
f.write(
diff --git a/tcp_tests/templates/_heat_environments/eu-cloud.env b/tcp_tests/templates/_heat_environments/eu-cloud.env
index 5b3b03b..e053283 100644
--- a/tcp_tests/templates/_heat_environments/eu-cloud.env
+++ b/tcp_tests/templates/_heat_environments/eu-cloud.env
@@ -37,6 +37,8 @@
net_public: public
+ foundation_image: system.foundation
+
nameservers: 172.18.208.44
control_subnet_cidr: "10.6.0.0/24"
tenant_subnet_cidr: "10.8.0.0/24"
diff --git a/tcp_tests/templates/_heat_environments/fragments/Compute.yaml b/tcp_tests/templates/_heat_environments/fragments/Compute.yaml
index c3eb6ab..40ff833 100644
--- a/tcp_tests/templates/_heat_environments/fragments/Compute.yaml
+++ b/tcp_tests/templates/_heat_environments/fragments/Compute.yaml
@@ -19,6 +19,10 @@
type: string
control_net_static_ip:
type: string
+ tenant_net_static_ip:
+ type: string
+ external_net_static_ip:
+ type: string
underlay_userdata:
type: string
mcp_version:
@@ -47,11 +51,15 @@
properties:
port_security_enabled: false
network_id: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
+ fixed_ips:
+ - ip_address: { get_param: tenant_net_static_ip }
instance_port04:
type: OS::Neutron::Port
properties:
port_security_enabled: false
network_id: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
+ fixed_ips:
+ - ip_address: { get_param: external_net_static_ip }
instance_instance:
type: OS::Nova::Server
diff --git a/tcp_tests/templates/_heat_environments/fragments/FoundationNode.yaml b/tcp_tests/templates/_heat_environments/fragments/FoundationNode.yaml
index 6923881..5b2c2d4 100644
--- a/tcp_tests/templates/_heat_environments/fragments/FoundationNode.yaml
+++ b/tcp_tests/templates/_heat_environments/fragments/FoundationNode.yaml
@@ -7,6 +7,8 @@
type: string
instance_flavor:
type: string
+ instance_image:
+ type: string
instance_name:
type: string
instance_config_host:
@@ -19,6 +21,10 @@
type: string
control_net_static_ip:
type: string
+ tenant_net_static_ip:
+ type: string
+ external_net_static_ip:
+ type: string
underlay_userdata:
type: string
env_name:
@@ -47,18 +53,22 @@
properties:
port_security_enabled: false
network_id: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
+ fixed_ips:
+ - ip_address: { get_param: tenant_net_static_ip }
instance_port04:
type: OS::Neutron::Port
properties:
port_security_enabled: false
network_id: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
+ fixed_ips:
+ - ip_address: { get_param: external_net_static_ip }
instance_instance:
type: OS::Nova::Server
properties:
image_update_policy: REBUILD
flavor: { get_param: instance_flavor }
- image: { list_join: ['', [ 'ubuntu-16.04-foundation-', { get_param: mcp_version } ]] }
+ image: { get_param: instance_image }
key_name: { get_param: key_pair }
name:
list_join:
diff --git a/tcp_tests/templates/_heat_environments/fragments/Instance.yaml b/tcp_tests/templates/_heat_environments/fragments/Instance.yaml
index 499628f..5ead2ed 100644
--- a/tcp_tests/templates/_heat_environments/fragments/Instance.yaml
+++ b/tcp_tests/templates/_heat_environments/fragments/Instance.yaml
@@ -19,6 +19,10 @@
type: string
control_net_static_ip:
type: string
+ tenant_net_static_ip:
+ type: string
+ external_net_static_ip:
+ type: string
underlay_userdata:
type: string
mcp_version:
@@ -47,12 +51,15 @@
properties:
port_security_enabled: false
network_id: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
-
+ fixed_ips:
+ - ip_address: { get_param: tenant_net_static_ip }
instance_port04:
type: OS::Neutron::Port
properties:
port_security_enabled: false
network_id: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
+ fixed_ips:
+ - ip_address: { get_param: external_net_static_ip }
instance_instance:
type: OS::Nova::Server
diff --git a/tcp_tests/templates/_heat_environments/fragments/MasterNode.yaml b/tcp_tests/templates/_heat_environments/fragments/MasterNode.yaml
index b85b368..0d85600 100644
--- a/tcp_tests/templates/_heat_environments/fragments/MasterNode.yaml
+++ b/tcp_tests/templates/_heat_environments/fragments/MasterNode.yaml
@@ -7,6 +7,10 @@
type: string
salt_master_control_ip:
type: string
+ tenant_net_static_ip:
+ type: string
+ external_net_static_ip:
+ type: string
network:
type: string
cfg01_flavor:
@@ -49,12 +53,16 @@
properties:
port_security_enabled: false
network_id: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
+ fixed_ips:
+ - ip_address: { get_param: tenant_net_static_ip }
instance_port04:
type: OS::Neutron::Port
properties:
port_security_enabled: false
network_id: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
+ fixed_ips:
+ - ip_address: { get_param: external_net_static_ip }
instance_instance:
type: OS::Nova::Server
diff --git a/tcp_tests/templates/_heat_environments/fragments/MultipleInstance.yaml b/tcp_tests/templates/_heat_environments/fragments/MultipleInstance.yaml
index 1eb4dc3..b7282d8 100644
--- a/tcp_tests/templates/_heat_environments/fragments/MultipleInstance.yaml
+++ b/tcp_tests/templates/_heat_environments/fragments/MultipleInstance.yaml
@@ -25,6 +25,18 @@
type: string
instance03_control_net_static_ip:
type: string
+ instance01_tenant_net_static_ip:
+ type: string
+ instance02_tenant_net_static_ip:
+ type: string
+ instance03_tenant_net_static_ip:
+ type: string
+ instance01_external_net_static_ip:
+ type: string
+ instance02_external_net_static_ip:
+ type: string
+ instance03_external_net_static_ip:
+ type: string
instance01_role:
type: comma_delimited_list
default: [salt_minion]
@@ -50,6 +62,8 @@
key_pair: { get_param: key_pair }
network: { get_param: network }
control_net_static_ip: {get_param: instance01_control_net_static_ip }
+ tenant_net_static_ip: {get_param: instance01_tenant_net_static_ip }
+ external_net_static_ip: {get_param: instance01_external_net_static_ip }
instance_name: { get_param: instance01_name }
role: { get_param: instance01_role }
instance_domain: { get_param: instance_domain }
@@ -65,6 +79,8 @@
key_pair: { get_param: key_pair }
network: { get_param: network }
control_net_static_ip: {get_param: instance02_control_net_static_ip }
+ tenant_net_static_ip: {get_param: instance02_tenant_net_static_ip }
+ external_net_static_ip: {get_param: instance02_external_net_static_ip }
instance_name: { get_param: instance02_name }
role: { get_param: instance02_role }
instance_domain: { get_param: instance_domain }
@@ -80,6 +96,8 @@
key_pair: { get_param: key_pair }
network: { get_param: network }
control_net_static_ip: {get_param: instance03_control_net_static_ip }
+ tenant_net_static_ip: {get_param: instance03_tenant_net_static_ip }
+ external_net_static_ip: {get_param: instance03_external_net_static_ip }
instance_name: { get_param: instance03_name }
role: { get_param: instance03_role }
instance_domain: { get_param: instance_domain }
diff --git a/tcp_tests/templates/_packer/foundation/config-drive/meta-data b/tcp_tests/templates/_packer/foundation/config-drive/meta-data
new file mode 100644
index 0000000..b0c74c9
--- /dev/null
+++ b/tcp_tests/templates/_packer/foundation/config-drive/meta-data
@@ -0,0 +1 @@
+hostname: foundation
diff --git a/tcp_tests/templates/_packer/foundation/config-drive/user-data b/tcp_tests/templates/_packer/foundation/config-drive/user-data
new file mode 100644
index 0000000..1d68c57
--- /dev/null
+++ b/tcp_tests/templates/_packer/foundation/config-drive/user-data
@@ -0,0 +1,72 @@
+#cloud-config, see http://cloudinit.readthedocs.io/en/latest/topics/examples.html
+
+ssh_pwauth: True
+users:
+ - name: root
+ sudo: ALL=(ALL) NOPASSWD:ALL
+ shell: /bin/bash
+ - name: jenkins
+ sudo: ALL=(ALL) NOPASSWD:ALL
+ shell: /bin/bash
+ ssh_authorized_keys:
+ - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFSxeuXh2sO4VYL8N2dlNFVyNcr2RvoH4MeDD/cV2HThfU4/BcH6IOOWXSDibIU279bWVKCL7QUp3mf0Vf7HPuyFuC12QM+l7MwT0jCYh5um3hmAvM6Ga0nkhJygHexe9/rLEYzZJkIjP9/IS/YXSv8rhHg484wQ6qkEuq15nyMqil8tbDQCq0XQ+AWEpNpIa4pUoKmFMsOP8lq10KZXIXsJyZxizadr6Bh4Lm9LWrk8YCw7qP3rmgWxK/s8qXQh1ISZe6ONfcmk6p03qbh4H3CwKyWzxmnIHQvE6PgN/O+PuAZj3PbR2mkkJjYX4jNPlxvj8uTStaVPhAwfR9Spdx jenkins@cz8133
+
+disable_root: false
+chpasswd:
+ list: |
+ root:r00tme
+ jenkins:qalab
+ expire: False
+
+output:
+ all: '| tee -a /var/log/cloud-init-output.log /dev/tty0'
+
+runcmd:
+ # Create swap
+ - fallocate -l 16G /swapfile
+ - chmod 600 /swapfile
+ - mkswap /swapfile
+ - swapon /swapfile
+ - echo "/swapfile none swap defaults 0 0" >> /etc/fstab
+
+ # Enable root access
+ - sed -i -e '/^PermitRootLogin/s/^.*$/PermitRootLogin yes/' /etc/ssh/sshd_config
+ - service sshd restart
+
+write_files:
+ - path: /etc/default/grub.d/97-enable-grub-menu.cfg
+ content: |
+ GRUB_RECORDFAIL_TIMEOUT=30
+ GRUB_TIMEOUT=3
+ GRUB_TIMEOUT_STYLE=menu
+
+ - path: /etc/network/interfaces
+ content: |
+ auto ens3
+ iface ens3 inet dhcp
+
+ - path: /etc/bash_completion.d/fuel_devops30_activate
+ content: |
+ source /home/jenkins/fuel-devops30/bin/activate
+
+ - path: /etc/sysctl.d/99-fuel-devops.conf
+ content: |
+ net.bridge.bridge-nf-call-arptables = 0
+ net.bridge.bridge-nf-call-ip6tables = 0
+ net.bridge.bridge-nf-call-iptables = 0
+
+ - path: /etc/ssh/ssh_config
+ content: |
+ Host *
+ SendEnv LANG LC_*
+ HashKnownHosts yes
+ GSSAPIAuthentication yes
+ GSSAPIDelegateCredentials no
+ ServerAliveInterval 300
+ ServerAliveCountMax 10
+ StrictHostKeyChecking no
+ UserKnownHostsFile /dev/null
+
+ - path: /etc/sudoers.d/99-mirantis
+ content: |
+ %mirantis ALL=(ALL) NOPASSWD:ALL
diff --git a/tcp_tests/templates/_packer/foundation/packer.json b/tcp_tests/templates/_packer/foundation/packer.json
new file mode 100644
index 0000000..452fdef
--- /dev/null
+++ b/tcp_tests/templates/_packer/foundation/packer.json
@@ -0,0 +1,64 @@
+{
+ "variables": {
+ "vm_name": "{{ env `IMAGE_NAME` }}.qcow2",
+ "image_path": "tmp/{{ env `IMAGE_NAME` }}",
+ "base_image_url": "{{ env `BASE_IMAGE_URL` }}",
+ "base_image_md5": "{{ env `BASE_IMAGE_MD5` }}",
+ "base_image_path": "base_image.qcow2",
+ "ssh_username": "root",
+ "ssh_password": "r00tme",
+ "ssh_wait_timeout": "30m",
+ "disk_size": "51200",
+ "boot_wait": "120s"
+ },
+
+ "builders":
+ [
+ {
+ "type": "qemu",
+ "qemuargs": [
+ [ "-m", "1024M" ],
+ [ "-cdrom", "tmp/config-drive.iso" ],
+ ["-device", "virtio-net,netdev=user.0"],
+ ["-object","rng-random,id=objrng0,filename=/dev/urandom"],
+ ["-device", "virtio-rng-pci,rng=objrng0,id=rng0,bus=pci.0,addr=0x10" ]
+ ],
+ "vm_name": "{{ user `vm_name` }}",
+ "output_directory": "{{ user `image_path` }}",
+ "format": "qcow2",
+ "iso_url": "{{ user `base_image_url` }}",
+ "iso_checksum": "{{ user `base_image_md5` }}",
+ "iso_checksum_type": "md5",
+ "iso_target_path": "{{ user `base_image_path`}}",
+ "disk_image": true,
+ "disk_compression": true,
+ "accelerator": "kvm",
+ "disk_size": "{{ user `disk_size`}}",
+ "headless": true,
+ "ssh_username": "{{ user `ssh_username` }}",
+ "ssh_password": "{{ user `ssh_password` }}",
+ "ssh_wait_timeout": "{{ user `ssh_wait_timeout` }}",
+ "ssh_host_port_min": 7000,
+ "ssh_host_port_max": 7050,
+ "shutdown_command": "shutdown -P now",
+ "boot_wait": "{{ user `boot_wait` }}"
+ }
+ ],
+
+ "provisioners": [
+ {
+ "type": "shell",
+ "environment_vars": [
+ "DEBIAN_FRONTEND=noninteractive"
+ ],
+ "execute_command": "echo '{{ user `ssh_password` }}' | {{.Vars}} sudo -S -E bash -x '{{.Path}}'",
+ "scripts": [
+ "tcp_tests/templates/_packer/scripts/ubuntu_packets.sh",
+ "tcp_tests/templates/_packer/scripts/ubuntu_ldap.sh",
+ "tcp_tests/templates/_packer/scripts/jenkins_virtualenvs.sh",
+ "tcp_tests/templates/_packer/scripts/ubuntu_cleanup.sh",
+ "tcp_tests/templates/_packer/scripts/zerodisk.sh"
+ ]
+ }
+ ]
+}
diff --git a/tcp_tests/templates/_packer/scripts/jenkins_virtualenvs.sh b/tcp_tests/templates/_packer/scripts/jenkins_virtualenvs.sh
new file mode 100644
index 0000000..eb83ab4
--- /dev/null
+++ b/tcp_tests/templates/_packer/scripts/jenkins_virtualenvs.sh
@@ -0,0 +1,23 @@
+#!/bin/bash -xe
+
+DEVOPS_VENV_PATH=/home/jenkins/fuel-devops30
+REPORT_VENV_PATH=/home/jenkins/venv_testrail_reporter
+
+if [ ! -d ${DEVOPS_VENV_PATH} ]; then
+ virtualenv ${DEVOPS_VENV_PATH}
+fi
+if [ ! -d ${REPORT_VENV_PATH} ]; then
+ virtualenv ${REPORT_VENV_PATH}
+fi
+
+# Install tcp-qa requirements
+. ${DEVOPS_VENV_PATH}/bin/activate
+pip install -r https://raw.githubusercontent.com/Mirantis/tcp-qa/master/tcp_tests/requirements.txt
+pip install psycopg2 # workaround for setup with PostgreSQL , to keep requirements.txt for Sqlite3 only
+
+# Install xunit2testrail
+. ${REPORT_VENV_PATH}/bin/activate
+#pip install xunit2testrail -U
+pip install git+https://github.com/dis-xcom/testrail_reporter -U # Removed accessing to an unexisting pastebin on srv62
+
+chown -R jenkins:jenkins /home/jenkins/
diff --git a/tcp_tests/templates/_packer/scripts/ubuntu_cleanup.sh b/tcp_tests/templates/_packer/scripts/ubuntu_cleanup.sh
new file mode 100644
index 0000000..63a7586
--- /dev/null
+++ b/tcp_tests/templates/_packer/scripts/ubuntu_cleanup.sh
@@ -0,0 +1,70 @@
+#!/bin/bash -xe
+
+apt-get -y remove --purge unattended-upgrades || true
+apt-get -y autoremove --purge
+apt-get -y clean
+
+rm -rf /var/lib/apt/lists/* || true
+rm -rv /etc/apt/sources.list.d/* || true
+rm -rv /etc/apt/preferences.d/* || true
+echo > /etc/apt/sources.list || true
+rm -vf /usr/sbin/policy-rc.d || true
+
+echo "cleaning up hostname"
+sed -i "/.*ubuntu.*/d" /etc/hosts
+sed -i "/.*salt.*/d" /etc/hosts
+
+echo "cleaning up guest additions"
+rm -rf VBoxGuestAdditions_*.iso VBoxGuestAdditions_*.iso.? || true
+
+echo "cleaning up dhcp leases"
+rm -rf /var/lib/dhcp/* || true
+rm -rfv /var/lib/ntp/ntp.conf.dhcp || true
+
+echo "cleaning up udev rules"
+rm -fv /etc/udev/rules.d/70-persistent-net.rules || true
+rm -rf /dev/.udev/ || true
+rm -fv /lib/udev/rules.d/75-persistent-net-generator.rules || true
+
+echo "cleaning up minion_id for salt"
+rm -vf /etc/salt/minion_id || true
+
+echo "cleaning up resolvconf"
+sed -i '/172\.18\.208\.44/d' /etc/resolvconf/resolv.conf.d/base
+
+echo "cleaning up /var/cache/{apt,salt}/*"
+rm -rf /var/cache/{apt,salt}/* || true
+
+rm -rf /root/.cache || true
+rm -rf /root/.ssh/known_hosts || true
+
+# Remove flags
+rm -v /done_ubuntu_base || true
+rm -v /done_ubuntu_salt_bootstrap || true
+
+# Force cleanup cloud-init data, if it was
+if [[ -d '/var/lib/cloud/' ]] ; then
+ rm -rf /var/lib/cloud/* || true
+ cloud-init clean || true
+ echo > /var/log/cloud-init-output.log || true
+ echo > /var/log/cloud-init.log || true
+fi
+
+cat << EOF > /etc/network/interfaces
+# This file describes the network interfaces available on your system
+# and how to activate them. For more information, see interfaces(5).
+
+# The loopback network interface
+auto lo
+iface lo inet loopback
+
+# Source interfaces
+# Please check /etc/network/interfaces.d before changing this file
+# as interfaces may have been defined in /etc/network/interfaces.d
+# See LP: #1262951
+source /etc/network/interfaces.d/*.cfg
+EOF
+
+# Clear\drop cache's
+sync
+echo 3 > /proc/sys/vm/drop_caches
diff --git a/tcp_tests/templates/_packer/scripts/ubuntu_ldap.sh b/tcp_tests/templates/_packer/scripts/ubuntu_ldap.sh
new file mode 100644
index 0000000..4c400fb
--- /dev/null
+++ b/tcp_tests/templates/_packer/scripts/ubuntu_ldap.sh
@@ -0,0 +1,56 @@
+#!/bin/bash -xe
+
+apt-get update
+apt-get install -y ldap-auth-client nscd ldap-utils
+
+auth-client-config -t nss -p lac_ldap
+
+sed -i 's$^#bind_policy hard$bind_policy soft$' /etc/ldap.conf
+sed -i 's$base dc=.*$base dc=mirantis,dc=net$' /etc/ldap.conf
+sed -i 's$uri ldap.*$uri ldap://ldap-bud.bud.mirantis.net/$' /etc/ldap.conf
+sed -i 's$^\(rootbinddn.*\)$#\1$' /etc/ldap.conf
+
+cat << 'EOF' >> /etc/ldap/ldap.conf
+BASE dc=mirantis,dc=net
+URI ldap://ldap-bud.bud.mirantis.net/
+EOF
+
+cat << 'EOF' > /usr/share/pam-configs/my_mkhomedir
+Name: activate mkhomedir
+Default: yes
+Priority: 900
+Session-Type: Additional
+Session:
+ required pam_mkhomedir.so umask=0022 skel=/etc/skel
+EOF
+
+cat << 'EOF' >> /etc/security/group.conf
+*;*;*;Al0000-2400;audio,cdrom,dialout,floppy,kvm,libvirtd
+EOF
+
+cat << 'EOF' > /usr/share/pam-configs/my_groups
+Name: activate /etc/security/group.conf
+Default: yes
+Priority: 900
+Auth-Type: Primary
+Auth:
+ required pam_group.so use_first_pass
+EOF
+
+cat << 'EOF' > /usr/local/sbin/ssh-ldap-keyauth
+#!/bin/bash
+
+/usr/bin/ldapsearch -x '(&(objectClass=posixAccount)(uid='"$1"'))' sshPublicKey | sed -n '/^ /{H;d};/sshPublicKey:/x;$g;s/\n *//g;s/sshPublicKey: //gp'
+EOF
+
+cat << 'EOF' >> /etc/ssh/sshd_config
+
+AuthorizedKeysCommand /usr/local/sbin/ssh-ldap-keyauth
+AuthorizedKeysCommandUser nobody
+EOF
+
+chmod +x /usr/local/sbin/ssh-ldap-keyauth
+DEBIAN_FRONTEND=noninteractive pam-auth-update
+
+#systemctl restart nscd.service;
+#systemctl restart sshd.service;
diff --git a/tcp_tests/templates/_packer/scripts/ubuntu_packets.sh b/tcp_tests/templates/_packer/scripts/ubuntu_packets.sh
new file mode 100644
index 0000000..883f620
--- /dev/null
+++ b/tcp_tests/templates/_packer/scripts/ubuntu_packets.sh
@@ -0,0 +1,17 @@
+#!/bin/bash -xe
+
+apt-get update
+
+# for Jenkins agent
+apt-get install -y openjdk-8-jre-headless
+# for fuel-devops and tcp-qa
+apt-get install -y libyaml-dev libffi-dev libvirt-dev python-dev pkg-config vlan bridge-utils python-pip python3-pip virtualenv
+# additional tools
+apt-get install -y ebtables curl ethtool iputils-ping lsof strace tcpdump traceroute wget iptables htop \
+ git jq ntpdate tree mc byobu at pm-utils genisoimage iotop
+
+# ldap
+apt-get install -y ldap-auth-client nscd ldap-utils
+
+# update kernel
+apt-get install -y linux-generic-hwe-16.04
diff --git a/tcp_tests/templates/_packer/scripts/zerodisk.sh b/tcp_tests/templates/_packer/scripts/zerodisk.sh
new file mode 100644
index 0000000..159ae13
--- /dev/null
+++ b/tcp_tests/templates/_packer/scripts/zerodisk.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+set -x
+
+dd if=/dev/zero of=/EMPTY bs=1M || true
+rm -f /EMPTY
+
+sync
+echo 3 > /proc/sys/vm/drop_caches
diff --git a/tcp_tests/templates/cookied-cicd-bm-os-contrail40-maas/lab04-physical-inventory.yaml b/tcp_tests/templates/cookied-cicd-bm-os-contrail40-maas/lab04-physical-inventory.yaml
index 27b5d25..e2788ce 100644
--- a/tcp_tests/templates/cookied-cicd-bm-os-contrail40-maas/lab04-physical-inventory.yaml
+++ b/tcp_tests/templates/cookied-cicd-bm-os-contrail40-maas/lab04-physical-inventory.yaml
@@ -18,12 +18,12 @@
- infra_kvm
- linux_system_codename_xenial
interfaces:
- enp9s0f0:
- role: single_dhcp
- enp9s0f1:
- role: bond0_ab_ovs_vlan_ctl
- ens11f0:
- role: single_mgm_manual
+ enp8s0f0:
+ role: single_mgm_dhcp
+ ens4f1:
+ role: bond_ctl_contrail_lacp
+ ens11f1:
+ role: bond_ctl_contrail_lacp
kvm02.cookied-cicd-bm-os-contrail40-maas.local:
reclass_storage_name: infra_kvm_node02
@@ -31,12 +31,12 @@
- infra_kvm
- linux_system_codename_xenial
interfaces:
- enp9s0f0:
- role: single_dhcp
- enp9s0f1:
- role: bond0_ab_ovs_vlan_ctl
- ens11f0:
- role: single_mgm_manual
+ enp8s0f0:
+ role: single_mgm_dhcp
+ ens4f1:
+ role: bond_ctl_contrail_lacp
+ ens11f1:
+ role: bond_ctl_contrail_lacp
kvm03.cookied-cicd-bm-os-contrail40-maas.local:
reclass_storage_name: infra_kvm_node03
@@ -44,12 +44,54 @@
- infra_kvm
- linux_system_codename_xenial
interfaces:
- enp9s0f0:
- role: single_dhcp
- enp9s0f1:
- role: bond0_ab_ovs_vlan_ctl
- ens11f0:
- role: single_mgm_manual
+ enp8s0f0:
+ role: single_mgm_dhcp
+ ens4f1:
+ role: bond_ctl_contrail_lacp
+ ens11f1:
+ role: bond_ctl_contrail_lacp
+
+ kvm04.cookied-cicd-bm-os-contrail40-maas.local:
+ reclass_storage_name: infra_kvm_node04
+ roles:
+ - infra_kvm_wo_gluster
+ - linux_system_codename_xenial
+ - salt_master_host
+ interfaces:
+ enp8s0f0:
+ role: single_mgm_dhcp
+ ens4f1:
+ role: bond_ctl_contrail_lacp
+ ens11f1:
+ role: bond_ctl_contrail_lacp
+
+ kvm05.cookied-cicd-bm-os-contrail40-maas.local:
+ reclass_storage_name: infra_kvm_node05
+ roles:
+ - infra_kvm_wo_gluster
+ - linux_system_codename_xenial
+ - salt_master_host
+ interfaces:
+ enp8s0f0:
+ role: single_mgm_dhcp
+ ens4f1:
+ role: bond_ctl_contrail_lacp
+ ens11f1:
+ role: bond_ctl_contrail_lacp
+
+ kvm06.cookied-cicd-bm-os-contrail40-maas.local:
+ reclass_storage_name: infra_kvm_node06
+ roles:
+ - infra_kvm_wo_gluster
+ - linux_system_codename_xenial
+ - salt_master_host
+ interfaces:
+ enp8s0f0:
+ role: single_mgm_dhcp
+ ens4f1:
+ role: bond_ctl_contrail_lacp
+ ens11f1:
+ role: bond_ctl_contrail_lacp
osd<<count>>:
reclass_storage_name: ceph_osd_rack01
@@ -57,11 +99,14 @@
- ceph_osd
- linux_system_codename_xenial
interfaces:
- enp2s0f0:
+ eno1:
role: single_dhcp
- enp2s0f1:
- role: single_vlan_ctl
+ ens1f1:
+ role: bond_ctl_contrail_lacp
+ ens2f1:
+ role: bond_ctl_contrail_lacp
# role: bond0_ab_vlan_ceph_storage_backend
+# todo: add storage net for ceph to second lacp bond
cmp<<count>>:
reclass_storage_name: openstack_compute_rack01
@@ -69,9 +114,13 @@
- openstack_compute
- linux_system_codename_xenial
interfaces:
- enp2s0f1:
+ eno1:
role: single_dhcp
- enp5s0f0:
- role: bond0_ab_contrail
- enp5s0f1:
- role: single_vlan_ctl
+ ens1f0:
+ role: bond_ctl_contrail_lacp
+ ens1f1:
+ role: bond_contrail_lacp
+ ens2f0:
+ role: bond_ctl_contrail_lacp
+ ens2f1:
+ role: bond_contrail_lacp
diff --git a/tcp_tests/templates/cookied-cicd-bm-os-contrail40-maas/salt-context-cookiecutter-contrail.yaml b/tcp_tests/templates/cookied-cicd-bm-os-contrail40-maas/salt-context-cookiecutter-contrail.yaml
index 1a50ff3..5116cd7 100644
--- a/tcp_tests/templates/cookied-cicd-bm-os-contrail40-maas/salt-context-cookiecutter-contrail.yaml
+++ b/tcp_tests/templates/cookied-cicd-bm-os-contrail40-maas/salt-context-cookiecutter-contrail.yaml
@@ -103,6 +103,15 @@
infra_kvm03_control_address: 10.167.8.243
infra_kvm03_deploy_address: 172.16.49.69
infra_kvm03_hostname: kvm03
+ infra_kvm04_control_address: 10.167.8.244
+ infra_kvm04_deploy_address: 172.16.49.70
+ infra_kvm04_hostname: kvm04
+ infra_kvm05_control_address: 10.167.8.245
+ infra_kvm05_deploy_address: 172.16.49.71
+ infra_kvm05_hostname: kvm05
+ infra_kvm06_control_address: 10.167.8.246
+ infra_kvm06_deploy_address: 172.16.49.72
+ infra_kvm06_hostname: kvm06
infra_kvm_vip_address: 10.167.8.240
infra_primary_first_nic: eth1
infra_primary_second_nic: eth2
@@ -116,139 +125,188 @@
maas_deploy_cidr: 172.16.49.64/26
maas_deploy_gateway: 172.16.49.65
maas_deploy_range_end: 172.16.49.119
- maas_deploy_range_start: 172.16.49.77
+ maas_deploy_range_start: 172.16.49.78
maas_deploy_vlan: '0'
maas_dhcp_enabled: 'True'
maas_fabric_name: fabric-0
maas_hostname: cfg01
maas_manage_deploy_network: 'True'
maas_machines: |
- kvm01: # cz7341-kvm.host-telecom.com
+ kvm01: # cz8062-kvm.host-telecom.com
distro_series: "xenial"
# hwe_kernel: "hwe-16.04"
# pxe_interface_mac:
- pxe_interface_mac: "0c:c4:7a:6c:83:56"
+ pxe_interface_mac: "0c:c4:7a:a8:d3:44"
interfaces:
- enp9s0f0:
- mac: "0c:c4:7a:6c:83:56"
+ enp8s0f0:
+ mac: "0c:c4:7a:a8:d3:44"
mode: "static"
ip: "172.16.49.67"
subnet: ${maas:region:subnets:deploy_network:cidr} # create it manually... in UI
gateway: ${_param:deploy_network_gateway}
power_parameters:
- power_address: "5.43.225.117"
+ power_address: "5.43.227.106"
power_pass: ==IPMI_PASS==
power_type: ipmi
power_user: ==IPMI_USER==
- kvm02: # #cz7342-kvm.host-telecom.com
+ kvm02: # #cz8063-kvm.host-telecom.com
distro_series: "xenial"
# hwe_kernel: "hwe-16.04"
- pxe_interface_mac: "0c:c4:7a:6c:84:2c"
+ pxe_interface_mac: "0c:c4:7a:a8:b8:18"
interfaces:
- enp9s0f0:
- mac: "0c:c4:7a:6c:84:2c"
+ enp8s0f0:
+ mac: "0c:c4:7a:a8:b8:18"
mode: "static"
ip: "172.16.49.68"
subnet: ${maas:region:subnets:deploy_network:cidr} # create it manually... in UI
gateway: ${_param:deploy_network_gateway}
power_parameters:
- power_address: "5.43.225.118"
+ power_address: "5.43.227.107"
power_pass: ==IPMI_PASS==
power_type: ipmi
power_user: ==IPMI_USER==
- kvm03: # #cz7343-kvm.host-telecom.com
+ kvm03: # #cz8064-kvm.host-telecom.com
distro_series: "xenial"
# hwe_kernel: "hwe-16.04"
- pxe_interface_mac: "0c:c4:7a:6c:83:54"
+ pxe_interface_mac: "0c:c4:7a:a8:d0:40"
interfaces:
- enp9s0f0:
- mac: "0c:c4:7a:6c:83:54"
+ enp8s0f0:
+ mac: "0c:c4:7a:a8:d0:40"
mode: "static"
ip: "172.16.49.69"
subnet: ${maas:region:subnets:deploy_network:cidr} # create it manually... in UI
gateway: ${_param:deploy_network_gateway}
power_parameters:
- power_address: "5.43.225.119"
+ power_address: "5.43.227.108"
power_pass: ==IPMI_PASS==
power_type: ipmi
power_user: ==IPMI_USER==
- osd001: # #cz7343-kvm.host-telecom.com
+ kvm04: # cz8065-kvm.host-telecom.com
distro_series: "xenial"
# hwe_kernel: "hwe-16.04"
- pxe_interface_mac: "0c:c4:7a:55:6a:d4"
+ # pxe_interface_mac:
+ pxe_interface_mac: "0c:c4:7a:a8:b8:22"
interfaces:
- enp2s0f0:
- mac: "0c:c4:7a:55:6a:d4"
+ enp8s0f0:
+ mac: "0c:c4:7a:a8:b8:22"
mode: "static"
ip: "172.16.49.70"
subnet: ${maas:region:subnets:deploy_network:cidr} # create it manually... in UI
gateway: ${_param:deploy_network_gateway}
power_parameters:
- power_address: "185.8.59.243"
+ power_address: "5.43.227.110"
power_pass: ==IPMI_PASS==
power_type: ipmi
power_user: ==IPMI_USER==
- osd002: # #cz7343-kvm.host-telecom.com
+ kvm05: # #cz8066-kvm.host-telecom.com
distro_series: "xenial"
# hwe_kernel: "hwe-16.04"
- pxe_interface_mac: "0c:c4:7a:55:6a:56"
+ pxe_interface_mac: "0c:c4:7a:a8:b8:1a"
interfaces:
- enp2s0f0:
- mac: "0c:c4:7a:55:6a:56"
+ enp8s0f0:
+ mac: "0c:c4:7a:a8:b8:1a"
mode: "static"
ip: "172.16.49.71"
subnet: ${maas:region:subnets:deploy_network:cidr} # create it manually... in UI
gateway: ${_param:deploy_network_gateway}
power_parameters:
- power_address: "185.8.59.244"
+ power_address: "5.43.227.111"
power_pass: ==IPMI_PASS==
power_type: ipmi
power_user: ==IPMI_USER==
- osd003: # #cz7343-kvm.host-telecom.com
+ kvm06: # #cz8067-kvm.host-telecom.com
distro_series: "xenial"
# hwe_kernel: "hwe-16.04"
- pxe_interface_mac: "0c:c4:7a:55:6a:2a"
+ pxe_interface_mac: "0c:c4:7a:a8:b8:1c"
interfaces:
- enp2s0f0:
- mac: "0c:c4:7a:55:6a:2a"
+ enp8s0f0:
+ mac: "0c:c4:7a:a8:b8:1c"
mode: "static"
ip: "172.16.49.72"
subnet: ${maas:region:subnets:deploy_network:cidr} # create it manually... in UI
gateway: ${_param:deploy_network_gateway}
power_parameters:
- power_address: "185.8.59.245"
+ power_address: "5.43.227.112"
power_pass: ==IPMI_PASS==
power_type: ipmi
power_user: ==IPMI_USER==
- cmp001: # #cz7345-kvm.host-telecom.com
+ osd001: # #cz5272-kvm.host-telecom.com
distro_series: "xenial"
# hwe_kernel: "hwe-16.04"
- pxe_interface_mac: "0c:c4:7a:54:a2:5f"
+ pxe_interface_mac: "0c:c4:7a:aa:51:f8"
interfaces:
- enp2s0f1:
- mac: "0c:c4:7a:54:a2:5f"
+ eno1:
+ mac: "0c:c4:7a:aa:51:f8"
mode: "static"
ip: "172.16.49.73"
subnet: ${maas:region:subnets:deploy_network:cidr} # create it manually... in UI
gateway: ${_param:deploy_network_gateway}
power_parameters:
- power_address: "185.8.59.233"
+ power_address: "5.43.225.182"
power_pass: ==IPMI_PASS==
power_type: ipmi
power_user: ==IPMI_USER==
- cmp002: # cz7346-kvm.host-telecom.com
+ osd002: # #cz7857-kvm.host-telecom.com
distro_series: "xenial"
# hwe_kernel: "hwe-16.04"
- pxe_interface_mac: "0c:c4:7a:54:a0:51"
+ pxe_interface_mac: "0c:c4:7a:6d:3a:80"
interfaces:
- enp2s0f1:
- mac: "0c:c4:7a:54:a0:51"
+ eno1:
+ mac: "0c:c4:7a:6d:3a:80"
mode: "static"
ip: "172.16.49.74"
subnet: ${maas:region:subnets:deploy_network:cidr} # create it manually... in UI
gateway: ${_param:deploy_network_gateway}
power_parameters:
- power_address: "185.8.59.232"
+ power_address: "5.43.225.199"
+ power_pass: ==IPMI_PASS==
+ power_type: ipmi
+ power_user: ==IPMI_USER==
+ osd003: # #cz7787-kvm.host-telecom.com
+ distro_series: "xenial"
+ # hwe_kernel: "hwe-16.04"
+ pxe_interface_mac: "0c:c4:7a:6b:f7:7a"
+ interfaces:
+ eno1:
+ mac: "0c:c4:7a:6b:f7:7a"
+ mode: "static"
+ ip: "172.16.49.75"
+ subnet: ${maas:region:subnets:deploy_network:cidr} # create it manually... in UI
+ gateway: ${_param:deploy_network_gateway}
+ power_parameters:
+ power_address: "5.43.225.123"
+ power_pass: ==IPMI_PASS==
+ power_type: ipmi
+ power_user: ==IPMI_USER==
+ cmp001: # #cz7987-kvm.host-telecom.com
+ distro_series: "xenial"
+ # hwe_kernel: "hwe-16.04"
+ pxe_interface_mac: "0c:c4:7a:a8:72:ac"
+ interfaces:
+ eno1:
+ mac: "0c:c4:7a:a8:72:ac"
+ mode: "static"
+ ip: "172.16.49.76"
+ subnet: ${maas:region:subnets:deploy_network:cidr} # create it manually... in UI
+ gateway: ${_param:deploy_network_gateway}
+ power_parameters:
+ power_address: "5.43.225.181"
+ power_pass: ==IPMI_PASS==
+ power_type: ipmi
+ power_user: ==IPMI_USER==
+ cmp002: # cz7842-kvm.host-telecom.com
+ distro_series: "xenial"
+ # hwe_kernel: "hwe-16.04"
+ pxe_interface_mac: "0c:c4:7a:6d:3a:c6"
+ interfaces:
+ eno1:
+ mac: "0c:c4:7a:6d:3a:c6"
+ mode: "static"
+ ip: "172.16.49.77"
+ subnet: ${maas:region:subnets:deploy_network:cidr} # create it manually... in UI
+ gateway: ${_param:deploy_network_gateway}
+ power_parameters:
+ power_address: "5.43.225.201"
power_pass: ==IPMI_PASS==
power_type: ipmi
power_user: ==IPMI_USER==
@@ -278,7 +336,6 @@
opencontrail_router01_hostname: rtr01
opencontrail_router02_address: 10.167.8.101
opencontrail_router02_hostname: rtr02
- openldap_enabled: 'False'
openssh_groups: ''
openstack_benchmark_node01_address: 10.167.8.95
openstack_benchmark_node01_hostname: bmk01
@@ -286,7 +343,7 @@
openstack_compute_count: '2'
openstack_compute_rack01_hostname: cmp
openstack_compute_single_address_ranges: 10.167.8.101-10.167.8.102
- openstack_compute_deploy_address_ranges: 172.16.49.73-172.16.49.74
+ openstack_compute_deploy_address_ranges: 172.16.49.76-172.16.49.77
openstack_compute_tenant_address_ranges: 10.167.10.101-10.167.10.102
openstack_compute_backend_address_ranges: 10.167.10.101-10.167.10.102
openstack_control_address: 10.167.8.10
@@ -397,7 +454,7 @@
# for 2018.11.0+
ceph_osd_single_address_ranges: "10.167.8.200-10.167.8.202"
- ceph_osd_deploy_address_ranges: "172.16.49.70-172.16.49.72"
+ ceph_osd_deploy_address_ranges: "172.16.49.73-172.16.49.75"
ceph_osd_storage_address_ranges: "10.167.8.200-10.167.8.202"
ceph_osd_backend_address_ranges: "10.167.10.200-10.167.10.202"
@@ -442,4 +499,6 @@
openstack_mysql_x509_enabled: 'True'
rabbitmq_ssl_enabled: 'True'
openstack_rabbitmq_x509_enabled: 'True'
- openstack_internal_protocol: 'https'
\ No newline at end of file
+ openstack_internal_protocol: 'https'
+ cinder_backup_engine: 'ceph'
+ cinder_ceph_backup_pool_name: 'backups'
diff --git a/tcp_tests/templates/cookied-cicd-bm-os-contrail40-maas/underlay.yaml b/tcp_tests/templates/cookied-cicd-bm-os-contrail40-maas/underlay.yaml
index 0a5f4f2..e48b817 100644
--- a/tcp_tests/templates/cookied-cicd-bm-os-contrail40-maas/underlay.yaml
+++ b/tcp_tests/templates/cookied-cicd-bm-os-contrail40-maas/underlay.yaml
@@ -98,7 +98,7 @@
role: salt_master
params:
vcpu: !os_env SLAVE_NODE_CPU, 4
- memory: !os_env SLAVE_NODE_MEMORY, 12288
+ memory: !os_env SLAVE_NODE_MEMORY, 16384
boot:
- hd
volumes:
diff --git a/tcp_tests/templates/cookied-model-generator/salt_bm-cicd-pike-ovs-maas.yaml b/tcp_tests/templates/cookied-model-generator/salt_bm-cicd-pike-ovs-maas.yaml
index 49f91da..cb12b3f 100644
--- a/tcp_tests/templates/cookied-model-generator/salt_bm-cicd-pike-ovs-maas.yaml
+++ b/tcp_tests/templates/cookied-model-generator/salt_bm-cicd-pike-ovs-maas.yaml
@@ -19,6 +19,10 @@
{{ SHARED.MACRO_INSTALL_PACKAGES_ON_NODES(HOSTNAME_CFG01) }}
+
+{{ SHARED.MACRO_INSTALL_FORMULAS_FROM_UPDATE() }}
+
+
{{ SHARED.MACRO_INSTALL_FORMULAS('\*') }}
{{ SHARED.MACRO_GENERATE_COOKIECUTTER_MODEL(CONTROL_VLAN=CONTROL_VLAN, TENANT_VLAN=TENANT_VLAN) }}
diff --git a/tcp_tests/templates/cookied-model-generator/salt_bm-cicd-queens-ovs-maas.yaml b/tcp_tests/templates/cookied-model-generator/salt_bm-cicd-queens-ovs-maas.yaml
index 6369346..697f99d 100644
--- a/tcp_tests/templates/cookied-model-generator/salt_bm-cicd-queens-ovs-maas.yaml
+++ b/tcp_tests/templates/cookied-model-generator/salt_bm-cicd-queens-ovs-maas.yaml
@@ -19,6 +19,8 @@
{{ SHARED.MACRO_INSTALL_PACKAGES_ON_NODES(HOSTNAME_CFG01) }}
+{{ SHARED.MACRO_INSTALL_FORMULAS_FROM_UPDATE() }}
+
{{ SHARED.MACRO_INSTALL_FORMULAS('\*') }}
{{ SHARED.MACRO_UPLOAD_AND_IMPORT_GPG_ENCRYPTION_KEY() }}
diff --git a/tcp_tests/templates/cookied-model-generator/salt_cookied-bm-mcp-dvr-vxlan.yaml b/tcp_tests/templates/cookied-model-generator/salt_cookied-bm-mcp-dvr-vxlan.yaml
index e6c7313..3db5e4e 100644
--- a/tcp_tests/templates/cookied-model-generator/salt_cookied-bm-mcp-dvr-vxlan.yaml
+++ b/tcp_tests/templates/cookied-model-generator/salt_cookied-bm-mcp-dvr-vxlan.yaml
@@ -13,6 +13,9 @@
{% import 'shared-salt.yaml' as SHARED with context %}
{{ SHARED.MACRO_INSTALL_PACKAGES_ON_NODES(HOSTNAME_CFG01) }}
+
+{{ SHARED.MACRO_INSTALL_FORMULAS_FROM_UPDATE() }}
+
{{ SHARED.MACRO_INSTALL_FORMULAS('\*') }}
{{ SHARED.MACRO_GENERATE_COOKIECUTTER_MODEL(CONTROL_VLAN=CONTROL_VLAN, TENANT_VLAN=TENANT_VLAN) }}
diff --git a/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-bm-k8s-contrail40-maas.yaml b/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-bm-k8s-contrail40-maas.yaml
index 52098cf..0943346 100644
--- a/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-bm-k8s-contrail40-maas.yaml
+++ b/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-bm-k8s-contrail40-maas.yaml
@@ -17,6 +17,8 @@
{{ SHARED.MACRO_INSTALL_PACKAGES_ON_NODES(HOSTNAME_CFG01) }}
+{{ SHARED.MACRO_INSTALL_FORMULAS_FROM_UPDATE() }}
+
{{ SHARED.MACRO_INSTALL_FORMULAS('\*') }}
{{ SHARED.MACRO_GENERATE_COOKIECUTTER_MODEL(CONTROL_VLAN=CONTROL_VLAN, TENANT_VLAN=TENANT_VLAN) }}
diff --git a/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-bm-os-contrail40-maas.yaml b/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-bm-os-contrail40-maas.yaml
index 17ad597..951d6fa 100644
--- a/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-bm-os-contrail40-maas.yaml
+++ b/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-bm-os-contrail40-maas.yaml
@@ -17,19 +17,14 @@
{{ SHARED.MACRO_INSTALL_PACKAGES_ON_NODES(HOSTNAME_CFG01) }}
+{{ SHARED.MACRO_INSTALL_FORMULAS_FROM_UPDATE() }}
+
{{ SHARED.MACRO_INSTALL_FORMULAS('\*') }}
{{ SHARED.MACRO_GENERATE_COOKIECUTTER_MODEL(CONTROL_VLAN=CONTROL_VLAN, TENANT_VLAN=TENANT_VLAN) }}
{{ SHARED.MACRO_GENERATE_AND_ENABLE_ENVIRONMENT_MODEL() }}
-- description: Temporary WR for cinder backend defined by default in reclass.system
- cmd: |
- sed -i 's/backend\:\ {}//g' /srv/salt/reclass/classes/system/cinder/control/cluster.yml;
- node_name: {{ HOSTNAME_CFG01 }}
- retry: {count: 1, delay: 5}
- skip_fail: false
-
- description: Temporary WR for correct bridge name according to envoronment templates
cmd: |
sed -i 's/br\-ctl/br\_ctl/g' /srv/salt/reclass/classes/cluster/{{ LAB_CONFIG_NAME }}/infra/kvm.yml;
@@ -58,11 +53,3 @@
node_name: {{ HOSTNAME_CFG01 }}
retry: {count: 1, delay: 5}
skip_fail: false
-
-- description: Temporary workaround !! Fix or debug
- cmd: |
- sed -i 's/pg_num: 128/pg_num: 4/g' /srv/salt/reclass/classes/cluster/{{ SHARED.CLUSTER_NAME }}/ceph/setup.yml;
- sed -i 's/pgp_num: 128/pgp_num: 4/g' /srv/salt/reclass/classes/cluster/{{ SHARED.CLUSTER_NAME }}/ceph/setup.yml;
- node_name: {{ HOSTNAME_CFG01 }}
- retry: {count: 1, delay: 5}
- skip_fail: true
diff --git a/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-bm-queens-contrail-maas.yaml b/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-bm-queens-contrail-maas.yaml
index 5c65691..0ff7c82 100644
--- a/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-bm-queens-contrail-maas.yaml
+++ b/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-bm-queens-contrail-maas.yaml
@@ -17,6 +17,8 @@
{{ SHARED.MACRO_INSTALL_PACKAGES_ON_NODES(HOSTNAME_CFG01) }}
+{{ SHARED.MACRO_INSTALL_FORMULAS_FROM_UPDATE() }}
+
{{ SHARED.MACRO_INSTALL_FORMULAS('\*') }}
{{ SHARED.MACRO_GENERATE_COOKIECUTTER_MODEL(CONTROL_VLAN=CONTROL_VLAN, TENANT_VLAN=TENANT_VLAN) }}
diff --git a/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-k8s-calico-sl.yaml b/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-k8s-calico-sl.yaml
index 08c2df1..5da87d1 100644
--- a/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-k8s-calico-sl.yaml
+++ b/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-k8s-calico-sl.yaml
@@ -12,6 +12,8 @@
{{ SHARED.MACRO_INSTALL_PACKAGES_ON_NODES(HOSTNAME_CFG01) }}
+{{ SHARED.MACRO_INSTALL_FORMULAS_FROM_UPDATE() }}
+
{{ SHARED.MACRO_INSTALL_FORMULAS('\*') }}
{{ SHARED.MACRO_UPLOAD_AND_IMPORT_GPG_ENCRYPTION_KEY() }}
diff --git a/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-k8s-genie.yaml b/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-k8s-genie.yaml
index 51e7b5f..4233f9c 100644
--- a/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-k8s-genie.yaml
+++ b/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-k8s-genie.yaml
@@ -12,6 +12,8 @@
{{ SHARED.MACRO_INSTALL_PACKAGES_ON_NODES(HOSTNAME_CFG01) }}
+{{ SHARED.MACRO_INSTALL_FORMULAS_FROM_UPDATE() }}
+
{{ SHARED.MACRO_INSTALL_FORMULAS('\*') }}
{{ SHARED.MACRO_GENERATE_COOKIECUTTER_MODEL() }}
diff --git a/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-k8s-system.yaml b/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-k8s-system.yaml
index e8a2c85..4b0c57d 100644
--- a/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-k8s-system.yaml
+++ b/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-k8s-system.yaml
@@ -12,6 +12,8 @@
{{ SHARED.MACRO_INSTALL_PACKAGES_ON_NODES(HOSTNAME_CFG01) }}
+{{ SHARED.MACRO_INSTALL_FORMULAS_FROM_UPDATE() }}
+
{{ SHARED.MACRO_INSTALL_FORMULAS('\*') }}
{{ SHARED.MACRO_GENERATE_COOKIECUTTER_MODEL() }}
diff --git a/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-ovs-maas.yaml b/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-ovs-maas.yaml
index f2729fa..4d554c4 100644
--- a/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-ovs-maas.yaml
+++ b/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-ovs-maas.yaml
@@ -19,6 +19,8 @@
{{ SHARED.MACRO_INSTALL_PACKAGES_ON_NODES(HOSTNAME_CFG01) }}
+{{ SHARED.MACRO_INSTALL_FORMULAS_FROM_UPDATE() }}
+
{{ SHARED.MACRO_INSTALL_FORMULAS('\*') }}
{{ SHARED.MACRO_GENERATE_COOKIECUTTER_MODEL(CONTROL_VLAN=CONTROL_VLAN, TENANT_VLAN=TENANT_VLAN) }}
diff --git a/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-pike-dvr-ceph.yaml b/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-pike-dvr-ceph.yaml
index 25c1f9a..4b2b12f 100644
--- a/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-pike-dvr-ceph.yaml
+++ b/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-pike-dvr-ceph.yaml
@@ -12,6 +12,8 @@
{{ SHARED.MACRO_INSTALL_PACKAGES_ON_NODES(HOSTNAME_CFG01) }}
+{{ SHARED.MACRO_INSTALL_FORMULAS_FROM_UPDATE() }}
+
{{ SHARED.MACRO_INSTALL_FORMULAS('\*') }}
{{ SHARED.MACRO_GENERATE_COOKIECUTTER_MODEL() }}
diff --git a/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-queens-dvr-sl.yaml b/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-queens-dvr-sl.yaml
index 2eb94c1..3264b5c 100644
--- a/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-queens-dvr-sl.yaml
+++ b/tcp_tests/templates/cookied-model-generator/salt_cookied-cicd-queens-dvr-sl.yaml
@@ -12,6 +12,8 @@
{{ SHARED.MACRO_INSTALL_PACKAGES_ON_NODES(HOSTNAME_CFG01) }}
+{{ SHARED.MACRO_INSTALL_FORMULAS_FROM_UPDATE() }}
+
{{ SHARED.MACRO_INSTALL_FORMULAS('\*') }}
{{ SHARED.MACRO_GENERATE_COOKIECUTTER_MODEL() }}
diff --git a/tcp_tests/templates/cookied-model-generator/salt_heat-cicd-k8s-calico-sl.yaml b/tcp_tests/templates/cookied-model-generator/salt_heat-cicd-k8s-calico-sl.yaml
new file mode 100644
index 0000000..2b07452
--- /dev/null
+++ b/tcp_tests/templates/cookied-model-generator/salt_heat-cicd-k8s-calico-sl.yaml
@@ -0,0 +1,25 @@
+{% from 'cookied-model-generator/underlay.yaml' import HOSTNAME_CFG01 with context %}
+{% from 'cookied-model-generator/underlay.yaml' import DOMAIN_NAME with context %}
+
+{% set LAB_CONFIG_NAME = 'heat-cicd-k8s-calico-sl' %}
+# Name of the context file (without extension, that is fixed .yaml) used to render the Environment model
+{% set ENVIRONMENT_MODEL_INVENTORY_NAME = os_env('ENVIRONMENT_MODEL_INVENTORY_NAME', LAB_CONFIG_NAME) %}
+# Path to the context files used to render Cluster and Environment models
+{%- set CLUSTER_CONTEXT_NAME = 'cookiecutter-context-k8s-sl.yaml' %}
+{%- set ENVIRONMENT_CONTEXT_NAMES = ['environment-context-k8s-sl.yaml', 'cookiecutter-context-k8s-sl.yaml'] %}
+
+{% import 'shared-salt.yaml' as SHARED with context %}
+
+{{ SHARED.MACRO_INSTALL_PACKAGES_ON_NODES(HOSTNAME_CFG01) }}
+
+{{ SHARED.MACRO_INSTALL_FORMULAS_FROM_UPDATE() }}
+
+{{ SHARED.MACRO_INSTALL_FORMULAS('\*') }}
+
+{{ SHARED.MACRO_UPLOAD_AND_IMPORT_GPG_ENCRYPTION_KEY() }}
+
+{{ SHARED.MACRO_GENERATE_COOKIECUTTER_MODEL() }}
+
+{{ SHARED.MACRO_GENERATE_AND_ENABLE_ENVIRONMENT_MODEL() }}
+
+{{ SHARED.MACRO_GENERATE_INVENTORY(RERUN_SALTMASTER_STATE=true) }}
diff --git a/tcp_tests/templates/cookied-model-generator/salt_heat-cicd-k8s-contrail41-sl.yaml b/tcp_tests/templates/cookied-model-generator/salt_heat-cicd-k8s-contrail41-sl.yaml
index 84b9aac..b04ba9d 100644
--- a/tcp_tests/templates/cookied-model-generator/salt_heat-cicd-k8s-contrail41-sl.yaml
+++ b/tcp_tests/templates/cookied-model-generator/salt_heat-cicd-k8s-contrail41-sl.yaml
@@ -17,6 +17,8 @@
{{ SHARED.MACRO_INSTALL_PACKAGES_ON_NODES(HOSTNAME_CFG01) }}
+{{ SHARED.MACRO_INSTALL_FORMULAS_FROM_UPDATE() }}
+
{{ SHARED.MACRO_INSTALL_FORMULAS('\*') }}
{{ SHARED.MACRO_GENERATE_COOKIECUTTER_MODEL(CONTROL_VLAN=CONTROL_VLAN, TENANT_VLAN=TENANT_VLAN) }}
diff --git a/tcp_tests/templates/cookied-model-generator/salt_heat-cicd-k8s-genie.yaml b/tcp_tests/templates/cookied-model-generator/salt_heat-cicd-k8s-genie.yaml
index 62f2467..b6d2472 100644
--- a/tcp_tests/templates/cookied-model-generator/salt_heat-cicd-k8s-genie.yaml
+++ b/tcp_tests/templates/cookied-model-generator/salt_heat-cicd-k8s-genie.yaml
@@ -12,6 +12,8 @@
{{ SHARED.MACRO_INSTALL_PACKAGES_ON_NODES(HOSTNAME_CFG01) }}
+{{ SHARED.MACRO_INSTALL_FORMULAS_FROM_UPDATE() }}
+
{{ SHARED.MACRO_INSTALL_FORMULAS('\*') }}
{{ SHARED.MACRO_GENERATE_COOKIECUTTER_MODEL() }}
diff --git a/tcp_tests/templates/cookied-model-generator/salt_heat-cicd-pike-contrail41-sl.yaml b/tcp_tests/templates/cookied-model-generator/salt_heat-cicd-pike-contrail41-sl.yaml
index 3205e42..1d0bae8 100644
--- a/tcp_tests/templates/cookied-model-generator/salt_heat-cicd-pike-contrail41-sl.yaml
+++ b/tcp_tests/templates/cookied-model-generator/salt_heat-cicd-pike-contrail41-sl.yaml
@@ -17,6 +17,8 @@
{{ SHARED.MACRO_INSTALL_PACKAGES_ON_NODES(HOSTNAME_CFG01) }}
+{{ SHARED.MACRO_INSTALL_FORMULAS_FROM_UPDATE() }}
+
{{ SHARED.MACRO_INSTALL_FORMULAS('\*') }}
{{ SHARED.MACRO_GENERATE_COOKIECUTTER_MODEL(CONTROL_VLAN=CONTROL_VLAN, TENANT_VLAN=TENANT_VLAN) }}
diff --git a/tcp_tests/templates/cookied-model-generator/salt_heat-cicd-pike-dvr-sl.yaml b/tcp_tests/templates/cookied-model-generator/salt_heat-cicd-pike-dvr-sl.yaml
index ba8a4f4..51cb8fd 100644
--- a/tcp_tests/templates/cookied-model-generator/salt_heat-cicd-pike-dvr-sl.yaml
+++ b/tcp_tests/templates/cookied-model-generator/salt_heat-cicd-pike-dvr-sl.yaml
@@ -12,6 +12,8 @@
{{ SHARED.MACRO_INSTALL_PACKAGES_ON_NODES(HOSTNAME_CFG01) }}
+{{ SHARED.MACRO_INSTALL_FORMULAS_FROM_UPDATE() }}
+
{{ SHARED.MACRO_INSTALL_FORMULAS('\*') }}
{{ SHARED.MACRO_GENERATE_COOKIECUTTER_MODEL() }}
diff --git a/tcp_tests/templates/cookied-model-generator/salt_heat-cicd-queens-dvr-sl.yaml b/tcp_tests/templates/cookied-model-generator/salt_heat-cicd-queens-dvr-sl.yaml
index 1011916..eefc22d 100644
--- a/tcp_tests/templates/cookied-model-generator/salt_heat-cicd-queens-dvr-sl.yaml
+++ b/tcp_tests/templates/cookied-model-generator/salt_heat-cicd-queens-dvr-sl.yaml
@@ -12,6 +12,8 @@
{{ SHARED.MACRO_INSTALL_PACKAGES_ON_NODES(HOSTNAME_CFG01) }}
+{{ SHARED.MACRO_INSTALL_FORMULAS_FROM_UPDATE() }}
+
{{ SHARED.MACRO_INSTALL_FORMULAS('\*') }}
{{ SHARED.MACRO_GENERATE_COOKIECUTTER_MODEL() }}
diff --git a/tcp_tests/templates/heat-cicd-k8s-calico-sl/cookiecutter-context-k8s-sl.yaml b/tcp_tests/templates/heat-cicd-k8s-calico-sl/cookiecutter-context-k8s-sl.yaml
new file mode 100644
index 0000000..40b5867
--- /dev/null
+++ b/tcp_tests/templates/heat-cicd-k8s-calico-sl/cookiecutter-context-k8s-sl.yaml
@@ -0,0 +1,215 @@
+default_context:
+ auditd_enabled: 'False'
+ backup_private_key: |
+ -----BEGIN RSA PRIVATE KEY-----
+ MIIEowIBAAKCAQEAxL6/rVgCetsETpZaUmXmkj8cZ1WN0eubH1FvMDOi/La9ZJyT
+ k0C6AYpJnIyEm93pMj5cLm08qRqMW+2pdOhYjcH69yg5MrX5SkRk8jCmIHIYoIbh
+ Qnwbnj3dd3I39ZdfU2FO7u2vlbglVou6ZoQxlJDItuLNtzq6EG+w9eF19e7+OsC6
+ 6iUItp618zfw1l3J/8nKvCGe2RYDf7mJW6XwCl/DwryJmwwzvPgYJ3QMuDD8/HFj
+ lrJ3xjFTXj4b4Ws1XIoy78fFbtiLr4OwqCYkho03u2E5rOOP1qZxZB63sivHMLMO
+ MM5bOAQKbulFNoyALADGYfc7sf0bZ4u9XXDXxQIDAQABAoIBAQCfmc2MJRT97KW1
+ yqpCpX9BrAiymuiNHf+cjEcSZxEUyHkjIRFmJt+9WB0W7ba1anM92vCUiPDojSzH
+ dig9Oi578JxR20NrK8uqv4jUHzrknynzLveVI3CUEcOSnglfJQijbxDFKfOCFPvV
+ FUyE1UATMNBh6+LNfMprgu+exuMWOPnDyUiYQ+WZ0JfuZY8fuaZte4woJJOb9LUu
+ 5rsMG/smIzjpgZ0Z9ZVDMurfq565qhpaXRAqKeIuyht8pacTo31iMQdHB78AvY/3
+ g0z21Gk8k3z0Kr/YFKr2r4FmXY5m/gAUvZly2ZrVQM5XsbTVCzq/JpI5fssNvSbU
+ AKmXzf4RAoGBAOO3d4/cstxERzW6hyOTjZIN1ppR52CsnZTsVPbfd0pCtmzmVZce
+ CtHKdcXSbTwZvvkK09QSWAp3MoSpd0gIOiLU8Wx/R/RIZsu9BlhTS3r3EQLnk72d
+ H/1TTA+j4T/LIYLSojQ1RxvIrHetAD44j732aTwKAHj/SybEAVqNkOB/AoGBAN0u
+ gLcrgqIHGrk4VjWSvlCGymfF40equcx+ud7XhfZDGETUOSahW4dPZ52cjPAkrCBQ
+ MMfcDwSVGsOAjd+mNt11BHUKobnhXwFaWWuyqyn9NmWFbjMbICVh7E3Of5aVN38o
+ lrmo/7LuKMVG7XRwphCv5NkaJmQG4njDyUQWlaW7AoGADCd8wDb9bPhP/LQqBmIX
+ ylXmwHHisaxE9O/wUQT4bwREjGd25gv6c9wkkRx8LBsLsGs9hzI7dMOL9Ly+2x9l
+ SvqmsC3S/1zl77X1Ir2/Z57MT6Vgo1xBmtnZU3Rhz2/eKAdqFPNLClaZrgGT475N
+ HcyLLWMzR0IJFtabY+Puea0CgYA8Zb5wRkldxWLewSuJZZDinGwY+kieAVjLJq/K
+ 0j+ah6fQ48LXcah0wpIgz+cMjHcUO9GWQdk3/x9X03rqX5EL2DBnZYfUIl63F9zj
+ M97ZkHOSNWVqPzX//0Vv2butewG0j3jZKfTo/2/SrxOYgEpYtC9huWpSVi7xm0US
+ erhSkQKBgFIf9JEsfgE57ANhvITZ3ZI0uZXNxZkXQaVg8jvScDi79IIhy9iPzhKC
+ aIIQoDNIlWv1ftCRZ5AlBvVXgvQ/QNrwy48JiQTzWZlb9Ezg8w+olQmSbG6fq7Y+
+ 7r3i+QUZ7RBdOb24QcQ618q54ozNTCB7OywY78ptFzeoBeptiNr1
+ -----END RSA PRIVATE KEY-----
+ backup_public_key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEvr+tWAJ62wROllpSZeaSPxxnVY3R65sfUW8wM6L8tr1knJOTQLoBikmcjISb3ekyPlwubTypGoxb7al06FiNwfr3KDkytflKRGTyMKYgchighuFCfBuePd13cjf1l19TYU7u7a+VuCVWi7pmhDGUkMi24s23OroQb7D14XX17v46wLrqJQi2nrXzN/DWXcn/ycq8IZ7ZFgN/uYlbpfAKX8PCvImbDDO8+BgndAy4MPz8cWOWsnfGMVNePhvhazVcijLvx8Vu2Iuvg7CoJiSGjTe7YTms44/WpnFkHreyK8cwsw4wzls4BApu6UU2jIAsAMZh9zux/Rtni71dcNfF
+ bmk_enabled: 'False'
+ calico_cni_image: docker-prod-local.artifactory.mirantis.com/mirantis/projectcalico/calico/cni:latest
+ calico_enable_nat: 'True'
+ calico_image: docker-prod-local.artifactory.mirantis.com/mirantis/projectcalico/calico/node:latest
+ calico_netmask: '16'
+ calico_network: 192.168.0.0
+ calicoctl_image: docker-prod-local.artifactory.mirantis.com/mirantis/projectcalico/calico/ctl:latest
+ ceph_enabled: 'False'
+ cicd_control_node01_address: ==IPV4_NET_CONTROL_PREFIX==.91
+ cicd_control_node01_hostname: cid01
+ cicd_control_node02_address: ==IPV4_NET_CONTROL_PREFIX==.92
+ cicd_control_node02_hostname: cid02
+ cicd_control_node03_address: ==IPV4_NET_CONTROL_PREFIX==.93
+ cicd_control_node03_hostname: cid03
+ cicd_control_vip_address: ==IPV4_NET_CONTROL_PREFIX==.90
+ cicd_control_vip_hostname: cid
+ cicd_enabled: 'True'
+ cicd_private_key: |-
+ -----BEGIN RSA PRIVATE KEY-----
+ MIIEpAIBAAKCAQEAv64AnFbEuuOQHLlmMkmaZ+Hh/8hJ+VfFpJ/MzW1wWzYyhis7
+ 3A8rxNFWJ/I1/LJSsFI8qU0DpxjFjS9LMTTFXhDPPpuzgRLwfVusEmuQdXjOiT34
+ AIs07Q4w1nlvJ2+/l788ie1AEfnewd9erUHOs8Wt/PT3OOM/0ikY7EibvYF4L1Lb
+ xGRKYnUkY7G3eal9XcQpsTzAFRXoK3WafbCFBFsfzEWOhx1T+tn1SwaxPYJDt1OB
+ B1s77enFtBwbmbd0m1F1ufSXmdWea2xF3+5caS6tps/hwhCoOSJUQb7+dK4ri8og
+ q2YIhfEptrMP1R+nVqEY76P31aa/YSw4zOvcQwIDAQABAoIBAQCLKOzQlD4n4ObT
+ s9Z6U+2B1gCaDvOFzy9yoYGy8u1Li0GLHwBKd8kzDzgZsEN5vo1B7bKUx5ELU3S5
+ V8ijZMiVzmZn8eqUnwdyO4flp6otXxOzmAXhfy9hm5fhXjBQ1VSn+vMcv95wLpSG
+ 9IBsEQbchXwX1lFWP8Yp8iRiByTqoz6A7qSxRzIOtq1/coYS9Vcy7VZDMiUjqvuc
+ pYvwYHvrgeYqxLXyDRzbZX1BbkSoNI/5VwxLb9IMG901IXph0r4V3uVgnnq+Xzkk
+ MoOfmB3cyOrvtWblZAjkyA+jzTs/QNALRUeI7wUeh4FvlwEGHE6v5G4G28zOS0vL
+ 7IEhCqThAoGBAOeyDO07b060l+NOO+Jkv+NV31VD0w3S4TMyLPVSxXsrRPoHM9RM
+ udi6lewmALE4wk2Lc1Il6n0UrUGVbXxf55NJp2BQoSic+ZK2nTki0cZ/CkUDVNwY
+ R0WtWE0i3J+eF3e8j9VYm1mIlv0aDoYeH4qCp5is/JanvLy4MUl6tM7/AoGBANPJ
+ XheDO5lmqq1ejDTo3GAzYuAs44dQLDs0znEuuaUKZ4MKgQ4ax0L9n0MxvsuUGVcN
+ Nm7fZS4uMY3zLCOLcAXyD1jXY210gmOgFdXeYrH+2kSmqfflV8KHOLCatxLzRtbe
+ KBflcrEnrpUVNGKlpZaYr+4AyapXeMuXIxwveva9AoGAYtoDS9/UwHaqau+A+zlS
+ 6TJFA8LZNAepz0b0CYLUAJXYavhRs508mWwZ9NPN7c6yj5UUkZLdtZnxxY50VOEy
+ ExQUljIwX/yBOogxEiR57b9b6U/fj7vIBMFNcDOUf4Far9pCX5rbRNrS2I+abLxD
+ ZrwRt0Duz3QnQTkwxhHVPI8CgYAaIjQJJLl7AW84O32DneRrvouJ7CAbd2ot2CNN
+ Vh20XudNBUPNkMJb4t3/Nak8h8bktg2sesaKf0rAIGym6jLlmOwJ43IydHkOgBeR
+ r4JwQml+pS4+F7/Pkk4NhNnobbqlEv7RjA+uCp6BaP9w2M3pGmhDLzezXF3ciYbc
+ mINM5QKBgQCyM9ZWwSiA0D3oitnhs7C4eC0IHBfnSoa7f40osKm4VvmqKBFgRu8L
+ qYK9qX++pUm4sk0q7poGUscc1udMlejAkfc/HLIlUi6MM+S7ZQ2NHtnZ7COZa5O4
+ 9fG8FTiigLvMHka9ihYXtPbyGvusCaqyHp3D9VyOT+WsyM5eJe40lA==
+ -----END RSA PRIVATE KEY-----
+ cicd_public_key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/rgCcVsS645AcuWYySZpn4eH/yEn5V8Wkn8zNbXBbNjKGKzvcDyvE0VYn8jX8slKwUjypTQOnGMWNL0sxNMVeEM8+m7OBEvB9W6wSa5B1eM6JPfgAizTtDjDWeW8nb7+XvzyJ7UAR+d7B316tQc6zxa389Pc44z/SKRjsSJu9gXgvUtvEZEpidSRjsbd5qX1dxCmxPMAVFegrdZp9sIUEWx/MRY6HHVP62fVLBrE9gkO3U4EHWzvt6cW0HBuZt3SbUXW59JeZ1Z5rbEXf7lxpLq2mz+HCEKg5IlRBvv50riuLyiCrZgiF8Sm2sw/VH6dWoRjvo/fVpr9hLDjM69xD
+ cluster_domain: heat-cicd-k8s-calico-sl.local
+ cluster_name: heat-cicd-k8s-calico-sl
+ context_seed: T3sbEdCaBfxrg9ysyA6LIaift250Ktb389rpcISKbdqPi5j0WHKiKAhBftYueBKl
+ control_network_netmask: 255.255.255.0
+ control_network_subnet: ==IPV4_NET_CONTROL_PREFIX==.0/24
+ control_vlan: '10'
+ cookiecutter_template_branch: ''
+ jenkins_pipelines_branch: 'release/2019.2.0'
+ cookiecutter_template_credentials: gerrit
+ cookiecutter_template_url: https://gerrit.mcp.mirantis.com/mk/cookiecutter-templates.git
+ deploy_network_gateway: ==IPV4_NET_ADMIN_PREFIX==.1
+ deploy_network_netmask: 255.255.255.0
+ deploy_network_subnet: ==IPV4_NET_ADMIN_PREFIX==.0/24
+ deployment_type: physical
+ dns_server01: 172.18.176.6
+ dns_server02: 172.18.208.44
+ email_address: ddmitriev@mirantis.com
+ etcd_ssl: 'True'
+ infra_bond_mode: active-backup
+ infra_deploy_nic: eth0
+ infra_kvm01_control_address: ==IPV4_NET_CONTROL_PREFIX==.241
+ infra_kvm01_deploy_address: ==IPV4_NET_ADMIN_PREFIX==.91
+ infra_kvm01_hostname: kvm01
+ infra_kvm02_control_address: ==IPV4_NET_CONTROL_PREFIX==.242
+ infra_kvm02_deploy_address: ==IPV4_NET_ADMIN_PREFIX==.92
+ infra_kvm02_hostname: kvm02
+ infra_kvm03_control_address: ==IPV4_NET_CONTROL_PREFIX==.243
+ infra_kvm03_deploy_address: ==IPV4_NET_ADMIN_PREFIX==.93
+ infra_kvm03_hostname: kvm03
+ infra_kvm_vip_address: ==IPV4_NET_CONTROL_PREFIX==.240
+ infra_primary_first_nic: eth1
+ infra_primary_second_nic: eth2
+ internal_proxy_enabled: 'False'
+ kqueen_custom_mail_enabled: 'False'
+ kqueen_enabled: 'False'
+ kubernetes_control_address: ==IPV4_NET_CONTROL_PREFIX==.10
+ kubernetes_control_node01_address: ==IPV4_NET_CONTROL_PREFIX==.11
+ kubernetes_control_node01_deploy_address: ==IPV4_NET_ADMIN_PREFIX==.11
+ kubernetes_control_node01_hostname: ctl01
+ kubernetes_control_node02_address: ==IPV4_NET_CONTROL_PREFIX==.12
+ kubernetes_control_node02_deploy_address: ==IPV4_NET_ADMIN_PREFIX==.12
+ kubernetes_control_node02_hostname: ctl02
+ kubernetes_control_node03_address: ==IPV4_NET_CONTROL_PREFIX==.13
+ kubernetes_control_node03_deploy_address: ==IPV4_NET_ADMIN_PREFIX==.13
+ kubernetes_control_node03_hostname: ctl03
+ kubernetes_compute_count: 4
+ kubernetes_compute_rack01_hostname: cmp
+ kubernetes_compute_deploy_address_ranges: ==IPV4_NET_ADMIN_PREFIX==.101-==IPV4_NET_ADMIN_PREFIX==.104
+ kubernetes_compute_single_address_ranges: ==IPV4_NET_CONTROL_PREFIX==.101-==IPV4_NET_CONTROL_PREFIX==.104
+ kubernetes_compute_tenant_address_ranges: ==IPV4_NET_TENANT_PREFIX==.101-==IPV4_NET_TENANT_PREFIX==.104
+ kubernetes_enabled: 'True'
+ kubernetes_externaldns_enabled: 'False'
+ kubernetes_keepalived_vip_interface: br_ctl
+ kubernetes_network_calico_enabled: 'True'
+ kubernetes_virtlet_enabled: 'True'
+ kubernetes_proxy_hostname: prx
+ kubernetes_proxy_node01_hostname: prx01
+ kubernetes_proxy_node02_hostname: prx02
+ kubernetes_proxy_address: ==IPV4_NET_CONTROL_PREFIX==.220
+ kubernetes_proxy_node01_address: ==IPV4_NET_CONTROL_PREFIX==.221
+ kubernetes_proxy_node02_address: ==IPV4_NET_CONTROL_PREFIX==.222
+ kubernetes_metallb_enabled: 'True'
+ metallb_addresses: 172.17.16.150-172.17.16.190
+ kubernetes_ingressnginx_enabled: 'True'
+ kubernetes_ingressnginx_controller_replicas: 2
+ local_repositories: 'False'
+ maas_deploy_address: ==IPV4_NET_ADMIN_PREFIX==.15
+ maas_deploy_range_end: ==IPV4_NET_ADMIN_PREFIX==.199
+ maas_deploy_range_start: ==IPV4_NET_ADMIN_PREFIX==.180
+ maas_deploy_vlan: '0'
+ maas_fabric_name: deploy-fabric0
+ maas_hostname: cfg01
+ mcp_common_scripts_branch: ''
+ mcp_version: proposed
+ offline_deployment: 'False'
+ opencontrail_enabled: 'False'
+ openldap_domain: ${_param:cluster_name}.local
+ openldap_enabled: 'True'
+ openldap_organisation: ${_param:cluster_name}
+ openssh_groups: cicd
+ openstack_enabled: 'False'
+ oss_enabled: 'False'
+ oss_node03_address: ${_param:stacklight_monitor_node03_address}
+ oss_webhook_app_id: '24'
+ oss_pushkin_email_sender_password: password
+ oss_pushkin_smtp_port: '587'
+ oss_webhook_login_id: '13'
+ platform: kubernetes_enabled
+ public_host: ${_param:infra_config_address}
+ publication_method: email
+ reclass_repository: https://github.com/Mirantis/mk-lab-salt-model.git
+ salt_api_password: LTlVnap35hqpRVbB5QjA27EuKh9Ttl3k
+ salt_api_password_hash: $6$RKagUPuQ$Javpjz7b.hqKOOr1rai7uGQd/FnqlOH59tXn12/0G.LkVyunYmgBkSC5zTjoqZvIS1fOOOqsmCb9Q4HcGUbXS.
+ salt_master_address: ==IPV4_NET_CONTROL_PREFIX==.15
+ salt_master_hostname: cfg01
+ salt_master_management_address: ==IPV4_NET_ADMIN_PREFIX==.15
+ shared_reclass_branch: 'proposed'
+ shared_reclass_url: https://gerrit.mcp.mirantis.com/salt-models/reclass-system.git
+ stacklight_enabled: 'True'
+ stacklight_log_address: ==IPV4_NET_CONTROL_PREFIX==.60
+ stacklight_log_hostname: log
+ stacklight_log_node01_address: ==IPV4_NET_CONTROL_PREFIX==.61
+ stacklight_log_node01_hostname: log01
+ stacklight_log_node02_address: ==IPV4_NET_CONTROL_PREFIX==.62
+ stacklight_log_node02_hostname: log02
+ stacklight_log_node03_address: ==IPV4_NET_CONTROL_PREFIX==.63
+ stacklight_log_node03_hostname: log03
+ stacklight_long_term_storage_type: prometheus
+ stacklight_monitor_address: ==IPV4_NET_CONTROL_PREFIX==.70
+ stacklight_monitor_hostname: mon
+ stacklight_monitor_node01_address: ==IPV4_NET_CONTROL_PREFIX==.71
+ stacklight_monitor_node01_hostname: mon01
+ stacklight_monitor_node02_address: ==IPV4_NET_CONTROL_PREFIX==.72
+ stacklight_monitor_node02_hostname: mon02
+ stacklight_monitor_node03_address: ==IPV4_NET_CONTROL_PREFIX==.73
+ stacklight_monitor_node03_hostname: mon03
+ stacklight_telemetry_address: ==IPV4_NET_CONTROL_PREFIX==.85
+ stacklight_telemetry_hostname: mtr
+ stacklight_telemetry_node01_address: ==IPV4_NET_CONTROL_PREFIX==.86
+ stacklight_telemetry_node01_hostname: mtr01
+ stacklight_telemetry_node02_address: ==IPV4_NET_CONTROL_PREFIX==.87
+ stacklight_telemetry_node02_hostname: mtr02
+ stacklight_telemetry_node03_address: ==IPV4_NET_CONTROL_PREFIX==.88
+ stacklight_telemetry_node03_hostname: mtr03
+ stacklight_version: '2'
+ static_ips_on_deploy_network_enabled: 'False'
+ tenant_network_gateway: ==IPV4_NET_TENANT_PREFIX==.1
+ tenant_network_netmask: 255.255.255.0
+ tenant_network_subnet: ==IPV4_NET_TENANT_PREFIX==.0/24
+ tenant_vlan: '20'
+ upstream_proxy_enabled: 'False'
+ use_default_network_scheme: 'False'
+ vnf_onboarding_enabled: 'False'
+ secrets_encryption_enabled: 'True'
+ secrets_encryption_key_id: 'F5CB2ADC36159B03'
+ # Used on CI only.
+ secrets_encryption_private_key: ''
+ kubernetes_helm_enabled: 'True'
diff --git a/tcp_tests/templates/heat-cicd-k8s-calico-sl/encryption-key.asc b/tcp_tests/templates/heat-cicd-k8s-calico-sl/encryption-key.asc
new file mode 100644
index 0000000..381eb77
--- /dev/null
+++ b/tcp_tests/templates/heat-cicd-k8s-calico-sl/encryption-key.asc
@@ -0,0 +1,56 @@
+-----BEGIN PGP PRIVATE KEY BLOCK-----
+
+lQcYBFyBRcUBEACmP/muUIwbEg6Z7dA3c9I2NadcjDHXKg/ViXwaOB4KSd9/FC0o
+KSBPccWb+1sm+zdUy2f/LC5r8RvU7yZd4Mbzz8R1DQncXg4nG7bppW7oAcHpc0jk
+pV/SvdMYxuXsrbKbpoGEquwVkbb4oTv2MLSBfGfFzBeQfiwGEWm1xPLSeXc4biLC
+FatCU7w4LS1U4BEOqRCp6lW/hQFLoX+j6rNT8TwC5AeFpKgUWuQZGOO4fZKpbvo2
+sCvF5VA1HSVXlZtzum6pL1yzLL/SoyLrYOy1KrZQmSBHG9htCZQVmvYK7U5WtWE4
+Ws5IAj+HwvgKyzXE2Srsirj1NqauQRsk+1riQk3rpDrX2BeXNUSoHR5M/RDY0gCc
+8P6heanQRnyFtjUSoovkQsydY77+QVxe0MCs+lZlg31fL+wJVG7FIbIKKwR5sj8i
+/JqhWE+t2ZzIrQ/7o7fRk7hv/u69Vb/t/Nt7fkbn53zoubqi3kNgXf6hwhTUtfW/
+lE9cc4JTzis4i/RnILUDnAwos1c0Z+tGCUo4pbiP71VfU8L259g+clPFXOIkqA9t
+L9JSZQfhH/lRj3Abs57OvZjN7/D1h8PWB+8nTB8bkoUt45SubgQb0Y9maWUcwjxw
+AcJSIk6mq8vVdBu7zOuslDjMnoUZbtJwcSwQQOnb9UUppjs3CjbcH80ttQARAQAB
+AA/9ExdprtDlJf6u2pJqxNNyInOK4p/e4VydMOJ28/PZz0iod8lzXhdK9JSWItF8
+qD9VHVG2gaErO44Wqh9EgqdbcYg8gUycA0hxy5/tI2uyDsaU5CAvEMLE/Eh8Q24j
+3UgdKK64VOnj7p4rKuYpIp55PB1zNU24rwkuOQwq3Yreb7kvLbXIHA2s+xLunGzj
+tcl9a/eSSFD2w+WcPnkvVT2QlmUvhQ12p6w++QdvBkrLa9ZPz1FFPp6AiFtLGK5e
+KW6uyV1xc9BSjujmpmPBkNIynKNpCFxtTn0uH2doMAr5kkuqIV726SfUZISNkyOa
+pHKtnAtsWHmdv9skzQIBAgAzcXTBGbdDxRj6QR+ohqbsCzfu3z9QHSbXUmxezti9
+bQqpsU1SIg8z2oDARFR6KlRzhnfpPvan+Gp9TvYsvxrXe61HpxRMdLj6Gt2Ibruf
+YHCtr1S9J5CzTTOurlIKpACUYIqgVXfgIkQzqiYX8e56PiDTUB++OqEg66i0orXB
+nbHAD2vu16CNvcaNqsak3DWkHMwmEfsuxqyUXNte0eYu9SCHtnNoYT/D7A72gK4b
+Gqg80J8ZCpo1ilIX3xUq8WsH+CoXs0X7hy6Cbi22AqnHFRYmrgoIWmRzJonp393b
+yqmTV+QsKQRpmwdX4hiH78zJLnLEUQMn8CuHAGwaJCzk4okIAMKNrIQZhkdbCCe4
+IrLuMKn4aQj3c22SMXNmu78/0cP9Rtsm3ChjzzelLO7NjvPm0nIvEcThFSIZIXCv
+iWGZCXFCKn3WtA5xWuMFNXsEQcc3AG/qRODdDSeFpo+VH/9IwppAc3zI2jxe1PRD
+G2DnheLaLIKgHunsCYxpftJDod/vRqRHeU7ulMVJfEKVxdzrCbKGiIOXSyS6KowQ
+JOxF/80ocq/25Zc/oH25Y2r/0y+xzDpOHBgU0ndrCZf2z8oOuECJTxcq83UDyJzT
+HrG/hTrU83YsQMZ0AwBrYxpzUfdH7b6y60VE19FrwmMDK6Fz8I/x4Ai0sNkI3QLR
+NntY9fsIANrB3QM8CtsdxXsFvdTEwNLsG8LMdn3loCH6Cq3ejkEKa69Uua+sB6ND
+wYOXWzyksLZJyfxIXux/hMlK/kO3ohGcEFiMUaDZndJy8IKUlDrhwcUZqm7dXMDU
+CIf0T3rOEzOXbNu3UTds3j/ruSvA5KmjzOa4Qnb41CyL5Fh7x0R8Rux3NzAn6Ecx
+Y+nAWRtI/Yz7zdL8zuHaJfbVuxAPJ+ImcXAS7cX6T9dM3tWRlam1+0Ezhdb4F8i5
+lcY7sMu95scDwhV7qOmln6wtGSkBPZgE0+TqRuELZrPvlcIRRIM42UwPWhYO2PG8
+kKd2i5teweDnhzN8+E87VV2BQhP9DA8H/0+ZiXsvaG60JGqNmWzVbB6U1qgwrFOR
+VcuzIWpdZyQR8Ok63GXuA0odoqReolba9R6fVlXchj6INBz2WY2F0twwCRPx7tRg
+Pyq4PaTA8ZYYjAVWVCd9k97gY2i80p4MPzQCnE8g4n6OWGY47pcTwSkm4HBoGoam
+igIRn3Soz7CXGF+PvSGi1T0jpwM5IWfM3IwEUPdPTIJuA2iD/9zSKDvhsP+trJ1Y
+TMe9CW3Llf5mFbHLRZ7LfMOLIngKOIxBAxHiT8wUrIRaH78wHdz8ALDsC+LNP6rK
+hKb8h/VHXaqmf0BlNjGpO7XZXfxXWJ0oTUG5Z+jKz2Ir14HYLZI1GlOA8bQlZXhh
+bXBsZS5jb20gPHNhbHQtbWFzdGVyQGV4YW1wbGUuY29tPokCTgQTAQgAOBYhBLaR
+Vrvqyq56MiGjUvXLKtw2FZsDBQJcgUXFAhsvBQsJCAcCBhUKCQgLAgQWAgMBAh4B
+AheAAAoJEPXLKtw2FZsDpi4P/1kmvlpkbOhrL73zAPyMzYa4Yo2Pi/BoMbyEKNKO
+K3wLCdP6xLGecVIt8pANosksDSGlWAnWj36/jfgt/aZisx1u6MTYaOEHkXahxOX4
+ghDW1cTbdtz7Uy5Ah9O3WNI+ejmOpCtuc3P/XOkdttKZLuCNCs6ocgCsejpNHcFK
+vMhOhnRKV8kcBrG2QLyfSyafBtM/zV+NR4Wrng71Za8fiXHlDanmrAIyuSnD538r
+hTwSFe0C9HntwuF6W+UShN7c+jPJaKQjKbZy9fuFp33NcTSPCB5dH9yrhQvOeFQo
+dFzEabMDFVGPfUVWR+TH39dWYOsq5zFmgQAbOB/vHdmEtrYNrxX0AiCZZHQHTUb9
+oBK68V8eVeFdoRLcMORBZ2RCqkQTOQoAF7o772knltjtsymnI0XNvVC/XCnZv89Q
+/eoivrd/rMMpTFOGcys6EAnSUWx0ZG/JCkezQqnx9U219BvqKNOZ60aOeOYHKpsX
+Ha8Nr72YRmtm0UMsDjEUyLOj+o06XnN7uafMv2bZpjWh2hfOrkAbxe41z6t+78ho
+P+C5vSvp01OmAt71iq+62MXVcLVKEWDpiuZSj8m83RlY5AGIaPaGX9LKPcHdGxKw
+QSczgB/jI3G08vWaq82he6UJuYexbYe1iJXfvcx8kThwZ1nXQJm+7UsISUsh8/NZ
+x0n/
+=uxDD
+-----END PGP PRIVATE KEY BLOCK-----
diff --git a/tcp_tests/templates/heat-cicd-k8s-calico-sl/environment-context-k8s-sl.yaml b/tcp_tests/templates/heat-cicd-k8s-calico-sl/environment-context-k8s-sl.yaml
new file mode 100644
index 0000000..2d4689c
--- /dev/null
+++ b/tcp_tests/templates/heat-cicd-k8s-calico-sl/environment-context-k8s-sl.yaml
@@ -0,0 +1,244 @@
+nodes:
+ cfg01:
+ reclass_storage_name: infra_config_node01
+ roles:
+ - infra_config
+ - linux_system_codename_xenial
+ interfaces:
+ ens3:
+ role: single_dhcp
+ ens4:
+ role: single_static_ctl
+
+ kvm01:
+ reclass_storage_name: infra_kvm_node01
+ roles:
+ - infra_kvm
+ - linux_system_codename_xenial
+ interfaces:
+ ens3:
+ role: single_dhcp
+ ens4:
+ role: single_ctl
+
+ kvm02:
+ reclass_storage_name: infra_kvm_node02
+ roles:
+ - infra_kvm
+ - linux_system_codename_xenial
+ interfaces:
+ ens3:
+ role: single_dhcp
+ ens4:
+ role: single_ctl
+
+ kvm03:
+ reclass_storage_name: infra_kvm_node03
+ roles:
+ - infra_kvm
+ - linux_system_codename_xenial
+ interfaces:
+ ens3:
+ role: single_dhcp
+ ens4:
+ role: single_ctl
+
+ cid01:
+ reclass_storage_name: cicd_control_node01
+ roles:
+ - cicd_control_leader
+ - linux_system_codename_xenial
+ interfaces:
+ ens3:
+ role: single_dhcp
+ ens4:
+ role: single_ctl
+
+ cid02:
+ reclass_storage_name: cicd_control_node02
+ roles:
+ - cicd_control_manager
+ - linux_system_codename_xenial
+ interfaces:
+ ens3:
+ role: single_dhcp
+ ens4:
+ role: single_ctl
+
+ cid03:
+ reclass_storage_name: cicd_control_node03
+ roles:
+ - cicd_control_manager
+ - linux_system_codename_xenial
+ interfaces:
+ ens3:
+ role: single_dhcp
+ ens4:
+ role: single_ctl
+
+ ctl01:
+ reclass_storage_name: kubernetes_control_node01
+ roles:
+ - kubernetes_control
+ - linux_system_codename_xenial
+ interfaces:
+ ens3:
+ role: single_dhcp
+ ens4:
+ role: single_ctl_calico
+
+ ctl02:
+ reclass_storage_name: kubernetes_control_node02
+ roles:
+ - kubernetes_control
+ - linux_system_codename_xenial
+ interfaces:
+ ens3:
+ role: single_dhcp
+ ens4:
+ role: single_ctl_calico
+
+ ctl03:
+ reclass_storage_name: kubernetes_control_node03
+ roles:
+ - kubernetes_control
+ - linux_system_codename_xenial
+ interfaces:
+ ens3:
+ role: single_dhcp
+ ens4:
+ role: single_ctl_calico
+
+ prx01:
+ reclass_storage_name: kubernetes_proxy_node01
+ roles:
+ - kubernetes_proxy
+ - linux_system_codename_xenial
+ interfaces:
+ ens3:
+ role: single_dhcp
+ ens4:
+ role: single_ctl
+
+ prx02:
+ reclass_storage_name: kubernetes_proxy_node02
+ roles:
+ - kubernetes_proxy
+ - linux_system_codename_xenial
+ interfaces:
+ ens3:
+ role: single_dhcp
+ ens4:
+ role: single_ctl
+
+ # Generator-based computes. For compatibility only
+ cmp<<count>>:
+ reclass_storage_name: kubernetes_compute_rack01
+ roles:
+ - kubernetes_compute
+ - linux_system_codename_xenial
+ - salt_master_host
+ interfaces:
+ ens3:
+ role: single_dhcp
+ ens4:
+ role: single_ctl_calico
+
+ mon01:
+ reclass_storage_name: stacklight_server_node01
+ roles:
+ - stacklightv2_server_leader
+ - linux_system_codename_xenial
+ interfaces:
+ ens3:
+ role: single_dhcp
+ ens4:
+ role: single_ctl
+
+ mon02:
+ reclass_storage_name: stacklight_server_node02
+ roles:
+ - stacklightv2_server
+ - linux_system_codename_xenial
+ interfaces:
+ ens3:
+ role: single_dhcp
+ ens4:
+ role: single_ctl
+
+ mon03:
+ reclass_storage_name: stacklight_server_node03
+ roles:
+ - stacklightv2_server
+ - linux_system_codename_xenial
+ interfaces:
+ ens3:
+ role: single_dhcp
+ ens4:
+ role: single_ctl
+
+ mtr01:
+ reclass_storage_name: stacklight_telemetry_node01
+ roles:
+ - stacklight_telemetry_leader
+ - linux_system_codename_xenial
+ interfaces:
+ ens3:
+ role: single_dhcp
+ ens4:
+ role: single_ctl
+
+ mtr02:
+ reclass_storage_name: stacklight_telemetry_node02
+ roles:
+ - stacklight_telemetry
+ - linux_system_codename_xenial
+ interfaces:
+ ens3:
+ role: single_dhcp
+ ens4:
+ role: single_ctl
+
+ mtr03:
+ reclass_storage_name: stacklight_telemetry_node03
+ roles:
+ - stacklight_telemetry
+ - linux_system_codename_xenial
+ interfaces:
+ ens3:
+ role: single_dhcp
+ ens4:
+ role: single_ctl
+
+ log01:
+ reclass_storage_name: stacklight_log_node01
+ roles:
+ - stacklight_log_leader_v2
+ - linux_system_codename_xenial
+ interfaces:
+ ens3:
+ role: single_dhcp
+ ens4:
+ role: single_ctl
+
+ log02:
+ reclass_storage_name: stacklight_log_node02
+ roles:
+ - stacklight_log
+ - linux_system_codename_xenial
+ interfaces:
+ ens3:
+ role: single_dhcp
+ ens4:
+ role: single_ctl
+
+ log03:
+ reclass_storage_name: stacklight_log_node03
+ roles:
+ - stacklight_log
+ - linux_system_codename_xenial
+ interfaces:
+ ens3:
+ role: single_dhcp
+ ens4:
+ role: single_ctl
diff --git a/tcp_tests/templates/heat-cicd-k8s-calico-sl/salt.yaml b/tcp_tests/templates/heat-cicd-k8s-calico-sl/salt.yaml
new file mode 100644
index 0000000..745b97c
--- /dev/null
+++ b/tcp_tests/templates/heat-cicd-k8s-calico-sl/salt.yaml
@@ -0,0 +1,23 @@
+{% set HOSTNAME_CFG01='cfg01.heat-cicd-k8s-calico-sl.local' %}
+{% set LAB_CONFIG_NAME='heat-cicd-k8s-calico-sl' %}
+{% set DOMAIN_NAME='heat-cicd-k8s-calico-sl.local' %}
+{% set SALT_MODELS_REPOSITORY = os_env('SALT_MODELS_REPOSITORY','https://gerrit.mcp.mirantis.com/salt-models/mcp-virtual-lab') %}
+# Other salt model repository parameters see in shared-salt.yaml
+
+{% import 'shared-salt.yaml' as SHARED with context %}
+
+{{ SHARED.MACRO_INSTALL_SALT_MINIONS() }}
+
+{{SHARED.MACRO_CHECK_SALT_VERSION_SERVICES_ON_CFG()}}
+
+{{SHARED.MACRO_CHECK_SALT_VERSION_ON_NODES()}}
+
+- description: "Share custom key from cfg to give each node acces with key from cfg01"
+ cmd: |
+ set -e;
+ set -x;
+ key=$(ssh-keygen -y -f /root/.ssh/id_rsa);
+ salt '*' cmd.run "echo $key >> /root/.ssh/authorized_keys";
+ node_name: {{ HOSTNAME_CFG01 }}
+ retry: {count: 1, delay: 5}
+ skip_fail: true
diff --git a/tcp_tests/templates/heat-cicd-k8s-calico-sl/underlay--user-data-foundation.yaml b/tcp_tests/templates/heat-cicd-k8s-calico-sl/underlay--user-data-foundation.yaml
new file mode 100644
index 0000000..1677dcd
--- /dev/null
+++ b/tcp_tests/templates/heat-cicd-k8s-calico-sl/underlay--user-data-foundation.yaml
@@ -0,0 +1,64 @@
+#cloud-config, see http://cloudinit.readthedocs.io/en/latest/topics/examples.html
+
+ssh_pwauth: True
+users:
+ - name: root
+ sudo: ALL=(ALL) NOPASSWD:ALL
+ shell: /bin/bash
+ - name: jenkins
+ sudo: ALL=(ALL) NOPASSWD:ALL
+ shell: /bin/bash
+ ssh_authorized_keys:
+ - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFSxeuXh2sO4VYL8N2dlNFVyNcr2RvoH4MeDD/cV2HThfU4/BcH6IOOWXSDibIU279bWVKCL7QUp3mf0Vf7HPuyFuC12QM+l7MwT0jCYh5um3hmAvM6Ga0nkhJygHexe9/rLEYzZJkIjP9/IS/YXSv8rhHg484wQ6qkEuq15nyMqil8tbDQCq0XQ+AWEpNpIa4pUoKmFMsOP8lq10KZXIXsJyZxizadr6Bh4Lm9LWrk8YCw7qP3rmgWxK/s8qXQh1ISZe6ONfcmk6p03qbh4H3CwKyWzxmnIHQvE6PgN/O+PuAZj3PbR2mkkJjYX4jNPlxvj8uTStaVPhAwfR9Spdx jenkins@cz8133
+
+disable_root: false
+chpasswd:
+ list: |
+ root:r00tme
+ jenkins:qalab
+ expire: False
+
+packages:
+ - openjdk-8-jre-headless
+ - libyaml-dev
+ - libffi-dev
+ - libvirt-dev
+ - python-dev
+ - python-pip
+ - python-virtualenv
+ #- python-psycopg2
+ - pkg-config
+ - vlan
+ - bridge-utils
+ - ebtables
+
+bootcmd:
+ # Enable root access
+ - sed -i -e '/^PermitRootLogin/s/^.*$/PermitRootLogin yes/' /etc/ssh/sshd_config
+ - service sshd restart
+output:
+ all: '| tee -a /var/log/cloud-init-output.log /dev/tty0'
+
+runcmd:
+ # Create swap
+ - fallocate -l 16G /swapfile
+ - chmod 600 /swapfile
+ - mkswap /swapfile
+ - swapon /swapfile
+ - echo "/swapfile none swap defaults 0 0" >> /etc/fstab
+
+write_files:
+ - path: /etc/default/grub.d/97-enable-grub-menu.cfg
+ content: |
+ GRUB_RECORDFAIL_TIMEOUT=30
+ GRUB_TIMEOUT=3
+ GRUB_TIMEOUT_STYLE=menu
+
+ - path: /etc/network/interfaces
+ content: |
+ auto ens3
+ iface ens3 inet dhcp
+
+ - path: /etc/bash_completion.d/fuel_devops30_activate
+ content: |
+ source /home/jenkins/fuel-devops30/bin/activate
diff --git a/tcp_tests/templates/heat-cicd-k8s-calico-sl/underlay-userdata.yaml b/tcp_tests/templates/heat-cicd-k8s-calico-sl/underlay-userdata.yaml
new file mode 100644
index 0000000..8c1f248
--- /dev/null
+++ b/tcp_tests/templates/heat-cicd-k8s-calico-sl/underlay-userdata.yaml
@@ -0,0 +1,71 @@
+#cloud-config, see http://cloudinit.readthedocs.io/en/latest/topics/examples.html
+
+ssh_pwauth: True
+users:
+ - name: root
+ sudo: ALL=(ALL) NOPASSWD:ALL
+ shell: /bin/bash
+
+disable_root: false
+chpasswd:
+ list: |
+ root:r00tme
+ expire: False
+
+bootcmd:
+ # Enable root access
+ - sed -i -e '/^PermitRootLogin/s/^.*$/PermitRootLogin yes/' /etc/ssh/sshd_config
+ - service sshd restart
+output:
+ all: '| tee -a /var/log/cloud-init-output.log /dev/tty0'
+
+runcmd:
+ - if lvs vg0; then pvresize /dev/vda3; fi
+ - if lvs vg0; then /usr/bin/growlvm.py --image-layout-file /usr/share/growlvm/image-layout.yml; fi
+
+ - export TERM=linux
+ - export LANG=C
+ # Configure dhclient
+ - sudo resolvconf -u
+ #- sudo echo "nameserver {gateway}" >> /etc/resolvconf/resolv.conf.d/base
+ # Enable grub menu using updated config below
+ - update-grub
+
+ # Prepare network connection
+ - sudo ifup ens3
+ #- sudo route add default gw {gateway} {interface_name}
+
+write_files:
+ - path: /etc/default/grub.d/97-enable-grub-menu.cfg
+ content: |
+ GRUB_RECORDFAIL_TIMEOUT=30
+ GRUB_TIMEOUT=3
+ GRUB_TIMEOUT_STYLE=menu
+
+ - path: /etc/network/interfaces
+ content: |
+ auto ens3
+ iface ens3 inet dhcp
+
+ - path: /usr/share/growlvm/image-layout.yml
+ content: |
+ root:
+ size: '65%VG'
+ home:
+ size: '1%VG'
+ var_log:
+ size: '10%VG'
+ var_log_audit:
+ size: '5%VG'
+ var_tmp:
+ size: '10%VG'
+ tmp:
+ size: '5%VG'
+ owner: root:root
+
+growpart:
+ mode: auto
+ devices:
+ - '/'
+ - '/dev/vda3'
+ ignore_growroot_disabled: false
diff --git a/tcp_tests/templates/heat-cicd-k8s-calico-sl/underlay.hot b/tcp_tests/templates/heat-cicd-k8s-calico-sl/underlay.hot
new file mode 100644
index 0000000..c8ec4fe
--- /dev/null
+++ b/tcp_tests/templates/heat-cicd-k8s-calico-sl/underlay.hot
@@ -0,0 +1,597 @@
+---
+
+heat_template_version: queens
+
+description: MCP environment for heat-cicd-k8s-calico-sl
+
+parameters:
+ instance_domain:
+ type: string
+ default: heat-cicd-k8s-calico-sl.local
+ mcp_version:
+ type: string
+ env_name:
+ type: string
+ control_subnet_cidr:
+ type: string
+ management_subnet_cidr:
+ type: string
+ management_subnet_pool_start:
+ type: string
+ management_subnet_pool_end:
+ type: string
+ management_subnet_cfg01_ip:
+ type: string
+ management_subnet_gateway_ip:
+ type: string
+
+ key_pair:
+ type: string
+
+ ctl_flavor:
+ type: string
+ cfg_flavor:
+ type: string
+ cid_flavor:
+ type: string
+ kvm_fake_flavor:
+ type: string
+ mon_flavor:
+ type: string
+ log_flavor:
+ type: string
+ mtr_flavor:
+ type: string
+ cmp_flavor:
+ type: string
+ foundation_flavor:
+ type: string
+
+ net_public:
+ type: string
+
+ foundation_image:
+ type: string
+
+resources:
+ networks:
+ type: MCP::Networks
+ properties:
+ stack_name: { get_param: "OS::stack_name" }
+ env_name: { get_param: env_name }
+
+ #flavors:
+ # type: MCP::Flavors
+
+ cfg01_node:
+ type: MCP::MasterNode
+ depends_on: [networks]
+ properties:
+ env_name: { get_param: env_name }
+ mcp_version: { get_param: mcp_version }
+ cfg01_flavor: { get_param: cfg_flavor }
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '15' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '15' ]
+ instance_name: cfg01
+ instance_domain: {get_param: instance_domain}
+ network: { get_attr: [networks, network] }
+
+ control_cluster:
+ type: MCP::MultipleInstance
+ depends_on: [cfg01_node]
+ properties:
+ env_name: { get_param: env_name }
+ mcp_version: { get_param: mcp_version }
+ instance_domain: {get_param: instance_domain}
+ instance01_name: ctl01
+ instance02_name: ctl02
+ instance03_name: ctl03
+ instance01_role: k8s_controller
+ instance_flavor: {get_param: ctl_flavor}
+ network: { get_attr: [networks, network] }
+ underlay_userdata: { get_file: ./underlay-userdata.yaml }
+ instance01_control_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, control_net_prefix] }, '11' ]
+ instance02_control_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, control_net_prefix] }, '12' ]
+ instance03_control_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, control_net_prefix] }, '13' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '11' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '12' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '13' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '11' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '12' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '13' ]
+
+ instance_config_host: { get_attr: [cfg01_node, instance_address] }
+
+ fake_kvm_cluster:
+ type: MCP::MultipleInstance
+ depends_on: [control_cluster]
+ properties:
+ env_name: { get_param: env_name }
+ mcp_version: { get_param: mcp_version }
+ instance_domain: {get_param: instance_domain}
+ instance01_name: kvm01
+ instance02_name: kvm02
+ instance03_name: kvm03
+ instance_flavor: {get_param: kvm_fake_flavor}
+ network: { get_attr: [networks, network] }
+ underlay_userdata: { get_file: ./underlay-userdata.yaml }
+ instance01_control_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, control_net_prefix] }, '241' ]
+ instance02_control_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, control_net_prefix] }, '242' ]
+ instance03_control_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, control_net_prefix] }, '243' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '241' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '242' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '243' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '241' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '242' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '243' ]
+
+ instance_config_host: { get_attr: [cfg01_node, instance_address] }
+
+ cicd_cluster:
+ type: MCP::MultipleInstance
+ depends_on: [fake_kvm_cluster]
+ properties:
+ env_name: { get_param: env_name }
+ mcp_version: { get_param: mcp_version }
+ instance_domain: {get_param: instance_domain}
+ instance01_name: cid01
+ instance02_name: cid02
+ instance03_name: cid03
+ instance_flavor: {get_param: cid_flavor}
+ network: { get_attr: [networks, network] }
+ underlay_userdata: { get_file: ./underlay-userdata.yaml }
+ instance01_control_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, control_net_prefix] }, '91' ]
+ instance02_control_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, control_net_prefix] }, '92' ]
+ instance03_control_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, control_net_prefix] }, '93' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '91' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '92' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '93' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '91' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '92' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '93' ]
+
+ instance_config_host: { get_attr: [cfg01_node, instance_address] }
+
+ stacklight_monitor_cluster:
+ type: MCP::MultipleInstance
+ depends_on: [cicd_cluster]
+ properties:
+ env_name: { get_param: env_name }
+ mcp_version: { get_param: mcp_version }
+ instance_domain: {get_param: instance_domain}
+ instance01_name: mon01
+ instance02_name: mon02
+ instance03_name: mon03
+ instance_flavor: {get_param: mon_flavor}
+ network: { get_attr: [networks, network] }
+ underlay_userdata: { get_file: ./underlay-userdata.yaml }
+ instance01_control_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, control_net_prefix] }, '71' ]
+ instance02_control_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, control_net_prefix] }, '72' ]
+ instance03_control_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, control_net_prefix] }, '73' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '71' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '72' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '73' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '71' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '72' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '73' ]
+
+ instance_config_host: { get_attr: [cfg01_node, instance_address] }
+
+ stacklight_log_cluster:
+ type: MCP::MultipleInstance
+ depends_on: [stacklight_monitor_cluster]
+ properties:
+ env_name: { get_param: env_name }
+ mcp_version: { get_param: mcp_version }
+ instance_domain: {get_param: instance_domain}
+ instance01_name: log01
+ instance02_name: log02
+ instance03_name: log03
+ instance_flavor: {get_param: log_flavor}
+ network: { get_attr: [networks, network] }
+ underlay_userdata: { get_file: ./underlay-userdata.yaml }
+ instance01_control_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, control_net_prefix] }, '61' ]
+ instance02_control_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, control_net_prefix] }, '62' ]
+ instance03_control_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, control_net_prefix] }, '63' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '61' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '62' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '63' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '61' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '62' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '63' ]
+
+ instance_config_host: { get_attr: [cfg01_node, instance_address] }
+
+ stacklight_mtr_cluster:
+ type: MCP::MultipleInstance
+ depends_on: [stacklight_log_cluster]
+ properties:
+ env_name: { get_param: env_name }
+ mcp_version: { get_param: mcp_version }
+ instance_domain: {get_param: instance_domain}
+ instance01_name: mtr01
+ instance02_name: mtr02
+ instance03_name: mtr03
+ instance_flavor: {get_param: mtr_flavor}
+ network: { get_attr: [networks, network] }
+ underlay_userdata: { get_file: ./underlay-userdata.yaml }
+ instance01_control_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, control_net_prefix] }, '86' ]
+ instance02_control_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, control_net_prefix] }, '87' ]
+ instance03_control_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, control_net_prefix] }, '88' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '86' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '87' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '88' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '86' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '87' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '88' ]
+
+ instance_config_host: { get_attr: [cfg01_node, instance_address] }
+
+ prx01_virtual:
+ type: MCP::SingleInstance
+ depends_on: [stacklight_mtr_cluster]
+ properties:
+ env_name: { get_param: env_name }
+ mcp_version: { get_param: mcp_version }
+ instance_domain: {get_param: instance_domain}
+ instance_name: prx01
+ instance_flavor: {get_param: cid_flavor}
+ network: { get_attr: [networks, network] }
+ underlay_userdata: { get_file: ./underlay-userdata.yaml }
+ control_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, control_net_prefix] }, '221' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '221' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '221' ]
+
+ instance_config_host: { get_attr: [cfg01_node, instance_address] }
+
+ prx02_virtual:
+ type: MCP::SingleInstance
+ depends_on: [prx01_virtual]
+ properties:
+ env_name: { get_param: env_name }
+ mcp_version: { get_param: mcp_version }
+ instance_domain: {get_param: instance_domain}
+ instance_name: prx02
+ instance_flavor: {get_param: cid_flavor}
+ network: { get_attr: [networks, network] }
+ underlay_userdata: { get_file: ./underlay-userdata.yaml }
+ control_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, control_net_prefix] }, '222' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '222' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '222' ]
+
+ instance_config_host: { get_attr: [cfg01_node, instance_address] }
+
+ cmp001_virtual:
+ type: MCP::Compute
+ depends_on: [prx02_virtual]
+ properties:
+ env_name: { get_param: env_name }
+ mcp_version: { get_param: mcp_version }
+ instance_domain: {get_param: instance_domain}
+ instance_name: cmp001
+ instance_flavor: {get_param: cmp_flavor}
+ network: { get_attr: [networks, network] }
+ underlay_userdata: { get_file: ./underlay-userdata.yaml }
+ control_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, control_net_prefix] }, '101' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '101' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '101' ]
+
+ instance_config_host: { get_attr: [cfg01_node, instance_address] }
+
+ cmp002_virtual:
+ type: MCP::Compute
+ depends_on: [cmp001_virtual]
+ properties:
+ env_name: { get_param: env_name }
+ mcp_version: { get_param: mcp_version }
+ instance_domain: {get_param: instance_domain}
+ instance_name: cmp002
+ instance_flavor: {get_param: cmp_flavor}
+ network: { get_attr: [networks, network] }
+ underlay_userdata: { get_file: ./underlay-userdata.yaml }
+ control_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, control_net_prefix] }, '102' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '102' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '102' ]
+
+ instance_config_host: { get_attr: [cfg01_node, instance_address] }
+
+ cmp003_virtual:
+ type: MCP::Compute
+ depends_on: [cmp002_virtual]
+ properties:
+ env_name: { get_param: env_name }
+ mcp_version: { get_param: mcp_version }
+ instance_domain: {get_param: instance_domain}
+ instance_name: cmp003
+ instance_flavor: {get_param: cmp_flavor}
+ network: { get_attr: [networks, network] }
+ underlay_userdata: { get_file: ./underlay-userdata.yaml }
+ control_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, control_net_prefix] }, '103' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '103' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '103' ]
+
+ instance_config_host: { get_attr: [cfg01_node, instance_address] }
+
+ cmp004_virtual:
+ type: MCP::Compute
+ depends_on: [cmp003_virtual]
+ properties:
+ env_name: { get_param: env_name }
+ mcp_version: { get_param: mcp_version }
+ instance_domain: {get_param: instance_domain}
+ instance_name: cmp004
+ instance_flavor: {get_param: cmp_flavor}
+ network: { get_attr: [networks, network] }
+ underlay_userdata: { get_file: ./underlay-userdata.yaml }
+ control_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, control_net_prefix] }, '104' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '104' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '104' ]
+
+ instance_config_host: { get_attr: [cfg01_node, instance_address] }
+
+ foundation_node:
+ type: MCP::FoundationNode
+ depends_on: [networks]
+ properties:
+ env_name: { get_param: env_name }
+ mcp_version: { get_param: mcp_version }
+ instance_domain: {get_param: instance_domain}
+ instance_name: foundation
+ instance_image: { get_param: foundation_image }
+ instance_flavor: {get_param: foundation_flavor}
+ network: { get_attr: [networks, network] }
+ underlay_userdata: { get_file: ./underlay--user-data-foundation.yaml }
+ control_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, control_net_prefix] }, '5' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '5' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '5' ]
+
+ instance_config_host: { get_attr: [cfg01_node, instance_address] }
+
+outputs:
+
+ control_subnet_cidr:
+ description: Control network CIDR
+ value: { get_param: control_subnet_cidr }
+
+ management_subnet_cidr:
+ description: Admin network CIDR
+ value: { get_param: management_subnet_cidr }
+
+ foundation_floating:
+ description: foundation node IP address (floating) from external network
+ value:
+ get_attr:
+ - foundation_node
+ - instance_floating_address
+...
diff --git a/tcp_tests/templates/heat-cicd-k8s-contrail41-sl/underlay.hot b/tcp_tests/templates/heat-cicd-k8s-contrail41-sl/underlay.hot
index ab909a5..0003d16 100644
--- a/tcp_tests/templates/heat-cicd-k8s-contrail41-sl/underlay.hot
+++ b/tcp_tests/templates/heat-cicd-k8s-contrail41-sl/underlay.hot
@@ -56,6 +56,9 @@
net_public:
type: string
+ foundation_image:
+ type: string
+
resources:
networks:
type: MCP::Networks
@@ -73,6 +76,14 @@
env_name: { get_param: env_name }
mcp_version: { get_param: mcp_version }
cfg01_flavor: { get_param: cfg_flavor }
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '15' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '15' ]
instance_name: cfg01
instance_domain: {get_param: instance_domain}
network: { get_attr: [networks, network] }
@@ -103,6 +114,30 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '13' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '11' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '12' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '13' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '11' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '12' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '13' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
@@ -131,6 +166,30 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '243' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '241' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '242' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '243' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '241' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '242' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '243' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
@@ -159,6 +218,30 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '93' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '91' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '92' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '93' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '91' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '92' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '93' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
@@ -187,6 +270,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '73' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '71' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '72' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '73' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '71' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '72' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '73' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
stacklight_log_cluster:
@@ -214,6 +322,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '63' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '61' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '62' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '63' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '61' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '62' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '63' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
stacklight_mtr_cluster:
@@ -241,6 +374,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '88' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '86' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '87' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '88' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '86' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '87' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '88' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
ceph_cmn_cluster:
@@ -268,6 +426,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '68' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '66' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '67' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '68' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '66' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '67' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '68' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
ceph_rgw_cluster:
@@ -295,6 +478,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '78' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '76' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '77' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '78' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '76' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '77' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '78' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
ceph_osd_cluster:
@@ -322,6 +530,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '203' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '201' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '202' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '203' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '201' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '202' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '203' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
prx01_virtual:
@@ -339,6 +572,15 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '221' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '221' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '221' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
prx02_virtual:
@@ -356,6 +598,14 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '222' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '222' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '222' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
cmp001_virtual:
@@ -373,6 +623,15 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '101' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '101' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '101' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
cmp002_virtual:
@@ -390,6 +649,15 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '102' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '102' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '102' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
foundation_node:
@@ -400,6 +668,7 @@
mcp_version: { get_param: mcp_version }
instance_domain: {get_param: instance_domain}
instance_name: foundation
+ instance_image: { get_param: foundation_image }
instance_flavor: {get_param: foundation_flavor}
network: { get_attr: [networks, network] }
underlay_userdata: { get_file: ./underlay--user-data-foundation.yaml }
@@ -407,6 +676,15 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '5' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '5' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '5' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
outputs:
diff --git a/tcp_tests/templates/heat-cicd-k8s-genie/underlay.hot b/tcp_tests/templates/heat-cicd-k8s-genie/underlay.hot
index a3a1152..158f366 100644
--- a/tcp_tests/templates/heat-cicd-k8s-genie/underlay.hot
+++ b/tcp_tests/templates/heat-cicd-k8s-genie/underlay.hot
@@ -50,6 +50,9 @@
net_public:
type: string
+ foundation_image:
+ type: string
+
resources:
networks:
type: MCP::Networks
@@ -67,6 +70,14 @@
env_name: { get_param: env_name }
mcp_version: { get_param: mcp_version }
cfg01_flavor: { get_param: cfg_flavor }
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '15' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '15' ]
instance_name: cfg01
instance_domain: {get_param: instance_domain}
network: { get_attr: [networks, network] }
@@ -97,6 +108,30 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '13' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '11' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '12' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '13' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '11' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '12' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '13' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
@@ -125,6 +160,30 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '243' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '241' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '242' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '243' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '241' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '242' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '243' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
@@ -153,6 +212,30 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '93' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '91' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '92' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '93' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '91' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '92' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '93' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
@@ -171,6 +254,15 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '221' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '221' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '221' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
prx02_virtual:
@@ -188,6 +280,15 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '222' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '222' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '222' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
cmp001_virtual:
@@ -205,6 +306,15 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '101' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '101' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '101' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
cmp002_virtual:
@@ -222,6 +332,15 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '102' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '102' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '102' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
cmp003_virtual:
@@ -239,6 +358,15 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '103' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '103' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '103' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
cmp004_virtual:
@@ -256,6 +384,15 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '104' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '104' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '104' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
foundation_node:
@@ -266,6 +403,7 @@
mcp_version: { get_param: mcp_version }
instance_domain: {get_param: instance_domain}
instance_name: foundation
+ instance_image: { get_param: foundation_image }
instance_flavor: {get_param: foundation_flavor}
network: { get_attr: [networks, network] }
underlay_userdata: { get_file: ./underlay--user-data-foundation.yaml }
@@ -273,6 +411,15 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '5' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '5' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '5' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
outputs:
diff --git a/tcp_tests/templates/heat-cicd-pike-contrail41-sl/underlay.hot b/tcp_tests/templates/heat-cicd-pike-contrail41-sl/underlay.hot
index d9a8971..4b82924 100644
--- a/tcp_tests/templates/heat-cicd-pike-contrail41-sl/underlay.hot
+++ b/tcp_tests/templates/heat-cicd-pike-contrail41-sl/underlay.hot
@@ -65,6 +65,9 @@
net_public:
type: string
+ foundation_image:
+ type: string
+
resources:
networks:
type: MCP::Networks
@@ -82,6 +85,14 @@
env_name: { get_param: env_name }
mcp_version: { get_param: mcp_version }
cfg01_flavor: { get_param: cfg_flavor }
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '15' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '15' ]
instance_name: cfg01
instance_domain: {get_param: instance_domain}
network: { get_attr: [networks, network] }
@@ -111,6 +122,30 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '13' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '11' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '12' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '13' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '11' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '12' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '13' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
@@ -139,6 +174,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '53' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '51' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '52' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '53' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '51' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '52' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '53' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
fake_kvm_cluster:
@@ -166,6 +226,30 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '243' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '241' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '242' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '243' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '241' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '242' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '243' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
@@ -194,6 +278,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '43' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '41' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '42' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '43' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '41' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '42' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '43' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
cicd_cluster:
@@ -221,6 +330,30 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '93' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '91' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '92' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '93' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '91' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '92' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '93' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
@@ -249,6 +382,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '23' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '21' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '22' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '23' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '21' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '22' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '23' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
contrail_nal_cluster:
@@ -276,6 +434,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '33' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '31' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '32' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '33' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '31' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '32' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '33' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
stacklight_monitor_cluster:
@@ -303,6 +486,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '73' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '71' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '72' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '73' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '71' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '72' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '73' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
stacklight_log_cluster:
@@ -330,6 +538,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '63' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '61' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '62' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '63' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '61' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '62' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '63' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
stacklight_mtr_cluster:
@@ -357,6 +590,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '88' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '86' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '87' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '88' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '86' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '87' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '88' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
ceph_cmn_cluster:
@@ -384,6 +642,30 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '68' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '66' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '67' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '68' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '66' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '67' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '68' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
ceph_rgw_cluster:
@@ -411,6 +693,30 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '78' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '76' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '77' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '78' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '76' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '77' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '78' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
ceph_osd_cluster:
@@ -438,6 +744,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '203' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '201' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '202' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '203' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '201' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '202' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '203' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
prx01_virtual:
@@ -455,6 +786,14 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '81' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '81' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '81' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
@@ -473,6 +812,15 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '101' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '101' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '101' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
cmp002_virtual:
@@ -490,6 +838,15 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '102' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '102' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '102' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
foundation_node:
@@ -500,6 +857,7 @@
mcp_version: { get_param: mcp_version }
instance_domain: {get_param: instance_domain}
instance_name: foundation
+ instance_image: { get_param: foundation_image }
instance_flavor: {get_param: foundation_flavor}
network: { get_attr: [networks, network] }
underlay_userdata: { get_file: ./underlay--user-data-foundation.yaml }
@@ -507,6 +865,14 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '5' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '5' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '5' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
vsrx_node:
diff --git a/tcp_tests/templates/heat-cicd-pike-dvr-sl/underlay.hot b/tcp_tests/templates/heat-cicd-pike-dvr-sl/underlay.hot
index 3de043a..be3f68b 100644
--- a/tcp_tests/templates/heat-cicd-pike-dvr-sl/underlay.hot
+++ b/tcp_tests/templates/heat-cicd-pike-dvr-sl/underlay.hot
@@ -68,6 +68,9 @@
net_public:
type: string
+ foundation_image:
+ type: string
+
resources:
networks:
type: MCP::Networks
@@ -85,6 +88,14 @@
env_name: { get_param: env_name }
mcp_version: { get_param: mcp_version }
cfg01_flavor: { get_param: cfg_flavor }
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '15' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '15' ]
instance_name: cfg01
instance_domain: {get_param: instance_domain}
network: { get_attr: [networks, network] }
@@ -114,6 +125,30 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '13' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '11' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '12' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '13' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '11' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '12' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '13' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
@@ -142,6 +177,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '53' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '51' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '52' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '53' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '51' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '52' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '53' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
fake_kvm_cluster:
@@ -169,6 +229,30 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '243' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '241' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '242' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '243' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '241' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '242' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '243' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
@@ -197,6 +281,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '43' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '41' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '42' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '43' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '41' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '42' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '43' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
cicd_cluster:
@@ -224,6 +333,30 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '93' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '91' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '92' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '93' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '91' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '92' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '93' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
@@ -252,6 +385,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '73' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '71' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '72' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '73' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '71' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '72' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '73' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
stacklight_log_cluster:
@@ -279,6 +437,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '63' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '61' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '62' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '63' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '61' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '62' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '63' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
stacklight_mtr_cluster:
@@ -306,6 +489,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '99' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '97' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '98' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '99' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '97' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '98' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '99' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
prx01_virtual:
@@ -323,6 +531,14 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '81' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '81' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '81' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
@@ -341,6 +557,14 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '82' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '82' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '82' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
@@ -359,6 +583,15 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '101' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '101' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '101' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
cmp002_virtual:
@@ -376,6 +609,15 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '102' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '102' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '102' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
foundation_node:
@@ -386,6 +628,7 @@
mcp_version: { get_param: mcp_version }
instance_domain: {get_param: instance_domain}
instance_name: foundation
+ instance_image: { get_param: foundation_image }
instance_flavor: {get_param: foundation_flavor}
network: { get_attr: [networks, network] }
underlay_userdata: { get_file: ./underlay--user-data-foundation.yaml }
@@ -393,6 +636,15 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '5' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '5' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '5' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
ceph_cmn_cluster:
@@ -420,6 +672,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '68' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '66' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '67' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '68' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '66' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '67' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '68' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
ceph_rgw_cluster:
@@ -447,6 +724,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '78' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '76' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '77' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '78' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '76' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '77' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '78' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
ceph_osd_cluster:
@@ -474,6 +776,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '203' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '201' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '202' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '203' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '201' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '202' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '203' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
openstack_gtw_cluster:
@@ -501,6 +828,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '226' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '224' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '225' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '226' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '224' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '225' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '226' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
openstack_barbican_cluster:
@@ -528,6 +880,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '47' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '45' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '46' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '47' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '45' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '46' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '47' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
dns01_virtual:
@@ -545,6 +922,14 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '113' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '113' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '113' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
@@ -563,6 +948,14 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '114' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '114' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '114' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
diff --git a/tcp_tests/templates/heat-cicd-queens-dvr-sl/underlay.hot b/tcp_tests/templates/heat-cicd-queens-dvr-sl/underlay.hot
index b2a97e1..7f1602d 100644
--- a/tcp_tests/templates/heat-cicd-queens-dvr-sl/underlay.hot
+++ b/tcp_tests/templates/heat-cicd-queens-dvr-sl/underlay.hot
@@ -68,6 +68,9 @@
net_public:
type: string
+ foundation_image:
+ type: string
+
resources:
networks:
type: MCP::Networks
@@ -85,6 +88,14 @@
env_name: { get_param: env_name }
mcp_version: { get_param: mcp_version }
cfg01_flavor: { get_param: cfg_flavor }
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '15' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '15' ]
instance_name: cfg01
instance_domain: {get_param: instance_domain}
network: { get_attr: [networks, network] }
@@ -114,6 +125,30 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '13' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '11' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '12' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '13' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '11' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '12' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '13' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
@@ -142,6 +177,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '53' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '51' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '52' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '53' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '51' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '52' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '53' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
fake_kvm_cluster:
@@ -169,6 +229,30 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '243' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '241' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '242' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '243' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '241' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '242' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '243' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
@@ -197,6 +281,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '43' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '41' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '42' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '43' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '41' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '42' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '43' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
cicd_cluster:
@@ -224,6 +333,30 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '93' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '91' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '92' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '93' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '91' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '92' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '93' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
@@ -252,6 +385,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '73' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '71' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '72' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '73' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '71' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '72' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '73' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
stacklight_log_cluster:
@@ -279,6 +437,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '63' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '61' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '62' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '63' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '61' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '62' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '63' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
stacklight_mtr_cluster:
@@ -306,6 +489,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '99' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '97' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '98' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '99' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '97' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '98' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '99' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
prx01_virtual:
@@ -323,6 +531,14 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '81' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '81' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '81' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
@@ -341,6 +557,14 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '82' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '82' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '82' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
@@ -359,6 +583,15 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '101' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '101' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '101' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
cmp002_virtual:
@@ -376,6 +609,15 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '102' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '102' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '102' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
foundation_node:
@@ -386,6 +628,7 @@
mcp_version: { get_param: mcp_version }
instance_domain: {get_param: instance_domain}
instance_name: foundation
+ instance_image: { get_param: foundation_image }
instance_flavor: {get_param: foundation_flavor}
network: { get_attr: [networks, network] }
underlay_userdata: { get_file: ./underlay--user-data-foundation.yaml }
@@ -393,6 +636,15 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '5' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '5' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '5' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
ceph_cmn_cluster:
@@ -420,6 +672,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '68' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '66' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '67' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '68' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '66' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '67' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '68' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
ceph_rgw_cluster:
@@ -447,6 +724,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '78' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '76' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '77' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '78' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '76' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '77' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '78' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
ceph_osd_cluster:
@@ -474,6 +776,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '203' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '201' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '202' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '203' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '201' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '202' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '203' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
openstack_gtw_cluster:
@@ -501,6 +828,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '226' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '224' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '225' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '226' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '224' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '225' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '226' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
openstack_barbican_cluster:
@@ -528,6 +880,31 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '47' ]
+ instance01_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '45' ]
+ instance02_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '46' ]
+ instance03_tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '47' ]
+ instance01_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '45' ]
+ instance02_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '46' ]
+ instance03_external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '47' ]
+
instance_config_host: { get_attr: [cfg01_node, instance_address] }
dns01_virtual:
@@ -545,6 +922,14 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '113' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '113' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '113' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
@@ -563,6 +948,14 @@
list_join:
- '.'
- [ { get_attr: [networks, control_net_prefix] }, '114' ]
+ tenant_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, tenant_net_prefix] }, '114' ]
+ external_net_static_ip:
+ list_join:
+ - '.'
+ - [ { get_attr: [networks, external_net_prefix] }, '114' ]
instance_config_host: { get_attr: [cfg01_node, instance_address] }
diff --git a/tcp_tests/templates/shared-salt.yaml b/tcp_tests/templates/shared-salt.yaml
index 1a955b2..904a562 100644
--- a/tcp_tests/templates/shared-salt.yaml
+++ b/tcp_tests/templates/shared-salt.yaml
@@ -21,8 +21,11 @@
# Currently we support 2 salt version that can be set over bellow var
{% set SALT_VERSION = os_env('SALT_VERSION','2017.7') %}
{% set REPOSITORY_SUITE = os_env('REPOSITORY_SUITE', 'testing') %}
+{% set UPDATE_REPO_CUSTOM_TAG = os_env('UPDATE_REPO_CUSTOM_TAG', '') %}
+{% set UPDATE_VERSION = os_env('UPDATE_VERSION', 'proposed') %}
{# set FORMULA_REPOSITORY = os_env('FORMULA_REPOSITORY', 'deb [arch=amd64] http://apt.mirantis.com/${DISTRIB_CODENAME} ' + REPOSITORY_SUITE + ' salt extra') #}
{% set FORMULA_REPOSITORY = os_env('FORMULA_REPOSITORY', "deb [arch=amd64] http://mirror.mirantis.com/" + REPOSITORY_SUITE + "/salt-formulas"+"/${DISTRIB_CODENAME} ${DISTRIB_CODENAME} main") %}
+{% set UPDATE_FORMULA_REPOSITORY = os_env('UPDATE_FORMULA_REPOSITORY', "deb [arch=amd64] http://mirror.mirantis.com/update/" + UPDATE_VERSION + "/salt-formulas"+"/${DISTRIB_CODENAME} ${DISTRIB_CODENAME} main") %}
{# set FORMULA_GPG = os_env('FORMULA_GPG', 'http://apt.mirantis.com/public.gpg') #}
{% set FORMULA_GPG = os_env('FORMULA_GPG', "http://mirror.mirantis.com/" + REPOSITORY_SUITE + "/salt-formulas/xenial/archive-salt-formulas.key") %}
{# set SALT_REPOSITORY = os_env('SALT_REPOSITORY', "deb [arch=amd64] http://apt.mirantis.com/${DISTRIB_CODENAME}/salt/2016.3 " + REPOSITORY_SUITE + " main") #}
@@ -35,7 +38,6 @@
{% set UBUNTU_SECURITY_REPOSITORY = os_env('UBUNTU_SECURITY_REPOSITORY', "deb [arch=amd64] http://mirror.mirantis.com/" + REPOSITORY_SUITE + "/ubuntu/ ${DISTRIB_CODENAME}-security main restricted universe") %}
{% set UBUNTU_KEY_SERVER = os_env('UBUNTU_KEY_SERVER', 'keyserver.ubuntu.com') %}
{% set UBUNTU_KEY_ID = os_env('UBUNTU_KEY_ID', '0E08A149DE57BFBE') %}
-{% set UPDATE_REPO_CUSTOM_TAG = os_env('UPDATE_REPO_CUSTOM_TAG', '') %}
{# Address pools for reclass cluster model are taken in the following order:
# 1. environment variables,
@@ -90,6 +92,25 @@
{%- endmacro %}
+{%- macro MACRO_INSTALL_FORMULAS_FROM_UPDATE() %}
+{#####################################################}
+
+- description: 'Configure key on nodes and install packages'
+ cmd: |
+ rm -rf trusted* ;
+ rm -rf /etc/apt/sources.list ;
+ . /etc/lsb-release; # Get DISTRIB_CODENAME variable
+ echo "{{ UPDATE_FORMULA_REPOSITORY }}" > /etc/apt/sources.list.d/mcp_update_salt.list;
+ wget -O - "{{ FORMULA_GPG }}" | apt-key add -;
+ eatmydata apt-get clean;
+ apt-get update;
+ sync;
+ node_name: {{ HOSTNAME_CFG01 }}
+ retry: {count: 1, delay: 5}
+ skip_fail: false
+
+{%- endmacro %}
+
{%- macro MACRO_INSTALL_SALT_MASTER() %}
{######################################}
- description: Installing salt master on cfg01
diff --git a/tcp_tests/tests/system/test_3rdparty_suites.py b/tcp_tests/tests/system/test_3rdparty_suites.py
index 188d21b..8ca8c06 100644
--- a/tcp_tests/tests/system/test_3rdparty_suites.py
+++ b/tcp_tests/tests/system/test_3rdparty_suites.py
@@ -46,7 +46,7 @@
@pytest.mark.grab_versions
@pytest.mark.parametrize("_", [settings.ENV_NAME])
- @pytest.mark.run_stacklight
+ @pytest.mark.run_stacklight_old
def test_run_stacklight(self, sl_actions, show_step, _):
"""Runner for Stacklight tests
diff --git a/tcp_tests/tests/system/test_cvp_pipelines.py b/tcp_tests/tests/system/test_cvp_pipelines.py
index 84deb20..830320d 100644
--- a/tcp_tests/tests/system/test_cvp_pipelines.py
+++ b/tcp_tests/tests/system/test_cvp_pipelines.py
@@ -252,3 +252,77 @@
assert cvp_ha_smoke_result == 'SUCCESS', "{0}\n{1}".format(
description, '\n'.join(stages))
+
+ @pytest.mark.grab_versions
+ @pytest.mark.parametrize("_", [settings.ENV_NAME])
+ @pytest.mark.run_stacklight
+ def test_run_cvp_stacklight(self, salt_actions, show_step, _):
+ """Runner for Pipeline CVP - Stacklight
+
+ Scenario:
+ 1. Get CICD Jenkins access credentials from salt
+ 2. Run job cvp-stacklight
+ 3. Get passed stages from cvp-stacklight
+ 4. Download XML report from the job
+ """
+ salt = salt_actions
+ show_step(1)
+
+ tgt = 'I@docker:client:stack:jenkins and cid01*'
+ jenkins_host = salt.get_single_pillar(
+ tgt=tgt, pillar="jenkins:client:master:host")
+ jenkins_port = salt.get_single_pillar(
+ tgt=tgt, pillar="jenkins:client:master:port")
+ jenkins_url = 'http://{0}:{1}'.format(jenkins_host, jenkins_port)
+ jenkins_user = salt.get_single_pillar(
+ tgt=tgt, pillar="jenkins:client:master:username")
+ jenkins_pass = salt.get_single_pillar(
+ tgt=tgt, pillar="jenkins:client:master:password")
+ jenkins_start_timeout = 60
+ jenkins_build_timeout = 1800
+
+ job_name = 'cvp-stacklight'
+
+ show_step(2)
+ cvp_stacklight_result = run_jenkins_job.run_job(
+ host=jenkins_url,
+ username=jenkins_user,
+ password=jenkins_pass,
+ start_timeout=jenkins_start_timeout,
+ build_timeout=jenkins_build_timeout,
+ verbose=True,
+ job_name=job_name,
+ job_parameters={},
+ job_output_prefix='[cvp-stacklight/{build_number}:platform {time}]'
+ )
+
+ show_step(3)
+ (description, stages) = get_jenkins_job_stages.get_deployment_result(
+ host=jenkins_url,
+ username=jenkins_user,
+ password=jenkins_pass,
+ job_name=job_name,
+ build_number='lastBuild')
+
+ LOG.info(description)
+ LOG.info('\n'.join(stages))
+ LOG.info('Job {0} result: {1}'.format(job_name,
+ cvp_stacklight_result))
+ # Download XML report
+ show_step(4)
+ destination_name = os.path.join(settings.LOGS_DIR,
+ "stacklight_report.xml")
+ # Do not fail the test case when the job is failed, but
+ # artifact with the XML report is present in the job.
+ try:
+ get_jenkins_job_artifact.download_artifact(
+ host=jenkins_url,
+ username=jenkins_user,
+ password=jenkins_pass,
+ job_name=job_name,
+ build_number='lastBuild',
+ artifact_path='validation_artifacts/cvp-stacklight_report.xml',
+ destination_name=destination_name)
+ except jenkins.NotFoundException:
+ raise jenkins.NotFoundException("{0}\n{1}".format(
+ description, '\n'.join(stages)))
diff --git a/tcp_tests/utils/create_env_jenkins_cicd.py b/tcp_tests/utils/create_env_jenkins_cicd.py
new file mode 100644
index 0000000..ba73d6c
--- /dev/null
+++ b/tcp_tests/utils/create_env_jenkins_cicd.py
@@ -0,0 +1,32 @@
+#!/usr/bin/env python
+
+import os
+import sys
+
+sys.path.append(os.getcwd())
+try:
+ from tcp_tests.fixtures import config_fixtures
+ from tcp_tests.managers import underlay_ssh_manager
+ from tcp_tests.managers import saltmanager as salt_manager
+except ImportError:
+ print("ImportError: Run the application from the tcp-qa directory or "
+ "set the PYTHONPATH environment variable to directory which contains"
+ " ./tcp_tests")
+ sys.exit(1)
+
+
+def main():
+ tests_configs = os.environ.get('TESTS_CONFIGS', None)
+ if not tests_configs or not os.path.isfile(tests_configs):
+ print("Please set TESTS_CONFIGS environment variable whith"
+ "the path to INI file with lab metadata.")
+ return 1
+ config = config_fixtures.config()
+ underlay = underlay_ssh_manager.UnderlaySSHManager(config)
+ saltmanager = salt_manager.SaltManager(config, underlay)
+ saltmanager.create_env_jenkins_cicd()
+ saltmanager.create_env_k8s()
+
+
+if __name__ == '__main__':
+ sys.exit(main())