Merge "Moving parser functions to a sourced file"
authorMichael Chapman <michapma@redhat.com>
Wed, 6 Jul 2016 10:58:42 +0000 (10:58 +0000)
committerGerrit Code Review <gerrit@172.30.200.206>
Wed, 6 Jul 2016 10:58:42 +0000 (10:58 +0000)
1  2 
ci/deploy.sh

diff --combined ci/deploy.sh
@@@ -58,6 -58,7 +58,7 @@@ ip_address_family=
  # Libraries
  lib_files=(
  $LIB/common-functions.sh
+ $LIB/parse-functions.sh
  $LIB/utility-functions.sh
  $LIB/installer/onos/onos_gw_mac_update.sh
  )
@@@ -69,25 -70,6 +70,6 @@@ for lib_file in ${lib_files[@]}; d
  done
  
  ##FUNCTIONS
- ##translates yaml into variables
- ##params: filename, prefix (ex. "config_")
- ##usage: parse_yaml opnfv_ksgen_settings.yml "config_"
- parse_yaml() {
-    local prefix=$2
-    local s='[[:space:]]*' w='[a-zA-Z0-9_]*' fs=$(echo @|tr @ '\034')
-    sed -ne "s|^\($s\)\($w\)$s:$s\"\(.*\)\"$s\$|\1$fs\2$fs\3|p" \
-         -e "s|^\($s\)\($w\)$s:$s\(.*\)$s\$|\1$fs\2$fs\3|p"  $1 |
-    awk -F$fs '{
-       indent = length($1)/2;
-       vname[indent] = $2;
-       for (i in vname) {if (i > indent) {delete vname[i]}}
-       if (length($3) > 0) {
-          vn=""; for (i=0; i<indent; i++) {vn=(vn)(vname[i])("_")}
-          printf("%s%s%s=%s\n", "'$prefix'",vn, $2, $3);
-       }
-    }'
- }
  ##checks if prefix exists in string
  ##params: string, prefix
  ##usage: contains_prefix "deploy_setting_launcher=1" "deploy_setting"
@@@ -100,149 -82,7 +82,7 @@@ contains_prefix() 
      return 1
    fi
  }
- ##parses variable from a string with '='
- ##and removes global prefix
- ##params: string, prefix
- ##usage: parse_setting_var 'deploy_myvar=2' 'deploy_'
- parse_setting_var() {
-   local mystr=$1
-   local prefix=$2
-   if echo $mystr | grep -E "^.+\=" > /dev/null; then
-     echo $(echo $mystr | grep -Eo "^.+\=" | tr -d '=' |  sed 's/^'"$prefix"'//')
-   else
-     return 1
-   fi
- }
- ##parses value from a string with '='
- ##params: string
- ##usage: parse_setting_value
- parse_setting_value() {
-   local mystr=$1
-   echo $(echo $mystr | grep -Eo "\=.*$" | tr -d '=')
- }
- ##parses network settings yaml into globals
- parse_network_settings() {
-   local output
-   if output=$(python3.4 -B $LIB/python/apex_python_utils.py parse-net-settings -s $NETSETS -i $net_isolation_enabled -e $CONFIG/network-environment.yaml); then
-       echo -e "${blue}${output}${reset}"
-       eval "$output"
-   else
-       echo -e "${red}ERROR: Failed to parse network settings file $NETSETS ${reset}"
-       exit 1
-   fi
- }
- ##parses deploy settings yaml into globals
- parse_deploy_settings() {
-   local output
-   if output=$(python3.4 -B $LIB/python/apex_python_utils.py parse-deploy-settings -f $DEPLOY_SETTINGS_FILE); then
-       echo -e "${blue}${output}${reset}"
-       eval "$output"
-   else
-       echo -e "${red}ERROR: Failed to parse deploy settings file $DEPLOY_SETTINGS_FILE ${reset}"
-       exit 1
-   fi
-   if [ "${deploy_options_array['dataplane']}" == 'ovs_dpdk' ]; then
-     if [ "$net_isolation_enabled" == "FALSE" ]; then
-       echo -e "${red}ERROR: flat network is not supported with ovs-dpdk ${reset}"
-       exit 1
-     fi
-     if [[ ! $enabled_network_list =~ "private_network" ]]; then
-       echo -e "${red}ERROR: tenant network is not enabled for ovs-dpdk ${reset}"
-       exit 1
-     fi
-   fi
- }
- ##parses baremetal yaml settings into compatible json
- ##writes the json to $CONFIG/instackenv_tmp.json
- ##params: none
- ##usage: parse_inventory_file
- parse_inventory_file() {
-   local inventory=$(parse_yaml $INVENTORY_FILE)
-   local node_list
-   local node_prefix="node"
-   local node_count=0
-   local node_total
-   local inventory_list
-   # detect number of nodes
-   for entry in $inventory; do
-     if echo $entry | grep -Eo "^nodes_node[0-9]+_" > /dev/null; then
-       this_node=$(echo $entry | grep -Eo "^nodes_node[0-9]+_")
-       if [[ "$inventory_list" != *"$this_node"* ]]; then
-         inventory_list+="$this_node "
-       fi
-     fi
-   done
-   inventory_list=$(echo $inventory_list | sed 's/ $//')
  
-   for node in $inventory_list; do
-     ((node_count+=1))
-   done
-   node_total=$node_count
-   if [[ "$node_total" -lt 5 && "$ha_enabled" == "True" ]]; then
-     echo -e "${red}ERROR: You must provide at least 5 nodes for HA baremetal deployment${reset}"
-     exit 1
-   elif [[ "$node_total" -lt 2 ]]; then
-     echo -e "${red}ERROR: You must provide at least 2 nodes for non-HA baremetal deployment${reset}"
-     exit 1
-   fi
-   eval $(parse_yaml $INVENTORY_FILE) || {
-     echo "${red}Failed to parse inventory.yaml. Aborting.${reset}"
-     exit 1
-   }
-   instackenv_output="
- {
-  \"nodes\" : [
- "
-   node_count=0
-   for node in $inventory_list; do
-     ((node_count+=1))
-     node_output="
-         {
-           \"pm_password\": \"$(eval echo \${${node}ipmi_pass})\",
-           \"pm_type\": \"$(eval echo \${${node}pm_type})\",
-           \"mac\": [
-             \"$(eval echo \${${node}mac_address})\"
-           ],
-           \"cpu\": \"$(eval echo \${${node}cpus})\",
-           \"memory\": \"$(eval echo \${${node}memory})\",
-           \"disk\": \"$(eval echo \${${node}disk})\",
-           \"arch\": \"$(eval echo \${${node}arch})\",
-           \"pm_user\": \"$(eval echo \${${node}ipmi_user})\",
-           \"pm_addr\": \"$(eval echo \${${node}ipmi_ip})\",
-           \"capabilities\": \"$(eval echo \${${node}capabilities})\"
- "
-     instackenv_output+=${node_output}
-     if [ $node_count -lt $node_total ]; then
-       instackenv_output+="        },"
-     else
-       instackenv_output+="        }"
-     fi
-   done
-   instackenv_output+='
-   ]
- }
- '
-   #Copy instackenv.json to undercloud for baremetal
-   echo -e "{blue}Parsed instackenv JSON:\n${instackenv_output}${reset}"
-   ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI
- cat > instackenv.json << EOF
- $instackenv_output
- EOF
- EOI
- }
  ##verify internet connectivity
  #params: none
  function verify_internet {
@@@ -1096,16 -936,6 +936,16 @@@ cat ~/jumphost_id_rsa.pub | ssh -T ${SS
  done
  EOI
  
 +  if [ "${deploy_options_array['dataplane']}" == 'ovs_dpdk' ]; then
 +    echo -e "${blue}INFO: Bringing up br-phy and ovs-agent for dpdk compute nodes...${reset}"
 +    compute_nodes=$(undercloud_connect stack "source stackrc; nova list | grep compute | wc -l")
 +    i=0
 +    while [ "$i" -lt "$compute_nodes" ]; do
 +      overcloud_connect compute${i} "sudo ifup br-phy; sudo systemctl restart neutron-openvswitch-agent"
 +      i=$((i + 1))
 +    done
 +  fi
 +
    ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI
  source overcloudrc
  set -o errexit