all: iso
.PHONY: clean
-clean: images-clean rpms-clean iso-clean
+clean: images-clean rpms-clean iso-clean tacker-clean congress-clean
.PHONY: images
images: undercloud overcloud-full overcloud-opendaylight overcloud-onos overcloud-opendaylight-sfc
pep8 ../lib/python
pep8 ../tests
+###############
+# TACKER #
+###############
+
+.PHONY: tacker-clean
+
+tacker-clean:
+ @rm -rf openstack-tacker-2015.2
+ @rm -f openstack-tacker.tar.gz
+
+openstack-tacker.tar.gz:
+ @echo "Preparing the Tacker RPM prerequisites"
+ git clone http://github.com/trozet/tacker -b SFC_colorado openstack-tacker-2015.2
+ tar czf openstack-tacker.tar.gz openstack-tacker-2015.2
+
+.PHONY: tacker-rpm
+tacker-rpm: openstack-tacker.tar.gz openstack-tacker-2015.2-1.noarch.rpm
+
+openstack-tacker-2015.2-1.noarch.rpm:
+ @echo "Building the Tacker RPM"
+ rpmbuild --clean -bb --target noarch openstack-tacker.spec -D '_topdir %(echo `pwd`)' -D '_builddir %(echo `pwd`)' -D '_sourcedir %(echo `pwd`)' -D '_rpmdir %(echo `pwd`)' -D '_specdir %(echo `pwd`)' -D '_srcrpmdir %(echo `pwd`)'
+
+###############
+# CONGRESS #
+###############
+
+.PHONY: congress-clean
+
+congress-clean:
+ @rm -rf openstack-congress-2016.1
+ @rm -f openstack-congress.tar.gz
+
+openstack-congress.tar.gz:
+ @echo "Preparing the Congress RPM prerequisites"
+ git clone http://github.com/openstack/congress -b stable/mitaka openstack-congress-2016.1
+ cd openstack-congress-2016.1 && curl -O https://radez.fedorapeople.org/openstack-congress.service
+ tar czf openstack-congress.tar.gz openstack-congress-2016.1
+
+.PHONY: congress-rpm
+congress-rpm: openstack-congress.tar.gz openstack-congress-2016.1-1.noarch.rpm
+
+openstack-congress-2016.1-1.noarch.rpm:
+ @echo "Building the Congress RPM"
+ rpmbuild --clean -bb --target noarch openstack-congress.spec -D '_topdir %(echo `pwd`)' -D '_builddir %(echo `pwd`)' -D '_sourcedir %(echo `pwd`)' -D '_rpmdir %(echo `pwd`)' -D '_specdir %(echo `pwd`)' -D '_srcrpmdir %(echo `pwd`)'
+
###############
# UNDERCLOUD #
###############
.PHONY: overcloud-full
overcloud-full: images/overcloud-full.qcow2
-images/overcloud-full.qcow2:
+images/overcloud-full.qcow2: tacker-rpm congress-rpm
@echo "Building the Apex Base Overcloud Image"
@./overcloud-full.sh
SwiftMgmtNetwork: storage
SwiftProxyNetwork: storage
TackerApiNetwork: internal_api
+ CongressApiNetwork: internal_api
HorizonNetwork: internal_api
MemcachedNetwork: internal_api
RabbitMqNetwork: internal_api
--- /dev/null
+%define debug_package %{nil}
+
+Name: openstack-congress
+Version: 2016.1
+Release: 1%{?dist}
+Summary: OpenStack servicevm/device manager
+
+Group: Applications/Internet
+License: Apache 2.0
+URL: https://wiki.openstack.org/wiki/Congress/Installation
+Source0: openstack-congress.tar.gz
+
+BuildArch: noarch
+BuildRequires: python-setuptools python2-oslo-config python2-debtcollector
+#Requires: pbr>=0.8 Paste PasteDeploy>=1.5.0 Routes>=1.12.3!=2.0 anyjson>=0.3.3 argparse
+#Requires: Babel>=1.3 eventlet>=0.16.1!=0.17.0 greenlet>=0.3.2 httplib2>=0.7.5 requests>=2.2.0!=2.4.0
+#Requires: iso8601>=0.1.9 kombu>=2.5.0 netaddr>=0.7.12 SQLAlchemy<1.1.0>=0.9.7
+#Requires: WebOb>=1.2.3 python-heatclient>=0.3.0 python-keystoneclient>=1.1.0 alembic>=0.7.2 six>=1.9.0
+#Requires: stevedore>=1.5.0 http oslo.config>=1.11.0 oslo.messaging!=1.17.0!=1.17.1>=1.16.0 oslo.rootwrap>=2.0.0 python-novaclient>=2.22.0
+
+%description
+OpenStack policy manager
+
+%prep
+#git archive --format=tar.gz --prefix=openstack-congress-%{version}/ HEAD > openstack-congress.tar.gz
+
+%setup -q
+
+
+%build
+#rm requirements.txt
+#/usr/bin/python setup.py build
+
+
+%install
+/usr/bin/python setup.py install --prefix=%{buildroot} --install-lib=%{buildroot}/usr/lib/python2.7/site-packages
+
+install -d -m 755 %{buildroot}/var/log/congress/
+install -d -m 755 %{buildroot}/etc/congress/snapshot/
+
+install etc/api-paste.ini %{buildroot}/etc/congress/api-paste.ini
+install etc/policy.json %{buildroot}/etc/congress/policy.json
+tox -egenconfig
+install etc/congress.conf.sample %{buildroot}/etc/congress/congress.conf
+
+install -p -D -m 644 openstack-congress.service %{buildroot}%{_unitdir}/openstack-congress.service
+install -d -m 755 %{buildroot}%{_sharedstatedir}/congress
+
+%pre
+getent group congress >/dev/null || groupadd -r congress
+if ! getent passwd congress >/dev/null; then
+ useradd -r -g congress -G congress,nobody -d %{_sharedstatedir}/congress -s /sbin/nologin -c "OpenStack Congress Daemon" congress
+fi
+exit 0
+
+%post
+%systemd_post openstack-congress
+
+%preun
+%systemd_preun openstack-congress
+
+%postun
+%systemd_postun_with_restart openstack-congress
+
+%files
+
+%config /etc/congress/congress.conf
+/etc/congress/policy.json
+/etc/congress/api-paste.ini
+/bin/congress-server
+/bin/congress-db-manage
+%{_unitdir}/openstack-congress.service
+/usr/lib/python2.7/site-packages/congress/*
+/usr/lib/python2.7/site-packages/congress-*
+/usr/lib/python2.7/site-packages/congress_tempest_tests/*
+/usr/lib/python2.7/site-packages/antlr3runtime/*
+%dir %attr(0750, congress, root) %{_localstatedir}/log/congress
+
+%changelog
+
--- /dev/null
+%define debug_package %{nil}
+
+Name: openstack-tacker
+Version: 2015.2
+Release: 1
+Summary: OpenStack servicevm/device manager
+
+Group: Applications/Internet
+License: Apache 2.0
+URL: https://wiki.openstack.org/wiki/Tacker/Installation
+Source0: openstack-tacker.tar.gz
+
+BuildArch: noarch
+BuildRequires: python-setuptools
+#Requires: pbr>=0.8 Paste PasteDeploy>=1.5.0 Routes>=1.12.3!=2.0 anyjson>=0.3.3 argparse
+#Requires: Babel>=1.3 eventlet>=0.16.1!=0.17.0 greenlet>=0.3.2 httplib2>=0.7.5 requests>=2.2.0!=2.4.0
+#Requires: iso8601>=0.1.9 kombu>=2.5.0 netaddr>=0.7.12 SQLAlchemy<1.1.0>=0.9.7
+#Requires: WebOb>=1.2.3 python-heatclient>=0.3.0 python-keystoneclient>=1.1.0 alembic>=0.7.2 six>=1.9.0
+#Requires: stevedore>=1.5.0 http oslo.config>=1.11.0 oslo.messaging!=1.17.0!=1.17.1>=1.16.0 oslo.rootwrap>=2.0.0 python-novaclient>=2.22.0
+
+%description
+OpenStack servicevm/device manager
+
+%prep
+%setup -q
+
+
+%build
+rm requirements.txt
+#/usr/bin/python setup.py build
+
+
+%install
+/usr/bin/python setup.py install --prefix=%{buildroot} --install-lib=%{buildroot}/usr/lib/python2.7/site-packages
+#remove tests
+rm -rf %{buildroot}/usr/lib/python2.7/site-packages/tacker/tests
+
+install -p -D -m 644 apex/systemd/openstack-tacker.service %{buildroot}%{_unitdir}/openstack-tacker.service
+
+install -d -m 755 %{buildroot}%{_localstatedir}/cache/tacker
+install -d -m 755 %{buildroot}%{_sharedstatedir}/tacker
+install -d -m 755 %{buildroot}%{_localstatedir}/log/tacker
+
+%pre
+getent group tacker >/dev/null || groupadd -r tacker
+if ! getent passwd tacker >/dev/null; then
+ useradd -r -g tacker -G tacker,nobody -d %{_sharedstatedir}/tacker -s /sbin/nologin -c "OpenStack Tacker Daemon" tacker
+fi
+exit 0
+
+%post
+%systemd_post openstack-tacker
+
+%preun
+%systemd_preun openstack-tacker
+
+%postun
+%systemd_postun_with_restart openstack-tacker
+
+%files
+/bin/tacker-server
+/bin/tacker-db-manage
+/bin/tacker-rootwrap
+/etc/init.d/tacker-server
+%{_unitdir}/openstack-tacker.service
+/etc/rootwrap.d/servicevm.filters
+%config(noreplace) %attr(-, root, tacker) %{_sysconfdir}/tacker/*
+/usr/lib/python2.7/site-packages/tacker/*
+/usr/lib/python2.7/site-packages/tacker-*
+%dir %attr(0750, tacker, root) %{_localstatedir}/cache/tacker
+%dir %attr(0750, tacker, root) %{_sharedstatedir}/tacker
+%dir %attr(0750, tacker, root) %{_localstatedir}/log/tacker
+
+%changelog
ControllerEnableSwiftStorage: false
# CloudDomain:
EnableSahara: false
- EnableTacker: false
+ EnableTacker: true
ExtraConfig:
tripleo::ringbuilder::build_ring: False
+ nova::nova_public_key:
+ type: 'ssh-rsa'
+ replace_public_key:
+ nova::nova_private_key:
+ type: 'ssh-rsa'
+ replace_private_key:
nova::policy::policies:
nova-os_compute_api:servers:show:host_status:
key: 'os_compute_api:servers:show:host_status'
source ./functions.sh
populate_cache "$rdo_images_uri/overcloud-full.tar"
-populate_cache "$openstack_congress"
if [ ! -d images/ ]; then mkdir images; fi
tar -xf cache/overcloud-full.tar -C images/
# tar up the congress puppet module
rm -rf puppet-congress
-git clone https://github.com/radez/puppet-congress
+git clone -b stable/mitaka https://github.com/radez/puppet-congress
pushd puppet-congress > /dev/null
git archive --format=tar.gz --prefix=congress/ origin/stable/mitaka > ../puppet-congress.tar.gz
popd > /dev/null
# tar up the tacker puppet module
rm -rf puppet-tacker
-git clone https://github.com/radez/puppet-tacker
+# TODO move this back to radez puppet-tacker after PR is accepted
+git clone -b fix_db_sync https://github.com/trozet/puppet-tacker
pushd puppet-tacker > /dev/null
git archive --format=tar.gz --prefix=tacker/ HEAD > ../puppet-tacker.tar.gz
popd > /dev/null
--run-command "yum remove -y qemu-system-x86" \
--upload ../os-net-config.tar.gz:/usr/lib/python2.7/site-packages \
--run-command "cd /usr/lib/python2.7/site-packages/ && rm -rf os_net_config && tar xzf os-net-config.tar.gz" \
- --install "$openstack_congress" \
+ --upload ../noarch/openstack-congress-2016.1-1.el7.centos.noarch.rpm:/root/ \
+ --install /root/openstack-congress-2016.1-1.el7.centos.noarch.rpm \
--install "python2-congressclient" \
--upload puppet-congress.tar.gz:/etc/puppet/modules/ \
--run-command "cd /etc/puppet/modules/ && tar xzf puppet-congress.tar.gz" \
--upload vsperf.tar.gz:/var/opt \
--run-command "cd /var/opt && tar xzf vsperf.tar.gz" \
--upload /tmp/tacker.repo:/etc/yum.repos.d/ \
- --install "openstack-tacker,python-tackerclient" \
+ --install "python-tackerclient" \
+ --upload ../noarch/openstack-tacker-2015.2-1.noarch.rpm:/root/ \
+ --install /root/openstack-tacker-2015.2-1.noarch.rpm \
--upload puppet-tacker.tar.gz:/etc/puppet/modules/ \
--run-command "cd /etc/puppet/modules/ && tar xzf puppet-tacker.tar.gz" \
+ --run-command "yum install -y https://dl.dropboxusercontent.com/u/7079970/rabbitmq-server-3.6.3-5.el7ost.noarch.rpm" \
-a overcloud-full_build.qcow2
mv -f overcloud-full_build.qcow2 overcloud-full.qcow2
#######################################
# upgrade ovs into ovs 2.5.90 with NSH function
-curl -L -O ${onos_ovs_uri}/package_ovs_rpm_new.tar.gz
-tar -xzf package_ovs_rpm_new.tar.gz
+curl -L -O ${onos_ovs_uri}/package_ovs_rpm2.tar.gz
+tar -xzf package_ovs_rpm2.tar.gz
LIBGUESTFS_BACKEND=direct virt-customize --upload ${ovs_kmod_rpm_name}:/root/ \
--run-command "yum install -y /root/${ovs_kmod_rpm_name}" \
--upload ${ovs_rpm_name}:/root/ \
# upgrade ovs into ovs 2.5.90 with NSH function
if ! [[ -f "$ovs_rpm_name" && -f "$ovs_kmod_rpm_name" ]]; then
- curl -L -O ${onos_ovs_uri}/package_ovs_rpm_new.tar.gz
- tar -xzf package_ovs_rpm_new.tar.gz
+ curl -L -O ${onos_ovs_uri}/package_ovs_rpm2.tar.gz
+ tar -xzf package_ovs_rpm2.tar.gz
fi
LIBGUESTFS_BACKEND=direct virt-customize --upload ${ovs_kmod_rpm_name}:/root/ \
onos_release_uri=https://downloads.onosproject.org/nightly/
onos_release_file=onos-1.6.0-rc2.tar.gz
onos_jdk_uri=https://www.dropbox.com/s/qyujpib8zyhzeev
-onos_ovs_uri=https://www.dropbox.com/s/7rfr9l2qz3a36cc
-openstack_congress=https://radez.fedorapeople.org/openstack-congress-2016.1-1.fc24.noarch.rpm
-doctor_driver=https://raw.githubusercontent.com/muroi/congress/doctor-poc/congress/datasources/doctor_driver.py
+onos_ovs_uri=https://www.dropbox.com/s/2dyd8zyt2l6p586
+doctor_driver=https://raw.githubusercontent.com/openstack/congress/master/congress/datasources/doctor_driver.py
dpdk_uri_base=http://artifacts.opnfv.org/ovsnfv
dpdk_rpms=(
'ovs4opnfv-32930523-openvswitch-2.5.90-0.12032.gitc61e93d6.1.el7.centos.x86_64.rpm'
)
-ovs_rpm_name=openvswitch-2.5.90-0.11974.gitc4623bb8.1.el7.centos.x86_64.rpm
+ovs_rpm_name=openvswitch-2.5.90-1.el7.centos.x86_64.rpm
ovs_kmod_rpm_name=openvswitch-kmod-2.5.90-1.el7.centos.x86_64.rpm
40,Move mongo to step 1
42, congress typo
44,Fixes nova host/ip bug
+43,Add support for live migration and resize
+41,Add pcs cleanup exec
+50,Fix rabbitmq ipv6 config
\ No newline at end of file
# Make sure jinja2 is installed
easy_install-3.4 jinja2
+
+# TODO(cgoncalves): remove once congress RPM is downloaded from upstream
+easy_install-3.4 tox
sdn_controller: false
sdn_l3: false
tacker: true
- congress: false
+ congress: true
sfc: false
vpn: false
sdn_controller: false
sdn_l3: false
tacker: true
- congress: false
+ congress: true
sfc: false
vpn: false
sdn_controller: false
sdn_l3: false
tacker: true
- congress: false
+ congress: true
sfc: false
vpn: false
dataplane: ovs_dpdk
sdn_controller: false
sdn_l3: false
tacker: true
- congress: false
+ congress: true
sfc: false
vpn: false
dataplane: ovs_dpdk
sdn_controller: false
sdn_l3: false
tacker: true
- congress: false
+ congress: true
sfc: false
vpn: false
vsperf: false
sdn_controller: opencontrail
sdn_l3: false
tacker: true
- congress: false
+ congress: true
sfc: false
vpn: false
sdn_controller: opendaylight
sdn_l3: false
tacker: false
- congress: false
+ congress: true
sfc: false
vpn: true
sdn_l3: false
odl_version: boron
tacker: true
- congress: false
+ congress: true
sfc: false
vpn: false
vpp: true
sdn_l3: false
odl_version: boron
tacker: true
- congress: false
+ congress: true
sfc: false
vpn: false
vpp: true
sdn_l3: false
odl_version: beryllium
tacker: true
- congress: false
+ congress: true
sfc: false
vpn: false
sdn_controller: opendaylight
sdn_l3: false
tacker: true
- congress: false
+ congress: true
sfc: false
vpn: true
sdn_l3: false
odl_version: boron
tacker: true
- congress: false
+ congress: true
sfc: true
vpn: false
sdn_controller: opendaylight
sdn_l3: true
tacker: true
- congress: false
+ congress: true
sfc: false
vpn: false
sdn_controller: onos
sdn_l3: true
tacker: true
- congress: false
+ congress: true
sfc: false
vpn: false
sdn_controller: onos
sdn_l3: true
tacker: true
- congress: false
+ congress: true
sfc: true
vpn: false
# network is used as the OpenStack management network which
# carries e.g. communication between its internal components.
# This network must be IPv4 currently.
+domain_name: 'opnfvapex.com'
admin_network:
enabled: true
network_type: bridged
bridged_interface: ''
bond_interfaces: ''
+ compute_interface: nic1
+ controller_interface: nic1
vlan: native
usable_ip_range: 192.0.2.11,192.0.2.99
gateway: 192.0.2.1
private_network:
enabled: true
cidr: 11.0.0.0/24
+ vlan: native
+ cidr: 11.0.0.0/24
+ compute_interface: nic2
+ controller_interface: nic2
+
# "public" network is used for external connectivity.
# The external network provides Internet access for virtual
enabled: true
network_type: ''
bridged_interface: ''
+ compute_interface: nic3
+ controller_interface: nic3
+ vlan: native
cidr: 2001:db8::/64
gateway: 2001:db8::1
provisioner_ip: 2001:db8::1
storage_network:
enabled: true
cidr: fd00:fd00:fd00:2000::/64
+ vlan: native
+ compute_interface: nic4
+ controller_interface: nic4
+
# "api" is an optional network used by internal openstack api services.
api_network:
enabled: true
cidr: fd00:fd00:fd00:4000::/64
+ vlan: native
+ compute_interface: nic5
+ controller_interface: nic5
#public_network:
# enabled: true #If disabled, public_network traffic will collapse to admin network
}
##find ip of interface
-##params: interface name
+##params: interface name, address family
function find_ip {
+ local af
if [[ -z "$1" ]]; then
return 1
fi
+ if [[ -z "$2" ]]; then
+ af=4
+ else
+ af=$2
+ fi
- python3.4 -B $LIB/python/apex_python_utils.py find-ip -i $1
+ python3.4 -B $LIB/python/apex_python_utils.py find-ip -i $1 -af $af
}
##attach interface to OVS and set the network config correctly
return 1
fi
}
+
+##tests if overcloud nodes have external connectivity
+#params:none
+function test_overcloud_connectivity {
+ for node in $(undercloud_connect stack ". stackrc && nova list" | grep -Eo "controller-[0-9]+|compute-[0-9]+" | tr -d -) ; do
+ if ! overcloud_connect $node "ping -c 2 $ping_site > /dev/null"; then
+ echo "${blue}Node ${node} was unable to ping site ${ping_site}${reset}"
+ return 1
+ fi
+ done
+ echo "${blue}Overcloud external connectivity OK${reset}"
+}
+
LIBGUESTFS_BACKEND=direct virt-customize -a overcloud-full.qcow2 --root-password password:opnfvapex
fi
-if [ "${deploy_options_array['tacker']}" == 'True' ]; then
- sed -i '/EnableTacker/\\c EnableTacker: true' opnfv-environment.yaml
+if [ "${deploy_options_array['tacker']}" == 'False' ]; then
+ sed -i '/EnableTacker:/c\ EnableTacker: false' opnfv-environment.yaml
fi
+# Create a key for use by nova for live migration
+echo "Creating nova SSH key for nova resize support"
+ssh-keygen -f nova_id_rsa -b 1024 -P ""
+public_key=\'\$(cat nova_id_rsa.pub | cut -d ' ' -f 2)\'
+sed -i "s#replace_public_key:#key: \$public_key#g" opnfv-environment.yaml
+python -c 'open("opnfv-environment-new.yaml", "w").write((open("opnfv-environment.yaml").read().replace("replace_private_key:", "key: \"" + "".join(open("nova_id_rsa").readlines()).replace("\\n","\\\n") + "\"")))'
+mv -f opnfv-environment-new.yaml opnfv-environment.yaml
+
source stackrc
set -o errexit
# Workaround for APEX-207 where sometimes swift proxy is down
##Post configuration after install
##params: none
function configure_post_install {
- local opnfv_attach_networks ovs_ip ip_range net_cidr tmp_ip
+ local opnfv_attach_networks ovs_ip ip_range net_cidr tmp_ip af public_network_ipv6
+ public_network_ipv6=False
opnfv_attach_networks="admin_network public_network"
echo -e "${blue}INFO: Post Install Configuration Running...${reset}"
eval "ip_range=\${${network}_usable_ip_range}"
ovs_ip=${ip_range##*,}
eval "net_cidr=\${${network}_cidr}"
+ if [[ $ovs_ip =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
+ af=4
+ else
+ af=6
+ if [ "$network" == "public_network" ]; then
+ public_network_ipv6=True
+ fi
+ #enable ipv6 on bridge interface
+ echo 0 > /proc/sys/net/ipv6/conf/${NET_MAP[$network]}/disable_ipv6
+ fi
sudo ip addr add ${ovs_ip}/${net_cidr##*/} dev ${NET_MAP[$network]}
sudo ip link set up ${NET_MAP[$network]}
- tmp_ip=$(find_ip ${NET_MAP[$network]})
+ tmp_ip=$(find_ip ${NET_MAP[$network]} $af)
if [ -n "$tmp_ip" ]; then
echo -e "${blue}INFO: OVS Bridge ${NET_MAP[$network]} IP set: ${tmp_ip}${reset}"
continue
else
neutron net-create external --router:external=True --tenant-id \$(openstack project show service | grep id | awk '{ print \$4 }')
fi
-neutron subnet-create --name external-net --tenant-id \$(openstack project show 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}
+if [ "$public_network_ipv6" == "True" ]; then
+ neutron subnet-create --name external-net --tenant-id \$(openstack project show service | grep id | awk '{ print \$4 }') external --ip_version 6 --ipv6_ra_mode slaac --ipv6_address_mode slaac --gateway ${public_network_gateway} --allocation-pool start=${public_network_floating_ip_range%%,*},end=${public_network_floating_ip_range##*,} ${public_network_cidr}
+else
+ neutron subnet-create --name external-net --tenant-id \$(openstack project show 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}
+fi
echo "Removing sahara endpoint and service"
sahara_service_id=\$(openstack service list | grep sahara | cut -d ' ' -f 2)
EOI
# for virtual, we NAT public network through Undercloud
- if [ "$virtual" == "TRUE" ]; then
+ # same goes for baremetal if only jumphost has external connectivity
+ if [ "$virtual" == "TRUE" ] || ! test_overcloud_connectivity && [ "$public_network_ipv6" != "True" ]; then
if ! configure_undercloud_nat ${public_network_cidr}; then
echo -e "${red}ERROR: Unable to NAT undercloud with external net: ${public_network_cidr}${reset}"
exit 1
echo "Undercloud IP: $UNDERCLOUD, please connect by doing 'opnfv-util undercloud'"
echo "Overcloud dashboard available at http://\$(heat output-show overcloud PublicVip | sed 's/"//g')/dashboard"
EOI
+
+if [[ "$ha_enabled" == 'True' ]]; then
+ if [ "$debug" == "TRUE" ]; then
+ echo "${blue}\nChecking pacemaker service status\n${reset}"
+ fi
+ overcloud_connect "controller0" "for i in \$(sudo pcs status | grep '^* ' | cut -d ' ' -f 2 | cut -d '_' -f 1 | uniq); do echo \"WARNING: Service: \$i not running\"; done"
+fi
}
- introspection_range
- public_network:
- provisioner_ip
- - floating_ip
+ - floating_ip_range
- gateway
"""
if network == constants.ADMIN_NETWORK:
elif network == constants.PUBLIC_NETWORK:
self._config_ip(network, 'provisioner_ip', 1)
self._config_ip_range(network=network,
- setting='floating_ip',
+ setting='floating_ip_range',
end_offset=2, count=20)
self._config_gateway(network)
fi
for i in $(seq 0 $vm_index); do
+ if [ "$VM_COMPUTES" -gt 0 ]; then
+ capability="profile:compute"
+ VM_COMPUTES=$((VM_COMPUTES - 1))
+ else
+ capability="profile:control"
+ if [[ "${deploy_options_array['sdn_controller']}" == 'opendaylight' && "$ha_enabled" == "True" && "$ramsize" -lt 10240 ]]; then
+ echo "WARN: RAM per controller too low. OpenDaylight specified in HA deployment requires at least 10GB"
+ echo "INFO: Increasing RAM per controller to 10GB"
+ ramsize=10240
+ fi
+ fi
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 api_network; do
#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",