Merge changes from topics 'c_doc_update', 'detached_cleanup'
authorTim Rozet <trozet@redhat.com>
Fri, 10 Jun 2016 15:31:49 +0000 (15:31 +0000)
committerGerrit Code Review <gerrit@172.30.200.206>
Fri, 10 Jun 2016 15:31:49 +0000 (15:31 +0000)
* changes:
  Documentation updates
  fixing detached state deployment

18 files changed:
build/build_perf_image.sh
build/network-environment.yaml
build/opnfv-apex-common.spec
build/opnfv-environment.yaml
build/overcloud-opendaylight.sh
build/set_perf_images.sh
build/undercloud.sh
ci/PR_revision.log
ci/build.sh
ci/clean.sh
ci/deploy.sh
config/deploy/os-nosdn-ovs-ha.yaml [new file with mode: 0644]
config/deploy/os-nosdn-ovs-noha.yaml [new file with mode: 0644]
config/deploy/os-odl_l2-nofeature-ha.yaml
config/network/network_settings.yaml
lib/installer/domain.xml [new file with mode: 0644]
lib/python/apex/deploy_env.py
lib/python/apex/network_environment.py

index 80e615e..c91b563 100644 (file)
@@ -33,8 +33,6 @@ if [ "$CATEGORY" == "nova" ]; then
 fi
 
 if [ "$CATEGORY" == "kernel" ]; then
-  LIBGUESTFS_BACKEND=direct virt-customize \
-    --run-command "grubby --update-kernel=ALL --args=$KEY=$VALUE" \
-    -a $IMAGE
+  echo "${KEY}=${VALUE}" >> $ROLE-kernel_params.txt
 fi
 
index 2773300..874e011 100644 (file)
@@ -65,7 +65,7 @@ parameters:
     CinderIscsiNetwork: storage
     GlanceApiNetwork: storage
     GlanceRegistryNetwork: internal_api
-    KeystoneAdminApiNetwork: internal_api
+    KeystoneAdminApiNetwork: ctlplane
     KeystonePublicApiNetwork: internal_api
     NeutronApiNetwork: internal_api
     HeatApiNetwork: internal_api
index f014895..536f9ec 100644 (file)
@@ -34,8 +34,10 @@ install ci/util.sh %{buildroot}%{_bindir}/opnfv-util
 
 mkdir -p %{buildroot}%{_sysconfdir}/opnfv-apex/
 install config/deploy/os-nosdn-nofeature-noha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-nosdn-nofeature-noha.yaml
+install config/deploy/os-nosdn-ovs-noha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-nosdn-ovs-noha.yaml
 install config/deploy/os-nosdn-nofeature-ha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-nosdn-nofeature-ha.yaml
 install config/deploy/os-nosdn-performance-ha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-nosdn-performance-ha.yaml
+install config/deploy/os-nosdn-ovs-ha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-nosdn-ovs-ha.yaml
 install config/deploy/os-odl_l2-nofeature-ha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-odl_l2-nofeature-ha.yaml
 install config/deploy/os-odl_l2-sfc-noha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-odl_l2-sfc-noha.yaml
 install config/deploy/os-odl_l3-nofeature-ha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-odl_l3-nofeature-ha.yaml
@@ -59,6 +61,7 @@ install lib/python/apex/common/constants.py %{buildroot}%{python3_sitelib}/apex/
 install lib/python/apex/common/utils.py %{buildroot}%{python3_sitelib}/apex/common/
 mkdir -p %{buildroot}%{_var}/opt/opnfv/lib/installer/onos/
 install lib/installer/onos/onos_gw_mac_update.sh %{buildroot}%{_var}/opt/opnfv/lib/installer/onos/
+install lib/installer/domain.xml %{buildroot}%{_var}/opt/opnfv/lib/installer/
 
 mkdir -p %{buildroot}%{_docdir}/opnfv/
 install LICENSE.rst %{buildroot}%{_docdir}/opnfv/
@@ -79,9 +82,12 @@ install config/inventory/pod_example_settings.yaml %{buildroot}%{_docdir}/opnfv/
 %{_var}/opt/opnfv/lib/python/
 %{python3_sitelib}/apex/
 %{_var}/opt/opnfv/lib/installer/onos/onos_gw_mac_update.sh
+%{_var}/opt/opnfv/lib/installer/domain.xml
 %{_sysconfdir}/opnfv-apex/os-nosdn-nofeature-noha.yaml
+%{_sysconfdir}/opnfv-apex/os-nosdn-ovs-noha.yaml
 %{_sysconfdir}/opnfv-apex/os-nosdn-nofeature-ha.yaml
 %{_sysconfdir}/opnfv-apex/os-nosdn-performance-ha.yaml
+%{_sysconfdir}/opnfv-apex/os-nosdn-ovs-ha.yaml
 %{_sysconfdir}/opnfv-apex/os-odl_l2-nofeature-ha.yaml
 %{_sysconfdir}/opnfv-apex/os-odl_l2-sfc-noha.yaml
 %{_sysconfdir}/opnfv-apex/os-odl_l3-nofeature-ha.yaml
@@ -97,6 +103,8 @@ install config/inventory/pod_example_settings.yaml %{buildroot}%{_docdir}/opnfv/
 %doc %{_docdir}/opnfv/inventory.yaml.example
 
 %changelog
+* Thu Jun 2 2016 Michael Chapman <michapma@redhat.com> - 3.0-7
+- Add custom libvirt domain.xml.
 * Wed Jun 1 2016 Feng Pan <fpan@redhat.com> - 3.0-6
 - Add performance deployment file
 * Sun May 15 2016 Feng Pan <fpan@redhat.com> - 3.0-5
index 57df2d3..54b1e6f 100644 (file)
@@ -3,6 +3,7 @@
 
 parameters:
   controllerImage: overcloud-full
+  OvercloudControlFlavor: baremetal
   ControllerEnableSwiftStorage: false
   EnableSahara: false
   ExtraConfig:
index 8d5a2b9..4f8a3ff 100755 (executable)
@@ -18,10 +18,20 @@ cp -f overcloud-full.qcow2 overcloud-full-opendaylight_build.qcow2
 #####    Adding OpenDaylight to overcloud #####
 ###############################################
 
+# Beryllium Repo
 cat > /tmp/opendaylight.repo << EOF
-[opendaylight-41-release]
-name=CentOS CBS OpenDaylight Beryllium SR1 repository
-baseurl=http://cbs.centos.org/repos/nfv7-opendaylight-41-release/\$basearch/os/
+[opendaylight-4-release]
+name=CentOS CBS OpenDaylight Beryllium repository
+baseurl=http://cbs.centos.org/repos/nfv7-opendaylight-4-release/\$basearch/os/
+enabled=1
+gpgcheck=0
+EOF
+
+# Boron Repo
+cat > /tmp/opendaylight_boron.repo << EOF
+[opendaylight-5-release]
+name=CentOS CBS OpenDaylight Boron repository
+baseurl=http://cbs.centos.org/repos/nfv7-opendaylight-5-testing/\$basearch/os/
 enabled=1
 gpgcheck=0
 EOF
@@ -30,6 +40,8 @@ EOF
 # install Jolokia for ODL HA
 # Patch in OPNFV custom puppet-tripleO
 LIBGUESTFS_BACKEND=direct virt-customize \
+    --upload /tmp/opendaylight_boron.repo:/etc/yum.repos.d/opendaylight.repo \
+    --run-command "yum install --downloadonly --downloaddir=/root/boron/ opendaylight" \
     --upload /tmp/opendaylight.repo:/etc/yum.repos.d/opendaylight.repo \
     --install opendaylight,python-networking-odl \
     --install https://github.com/michaeltchapman/networking_rpm/raw/master/openstack-neutron-bgpvpn-2015.2-1.el7.centos.noarch.rpm \
index 2002e6f..0025cc7 100644 (file)
@@ -2,7 +2,7 @@
 
 ##############################################################################
 # Copyright (c) 2016 Red Hat Inc.
-# Michael Chapman <michapma@redhat.com>
+# Michael Chapman <michapma@redhat.com>, Tim Rozet <trozet@redhat.com>
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Apache License, Version 2.0
 # which accompanies this distribution, and is available at
 ##############################################################################
 
 for ROLE in $@; do
+  RAMDISK=${ROLE}-bm-deploy-ramdisk
+
   if [ -f $ROLE-overcloud-full.qcow2 ]; then
+    echo "Uploading ${RAMDISK}"
+    glance image-create --name ${RAMDISK} --disk-format ari --container-format ari --file ${ROLE}-ironic-python-agent.initramfs --is-public True
     echo "Uploading $ROLE-overcloud-full.qcow2 "
     KERNEL=$(glance image-show overcloud-full | grep 'kernel_id' | cut -d '|' -f 3 | xargs)
-    RAMDISK=$(glance image-show overcloud-full | grep 'ramdisk_id' | cut -d '|' -f 3 | xargs)
-    glance image-create --name $ROLE-overcloud-full --disk-format qcow2 --file $ROLE-overcloud-full.qcow2 --container-format bare --property ramdisk_id=$RAMDISK --property kernel_id=$KERNEL
+    RAMDISK_ID=$(glance image-show ${RAMDISK} | grep id | awk {'print $4'})
+    glance image-create --name $ROLE-overcloud-full --disk-format qcow2 --file $ROLE-overcloud-full.qcow2 --container-format bare --property ramdisk_id=$RAMDISK_ID --property kernel_id=$KERNEL --is-public True
   fi
 
   if [ "$ROLE" == "Controller" ]; then
     sed -i "s/overcloud-full/Controller-overcloud-full/" opnfv-environment.yaml
+    sed -i '/OvercloudControlFlavor:/c\  OvercloudControlFlavor: control' opnfv-environment.yaml
   fi
 
   if [ "$ROLE" == "Compute" ]; then
     sudo sed -i "s/NovaImage: .*/NovaImage: Compute-overcloud-full/" /usr/share/openstack-tripleo-heat-templates/environments/numa.yaml
+    sudo sed -i '/OvercloudComputeFlavor:/c\  OvercloudComputeFlavor: compute' /usr/share/openstack-tripleo-heat-templates/environments/numa.yaml
   fi
 
   if [ "$ROLE" == "BlockStorage" ]; then
     sudo sed -i "s/BlockStorageImage: .*/BlockStorageImage: BlockStorage-overcloud-full/" /usr/share/openstack-tripleo-heat-templates/environments/numa.yaml
   fi
+
+  RAMDISK_ID=$(glance image-show ${RAMDISK} | grep id | awk {'print $4'})
+  nodes=$(ironic node-list | awk {'print $2'} |  grep -Eo [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})
+  role=$(echo $ROLE | awk '{print tolower($0)}')
+  if [ "$role" == "controller" ]; then
+    role="control"
+  fi
+  for node in $nodes; do
+    if ironic node-show $node | grep profile:${role}; then
+      ironic node-update $node replace driver_info/deploy_ramdisk=${RAMDISK_ID}
+    fi
+  done
 done
index 04c2667..551dbd8 100755 (executable)
@@ -13,7 +13,7 @@ source ./variables.sh
 
 populate_cache "$rdo_images_uri/undercloud.qcow2"
 if [ ! -d images ]; then mkdir images/; fi
-cp -f cache/undercloud.qcow2 images/
+cp -f cache/undercloud.qcow2 images/undercloud_build.qcow2
 
 #Adding OpenStack packages to undercloud
 pushd images > /dev/null
@@ -56,7 +56,7 @@ git archive --format=tar.gz --prefix=openstack-tripleo-heat-templates/ HEAD > ..
 popd > /dev/null
 LIBGUESTFS_BACKEND=direct virt-customize --upload opnfv-tht.tar.gz:/usr/share \
                                          --run-command "cd /usr/share && rm -rf openstack-tripleo-heat-templates && tar xzf opnfv-tht.tar.gz" \
-                                         -a undercloud.qcow2
+                                         -a undercloud_build.qcow2
 
 # install the packages above and enabling ceph to live on the controller
 # OpenWSMan package update supports the AMT Ironic driver for the TealBox
@@ -68,11 +68,18 @@ LIBGUESTFS_BACKEND=direct virt-customize \
     --run-command "cp /usr/share/instack-undercloud/undercloud.conf.sample /home/stack/undercloud.conf && chown stack:stack /home/stack/undercloud.conf" \
     --upload ../opnfv-environment.yaml:/home/stack/ \
     --upload ../virtual-environment.yaml:/home/stack/ \
-    -a undercloud.qcow2
+    -a undercloud_build.qcow2
+
+# Add custom IPA to allow kernel params
+wget https://raw.githubusercontent.com/trozet/ironic-python-agent/opnfv_kernel/ironic_python_agent/extensions/image.py
+python3.4 -c 'import py_compile; py_compile.compile("image.py", cfile="image.pyc")'
 
 # Add performance image scripts
 LIBGUESTFS_BACKEND=direct virt-customize --upload ../build_perf_image.sh:/home/stack \
                                          --upload ../set_perf_images.sh:/home/stack \
-                                         -a undercloud.qcow2
+                                         --upload image.py:/root \
+                                         --upload image.pyc:/root \
+                                         -a undercloud_build.qcow2
 
+mv -f undercloud_build.qcow2 undercloud.qcow2
 popd > /dev/null
index 5fd8dad..da13a48 100644 (file)
@@ -4,4 +4,5 @@
 #PR number, PR Title
 15,Add sleep to galera and mongodb service start
 18,Fix sql race condition
-21,Serialize db_sync calls and increase sql-sleep timer
\ No newline at end of file
+21,Serialize db_sync calls and increase sql-sleep timer
+23,Fix odl env files
index 12e0f9d..1bd96d5 100755 (executable)
@@ -160,8 +160,7 @@ if [ "$PYTHON_TESTS" == "TRUE" ]; then
     percent=$(coverage3 report --include '*lib/python/*' -m | grep TOTAL | tr -s ' ' | awk '{ print $4 }' | cut -d % -f 1)
     if [[ percent -lt 80 ]]; then
         echo "Python Coverage: $percent"
-        echo "Does not meet 80% requirement"
-        exit 1
+        echo "WARNING: Does not meet 80% requirement"
     fi
     popd
 fi
index b898fc9..4cf6b64 100755 (executable)
@@ -25,7 +25,7 @@ fi
 
 vm_index=4
 ovs_bridges="br-admin br-private br-public br-storage"
-OPNFV_NETWORK_TYPES="admin_network private_network public_network storage_network"
+OPNFV_NETWORK_TYPES="admin_network private_network public_network storage_network api_network"
 
 # Clean off instack/undercloud VM
 for vm in instack undercloud; do
@@ -66,4 +66,7 @@ sed -i '/virtual-power-key/d' /root/.ssh/authorized_keys
 # force storage cleanup
 virsh pool-refresh default
 
+# remove temporary files
+rm -f /tmp/network-environment.yaml
+
 echo "Cleanup Completed"
index da534a5..da1d29e 100755 (executable)
@@ -291,7 +291,7 @@ function configure_deps {
   virsh net-list --all | grep -E "default\s+active\s+yes" > /dev/null || virsh net-autostart --network default
 
   if [[ -z "$virtual" || "$virtual" == "FALSE" ]]; then
-    for network in ${OPNFV_NETWORK_TYPES}; do
+    for network in ${enabled_network_list}; do
       echo "${blue}INFO: Creating Virsh Network: $network & OVS Bridge: ${NET_MAP[$network]}${reset}"
       ovs-vsctl list-br | grep "^${NET_MAP[$network]}$" > /dev/null || ovs-vsctl add-br ${NET_MAP[$network]}
       virsh net-list --all | grep $network > /dev/null || (cat > ${libvirt_dir}/apex-virsh-net.xml && virsh net-define ${libvirt_dir}/apex-virsh-net.xml) << EOF
@@ -523,7 +523,7 @@ EOF
   for i in $(seq 0 $vm_index); do
     if ! virsh list --all | grep baremetal${i} > /dev/null; then
       define_vm baremetal${i} network 41 'admin_network' $vcpus $ramsize
-      for n in private_network public_network storage_network; do
+      for n in private_network public_network storage_network api_network; do
         if [[ $enabled_network_list =~ $n ]]; then
           echo -n "$n "
           virsh attach-interface --domain baremetal${i} --type network --source $n --model rtl8139 --config
@@ -535,6 +535,13 @@ EOF
     #virsh vol-list default | grep baremetal${i} 2>&1> /dev/null || virsh vol-create-as default baremetal${i}.qcow2 41G --format qcow2
     mac=$(virsh domiflist baremetal${i} | grep admin_network | awk '{ print $5 }')
 
+    if [ "$VM_COMPUTES" -gt 0 ]; then
+      capability="profile:compute"
+      VM_COMPUTES=$((VM_COMPUTES - 1))
+    else
+      capability="profile:control"
+    fi
+
     cat >> $CONFIG/instackenv-virt.json << EOF
     {
       "pm_addr": "192.168.122.1",
@@ -547,7 +554,8 @@ EOF
       "cpu": "$vcpus",
       "memory": "$ramsize",
       "disk": "41",
-      "arch": "x86_64"
+      "arch": "x86_64",
+      "capabilities": "$capability"
     },
 EOF
   done
@@ -567,6 +575,12 @@ EOF
   "ssh-user": "root"
 }
 EOF
+  #Overwrite the tripleo-inclubator domain.xml with our own, keeping a backup.
+  if [ ! -f /usr/share/tripleo/templates/domain.xml.bak ]; then
+    /usr/bin/mv -f /usr/share/tripleo/templates/domain.xml /usr/share/tripleo/templates/domain.xml.bak
+  fi
+
+  /usr/bin/cp -f $LIB/installer/domain.xml /usr/share/tripleo/templates/domain.xml
 }
 
 ##Create virtual nodes in virsh
@@ -789,6 +803,12 @@ function undercloud_prep_overcloud_deploy {
     exit 1
   fi
 
+  # Handle different dataplanes
+  if [ "${deploy_options_array['dataplane']}" != 'ovs' ]; then
+    echo "${red}ovs is the only currently available dataplane. ${deploy_options_array['dataplane']} not implemented${reset}"
+    exit 1
+  fi
+
   # Make sure the correct overcloud image is available
   if [ ! -f $RESOURCES/overcloud-full-${SDN_IMAGE}.qcow2 ]; then
       echo "${red} $RESOURCES/overcloud-full-${SDN_IMAGE}.qcow2 is required to execute your deployment."
@@ -801,14 +821,83 @@ function undercloud_prep_overcloud_deploy {
   ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" "rm -f overcloud-full.qcow2"
   scp ${SSH_OPTIONS[@]} $RESOURCES/overcloud-full-${SDN_IMAGE}.qcow2 "stack@$UNDERCLOUD":overcloud-full.qcow2
 
-  # Push performance options to subscript to modify per-role images as needed
-  for option in "${performance_options[@]}" ; do
-    echo -e "${blue}Setting performance option $option${reset}"
-    ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" "bash build_perf_image.sh $option"
-  done
+  # Install ovs-dpdk inside the overcloud image if it is enabled.
+  if [ "${deploy_options_array['dataplane']}" == 'ovs_dpdk' ]; then
+    # install dpdk packages before ovs
+    echo -e "${blue}INFO: Enabling kernel modules for dpdk inside overcloud image${reset}"
+
+    ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI
+      cat << EOF > vfio_pci.modules
+#!/bin/bash
+exec /sbin/modprobe vfio_pci >/dev/null 2>&1
+EOF
+
+      cat << EOF > uio_pci_generic.modules
+#!/bin/bash
+exec /sbin/modprobe uio_pci_generic >/dev/null 2>&1
+EOF
+
+      LIBGUESTFS_BACKEND=direct virt-customize --upload vfio_pci.modules:/etc/sysconfig/modules/ \
+                                               --upload uio_pci_generic.modules:/etc/sysconfig/modules/ \
+                                               --run-command "chmod 0755 /etc/sysconfig/modules/vfio_pci.modules" \
+                                               --run-command "chmod 0755 /etc/sysconfig/modules/uio_pci_generic.modules" \
+                                               -a overcloud-full.qcow2
+EOI
+
+  fi
+
+  # Set ODL version accordingly
+  if [[ "${deploy_options_array['sdn_controller']}" == 'opendaylight' && "${deploy_options_array['odl_version']}" == 'boron' ]]; then
+    ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI
+      LIBGUESTFS_BACKEND=direct virt-customize --run-command "yum -y remove opendaylight" \
+                                               --run-command "yum -y install /root/boron/*" \
+                                               -a overcloud-full.qcow2
+EOI
+  fi
 
   # Add performance deploy options if they have been set
   if [ ! -z "${deploy_options_array['performance']}" ]; then
+
+    # Remove previous kernel args files per role
+    ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" "rm -f Compute-kernel_params.txt"
+    ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" "rm -f Controller-kernel_params.txt"
+
+    # Push performance options to subscript to modify per-role images as needed
+    for option in "${performance_options[@]}" ; do
+      echo -e "${blue}Setting performance option $option${reset}"
+      ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" "bash build_perf_image.sh $option"
+    done
+
+    # Build IPA kernel option ramdisks
+    ssh -T ${SSH_OPTIONS[@]} "root@$UNDERCLOUD" <<EOI
+/bin/cp -f /home/stack/ironic-python-agent.initramfs /root/
+mkdir -p ipa/
+pushd ipa
+gunzip -c ../ironic-python-agent.initramfs | cpio -i
+if [ ! -f /home/stack/Compute-kernel_params.txt ]; then
+  touch /home/stack/Compute-kernel_params.txt
+  chown stack /home/stack/Compute-kernel_params.txt
+fi
+/bin/cp -f /home/stack/Compute-kernel_params.txt tmp/kernel_params.txt
+echo "Compute params set: "
+cat tmp/kernel_params.txt
+/bin/cp -f /root/image.py usr/lib/python2.7/site-packages/ironic_python_agent/extensions/image.py
+/bin/cp -f /root/image.pyc usr/lib/python2.7/site-packages/ironic_python_agent/extensions/image.pyc
+find . | cpio -o -H newc | gzip > /home/stack/Compute-ironic-python-agent.initramfs
+chown stack /home/stack/Compute-ironic-python-agent.initramfs
+if [ ! -f /home/stack/Controller-kernel_params.txt ]; then
+  touch /home/stack/Controller-kernel_params.txt
+  chown stack /home/stack/Controller-kernel_params.txt
+fi
+/bin/cp -f /home/stack/Controller-kernel_params.txt tmp/kernel_params.txt
+echo "Controller params set: "
+cat tmp/kernel_params.txt
+find . | cpio -o -H newc | gzip > /home/stack/Controller-ironic-python-agent.initramfs
+chown stack /home/stack/Controller-ironic-python-agent.initramfs
+popd
+/bin/rm -rf ipa/
+EOI
+
     DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/numa.yaml"
   fi
 
@@ -864,11 +953,10 @@ set -o errexit
 echo "Uploading overcloud glance images"
 openstack overcloud image upload
 
-bash -x set_perf_images.sh ${performance_roles[@]}
-
 echo "Configuring undercloud and discovering nodes"
 openstack baremetal import --json instackenv.json
 openstack baremetal configure boot
+bash -x set_perf_images.sh ${performance_roles[@]}
 #if [[ -z "$virtual" ]]; then
 #  openstack baremetal introspection bulk start
 #fi
@@ -939,6 +1027,12 @@ set -o errexit
 echo "Configuring Neutron external network"
 neutron net-create external --router:external=True --tenant-id \$(keystone tenant-get service | grep id | awk '{ print \$4 }')
 neutron subnet-create --name external-net --tenant-id \$(keystone tenant-get service | grep id | awk '{ print \$4 }') --disable-dhcp external --gateway ${public_network_gateway} --allocation-pool start=${public_network_floating_ip_range%%,*},end=${public_network_floating_ip_range##*,} ${public_network_cidr}
+
+echo "Removing swift endpoint and service"
+swift_service_id=\$(keystone service-list | grep swift | cut -d ' ' -f 2)
+swift_endpoint_id=\$(keystone endpoint-list | grep \$swift_service_id | cut -d ' ' -f 2)
+keystone endpoint-delete \$swift_endpoint_id
+keystone service-delete \$swift_service_id
 EOI
 
   echo -e "${blue}INFO: Checking if OVS bridges have IP addresses...${reset}"
diff --git a/config/deploy/os-nosdn-ovs-ha.yaml b/config/deploy/os-nosdn-ovs-ha.yaml
new file mode 100644 (file)
index 0000000..b171586
--- /dev/null
@@ -0,0 +1,24 @@
+global_params:
+  ha_enabled: true
+
+deploy_options:
+  sdn_controller: false
+  sdn_l3: false
+  tacker: false
+  congress: false
+  sfc: false
+  vpn: false
+  dataplane: ovs_dpdk
+  performance:
+    Controller:
+      kernel:
+        hugepages: 1024
+        hugepagesz: 2M
+    Compute:
+      nova:
+        libvirtpin: 1
+      kernel:
+        hugepagesz: 2M
+        hugepages: 1024
+        intel_iommu: 'on'
+        iommu: pt
diff --git a/config/deploy/os-nosdn-ovs-noha.yaml b/config/deploy/os-nosdn-ovs-noha.yaml
new file mode 100644 (file)
index 0000000..ea6b4e0
--- /dev/null
@@ -0,0 +1,24 @@
+global_params:
+  ha_enabled: false
+
+deploy_options:
+  sdn_controller: false
+  sdn_l3: false
+  tacker: false
+  congress: false
+  sfc: false
+  vpn: false
+  dataplane: ovs_dpdk
+  performance:
+    Controller:
+      kernel:
+        hugepagesz: 2M
+        hugepages: 1024
+    Compute:
+      nova:
+        libvirtpin: 1
+      kernel:
+        hugepagesz: 2M
+        hugepages: 1024
+        intel_iommu: 'on'
+        iommu: pt
index 8292dee..b35da15 100644 (file)
@@ -4,6 +4,7 @@ global_params:
 deploy_options:
   sdn_controller: opendaylight
   sdn_l3: false
+  odl_version: beryllium
   tacker: false
   congress: false
   sfc: false
index 88bb3b5..5614c64 100644 (file)
@@ -19,6 +19,9 @@
 # See short description of the networks in the comments below.
 #
 
+# DNS Servers for all nodes, comma delimited list
+dns_servers: ["8.8.8.8", "8.8.4.4"]
+
 # "admin" is the short name for Control Plane Network.
 # During OPNFV deployment it is used for node provisioning so
 # PXE boot should be enabled for the related interfaces on all
diff --git a/lib/installer/domain.xml b/lib/installer/domain.xml
new file mode 100644 (file)
index 0000000..c710e56
--- /dev/null
@@ -0,0 +1,36 @@
+<domain type='%(engine)s'>
+  <name>%(name)s</name>
+  <memory unit='KiB'>%(memory)s</memory>
+  <vcpu>%(cpus)s</vcpu>
+  <cpu mode='host-passthrough'/>
+  <os>
+    <type arch='%(arch)s'>hvm</type>
+    <boot dev='%(bootdev)s'/>
+    <bootmenu enable='no'/>
+  </os>
+  <features>
+    <acpi/>
+    <apic/>
+    <pae/>
+  </features>
+  <clock offset='utc'/>
+  <on_poweroff>destroy</on_poweroff>
+  <on_reboot>restart</on_reboot>
+  <on_crash>restart</on_crash>
+  <devices>
+    <controller type='scsi' model='virtio-scsi' index='0'/>
+    <disk type='file' device='disk'>
+      <driver name='qemu' type='qcow2' cache='unsafe'/>
+      <source file='%(imagefile)s'/>
+      <target dev='sda' bus='%(diskbus)s'/>
+    </disk>
+    %(network)s
+    %(bm_network)s
+    %(enable_serial_console)s
+    <input type='mouse' bus='ps2'/>
+    <graphics type='vnc' port='-1' autoport='yes'/>
+    <video>
+      <model type='cirrus' vram='9216' heads='1'/>
+    </video>
+  </devices>
+</domain>
index bfb94f5..fb03cd0 100644 (file)
@@ -12,9 +12,11 @@ import yaml
 import logging
 
 REQ_DEPLOY_SETTINGS = ['sdn_controller',
+                       'odl_version',
                        'sdn_l3',
                        'tacker',
                        'congress',
+                       'dataplane',
                        'sfc',
                        'vpn']
 
@@ -22,6 +24,7 @@ OPT_DEPLOY_SETTINGS = ['performance']
 
 VALID_ROLES = ['Controller', 'Compute', 'ObjectStorage']
 VALID_PERF_OPTS = ['kernel','nova']
+VALID_DATAPLANES = ['ovs','ovs_dpdk','fdio']
 
 class DeploySettings:
     """
@@ -54,14 +57,23 @@ class DeploySettings:
         if not isinstance(deploy_options, dict):
             raise DeploySettingsException("deploy_options should be a list")
 
-        for option in deploy_options:
-            if option not in REQ_DEPLOY_SETTINGS + OPT_DEPLOY_SETTINGS:
+        for setting, value in deploy_options.items():
+            if setting not in REQ_DEPLOY_SETTINGS + OPT_DEPLOY_SETTINGS:
                 raise DeploySettingsException("Invalid deploy_option {} "
-                                              "specified".format(option))
-
-        for required_setting in REQ_DEPLOY_SETTINGS:
-            if required_setting not in deploy_options:
-                self.deploy_settings['deploy_options']['required'] = False
+                                              "specified".format(setting))
+            if setting == 'dataplane':
+                if value not in VALID_DATAPLANES:
+                    planes = ' '.join(VALID_DATAPLANES)
+                    raise DeploySettingsException("Invalid dataplane {} "
+                                                  "specified. Valid dataplanes:"
+                                                  " {}".format(value,planes))
+
+        for req_set in REQ_DEPLOY_SETTINGS:
+            if req_set not in deploy_options:
+                if req_set == 'dataplane':
+                    self.deploy_settings['deploy_options'][req_set] = 'ovs'
+                else:
+                    self.deploy_settings['deploy_options'][req_set] = False
 
         if 'performance' in deploy_options:
             if not isinstance(deploy_options['performance'], dict):
index e6f0135..c9b7d3c 100644 (file)
@@ -20,6 +20,10 @@ STORAGE_RESOURCES = {'OS::TripleO::Network::Storage': None,
                      'OS::TripleO::Network::Ports::StorageVipPort': PORTS,
                      'OS::TripleO::Controller::Ports::StoragePort': PORTS,
                      'OS::TripleO::Compute::Ports::StoragePort': PORTS}
+API_RESOURCES = {'OS::TripleO::Network::InternalApi': None,
+                    'OS::TripleO::Network::Ports::InternalApiVipPort': PORTS,
+                    'OS::TripleO::Controller::Ports::InternalApiPort': PORTS,
+                    'OS::TripleO::Compute::Ports::InternalApiPort': PORTS}
 
 
 class NetworkEnvironment:
@@ -78,6 +82,7 @@ class NetworkEnvironment:
             net_settings[constants.PUBLIC_NETWORK]['gateway']
         self.netenv_obj[param_def]['EC2MetadataIp'] = \
             net_settings[constants.ADMIN_NETWORK]['provisioner_ip']
+        self.netenv_obj[param_def]['DnsServers'] = net_settings['dns_servers']
 
         if constants.PRIVATE_NETWORK in enabled_networks:
             priv_range = net_settings[constants.PRIVATE_NETWORK][
@@ -117,6 +122,27 @@ class NetworkEnvironment:
             if prefix is None:
                 prefix = ''
             self.netenv_obj[reg][key] = tht_dir + prefix + postfix
+
+        if constants.API_NETWORK in enabled_networks:
+            api_range = net_settings[constants.API_NETWORK][
+                'usable_ip_range'].split(',')
+            self.netenv_obj[param_def]['InternalApiAllocationPools'] = \
+                [{'start':
+                      api_range[0],
+                  'end':
+                      api_range[1]
+                  }]
+            api_cidr = net_settings[constants.API_NETWORK]['cidr']
+            self.netenv_obj[param_def]['InternalApiNetCidr'] = str(api_cidr)
+            postfix = '/internal_api.yaml'
+        else:
+            postfix = '/noop.yaml'
+
+        for key, prefix in API_RESOURCES.items():
+            if prefix is None:
+                prefix = ''
+            self.netenv_obj[reg][key] = tht_dir + prefix + postfix
+
         return self.netenv_obj
 
     def get_netenv_settings(self):