set -e
declare -i CNT
-rdo_images_uri=https://ci.centos.org/artifacts/rdo/images/liberty/delorean/stable
+#rdo_images_uri=https://repos.fedorapeople.org/repos/openstack-m/rdo-images-centos-liberty-opnfv
+rdo_images_uri=file:///stable-images
+onos_artifacts_uri=file:///stable-images/onos
vm_index=4
RDO_RELEASE=liberty
cat << 'EOF' | sudo tee /etc/yum.repos.d/opendaylight.repo
[opendaylight]
name=OpenDaylight $releasever - $basearch
-baseurl=http://cbs.centos.org/repos/nfv7-opendaylight-3-candidate/$basearch/os/
+baseurl=http://cbs.centos.org/repos/nfv7-opendaylight-33-release/$basearch/os/
enabled=1
gpgcheck=0
EOF
#if not found then dnsmasq may be using leasefile-ro
instack_mac=$(ssh -T ${SSH_OPTIONS[@]} stack@localhost "virsh domiflist instack" | grep default | \
grep -Eo "[0-9a-f\]+:[0-9a-f\]+:[0-9a-f\]+:[0-9a-f\]+:[0-9a-f\]+:[0-9a-f\]+")
- UNDERCLOUD=$(arp -e | grep ${instack_mac} | awk {'print $1'})
+ UNDERCLOUD=$(/usr/sbin/arp -e | grep ${instack_mac} | awk {'print $1'})
if [ -z "$UNDERCLOUD" ]; then
echo "\n\nNever got IP for Instack. Can Not Continue."
exit 1
+ else
+ echo -e "${blue}\rInstack VM has IP $UNDERCLOUD${reset}"
fi
else
echo -e "${blue}\rInstack VM has IP $UNDERCLOUD${reset}"
#if [ $i == "undercloud.qcow2" ]; then
### there's a problem with the Content-Length reported by the centos artifacts
### server so using wget for it until a resolution is figured out.
- wget -nv -O stack/$i $rdo_images_uri/$i
+ #wget -nv -O stack/$i $rdo_images_uri/$i
#else
- # curl $rdo_images_uri/$i -o stack/$i --verbose --silent --location
+ curl $rdo_images_uri/$i -o stack/$i
#fi
fi
# only untar the tar files
PACKAGES+=",openstack-ceilometer-central,openstack-ceilometer-polling,openstack-ceilometer-collector,"
PACKAGES+=",openstack-heat-api-cloudwatch,openstack-heat-engine,openstack-heat-common,openstack-ceilometer-notification"
PACKAGES+=",hiera,puppet,memcached,keepalived,mariadb,mariadb-server,rabbitmq-server,python-pbr,python-proliantutils"
-
-LIBGUESTFS_BACKEND=direct virt-customize --install $PACKAGES -a instack.qcow2
+PACKAGES+=",ceph-common"
+
+# install the packages above and enabling ceph to live on the controller
+LIBGUESTFS_BACKEND=direct virt-customize --install $PACKAGES \
+ --run-command "sed -i '/ControllerEnableCephStorage/c\\ ControllerEnableCephStorage: true' /usr/share/openstack-tripleo-heat-templates/environments/storage-environment.yaml" \
+ --run-command "sed -i '/ \$enable_ceph = /c\\ \$enable_ceph = true' /usr/share/openstack-tripleo-heat-templates/puppet/manifests/overcloud_controller_pacemaker.pp" \
+ --run-command "sed -i '/ \$enable_ceph = /c\\ \$enable_ceph = true' /usr/share/openstack-tripleo-heat-templates/puppet/manifests/overcloud_controller.pp" \
+ -a instack.qcow2
popd
# make a copy of the cached overcloud-full image
cp overcloud-full.qcow2 overcloud-full-odl.qcow2
-# remove unnessesary packages and install nessesary packages
+# remove unnecessary packages and install necessary packages
LIBGUESTFS_BACKEND=direct virt-customize --run-command "yum remove -y openstack-neutron-openvswitch" \
+ --install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm \
--upload /etc/yum.repos.d/opendaylight.repo:/etc/yum.repos.d/opendaylight.repo \
- --install opendaylight,python-networking-odl -a overcloud-full-odl.qcow2
+ --install opendaylight,python-networking-odl,ceph \
+ -a overcloud-full-odl.qcow2
## WORK AROUND
## when OpenDaylight lands in upstream RDO manager this can be removed
# upload the opendaylight puppet module
rm -rf puppet-opendaylight
-git clone https://github.com/dfarrell07/puppet-opendaylight
+git clone -b 2.2.0 https://github.com/dfarrell07/puppet-opendaylight
pushd puppet-opendaylight
git archive --format=tar.gz --prefix=opendaylight/ HEAD > ../puppet-opendaylight.tar.gz
popd
--run-command "cd /etc/puppet/modules/ && tar xzf puppet-opendaylight.tar.gz" -a overcloud-full-odl.qcow2
# Patch in OpenDaylight installation and configuration
-LIBGUESTFS_BACKEND=direct virt-customize --upload ../opendaylight-tripleo-heat-templates.patch:/tmp \
- --run-command "cd /usr/share/openstack-tripleo-heat-templates/ && patch -Np1 < /tmp/opendaylight-tripleo-heat-templates.patch" \
+LIBGUESTFS_BACKEND=direct virt-customize --upload ../opnfv-tripleo-heat-templates.patch:/tmp \
+ --run-command "cd /usr/share/openstack-tripleo-heat-templates/ && patch -Np1 < /tmp/opnfv-tripleo-heat-templates.patch" \
-a instack.qcow2
LIBGUESTFS_BACKEND=direct virt-customize --upload ../opendaylight-puppet-neutron.patch:/tmp \
--run-command "cd /etc/puppet/modules/neutron && patch -Np1 < /tmp/opendaylight-puppet-neutron.patch" \
-a overcloud-full-odl.qcow2
+# REMOVE ME AFTER Brahmaputra
+LIBGUESTFS_BACKEND=direct virt-customize --upload ../puppet-neutron-force-metadata.patch:/tmp \
+ --run-command "cd /etc/puppet/modules/neutron && patch -Np1 < /tmp/puppet-neutron-force-metadata.patch" \
+ -a overcloud-full-odl.qcow2
+## END WORK AROUND
+popd
+
+## WORK AROUND
+## when ONOS lands in upstream OPNFV artifacts this can be removed
+
+# upload the onos puppet module
+pushd stack
+
+rm -rf puppet-onos
+git clone https://github.com/bobzhouHW/puppet-onos.git
+pushd puppet-onos
+# download jdk, onos and maven dependancy packages.
+pushd files
+curl ${onos_artifacts_uri}/jdk-8u51-linux-x64.tar.gz -o ./jdk-8u51-linux-x64.tar.gz
+curl ${onos_artifacts_uri}/onos-1.3.0.tar.gz -o ./onos-1.3.0.tar.gz
+curl ${onos_artifacts_uri}/repository.tar -o ./repository.tar
+popd
+popd
+mv puppet-onos onos
+tar -czf puppet-onos.tar.gz onos
+LIBGUESTFS_BACKEND=direct virt-customize --upload puppet-onos.tar.gz:/etc/puppet/modules/ \
+ --run-command "cd /etc/puppet/modules/ && tar xzf puppet-onos.tar.gz" -a overcloud-full-odl.qcow2
+
## END WORK AROUND
popd