summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBlaisonneau David <david.blaisonneau@orange.com>2017-03-21 15:06:59 +0100
committerNarinder Gupta <narinder.gupta@canonical.com>2017-03-21 17:17:19 +0000
commit90f9d41ee4ce3e056e658a2af46d34b87a907eeb (patch)
treeba1b9e5d3e97ae5c68c0e4640c88a863ad0b86fc
parent8af21a1942747e8454e1775aa61c62d3e4931337 (diff)
correct of maas deploy and orange pod2 update
MAAS deploy correction to manage heterogeneous hardware (different interfaces mapping or naming amoung nodes, and configuration of a VLAN on an interface without network_cidr) Change-Id: Ib3825bd8600cf62637cee85779d9ee0a55f896c4 Signed-off-by: Blaisonneau David <david.blaisonneau@orange.com>
-rwxr-xr-xci/03-maasdeploy.sh174
-rw-r--r--labconfig/orange/pod2/labconfig.yaml52
2 files changed, 84 insertions, 142 deletions
diff --git a/ci/03-maasdeploy.sh b/ci/03-maasdeploy.sh
index 39a7609b..329931e2 100755
--- a/ci/03-maasdeploy.sh
+++ b/ci/03-maasdeploy.sh
@@ -453,19 +453,6 @@ echo "... Deployment of maas finish ...."
#
#Below function will mark the interfaces in Auto mode to enbled by MAAS
-enableautomode() {
- API_KEY=`sudo maas-region apikey --username=ubuntu`
- maas login $PROFILE $API_SERVERMAAS $API_KEY
- vlanid=$(maas $PROFILE subnet read $3 | jq -r '.vlan.id')
-
- for node in $(maas $PROFILE nodes read | jq -r '.[].system_id')
- do
- maas $PROFILE interface update $node $1 vlan=$vlanid
- maas $PROFILE interface link-subnet $node $1 mode=$2 subnet=$3 || true
- done
-}
-
-#Below function will mark the interfaces in Auto mode to enbled by MAAS
# using hostname of the node added into MAAS
enableautomodebyname() {
API_KEY=`sudo maas-region apikey --username=ubuntu`
@@ -558,114 +545,69 @@ esac
#
# Enable MAAS nodes interfaces
#
+API_KEY=`sudo maas-region apikey --username=ubuntu`
+maas login $PROFILE $API_SERVERMAAS $API_KEY
-#read interface needed in Auto mode and enable it. Will be rmeoved once auto enablement will be implemented in the maas-deployer.
-# Enable only non vlan interfaces first.
if [ -e ./labconfig.json ]; then
- if [ $SUBNETDATA_CIDR ]; then
- EXTNET=`cat labconfig.json | jq --raw-output '.lab.racks[0].nodes[].nics[] | select(.spaces[]=="data")'.ifname | sort -u`
- i="0"
- while [ ! -z "${EXTNET[i]}" ];
- do
- if ([ -z $VLAN ] || [ "$VLAN" == "null" ]); then
- enableautomode ${EXTNET[i]} AUTO $SUBNETDATA_CIDR || true
- fi
- i=$[$i+1]
- done
- fi
- if [ $SUBNETPUB_CIDR ]; then
- EXTNET=`cat labconfig.json | jq --raw-output '.lab.racks[0].nodes[].nics[] | select(.spaces[]=="public")'.ifname | sort -u`
- i="0"
- while [ ! -z "${EXTNET[i]}" ];
- do
- if ([ -z $VLAN ] || [ "$VLAN" == "null" ]); then
- enableautomode ${EXTNET[i]} AUTO $SUBNETPUB_CIDR || true
- fi
- i=$[$i+1]
- done
- fi
- if [ $SUBNETSTOR_CIDR ]; then
- EXTNET=`cat labconfig.json | jq --raw-output '.lab.racks[0].nodes[].nics[] | select(.spaces[]=="storage")'.ifname | sort -u`
- i="0"
- while [ ! -z "${EXTNET[i]}" ];
- do
- if ([ -z $VLAN ] || [ "$VLAN" == "null" ]); then
- enableautomode ${EXTNET[i]} AUTO $SUBNETSTOR_CIDR || true
- fi
- i=$[$i+1]
- done
- fi
- if [ $SUBNETFLOAT_CIDR ]; then
- EXTNET=`cat labconfig.json | jq --raw-output '.lab.racks[0].nodes[].nics[] | select(.spaces[]=="floating")'.ifname | sort -u`
- i="0"
- while [ ! -z "${EXTNET[i]}" ];
- do
- if ([ -z $VLAN ] || [ "$VLAN" == "null" ]); then
- enableautomode ${EXTNET[i]} link_up $SUBNETFLOAT_CIDR || true
- fi
- i=$[$i+1]
- done
- fi
-fi
-
-#enable only the vlan interfaces which were ignore in previous run.
+ # We will configure all node, so we need the qty, and loop on it
+ NODE_QTY=$(cat labconfig.json | jq --raw-output '.lab.racks[0].nodes[]'.name | wc -l)
+ NODE_QTY=$((NODE_QTY-1))
+ for NODE_ID in $(seq 0 $NODE_QTY); do
+ # Get the NAME/SYS_ID of this node
+ NODE_NAME=$(cat labconfig.json | jq --raw-output ".lab.racks[0].nodes[$NODE_ID].name")
+ NODE_SYS_ID=$(maas $PROFILE nodes read | jq -r ".[] | select(.hostname==\"$NODE_NAME\")".system_id)
+ echo ">>> Configuring node $NODE_NAME [$NODE_ID][$NODE_SYS_ID]"
+ # Recover the network interfaces list and configure each one
+ # with sorting the list, we have hardware interface first the vlan interfaces
+ IF_LIST=$(cat labconfig.json | jq --raw-output ".lab.racks[0].nodes[$NODE_ID].nics[] ".ifname | sort -u)
+ for IF_NAME in $IF_LIST; do
+ IF_SPACE=$(cat labconfig.json | jq --raw-output ".lab.racks[0].nodes[$NODE_ID].nics[] | select(.ifname==\"$IF_NAME\") ".spaces[])
+ case "$IF_SPACE" in
+ 'data') SUBNET_CIDR=$SUBNETDATA_CIDR; IF_MODE='AUTO' ;;
+ 'public') SUBNET_CIDR=$SUBNETPUB_CIDR; IF_MODE='AUTO' ;;
+ 'storage') SUBNET_CIDR=$SUBNETSTOR_CIDR; IF_MODE='AUTO' ;;
+ 'floating') SUBNET_CIDR=$SUBNETFLOAT_CIDR; IF_MODE='link_up' ;;
+ *) SUBNET_CIDR='null'; IF_MODE='null'; echo " >>> Unknown SPACE" ;;
+ esac
+ echo " >>> Configuring interface $IF_NAME [$IF_SPACE][$SUBNET_CIDR]"
+
+ # if we have a vlan parameter in the space config
+ IF_VLAN=$(cat labconfig.json | jq --raw-output ".opnfv.spaces[] | select(.type==\"$IF_SPACE\")".vlan)
+ if ([ -z $IF_VLAN ] && [ $IF_NAME =~ \. ]); then
+ # We have no vlan specified on spaces, but we have a vlan subinterface
+ IF_VLAN = ${IF_NAME##*.}; fi
+
+ # In case of a VLAN interface
+ if ([ $IF_VLAN ] && [ "$IF_VLAN" != "null" ]); then
+ echo " >>> Configuring VLAN $IF_VLAN"
+ VLANID=$(maas $PROFILE subnets read | jq ".[].vlan | select(.vid==$IF_VLAN)".id)
+ FABRICID=$(maas $PROFILE subnets read | jq ".[].vlan | select(.vid==$IF_VLAN)".fabric_id)
+ INTERFACE=$(maas $PROFILE interfaces read $NODE_SYS_ID | jq ".[] | select(.vlan.fabric_id==$FABRICID)".id)
+ if [[ -z $INTERFACE ]]; then
+ # parent interface is not set because it does not have a SUBNET_CIDR
+ PARENT_VLANID=$(maas $PROFILE fabrics read | jq ".[].vlans[] | select(.fabric_id==$FABRICID and .name==\"untagged\")".id)
+ # We set the physical interface to the targeted fabric
+ PARENT_IF_NAME=${IF_NAME%%.*}
+ maas $PROFILE interface update $NODE_SYS_ID $PARENT_IF_NAME vlan=$PARENT_VLANID
+ sleep 3
+ INTERFACE=$(maas $PROFILE interfaces read $NODE_SYS_ID | jq ".[] | select(.vlan.fabric_id==$FABRICID)".id)
+ fi
+ maas $PROFILE interfaces create-vlan $NODE_SYS_ID vlan=$VLANID parent=$INTERFACE || true
+ fi
-if [ -e ./labconfig.json ]; then
- if [ $SUBNETDATA_CIDR ]; then
- EXTNET=`cat labconfig.json | jq --raw-output '.lab.racks[0].nodes[].nics[] | select(.spaces[]=="data")'.ifname | sort -u`
- VLAN=`cat labconfig.json | jq --raw-output '.opnfv.spaces[] | select(.type=="data")'.vlan`
- i="0"
- while [ ! -z "${EXTNET[i]}" ];
- do
- if ([ $VLAN ] && [ "$VLAN" != "null" ]); then
- crnodevlanint $VLAN || true
- enableautomode ${EXTNET[i]} AUTO $SUBNETDATA_CIDR || true
- fi
- i=$[$i+1]
- done
- fi
- if [ $SUBNETPUB_CIDR ]; then
- EXTNET=`cat labconfig.json | jq --raw-output '.lab.racks[0].nodes[].nics[] | select(.spaces[]=="public")'.ifname | sort -u`
- VLAN=`cat labconfig.json | jq --raw-output '.opnfv.spaces[] | select(.type=="public")'.vlan`
- i="0"
- while [ ! -z "${EXTNET[i]}" ];
- do
- if ([ $VLAN ] && [ "$VLAN" != "null" ]); then
- crnodevlanint $VLAN || true
- enableautomode ${EXTNET[i]} AUTO $SUBNETPUB_CIDR || true
- fi
- i=$[$i+1]
- done
- fi
- if [ $SUBNETSTOR_CIDR ]; then
- EXTNET=`cat labconfig.json | jq --raw-output '.lab.racks[0].nodes[].nics[] | select(.spaces[]=="storage")'.ifname | sort -u`
- VLAN=`cat labconfig.json | jq --raw-output '.opnfv.spaces[] | select(.type=="storage")'.vlan`
- i="0"
- while [ ! -z "${EXTNET[i]}" ];
- do
- if ([ $VLAN ] && [ "$VLAN" != "null" ]); then
- crnodevlanint $VLAN || true
- enableautomode ${EXTNET[i]} AUTO $SUBNETSTOR_CIDR || true
- fi
- i=$[$i+1]
- done
- fi
- if [ $SUBNETFLOAT_CIDR ]; then
- EXTNET=`cat labconfig.json | jq --raw-output '.lab.racks[0].nodes[].nics[] | select(.spaces[]=="floating")'.ifname | sort -u`
- VLAN=`cat labconfig.json | jq --raw-output '.opnfv.spaces[] | select(.type=="floating")'.vlan`
- i="0"
- while [ ! -z "${EXTNET[i]}" ];
- do
- if ([ $VLAN ] && [ "$VLAN" != "null" ]); then
- crnodevlanint $VLAN || true
- enableautomode ${EXTNET[i]} link_up $SUBNETFLOAT_CIDR || true
- fi
- i=$[$i+1]
- done
- fi
+ # Configure the interface
+ if ([ $SUBNET_CIDR ] && [ "$SUBNET_CIDR" != "null" ]); then
+ VLANID=$(maas $PROFILE subnet read $SUBNET_CIDR | jq -r '.vlan.id')
+ maas $PROFILE interface update $NODE_SYS_ID $IF_NAME vlan=$VLANID
+ maas $PROFILE interface link-subnet $NODE_SYS_ID $IF_NAME mode=$IF_MODE subnet=$SUBNET_CIDR || true
+ sleep 5
+ else
+ echo " >>> Not configuring, we have an empty Subnet CIDR"
+ fi
+ done
+ done
fi
-
# Add the cloud and controller credentials for MAAS for that lab.
jujuver=`juju --version`
diff --git a/labconfig/orange/pod2/labconfig.yaml b/labconfig/orange/pod2/labconfig.yaml
index 5d19043f..402df37a 100644
--- a/labconfig/orange/pod2/labconfig.yaml
+++ b/labconfig/orange/pod2/labconfig.yaml
@@ -9,19 +9,19 @@ lab:
nics:
- ifname: eno1
spaces: [admin]
- mac: ["38:63:bb:3f:1d:8c"]
- - ifname: ens3f0.2056
+ mac: ["1c:98:ec:11:ad:08"]
+ - ifname: eno2.2056
spaces: [public]
- mac: ["a0:36:9f:4e:88:38"]
- - ifname: ens3f0
+ mac: ["1c:98:ec:11:ad:09"]
+ - ifname: eno2
spaces: [floating]
- mac: ["a0:36:9f:4e:88:38"]
- - ifname: ens3f1
+ mac: ["1c:98:ec:11:ad:09"]
+ - ifname: eno3
spaces: [data]
- mac: ["a0:36:9f:4e:88:3a"]
+ mac: ["1c:98:ec:11:ad:0a"]
power:
type: ipmi
- address: 10.0.0.16
+ address: 10.0.0.22
user: Administrator
pass: opnfv2017
- name: rack-2-m2
@@ -30,19 +30,19 @@ lab:
nics:
- ifname: eno1
spaces: [admin]
- mac: ["38:63:bb:44:34:84"]
- - ifname: ens3f0.2056
+ mac: ["1c:98:ec:11:c2:c4"]
+ - ifname: eno2.2056
spaces: [public]
- mac: ["a0:36:9f:4e:8b:0c"]
- - ifname: ens3f0
+ mac: ["1c:98:ec:11:c2:c5"]
+ - ifname: eno2
spaces: [floating]
- mac: ["a0:36:9f:4e:8b:0c"]
- - ifname: ens3f1
+ mac: ["1c:98:ec:11:c2:c5"]
+ - ifname: eno3
spaces: [data]
- mac: ["a0:36:9f:4e:8b:0e"]
+ mac: ["1c:98:ec:11:c2:c6"]
power:
type: ipmi
- address: 10.0.0.17
+ address: 10.0.0.23
user: Administrator
pass: opnfv2017
- name: rack-2-m3
@@ -51,19 +51,19 @@ lab:
nics:
- ifname: eno1
spaces: [admin]
- mac: ["38:63:bb:3f:bc:c8"]
- - ifname: ens3f0.2056
+ mac: ["1c:98:ec:11:9d:c4"]
+ - ifname: eno2.2056
spaces: [public]
- mac: ["a0:36:9f:4e:88:5c"]
- - ifname: ens3f0
+ mac: ["1c:98:ec:11:9c:c5"]
+ - ifname: eno2
spaces: [floating]
- mac: ["a0:36:9f:4e:88:5c"]
- - ifname: ens3f1
+ mac: ["1c:98:ec:11:9c:c5"]
+ - ifname: eno3
spaces: [data]
- mac: ["a0:36:9f:4e:88:5e"]
+ mac: ["1c:98:ec:11:9c:c6"]
power:
type: ipmi
- address: 10.0.0.18
+ address: 10.0.0.24
user: Administrator
pass: opnfv2017
- name: rack-2-m4
@@ -121,7 +121,7 @@ opnfv:
- type: nosdn
storage:
- type: ceph
- disk: /dev/sdb
+ disk: /dev/sdb /deb/sdc
feature: odl_l2
spaces:
- type: admin
@@ -138,7 +138,7 @@ opnfv:
bridge: brApi
cidr: 10.2.1.0/24
gateway:
- vlan:
+ vlan: 2056
- type: floating
bridge: brFloating
cidr: