Merge "[cleanup] Move default storage dir to /var/lib"
[fuel.git] / ci / deploy.sh
index 4a85412..4b6b916 100755 (executable)
@@ -38,7 +38,7 @@ $(notify "USAGE:" 2)
   $(basename "$0") -l lab-name -p pod-name -s deploy-scenario \\
     [-b Lab Config Base URI] \\
     [-S storage-dir] [-L /path/to/log/file.tar.gz] \\
-    [-f] [-F] [-e | -E[E]] [-d] [-D] [-N]
+    [-f] [-F] [-e | -E[E]] [-d] [-D] [-N] [-m]
 
 $(notify "OPTIONS:" 2)
   -b  Base-uri for the stack-configuration structure
@@ -55,6 +55,7 @@ $(notify "OPTIONS:" 2)
   -s  Deploy-scenario short-name
   -S  Storage dir for VM images and other deploy artifacts
   -L  Deployment log path and file name
+  -m  Use single socket CPU compute nodes (only affects virtual computes)
   -N  Experimental: Do not virtualize control plane (novcp)
 
 $(notify_i "Description:" 2)
@@ -95,6 +96,9 @@ $(notify_i "Input parameters to the build script are:" 2)
 -p POD name as defined in the configuration directory, e.g. pod2
    For the sample configuration in <./mcp/config>, POD name is 'virtual1'
    for virtual deployments or 'pod1' for baremetal (based on lf-pod2).
+-m Use single socket compute nodes. Instead of using default NUMA-enabled
+   topology for virtual compute nodes created via libvirt, configure a
+   single guest CPU socket.
 -N Experimental: Instead of virtualizing the control plane (VCP), deploy
    control plane directly on baremetal nodes
 -P Skip installing dependency distro packages on current host
@@ -103,7 +107,9 @@ $(notify_i "Input parameters to the build script are:" 2)
    Note that without the required packages, deploy will fail.
 -s Deployment-scenario, this points to a short deployment scenario name, which
    has to be defined in config directory (e.g. os-odl-nofeature-ha).
--S Storage dir for VM images, default is mcp/deploy/images
+-S Storage dir for VM images, default is /var/lib/opnfv/tmpdir
+   It is recommended to store the deploy artifacts on a fast disk, outside of
+   the current git repository (so clean operations won't erase it).
 
 $(notify_i "[NOTE] sudo & virsh priviledges are needed for this script to run" 3)
 
@@ -112,7 +118,8 @@ Example:
 $(notify_i "sudo $(basename "$0") \\
   -b file:///home/jenkins/securedlab \\
   -l lf -p pod2 \\
-  -s os-odl-nofeature-ha" 2)
+  -s os-odl-nofeature-ha \\
+  -S /home/jenkins/tmpdir" 2)
 EOF
 }
 
@@ -126,7 +133,7 @@ EOF
 CI_DEBUG=${CI_DEBUG:-0}; [[ "${CI_DEBUG}" =~ (false|0) ]] || set -x
 MCP_REPO_ROOT_PATH=$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")
 DEPLOY_DIR=$(cd "${MCP_REPO_ROOT_PATH}/mcp/scripts"; pwd)
-MCP_STORAGE_DIR=$(cd "${MCP_REPO_ROOT_PATH}/mcp/deploy/images"; pwd)
+MCP_STORAGE_DIR='/var/lib/opnfv/tmpdir'
 URI_REGEXP='(file|https?|ftp)://.*'
 BASE_CONFIG_URI="file://${MCP_REPO_ROOT_PATH}/mcp/scripts/pharos"
 
@@ -138,6 +145,7 @@ NO_DEPLOY_ENVIRONMENT=${NO_DEPLOY_ENVIRONMENT:-0}
 ERASE_ENV=${ERASE_ENV:-0}
 MCP_VCP=${MCP_VCP:-1}
 MCP_DOCKER_TAG=${MCP_DOCKER_TAG:-latest}
+MCP_CMP_SS=${MCP_CMP_SS:-0}
 
 source "${DEPLOY_DIR}/globals.sh"
 source "${DEPLOY_DIR}/lib.sh"
@@ -183,6 +191,9 @@ do
         L)
             DEPLOY_LOG="${OPTARG}"
             ;;
+        m)
+            MCP_CMP_SS=1
+            ;;
         N)
             MCP_VCP=0
             ;;
@@ -234,12 +245,15 @@ pushd "${DEPLOY_DIR}" > /dev/null
 # scenario, etc.
 
 # Install required packages on jump server
+sudo mkdir -p "${MCP_STORAGE_DIR}"
+sudo chown "${USER}:${USER}" "${MCP_STORAGE_DIR}"
 if [ ${USE_EXISTING_PKGS} -eq 1 ]; then
     notify "[NOTE] Skipping distro pkg installation" 2
 else
     notify "[NOTE] Installing required distro pkgs" 2
     jumpserver_pkg_install 'deploy'
     docker_install "${MCP_STORAGE_DIR}"
+    virtinst_install "${MCP_STORAGE_DIR}"
 fi
 
 if ! virsh list >/dev/null 2>&1; then
@@ -266,13 +280,13 @@ export MAAS_SSH_KEY="$(cat "$(basename "${SSH_KEY}").pub")"
 MCP_DPDK_MODE=$([[ "$DEPLOY_SCENARIO" =~ ovs ]] && echo 1 || echo 0)
 # Expand jinja2 templates based on PDF data and env vars
 export MCP_REPO_ROOT_PATH MCP_VCP MCP_DPDK_MODE MCP_STORAGE_DIR MCP_DOCKER_TAG \
-       MCP_JUMP_ARCH=$(uname -i)
+       MCP_CMP_SS MCP_JUMP_ARCH=$(uname -i)
 do_templates_scenario "${MCP_STORAGE_DIR}" "${TARGET_LAB}" "${TARGET_POD}" \
-                      "${BASE_CONFIG_URI}" "${SCENARIO_DIR}"
+                      "${BASE_CONFIG_URI}" "${SCENARIO_DIR}" \
+                      "${SCENARIO_DIR}/${DEPLOY_SCENARIO}.yaml"
 do_templates_cluster  "${MCP_STORAGE_DIR}" "${TARGET_LAB}" "${TARGET_POD}" \
                       "${MCP_REPO_ROOT_PATH}" \
-                      "${SCENARIO_DIR}/defaults.yaml" \
-                      "${SCENARIO_DIR}/${DEPLOY_SCENARIO}.yaml"
+                      "${SCENARIO_DIR}/defaults.yaml"
 
 # Determine additional data (e.g. jump bridge names) based on XDF
 source "${DEPLOY_DIR}/xdf_data.sh"
@@ -291,13 +305,16 @@ elif [ ${USE_EXISTING_INFRA} -gt 0 ]; then
 else
     prepare_vms "${base_image}" "${MCP_STORAGE_DIR}" "${virtual_repos_pkgs}" \
       "${virtual_nodes[@]}"
-    prepare_containers "${MCP_STORAGE_DIR}"
     create_networks "${OPNFV_BRIDGES[@]}"
     do_sysctl_cfg
     do_udev_cfg
     create_vms "${MCP_STORAGE_DIR}" "${virtual_nodes_data}" "${OPNFV_BRIDGES[@]}"
-    update_mcpcontrol_network
     start_vms "${virtual_nodes[@]}"
+
+    # https://github.com/docker/libnetwork/issues/1743
+    # rm -f /var/lib/docker/network/files/local-kv.db
+    sudo systemctl restart docker
+    prepare_containers "${MCP_STORAGE_DIR}"
 fi
 
 start_containers "${MCP_STORAGE_DIR}"