From a93682ee0371d95baf0d65136c05144c68ad321b Mon Sep 17 00:00:00 2001 From: seth Nimbosa Date: Wed, 9 Apr 2014 22:11:58 +0800 Subject: [PATCH 1/5] update stack.sh to use openstack-icehouse repos updated to use openstack-icehouse repos instead of havana release --- stack.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/stack.sh b/stack.sh index 983a6bf022..9614f9b1f2 100755 --- a/stack.sh +++ b/stack.sh @@ -216,9 +216,9 @@ if [[ "$os_VENDOR" =~ (Debian) ]]; then fi if [[ is_fedora && $DISTRO =~ (rhel6) ]]; then - # Installing Open vSwitch on RHEL6 requires enabling the RDO repo. - RHEL6_RDO_REPO_RPM=${RHEL6_RDO_REPO_RPM:-"http://rdo.fedorapeople.org/openstack-havana/rdo-release-havana.rpm"} - RHEL6_RDO_REPO_ID=${RHEL6_RDO_REPO_ID:-"openstack-havana"} + # Installing Open vSwitch on RHEL6 requires enabling the RDO repo, openstack-icehouse. + RHEL6_RDO_REPO_RPM=${RHEL6_RDO_REPO_RPM:-"http://rdo.fedorapeople.org/openstack-icehouse/rdo-release-icehouse.rpm"} + RHEL6_RDO_REPO_ID=${RHEL6_RDO_REPO_ID:-"openstack-icehouse"} if ! sudo yum repolist enabled $RHEL6_RDO_REPO_ID | grep -q $RHEL6_RDO_REPO_ID; then echo "RDO repo not detected; installing" yum_install $RHEL6_RDO_REPO_RPM || \ From 746dceeb68e6bd2bee4b06fc5744821ba801642c Mon Sep 17 00:00:00 2001 From: Paul Michali Date: Wed, 2 Apr 2014 19:12:22 +0000 Subject: [PATCH 2/5] Devstack support for Neutron VPNaaS Includes two enhancements to support VPNaaS and allow other vendor implementation support. Goal is to provide a solution for VPN .ini files until a more general solution can be defined to handle all reference and vendor .ini files. First, the /opt/stack/neutron/etc/vpn_agent.ini file is copied to /etc/neutron, to allow the selected device drivers for agent to be specified. Both reference and vendor implementations can be uncommented in this file, prior to stacking. Second, to allow vendor VPN implementations to provide an .ini file to the agent at start-up time, an environment variable is defined and can be set in the localrc to specify one or more .ini files. The desire is NOT to include vendor settings in the global vpn_agent.ini. Change-Id: Ia8250db660216a5296cb6ba2af1538b8c90d187c Closes-Bug: 1301552 --- lib/neutron | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/neutron b/lib/neutron index 546b17a3e2..02dcaf60d8 100644 --- a/lib/neutron +++ b/lib/neutron @@ -127,6 +127,10 @@ Q_L3_ROUTER_PER_TENANT=${Q_L3_ROUTER_PER_TENANT:-False} # See _configure_neutron_common() for details about setting it up declare -a Q_PLUGIN_EXTRA_CONF_FILES +# List of (optional) config files for VPN device drivers to use with +# the neutron-q-vpn agent +declare -a Q_VPN_EXTRA_CONF_FILES + Q_RR_CONF_FILE=$NEUTRON_CONF_DIR/rootwrap.conf if [[ "$Q_USE_ROOTWRAP" == "False" ]]; then @@ -495,7 +499,7 @@ function start_neutron_agents { L3_CONF_FILES="$L3_CONF_FILES --config-file $Q_FWAAS_CONF_FILE" fi if is_service_enabled q-vpn; then - screen_it q-vpn "cd $NEUTRON_DIR && $AGENT_VPN_BINARY $L3_CONF_FILES" + screen_it q-vpn "cd $NEUTRON_DIR && $AGENT_VPN_BINARY $VPN_CONF_FILES" else screen_it q-l3 "cd $NEUTRON_DIR && python $AGENT_L3_BINARY $L3_CONF_FILES" fi @@ -658,6 +662,7 @@ function _configure_neutron_dhcp_agent { } function _configure_neutron_l3_agent { + local cfg_file Q_L3_ENABLED=True # for l3-agent, only use per tenant router if we have namespaces Q_L3_ROUTER_PER_TENANT=$Q_USE_NAMESPACE @@ -669,6 +674,15 @@ function _configure_neutron_l3_agent { Q_FWAAS_CONF_FILE=$NEUTRON_CONF_DIR/fwaas_driver.ini fi + if is_service_enabled q-vpn; then + Q_VPN_CONF_FILE=$NEUTRON_CONF_DIR/vpn_agent.ini + cp $NEUTRON_DIR/etc/vpn_agent.ini $Q_VPN_CONF_FILE + VPN_CONF_FILES="--config-file $NEUTRON_CONF --config-file=$Q_L3_CONF_FILE --config-file=$Q_VPN_CONF_FILE" + for cfg_file in ${Q_VPN_EXTRA_CONF_FILES[@]}; do + VPN_CONF_FILES+=" --config-file $cfg_file" + done + fi + cp $NEUTRON_DIR/etc/l3_agent.ini $Q_L3_CONF_FILE iniset $Q_L3_CONF_FILE DEFAULT verbose True From 867651049a07a087e619a17d05f569188032f7e0 Mon Sep 17 00:00:00 2001 From: Adam Gandelman Date: Mon, 14 Apr 2014 11:57:13 -0700 Subject: [PATCH 3/5] Remove sshd reconfig from lib/ironic The sshd reconfiguration to listen on port 2222 provides no benefit and complicates deployment on some systems. This removes the reconfiguration and instead just confirms SSH connectivity. Default SSH host and ports are left configurable, but the port now reflects the default 22. Change-Id: Iaf7c71854c3741a505a79037ffb8c86ace74fc27 --- lib/ironic | 25 ++----------------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/lib/ironic b/lib/ironic index 50c0fb6e7f..1c83eaf514 100644 --- a/lib/ironic +++ b/lib/ironic @@ -49,7 +49,7 @@ IRONIC_SSH_KEY_FILENAME=${IRONIC_SSH_KEY_FILENAME:-ironic_key} IRONIC_KEY_FILE=$IRONIC_SSH_KEY_DIR/$IRONIC_SSH_KEY_FILENAME IRONIC_SSH_VIRT_TYPE=${IRONIC_SSH_VIRT_TYPE:-virsh} IRONIC_TFTPBOOT_DIR=${IRONIC_TFTPBOOT_DIR:-$IRONIC_DATA_DIR/tftpboot} -IRONIC_VM_SSH_PORT=${IRONIC_VM_SSH_PORT:-2222} +IRONIC_VM_SSH_PORT=${IRONIC_VM_SSH_PORT:-22} IRONIC_VM_SSH_ADDRESS=${IRONIC_VM_SSH_ADDRESS:-$HOST_IP} IRONIC_VM_COUNT=${IRONIC_VM_COUNT:-1} IRONIC_VM_SPECS_CPU=${IRONIC_VM_SPECS_CPU:-1} @@ -423,31 +423,10 @@ function ironic_ssh_check { fi } -function configure_ironic_sshd { - # Ensure sshd server accepts connections from localhost only - - SSH_CONFIG=/etc/ssh/sshd_config - HOST_PORT=$IRONIC_VM_SSH_ADDRESS:$IRONIC_VM_SSH_PORT - if ! sudo grep ListenAddress $SSH_CONFIG | grep $HOST_PORT; then - echo "ListenAddress $HOST_PORT" | sudo tee -a $SSH_CONFIG - fi - - SSH_SERVICE_NAME=sshd - if is_ubuntu; then - SSH_SERVICE_NAME=ssh - fi - - restart_service $SSH_SERVICE_NAME - # to ensure ssh service is up and running - sleep 3 - ironic_ssh_check $IRONIC_SSH_KEY_DIR/$IRONIC_SSH_KEY_FILENAME $IRONIC_VM_SSH_ADDRESS $IRONIC_VM_SSH_PORT $IRONIC_SSH_USERNAME 10 - -} - function configure_ironic_auxiliary { configure_ironic_dirs configure_ironic_ssh_keypair - configure_ironic_sshd + ironic_ssh_check $IRONIC_SSH_KEY_DIR/$IRONIC_SSH_KEY_FILENAME $IRONIC_VM_SSH_ADDRESS $IRONIC_VM_SSH_PORT $IRONIC_SSH_USERNAME 10 } # build deploy kernel+ramdisk, then upload them to glance From f894c2ab805f9dfc0dfdd3668ccd3a83ee4eb9f2 Mon Sep 17 00:00:00 2001 From: Yves-Gwenael Bourhis Date: Wed, 16 Apr 2014 13:37:46 +0200 Subject: [PATCH 4/5] Do not modify rsyslog files if rsyslog is not used. Swift was missing an 'if [[ $SYSLOG != "False" ]]' statement which is used by other services, and therefor failed with a 'No such file or directory' error when 'SYSLOG=False' was set in localrc. Closes-Bug: 1308461 Change-Id: I8655a955ebb322516d92bee418b93d4cc23bdc5c --- lib/swift | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/swift b/lib/swift index 3e183ff257..6db779a58f 100644 --- a/lib/swift +++ b/lib/swift @@ -453,10 +453,13 @@ EOF rm -rf ${swift_log_dir} mkdir -p ${swift_log_dir}/hourly sudo chown -R ${STACK_USER}:adm ${swift_log_dir} - sed "s,%SWIFT_LOGDIR%,${swift_log_dir}," $FILES/swift/rsyslog.conf | sudo \ - tee /etc/rsyslog.d/10-swift.conf - # restart syslog to take the changes - sudo killall -HUP rsyslogd + + if [[ $SYSLOG != "False" ]]; then + sed "s,%SWIFT_LOGDIR%,${swift_log_dir}," $FILES/swift/rsyslog.conf | sudo \ + tee /etc/rsyslog.d/10-swift.conf + # restart syslog to take the changes + sudo killall -HUP rsyslogd + fi if is_apache_enabled_service swift; then _config_swift_apache_wsgi From 3c1befa3c8eee23416a18f4d4a38f224adcaa462 Mon Sep 17 00:00:00 2001 From: nimbosa Date: Sat, 19 Apr 2014 17:09:28 +0800 Subject: [PATCH 5/5] manual local merge to stable/icehouse --- .gitreview | 1 + HACKING.rst | 4 ++-- exercises/client-env.sh | 2 +- extras.d/80-opendaylight.sh | 1 + files/apts/nova | 1 + files/rpms-suse/opendaylight | 1 - lib/cinder_plugins/nfs | 3 +-- lib/databases/mysql | 42 +++++++++++++++--------------------- lib/heat | 1 - lib/ironic | 42 +++++++++++++++++++++++------------- lib/neutron | 2 +- lib/neutron_plugins/ovs_base | 3 +-- lib/nova | 4 ++-- lib/opendaylight | 18 ++++++++++++++-- lib/sahara | 5 +++++ lib/tempest | 28 ++++++++++++++++++------ run_tests.sh | 2 +- stack.sh | 6 +++--- stackrc | 31 +++++++++++++------------- 19 files changed, 117 insertions(+), 80 deletions(-) diff --git a/.gitreview b/.gitreview index 570d31a987..73836600e0 100644 --- a/.gitreview +++ b/.gitreview @@ -2,3 +2,4 @@ host=review.openstack.org port=29418 project=openstack-dev/devstack.git +defaultbranch=stable/icehouse \ No newline at end of file diff --git a/HACKING.rst b/HACKING.rst index 5c15537915..83455e3638 100644 --- a/HACKING.rst +++ b/HACKING.rst @@ -20,7 +20,7 @@ in `How To Contribute`__ in the OpenStack wiki. `DevStack's LaunchPad project`_ contains the usual links for blueprints, bugs, tec. __ contribute_ -.. _contribute: http://wiki.openstack.org/HowToContribute. +.. _contribute: http://wiki.openstack.org/HowToContribute __ lp_ .. _lp: https://launchpad.net/~devstack @@ -231,7 +231,7 @@ These scripts are executed serially by ``exercise.sh`` in testing situations. Bash Style Guidelines ~~~~~~~~~~~~~~~~~~~~~ -Devstack defines a bash set of best practices for maintaining large +DevStack defines a bash set of best practices for maintaining large collections of bash scripts. These should be considered as part of the review process. diff --git a/exercises/client-env.sh b/exercises/client-env.sh index d955e4d1e1..4e8259cd06 100755 --- a/exercises/client-env.sh +++ b/exercises/client-env.sh @@ -64,7 +64,7 @@ if [[ "$ENABLED_SERVICES" =~ "key" ]]; then STATUS_KEYSTONE="Skipped" else echo -e "\nTest Keystone" - if keystone catalog --service identity; then + if openstack endpoint show identity; then STATUS_KEYSTONE="Succeeded" else STATUS_KEYSTONE="Failed" diff --git a/extras.d/80-opendaylight.sh b/extras.d/80-opendaylight.sh index 57b43288e0..c3c85fc963 100644 --- a/extras.d/80-opendaylight.sh +++ b/extras.d/80-opendaylight.sh @@ -14,6 +14,7 @@ if is_service_enabled odl-server; then configure_opendaylight init_opendaylight elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then + configure_ml2_odl # This has to start before Neutron start_opendaylight elif [[ "$1" == "stack" && "$2" == "post-extra" ]]; then diff --git a/files/apts/nova b/files/apts/nova index 69d0a35f4d..38c99c735b 100644 --- a/files/apts/nova +++ b/files/apts/nova @@ -15,6 +15,7 @@ sudo qemu-kvm # NOPRIME qemu # dist:wheezy,jessie NOPRIME libvirt-bin # NOPRIME +pm-utils libjs-jquery-tablesorter # Needed for coverage html reports vlan curl diff --git a/files/rpms-suse/opendaylight b/files/rpms-suse/opendaylight index d6c7146331..f7fafffae1 100644 --- a/files/rpms-suse/opendaylight +++ b/files/rpms-suse/opendaylight @@ -1,4 +1,3 @@ openvswitch # NOPRIME -openvswitch-controller # NOPRIME openvswitch-switch # NOPRIME diff --git a/lib/cinder_plugins/nfs b/lib/cinder_plugins/nfs index 2d9d875245..5f4cc5369a 100644 --- a/lib/cinder_plugins/nfs +++ b/lib/cinder_plugins/nfs @@ -30,8 +30,7 @@ set +o xtrace function configure_cinder_driver { iniset $CINDER_CONF DEFAULT volume_driver "cinder.volume.drivers.nfs.NfsDriver" iniset $CINDER_CONF DEFAULT nfs_shares_config "$CINDER_CONF_DIR/nfs_shares.conf" - echo "$CINDER_NFS_SERVERPATH" | sudo tee "$CINDER_CONF_DIR/nfs_shares.conf" - sudo chmod 660 $CINDER_CONF_DIR/nfs_shares.conf + echo "$CINDER_NFS_SERVERPATH" | tee "$CINDER_CONF_DIR/nfs_shares.conf" } # Restore xtrace diff --git a/lib/databases/mysql b/lib/databases/mysql index 7a0145ae1b..0a96cf8af4 100644 --- a/lib/databases/mysql +++ b/lib/databases/mysql @@ -83,36 +83,28 @@ function configure_database_mysql { # Now update ``my.cnf`` for some local needs and restart the mysql service - # Change ‘bind-address’ from localhost (127.0.0.1) to any (0.0.0.0) - sudo sed -i '/^bind-address/s/127.0.0.1/0.0.0.0/g' $MY_CONF + # Change ‘bind-address’ from localhost (127.0.0.1) to any (0.0.0.0) and + # set default db type to InnoDB + sudo bash -c "source $TOP_DIR/functions && \ + iniset $MY_CONF mysqld bind-address 0.0.0.0 && \ + iniset $MY_CONF mysqld default-storage-engine InnoDB" - # Set default db type to InnoDB - if sudo grep -q "default-storage-engine" $MY_CONF; then - # Change it - sudo bash -c "source $TOP_DIR/functions; iniset $MY_CONF mysqld default-storage-engine InnoDB" - else - # Add it - sudo sed -i -e "/^\[mysqld\]/ a \ -default-storage-engine = InnoDB" $MY_CONF - fi if [[ "$DATABASE_QUERY_LOGGING" == "True" ]]; then echo_summary "Enabling MySQL query logging" - # Turn on slow query log - sudo sed -i '/log.slow.queries/d' $MY_CONF - sudo sed -i -e "/^\[mysqld\]/ a \ - log-slow-queries = /var/log/mysql/mysql-slow.log" $MY_CONF - - # Log all queries (any query taking longer than 0 seconds) - sudo sed -i '/long.query.time/d' $MY_CONF - sudo sed -i -e "/^\[mysqld\]/ a \ - long-query-time = 0" $MY_CONF - - # Log all non-indexed queries - sudo sed -i '/log.queries.not.using.indexes/d' $MY_CONF - sudo sed -i -e "/^\[mysqld\]/ a \ - log-queries-not-using-indexes" $MY_CONF + sudo sed -e '/log.slow.queries/d' \ + -e '/long.query.time/d' \ + -e '/log.queries.not.using.indexes/d' \ + -i $MY_CONF + + # Turn on slow query log, log all queries (any query taking longer than + # 0 seconds) and log all non-indexed queries + sudo bash -c "source $TOP_DIR/functions && \ + iniset $MY_CONF mysqld slow-query-log 1 && \ + iniset $MY_CONF mysqld slow-query-log-file /var/log/mysql/mysql-slow.log && \ + iniset $MY_CONF mysqld long-query-time 0 && \ + iniset $MY_CONF mysqld log-queries-not-using-indexes 1" fi diff --git a/lib/heat b/lib/heat index 26d58e0d7c..fe75ec9dc4 100644 --- a/lib/heat +++ b/lib/heat @@ -119,7 +119,6 @@ function configure_heat { # ec2authtoken iniset $HEAT_CONF ec2authtoken auth_uri $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v2.0 - iniset $HEAT_CONF ec2authtoken keystone_ec2_uri $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v2.0/ec2tokens # paste_deploy [[ "$HEAT_STANDALONE" = "True" ]] && iniset $HEAT_CONF paste_deploy flavor standalone diff --git a/lib/ironic b/lib/ironic index 979420f2cb..ec9447db14 100644 --- a/lib/ironic +++ b/lib/ironic @@ -42,6 +42,7 @@ IRONIC_POLICY_JSON=$IRONIC_CONF_DIR/policy.json IRONIC_SCRIPTS_DIR=${IRONIC_SCRIPTS_DIR:-$TOP_DIR/tools/ironic/scripts} IRONIC_TEMPLATES_DIR=${IRONIC_TEMPLATES_DIR:-$TOP_DIR/tools/ironic/templates} IRONIC_BAREMETAL_BASIC_OPS=$(trueorfalse False $IRONIC_BAREMETAL_BASIC_OPS) +IRONIC_DRIVERS_WHITELIST=${IRONIC_DRIVERS_WHITELIST:-fake,pxe_ssh} IRONIC_SSH_USERNAME=${IRONIC_SSH_USERNAME:-`whoami`} IRONIC_SSH_KEY_DIR=${IRONIC_SSH_KEY_DIR:-$IRONIC_DATA_DIR/ssh_keys} IRONIC_SSH_KEY_FILENAME=${IRONIC_SSH_KEY_FILENAME:-ironic_key} @@ -169,8 +170,18 @@ function configure_ironic_api { function configure_ironic_conductor { cp $IRONIC_DIR/etc/ironic/rootwrap.conf $IRONIC_ROOTWRAP_CONF cp -r $IRONIC_DIR/etc/ironic/rootwrap.d $IRONIC_CONF_DIR + IRONIC_ROOTWRAP=$(get_rootwrap_location ironic) + ROOTWRAP_ISUDOER_CMD="$IRONIC_ROOTWRAP $IRONIC_CONF_DIR/rootwrap.conf *" + + # Set up the rootwrap sudoers for ironic + TEMPFILE=`mktemp` + echo "$STACK_USER ALL=(root) NOPASSWD: $ROOTWRAP_ISUDOER_CMD" >$TEMPFILE + chmod 0440 $TEMPFILE + sudo chown root:root $TEMPFILE + sudo mv $TEMPFILE /etc/sudoers.d/ironic-rootwrap iniset $IRONIC_CONF_FILE DEFAULT rootwrap_config $IRONIC_ROOTWRAP_CONF + iniset $IRONIC_CONF_FILE DEFAULT drivers_whitelist $IRONIC_DRIVERS_WHITELIST iniset $IRONIC_CONF_FILE conductor api_url http://$HOST_IP:6385 iniset $IRONIC_CONF_FILE pxe tftp_server $HOST_IP iniset $IRONIC_CONF_FILE pxe tftp_root $IRONIC_TFTPBOOT_DIR @@ -315,8 +326,13 @@ function enroll_vms { IRONIC_NET_ID=$(neutron net-list | grep private | get_field 1) local idx=0 - # work around; need to know what netns neutron uses for private network - neutron port-create private + # work around; need to know what netns neutron uses for private network. + # Without knowing how to interconnect the networks, PXE won't work properly + # for fake baremetal instances. The network should be configured prior all + # the instances operation. If we don't do this, the first port creation + # only happens in the middle of fake baremetal instance's spawning by nova, + # so we'll end up with unbootable fake baremetal VM due to broken PXE. + PORT_ID=$(neutron port-create private | grep " id " | get_field 2) while read MAC; do @@ -357,6 +373,10 @@ function enroll_vms { sudo ovs-vsctl -- --if-exists del-port ovs-tap1 -- add-port br-int ovs-tap1 tag=$TAG_ID sudo ovs-vsctl -- --if-exists del-port brbm-tap1 -- add-port $IRONIC_VM_NETWORK_BRIDGE brbm-tap1 + + # Remove the port needed only for workaround. For additional info read the + # comment at the beginning of this function + neutron port-delete $PORT_ID } function configure_tftpd { @@ -496,19 +516,6 @@ function prepare_baremetal_basic_ops { fi done - SCREEN_NAME=${SCREEN_NAME:-stack} - SERVICE_DIR=${SERVICE_DIR:-${DEST}/status} - - # stop all nova services - stop_nova || true - - # remove any nova services failure status - find $SERVICE_DIR/$SCREEN_NAME -name 'n-*.failure' -exec rm -f '{}' \; - - # start them again - start_nova_api - start_nova - TOKEN=$(keystone token-get | grep ' id ' | get_field 2) die_if_not_set $LINENO TOKEN "Keystone fail to get token" @@ -520,6 +527,11 @@ function prepare_baremetal_basic_ops { create_bridge_and_vms enroll_vms configure_tftpd + + # restart nova-compute to ensure its resource tracking is up to + # date with newly enrolled nodes + stop_nova_compute || true + start_nova_compute } function cleanup_baremetal_basic_ops { diff --git a/lib/neutron b/lib/neutron index 546b17a3e2..b7c9464f3d 100644 --- a/lib/neutron +++ b/lib/neutron @@ -765,7 +765,7 @@ function _configure_neutron_service { iniset $NEUTRON_CONF DEFAULT notify_nova_on_port_status_change $Q_NOTIFY_NOVA_PORT_STATUS_CHANGE iniset $NEUTRON_CONF DEFAULT notify_nova_on_port_data_changes $Q_NOTIFY_NOVA_ON_PORT_DATA_CHANGES iniset $NEUTRON_CONF DEFAULT nova_url "$NOVA_SERVICE_PROTOCOL://$NOVA_SERVICE_HOST:$NOVA_SERVICE_PORT/v2" - iniset $NEUTRON_CONF DEFAULT nova_admin_username nova $NOVA_USER + iniset $NEUTRON_CONF DEFAULT nova_admin_username nova iniset $NEUTRON_CONF DEFAULT nova_admin_password $SERVICE_PASSWORD ADMIN_TENANT_ID=$(openstack project list | awk "/ service / { print \$2 }") iniset $NEUTRON_CONF DEFAULT nova_admin_tenant_id $ADMIN_TENANT_ID diff --git a/lib/neutron_plugins/ovs_base b/lib/neutron_plugins/ovs_base index ae7f815aba..1e293a187e 100644 --- a/lib/neutron_plugins/ovs_base +++ b/lib/neutron_plugins/ovs_base @@ -44,9 +44,8 @@ function _neutron_ovs_base_install_agent_packages { # Ensure that the service is started restart_service openvswitch elif is_suse; then - install_package openvswitch + install_package openvswitch-switch restart_service openvswitch-switch - restart_service openvswitch-controller fi } diff --git a/lib/nova b/lib/nova index 5cc94ec676..47e4afcf24 100644 --- a/lib/nova +++ b/lib/nova @@ -438,8 +438,8 @@ function create_nova_conf { iniset $NOVA_CONF DEFAULT instance_name_template "${INSTANCE_NAME_PREFIX}%08x" iniset $NOVA_CONF osapi_v3 enabled "True" - if is_fedora; then - # nova defaults to /usr/local/bin, but fedora pip likes to + if is_fedora || is_suse; then + # nova defaults to /usr/local/bin, but fedora and suse pip like to # install things in /usr/bin iniset $NOVA_CONF DEFAULT bindir "/usr/bin" fi diff --git a/lib/opendaylight b/lib/opendaylight index 1022e2c061..be3db6e685 100644 --- a/lib/opendaylight +++ b/lib/opendaylight @@ -35,6 +35,15 @@ source $TOP_DIR/lib/neutron_plugins/ovs_base # ODL_MGR_IP= ODL_MGR_IP=${ODL_MGR_IP:-$SERVICE_HOST} +# The ODL endpoint URL +ODL_ENDPOINT=${ODL_ENDPOINT:-http://${ODL_MGR_IP}:8080/controller/nb/v2/neutron} + +# The ODL username +ODL_USERNAME=${ODL_USERNAME:-admin} + +# The ODL password +ODL_PASSWORD=${ODL_PASSWORD:-admin} + # ODL_DIR=$DEST/opendaylight @@ -80,6 +89,12 @@ function configure_opendaylight { echo "ovsdb.of.version=1.3" >> $ODL_DIR/opendaylight/configuration/config.ini } +function configure_ml2_odl { + populate_ml2_config /$Q_PLUGIN_CONF_FILE ml2_odl url=$ODL_ENDPOINT + populate_ml2_config /$Q_PLUGIN_CONF_FILE ml2_odl username=$ODL_USERNAME + populate_ml2_config /$Q_PLUGIN_CONF_FILE ml2_odl password=$ODL_PASSWORD +} + # init_opendaylight() - Initialize databases, etc. function init_opendaylight { # clean up from previous (possibly aborted) runs @@ -117,9 +132,8 @@ function install_opendaylight-compute { # Ensure that the service is started restart_service openvswitch elif is_suse; then - install_package openvswitch + install_package openvswitch-switch restart_service openvswitch-switch - restart_service openvswitch-controller fi } diff --git a/lib/sahara b/lib/sahara index 1ff0cf9c26..cb867105ba 100644 --- a/lib/sahara +++ b/lib/sahara @@ -142,6 +142,11 @@ function configure_sahara { iniset $SAHARA_CONF_FILE DEFAULT use_syslog $SYSLOG + # Format logging + if [ "$LOG_COLOR" == "True" ] && [ "$SYSLOG" == "False" ]; then + setup_colorized_logging $SAHARA_CONF_FILE DEFAULT + fi + recreate_database sahara utf8 $SAHARA_BIN_DIR/sahara-db-manage --config-file $SAHARA_CONF_FILE upgrade head } diff --git a/lib/tempest b/lib/tempest index 0b5f332672..512269579d 100644 --- a/lib/tempest +++ b/lib/tempest @@ -153,6 +153,7 @@ function configure_tempest { # user and tenant are set up... ADMIN_USERNAME=${ADMIN_USERNAME:-admin} ADMIN_TENANT_NAME=${ADMIN_TENANT_NAME:-admin} + ADMIN_DOMAIN_NAME=${ADMIN_DOMAIN_NAME:-Default} TEMPEST_USERNAME=${TEMPEST_USERNAME:-demo} TEMPEST_TENANT_NAME=${TEMPEST_TENANT_NAME:-demo} ALT_USERNAME=${ALT_USERNAME:-alt_demo} @@ -267,6 +268,7 @@ function configure_tempest { iniset $TEMPEST_CONFIG identity admin_username $ADMIN_USERNAME iniset $TEMPEST_CONFIG identity admin_password "$password" iniset $TEMPEST_CONFIG identity admin_tenant_name $ADMIN_TENANT_NAME + iniset $TEMPEST_CONFIG identity admin_domain_name $ADMIN_DOMAIN_NAME iniset $TEMPEST_CONFIG identity auth_version ${TEMPEST_AUTH_VERSION:-v2} # Image @@ -320,9 +322,18 @@ function configure_tempest { iniset $TEMPEST_CONFIG boto http_socket_timeout 30 iniset $TEMPEST_CONFIG boto ssh_user ${DEFAULT_INSTANCE_USER:-cirros} - # Orchestration test image - if [[ ! -z "$HEAT_CFN_IMAGE_URL" ]]; then - iniset $TEMPEST_CONFIG orchestration image_ref $(basename "$HEAT_CFN_IMAGE_URL" ".qcow2") + # Orchestration Tests + if is_service_enabled heat; then + if [[ ! -z "$HEAT_CFN_IMAGE_URL" ]]; then + iniset $TEMPEST_CONFIG orchestration image_ref $(basename "$HEAT_CFN_IMAGE_URL" ".qcow2") + fi + # build a specialized heat flavor that is likely to be fast + available_flavors=$(nova flavor-list) + if [[ ! ( $available_flavors =~ 'm1.heat' ) ]]; then + nova flavor-create m1.heat 451 1024 0 2 + fi + iniset $TEMPEST_CONFIG orchestration instance_type "m1.heat" + iniset $TEMPEST_CONFIG orchestration build_timeout 900 fi # Scenario @@ -357,6 +368,11 @@ function configure_tempest { # Networking iniset $TEMPEST_CONFIG network-feature-enabled api_extensions "${NETWORK_API_EXTENSIONS:-all}" + # Baremetal + if [ "$VIRT_DRIVER" = "ironic" ] ; then + iniset $TEMPEST_CONFIG baremetal driver_enabled True + fi + # service_available for service in ${TEMPEST_SERVICES//,/ }; do if is_service_enabled $service ; then @@ -416,9 +432,9 @@ function init_tempest { ( #new namespace # tenant:demo ; user: demo source $TOP_DIR/accrc/demo/demo - euca-bundle-image -i "$kernel" --kernel true -d "$BOTO_MATERIALS_PATH" - euca-bundle-image -i "$ramdisk" --ramdisk true -d "$BOTO_MATERIALS_PATH" - euca-bundle-image -i "$disk_image" -d "$BOTO_MATERIALS_PATH" + euca-bundle-image -r x86_64 -i "$kernel" --kernel true -d "$BOTO_MATERIALS_PATH" + euca-bundle-image -r x86_64 -i "$ramdisk" --ramdisk true -d "$BOTO_MATERIALS_PATH" + euca-bundle-image -r x86_64 -i "$disk_image" -d "$BOTO_MATERIALS_PATH" ) 2>&1