From 8d4d3535489516106a82f509729af5a58bf615a0 Mon Sep 17 00:00:00 2001 From: Ranjeet R Date: Thu, 17 Nov 2016 08:51:08 -0800 Subject: [PATCH] Fixes: Launching of VMs getting failed In Kilo, the neutron auth_url should be mentined as admin_auth_url. It is changed to auth_url in Liberty and later releases. Because of this, the auth_url is poitning to the default value localhost:5000. Fix is to set the neutron auth_url based on the release. Change-Id: Iff257f7a01920f5e720d7a5e1bc700850c754a03 Closes-Bug: 1642005 --- .../compute/scripts/compute-server-setup.sh | 33 ++++++++++++++----- .../openstack/scripts/nova-server-setup.sh | 30 ++++++++++++----- 2 files changed, 47 insertions(+), 16 deletions(-) diff --git a/contrail_provisioning/compute/scripts/compute-server-setup.sh b/contrail_provisioning/compute/scripts/compute-server-setup.sh index bf48b951..8c5c1e0a 100755 --- a/contrail_provisioning/compute/scripts/compute-server-setup.sh +++ b/contrail_provisioning/compute/scripts/compute-server-setup.sh @@ -25,6 +25,7 @@ if [ -f /etc/redhat-release ]; then OS_URL_TIMEOUT=neutron_url_timeout fi rpm_mitaka_or_higher=$(is_installed_rpm_greater openstack-nova-compute "1 13.0.0 1.el7" && echo 1 || echo 0) + rpm_liberty_or_higher=$(is_installed_rpm_greater openstack-nova-compute "1 12.0.0 1.el7" && echo 1 || echo 0) rpm_kilo_or_higher=$(is_installed_rpm_greater openstack-nova-compute "0 2015.1.1 1.el7" && echo 1 || echo 0) rpm_juno_or_higher=$(is_installed_rpm_greater openstack-nova-compute "0 2014.2.2 1.el7" && echo 1 || echo 0) fi @@ -103,6 +104,7 @@ if [ $CONTROLLER != $COMPUTE ] ; then fi kilo_or_above=0 + liberty_or_above=0 mitaka_or_above=0 # for juno and kilo versions if [ "$nova_compute_top_ver" -eq "1" ]; then @@ -117,6 +119,10 @@ if [ $CONTROLLER != $COMPUTE ] ; then if [ $? -eq 0 ]; then kilo_or_above=1 fi + dpkg --compare-versions $nova_compute_version_without_epoch ge 12.0.1 + if [ $? -eq 0 ]; then + liberty_or_above=1 + fi #For mitaka, the nova-compute version is 13.y.z dpkg --compare-versions $nova_compute_version_without_epoch ge 13.0.0 if [ $? -eq 0 ]; then @@ -125,19 +131,24 @@ if [ $CONTROLLER != $COMPUTE ] ; then fi if [ $kilo_or_above -eq 1 ] ; then + if [ $liberty_or_above -eq 1 ] ; then + NEUTRON_AUTH_URL_FIELD=auth_url + else + NEUTRON_AUTH_URL_FIELD=admin_auth_url + fi if [ "$CONTRAIL_INTERNAL_VIP" != "none" ]; then openstack-config --set /etc/nova/nova.conf neutron url ${QUANTUM_PROTOCOL}://$CONTRAIL_INTERNAL_VIP:9696/ if [ "$INTERNAL_VIP" != "none" ]; then - openstack-config --set /etc/nova/nova.conf neutron auth_url ${AUTH_PROTOCOL}://$INTERNAL_VIP:35357/$KEYSTONE_VERSION/ + openstack-config --set /etc/nova/nova.conf neutron $NEUTRON_AUTH_URL_FIELD ${AUTH_PROTOCOL}://$INTERNAL_VIP:35357/$KEYSTONE_VERSION/ else - openstack-config --set /etc/nova/nova.conf neutron auth_url ${AUTH_PROTOCOL}://$CONTROLLER:35357/$KEYSTONE_VERSION/ + openstack-config --set /etc/nova/nova.conf neutron $NEUTRON_AUTH_URL_FIELD ${AUTH_PROTOCOL}://$CONTROLLER:35357/$KEYSTONE_VERSION/ fi elif [ "$INTERNAL_VIP" != "none" ]; then openstack-config --set /etc/nova/nova.conf neutron url ${QUANTUM_PROTOCOL}://$INTERNAL_VIP:9696/ - openstack-config --set /etc/nova/nova.conf neutron auth_url ${AUTH_PROTOCOL}://$INTERNAL_VIP:35357/$KEYSTONE_VERSION/ + openstack-config --set /etc/nova/nova.conf neutron $NEUTRON_AUTH_URL_FIELD ${AUTH_PROTOCOL}://$INTERNAL_VIP:35357/$KEYSTONE_VERSION/ else openstack-config --set /etc/nova/nova.conf neutron url ${QUANTUM_PROTOCOL}://$QUANTUM:9696/ - openstack-config --set /etc/nova/nova.conf neutron auth_url ${AUTH_PROTOCOL}://$CONTROLLER:35357/$KEYSTONE_VERSION/ + openstack-config --set /etc/nova/nova.conf neutron $NEUTRON_AUTH_URL_FIELD ${AUTH_PROTOCOL}://$CONTROLLER:35357/$KEYSTONE_VERSION/ fi openstack-config --set /etc/nova/nova.conf neutron admin_username $OS_NET openstack-config --set /etc/nova/nova.conf neutron admin_password $ADMIN_TOKEN @@ -171,21 +182,27 @@ if [ $CONTROLLER != $COMPUTE ] ; then openstack-config --set /etc/nova/nova.conf DEFAULT network_api_class nova_contrail_vif.contrailvif.ContrailNetworkAPI fi + if [ $rpm_liberty_or_higher -eq 1 ] ; then + NEUTRON_AUTH_URL_FIELD=auth_url + else + NEUTRON_AUTH_URL_FIELD=admin_auth_url + fi + if [[ $rpm_kilo_or_higher -eq 1 ]]; then # Neutron section in nova.conf if [ "$CONTRAIL_INTERNAL_VIP" != "none" ]; then openstack-config --set /etc/nova/nova.conf neutron url ${QUANTUM_PROTOCOL}://$CONTRAIL_INTERNAL_VIP:9696/ if [ "$INTERNAL_VIP" != "none" ]; then - openstack-config --set /etc/nova/nova.conf neutron auth_url ${AUTH_PROTOCOL}://$INTERNAL_VIP:35357/$KEYSTONE_VERSION/ + openstack-config --set /etc/nova/nova.conf neutron $NEUTRON_AUTH_URL_FIELD ${AUTH_PROTOCOL}://$INTERNAL_VIP:35357/$KEYSTONE_VERSION/ else - openstack-config --set /etc/nova/nova.conf neutron auth_url ${AUTH_PROTOCOL}://$CONTROLLER:35357/$KEYSTONE_VERSION/ + openstack-config --set /etc/nova/nova.conf neutron $NEUTRON_AUTH_URL_FIELD ${AUTH_PROTOCOL}://$CONTROLLER:35357/$KEYSTONE_VERSION/ fi elif [ "$INTERNAL_VIP" != "none" ]; then openstack-config --set /etc/nova/nova.conf neutron url ${QUANTUM_PROTOCOL}://$INTERNAL_VIP:9696/ - openstack-config --set /etc/nova/nova.conf neutron auth_url ${AUTH_PROTOCOL}://$INTERNAL_VIP:35357/$KEYSTONE_VERSION/ + openstack-config --set /etc/nova/nova.conf neutron $NEUTRON_AUTH_URL_FIELD ${AUTH_PROTOCOL}://$INTERNAL_VIP:35357/$KEYSTONE_VERSION/ else openstack-config --set /etc/nova/nova.conf neutron url ${QUANTUM_PROTOCOL}://$QUANTUM:9696/ - openstack-config --set /etc/nova/nova.conf neutron auth_url ${AUTH_PROTOCOL}://$CONTROLLER:35357/$KEYSTONE_VERSION/ + openstack-config --set /etc/nova/nova.conf neutron $NEUTRON_AUTH_URL_FIELD ${AUTH_PROTOCOL}://$CONTROLLER:35357/$KEYSTONE_VERSION/ fi openstack-config --set /etc/nova/nova.conf DEFAULT network_api_class nova.network.neutronv2.api.API openstack-config --set /etc/nova/nova.conf neutron admin_tenant_name $SERVICE_TENANT_NAME diff --git a/contrail_provisioning/openstack/scripts/nova-server-setup.sh b/contrail_provisioning/openstack/scripts/nova-server-setup.sh index 913fa482..d46b1d69 100755 --- a/contrail_provisioning/openstack/scripts/nova-server-setup.sh +++ b/contrail_provisioning/openstack/scripts/nova-server-setup.sh @@ -306,20 +306,28 @@ if [ $is_ubuntu -eq 1 ] ; then fi fi openstack-config --set /etc/nova/nova.conf DEFAULT ec2_private_dns_show_ip False + if [[ $nova_api_version == *"2015"* ]] || [[ $is_liberty_or_above -eq 1 ]]; then + # In Kilo, the neutron auth URL should be configured as admin_auth_url. + # In releases > Kilo, it is changed to auth_url. + if [ $is_liberty_or_above -eq 1 ]; then + NEUTRON_AUTH_URL_FIELD=auth_url + else + NEUTRON_AUTH_URL_FIELD=admin_auth_url + fi if [ "$CONTRAIL_INTERNAL_VIP" != "none" ]; then openstack-config --set /etc/nova/nova.conf neutron url ${QUANTUM_PROTOCOL}://$CONTRAIL_INTERNAL_VIP:9696/ if [ "$INTERNAL_VIP" != "none" ]; then - openstack-config --set /etc/nova/nova.conf neutron auth_url ${AUTH_PROTOCOL}://$INTERNAL_VIP:35357/$KEYSTONE_VERSION/ + openstack-config --set /etc/nova/nova.conf neutron $NEUTRON_AUTH_URL_FIELD ${AUTH_PROTOCOL}://$INTERNAL_VIP:35357/$KEYSTONE_VERSION/ else - openstack-config --set /etc/nova/nova.conf neutron auth_url ${AUTH_PROTOCOL}://$CONTROLLER:35357/$KEYSTONE_VERSION/ + openstack-config --set /etc/nova/nova.conf neutron $NEUTRON_AUTH_URL_FIELD ${AUTH_PROTOCOL}://$CONTROLLER:35357/$KEYSTONE_VERSION/ fi elif [ "$INTERNAL_VIP" != "none" ]; then openstack-config --set /etc/nova/nova.conf neutron url ${QUANTUM_PROTOCOL}://$INTERNAL_VIP:9696/ - openstack-config --set /etc/nova/nova.conf neutron auth_url ${AUTH_PROTOCOL}://$INTERNAL_VIP:35357/$KEYSTONE_VERSION/ + openstack-config --set /etc/nova/nova.conf neutron $NEUTRON_AUTH_URL_FIELD ${AUTH_PROTOCOL}://$INTERNAL_VIP:35357/$KEYSTONE_VERSION/ else openstack-config --set /etc/nova/nova.conf neutron url ${QUANTUM_PROTOCOL}://$QUANTUM:9696/ - openstack-config --set /etc/nova/nova.conf neutron auth_url ${AUTH_PROTOCOL}://$CONTROLLER:35357/$KEYSTONE_VERSION/ + openstack-config --set /etc/nova/nova.conf neutron $NEUTRON_AUTH_URL_FIELD ${AUTH_PROTOCOL}://$CONTROLLER:35357/$KEYSTONE_VERSION/ fi openstack-config --set /etc/nova/nova.conf neutron admin_username $OS_NET @@ -362,6 +370,12 @@ else if [[ $rpm_kilo_or_higher -eq 1 ]]; then openstack-config --set /etc/nova/nova.conf DEFAULT network_api_class nova.network.neutronv2.api.API + if [[ $rpm_liberty_or_higher -eq 1 ]]; then + NEUTRON_AUTH_URL_FIELD=auth_url + else + NEUTRON_AUTH_URL_FIELD=admin_auth_url + fi + # Neutron section in nova.conf if [ $AUTH_PROTOCOL == "https" ]; then openstack-config --set /etc/nova/nova.conf neutron insecure True @@ -369,16 +383,16 @@ else if [ "$CONTRAIL_INTERNAL_VIP" != "none" ]; then openstack-config --set /etc/nova/nova.conf neutron url ${QUANTUM_PROTOCOL}://$CONTRAIL_INTERNAL_VIP:9696/ if [ "$INTERNAL_VIP" != "none" ]; then - openstack-config --set /etc/nova/nova.conf neutron auth_url ${AUTH_PROTOCOL}://$INTERNAL_VIP:35357/$KEYSTONE_VERSION/ + openstack-config --set /etc/nova/nova.conf neutron $NEUTRON_AUTH_URL_FIELD ${AUTH_PROTOCOL}://$INTERNAL_VIP:35357/$KEYSTONE_VERSION/ else - openstack-config --set /etc/nova/nova.conf neutron auth_url ${AUTH_PROTOCOL}://$CONTROLLER:35357/$KEYSTONE_VERSION/ + openstack-config --set /etc/nova/nova.conf neutron $NEUTRON_AUTH_URL_FIELD ${AUTH_PROTOCOL}://$CONTROLLER:35357/$KEYSTONE_VERSION/ fi elif [ "$INTERNAL_VIP" != "none" ]; then openstack-config --set /etc/nova/nova.conf neutron url ${QUANTUM_PROTOCOL}://$INTERNAL_VIP:9696/ - openstack-config --set /etc/nova/nova.conf neutron auth_url ${AUTH_PROTOCOL}://$INTERNAL_VIP:35357/$KEYSTONE_VERSION/ + openstack-config --set /etc/nova/nova.conf neutron $NEUTRON_AUTH_URL_FIELD ${AUTH_PROTOCOL}://$INTERNAL_VIP:35357/$KEYSTONE_VERSION/ else openstack-config --set /etc/nova/nova.conf neutron url ${QUANTUM_PROTOCOL}://$QUANTUM:9696/ - openstack-config --set /etc/nova/nova.conf neutron auth_url ${AUTH_PROTOCOL}://$CONTROLLER:35357/$KEYSTONE_VERSION/ + openstack-config --set /etc/nova/nova.conf neutron $NEUTRON_AUTH_URL_FIELD ${AUTH_PROTOCOL}://$CONTROLLER:35357/$KEYSTONE_VERSION/ fi openstack-config --set /etc/nova/nova.conf neutron admin_tenant_name $SERVICE_TENANT_NAME openstack-config --set /etc/nova/nova.conf neutron auth_strategy keystone