diff options
18 files changed, 117 insertions, 58 deletions
@@ -39,6 +39,12 @@ if [[ -z $DEPLOY_COMPASS && -z $DEPLOY_HOST && -z $REDEPLOY_HOST ]]; then fi LOG_DIR=$COMPASS_DIR/work/deploy/log +export LOG_DIR + mkdir -p $LOG_DIR $COMPASS_DIR/deploy/launch.sh $* 2>&1 | tee $LOG_DIR/compass-deploy.log + +if [[ $(tail -1 $LOG_DIR/compass-deploy.log) != 'compass deploy success' ]]; then + exit 1 +fi diff --git a/deploy/adapters/ansible/openstack/templates/nova.conf b/deploy/adapters/ansible/openstack/templates/nova.conf index 3cd2c03b..eb7ec053 100644 --- a/deploy/adapters/ansible/openstack/templates/nova.conf +++ b/deploy/adapters/ansible/openstack/templates/nova.conf @@ -3,11 +3,6 @@ {% set _ = memcached_servers.append('%s:11211'% host) %} {% endfor %} {% set memcached_servers = memcached_servers|join(',') %} -{% if ansible_processor_vcpus > 10 %} -{% set api_workers = ansible_processor_vcpus // 10 %} -{% else %} -{% set api_workers = 1 %} -{% endif %} [DEFAULT] dhcpbridge_flagfile=/etc/nova/nova.conf diff --git a/deploy/adapters/ansible/roles/cinder-controller/templates/cinder.conf b/deploy/adapters/ansible/roles/cinder-controller/templates/cinder.conf index 8b035653..4ad2da2e 100644 --- a/deploy/adapters/ansible/roles/cinder-controller/templates/cinder.conf +++ b/deploy/adapters/ansible/roles/cinder-controller/templates/cinder.conf @@ -3,11 +3,6 @@ {% set _ = memcached_servers.append('%s:11211'% host) %} {% endfor %} {% set memcached_servers = memcached_servers|join(',') %} -{% if ansible_processor_vcpus > 5 %} -{% set api_workers = ansible_processor_vcpus // 5 %} -{% else %} -{% set api_workers = 1 %} -{% endif %} [DEFAULT] rootwrap_config = /etc/cinder/rootwrap.conf diff --git a/deploy/adapters/ansible/roles/heat/templates/heat.j2 b/deploy/adapters/ansible/roles/heat/templates/heat.j2 index d73bd70b..a8feb940 100644 --- a/deploy/adapters/ansible/roles/heat/templates/heat.j2 +++ b/deploy/adapters/ansible/roles/heat/templates/heat.j2 @@ -3,11 +3,6 @@ {% set _ = memcached_servers.append('%s:11211'% host) %} {% endfor %} {% set memcached_servers = memcached_servers|join(',') %} -{% if ansible_processor_vcpus > 5 %} -{% set api_workers = ansible_processor_vcpus // 5 %} -{% else %} -{% set api_workers = 1 %} -{% endif %} [DEFAULT] heat_metadata_server_url = http://{{ internal_vip.ip }}:8000 diff --git a/deploy/adapters/ansible/roles/setup-network/files/setup_networks/setup_networks.py b/deploy/adapters/ansible/roles/setup-network/files/setup_networks/setup_networks.py index ab13e088..64c0469e 100644 --- a/deploy/adapters/ansible/roles/setup-network/files/setup_networks/setup_networks.py +++ b/deploy/adapters/ansible/roles/setup-network/files/setup_networks/setup_networks.py @@ -10,6 +10,8 @@ import yaml import netaddr import os +import platform +import re import log as logging LOG = logging.getLogger("net-init") @@ -88,6 +90,11 @@ def main(config): setup_ips(config["ip_settings"], config["sys_intf_mappings"]) if __name__ == "__main__": - os.system("service openvswitch-switch status|| service openvswitch-switch start") # noqa + if re.search('Ubuntu', platform.platform()): + os.system("service openvswitch-switch start") + elif re.search('redhat|centos', platform.platform()): + os.system("service openvswitch start") + else: + os.system("echo 'ERROR: no service named openvswitch'") config = yaml.load(open(config_path)) main(config) diff --git a/deploy/adapters/cobbler/snippets/kickstart_post_install_network_config b/deploy/adapters/cobbler/snippets/kickstart_post_install_network_config index 2c089f92..1a5a7f66 100644 --- a/deploy/adapters/cobbler/snippets/kickstart_post_install_network_config +++ b/deploy/adapters/cobbler/snippets/kickstart_post_install_network_config @@ -426,9 +426,12 @@ declare -A used_logical_interfaces used_logical_interfaces[$iname]=$iname - #if $iface_type in ("slave","bond_slave","bridge_slave","bonded_bridge_slave") + #if $iface_type in ("slave","bridge_slave","bonded_bridge_slave") #set $static = 1 #end if + #if $ip == "" + #set $static = "" + #end if echo "DEVICE=$iname" > $devfile echo "ONBOOT=yes" >> $devfile @@ -514,7 +517,7 @@ echo "GATEWAY=$if_gateway" >> $devfile echo "NETMASK=$netmask" >> $devfile #end if #else -echo "BOOTPROTO=dhcp" >> $devfile +echo "BOOTPROTO=manual" >> $devfile #if $len($name_servers) > 0 echo "PEERDNS=no" >> $devfile #end if diff --git a/deploy/adapters/cobbler/snippets/preseed_post_install_network_config b/deploy/adapters/cobbler/snippets/preseed_post_install_network_config index cb79c556..f15b6be2 100644 --- a/deploy/adapters/cobbler/snippets/preseed_post_install_network_config +++ b/deploy/adapters/cobbler/snippets/preseed_post_install_network_config @@ -50,14 +50,7 @@ echo "physical interfaces: \${physical_interfaces}" >> /tmp/network_log # map physical interface to mac address mac_names="" for physical_interface in \${physical_interfaces}; do - set \$(ip link show \${physical_interface}) -#if $osversion == "trusty" - mac=\$(echo \$@ | cut -d' ' -f17) -#elif $osversion == "xenial" - mac=\$(echo \$@ | cut -d' ' -f17) -#else - mac=\$(echo \$@ | cut -d' ' -f13) -#end if + mac=\$(ip link show \${physical_interface} | awk 'match(\$0,/link\/ether/) {print \$2}') mac_name=\$(echo \${mac} |tr 'a-z' 'A-Z' | tr ':' '_') if [ -z "\${mac_name}" ]; then mac_names="\${mac_name}" @@ -441,15 +434,18 @@ echo "" >> /etc/network/interfaces used_logical_interface_$iname=$iname - #if $iface_type in ("slave","bond_slave","bridge_slave","bonded_bridge_slave") + #if $iface_type in ("slave","bridge_slave","bonded_bridge_slave") #set $static = 1 #end if + #if $ip == "" + #set $static = "" + #end if echo "auto $iname" >> /etc/network/interfaces #if $static echo "iface $iname inet static" >> /etc/network/interfaces #else -echo "iface $iname inet dhcp" >> /etc/network/interfaces +echo "iface $iname inet manual" >> /etc/network/interfaces #end if #if $iface_type not in ("master","bond","bridge","bonded_bridge_slave") diff --git a/deploy/adapters/cobbler/snippets/preseed_software_ansible b/deploy/adapters/cobbler/snippets/preseed_software_ansible index cde79356..5516c893 100644 --- a/deploy/adapters/cobbler/snippets/preseed_software_ansible +++ b/deploy/adapters/cobbler/snippets/preseed_software_ansible @@ -1 +1 @@ -d-i pkgsel/include string ntp ssh openssh-server wget vim +d-i pkgsel/include string ntp ssh openssh-server wget vim ifenslave diff --git a/deploy/bonding.py b/deploy/bonding.py new file mode 100644 index 00000000..27e76daa --- /dev/null +++ b/deploy/bonding.py @@ -0,0 +1,41 @@ +import os +import sys +import yaml + + +def exec_cmd(cmd): + print cmd + os.system(cmd) + + +def create_bonding(network_info, rsa_file, compass_ip): + for bond in network_info['bond_mappings']: + bond_name = bond['name'] + host_name = bond.get('host') + interfaces = bond.get('bond-slaves') + bond_mode = bond['bond-mode'] + bond_miimon = bond['bond-miimon'] + lacp_rate = bond['bond-lacp_rate'] + xmit_hash_policy = bond['bond-xmit_hash_policy'] + bond_mtu = bond['mtu'] + if interfaces: + for host in host_name: + for interface in interfaces: + exec_cmd("ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \ + -i %s root@%s \ + 'cobbler system edit --name=%s --interface=%s --interface-type=bond_slave --interface-master=%s'" # noqa + % (rsa_file, compass_ip, host, interface, bond_name)) # noqa + + exec_cmd("ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \ + -i %s root@%s \ + 'cobbler system edit --name=%s --interface=%s --interface-type=bond --bonding-opts=\"miimon=%s mode=%s lacp_rate=%s xmit_hash_policy=%s mtu=%s\"'" # noqa + % (rsa_file, compass_ip, host, bond_name, bond_miimon, bond_mode, lacp_rate, xmit_hash_policy, bond_mtu)) # noqa + +if __name__ == "__main__": + assert(len(sys.argv) == 4) + create_bonding( + yaml.load( + open( + sys.argv[1])), + sys.argv[2], + sys.argv[3]) diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_newton/vars/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_newton/vars/HA-ansible-multinodes.tmpl index ac82a981..bc349fce 100755 --- a/deploy/compass_conf/templates/ansible_installer/openstack_newton/vars/HA-ansible-multinodes.tmpl +++ b/deploy/compass_conf/templates/ansible_installer/openstack_newton/vars/HA-ansible-multinodes.tmpl @@ -199,6 +199,8 @@ INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: "{{ internal_ip }}" build_in_image: http://192.168.121.12:9999/img/cirros-0.3.3-x86_64-disk.img build_in_image_name: cirros-0.3.3-x86_64-disk.img +api_workers: 1 + physical_device: /dev/sdb odl_username: admin diff --git a/deploy/conf/network_cfg.yaml b/deploy/conf/network_cfg.yaml index 28224b66..5e704e80 100644 --- a/deploy/conf/network_cfg.yaml +++ b/deploy/conf/network_cfg.yaml @@ -9,7 +9,23 @@ --- nic_mappings: [] -bond_mappings: [] + +bond_mappings: + - name: bond1 + host: + - host1 + - host2 + - host3 + - host4 + - host5 + bond-slaves: + - eth1 + - eth2 + bond-mode: 802.3ad + bond-miimon: 100 + bond-lacp_rate: fast + bond-xmit_hash_policy: layer2 + mtu: 9000 provider_net_mappings: - name: br-prv diff --git a/deploy/deploy_host.sh b/deploy/deploy_host.sh index bf27b31a..8c863045 100755 --- a/deploy/deploy_host.sh +++ b/deploy/deploy_host.sh @@ -13,6 +13,10 @@ function rename_nics(){ python $COMPASS_DIR/deploy/rename_nics.py $DHA $rsa_file $MGMT_IP $OS_VERSION } +function add_bonding(){ + python $COMPASS_DIR/deploy/bonding.py $NETWORK $rsa_file $MGMT_IP +} + function deploy_host(){ export AYNC_TIMEOUT=20 ssh $ssh_args root@${MGMT_IP} mkdir -p /opt/compass/bin/ansible_callbacks @@ -22,7 +26,7 @@ function deploy_host(){ scp $ssh_args -r ${COMPASS_DIR}/deploy/adapters/ansible/ansible_modules/* root@${MGMT_IP}:/opt/ansible-modules # avoid nodes reboot to fast, cobbler can not give response - (sleep $AYNC_TIMEOUT; rename_nics; reboot_hosts) & + (sleep $AYNC_TIMEOUT; add_bonding; rename_nics; reboot_hosts) & if [[ "$REDEPLOY_HOST" == true ]]; then deploy_flag="redeploy" else diff --git a/deploy/launch.sh b/deploy/launch.sh index 51b502f2..51094b29 100755 --- a/deploy/launch.sh +++ b/deploy/launch.sh @@ -148,3 +148,5 @@ if [[ ${DHA##*/} =~ "openo" ]]; then exit 1 fi fi + +echo 'compass deploy success' diff --git a/deploy/opera_adapter.py b/deploy/opera_adapter.py index f83638d7..137aba54 100644 --- a/deploy/opera_adapter.py +++ b/deploy/opera_adapter.py @@ -119,7 +119,7 @@ if __name__ == "__main__": dump_file(openo_config, openo_config_file) sync_admin_openrc(network, admin_openrc_file) - p2 = subprocess.Popen("sudo ./opera_launch.sh", cwd=opera_dir, shell=True) + p2 = subprocess.Popen("./opera_launch.sh", cwd=opera_dir, shell=True) p2.communicate() if p2.returncode != 0: print('./opera_launch.sh fail') diff --git a/deploy/prepare.sh b/deploy/prepare.sh index c2023223..b7e5bfa1 100755 --- a/deploy/prepare.sh +++ b/deploy/prepare.sh @@ -74,7 +74,7 @@ function _prepare_python_env() { else sudo apt-get update -y sudo apt-get install -y --force-yes mkisofs bc curl ipmitool openvswitch-switch - sudo apt-get install -y --force-yes git python-dev python-pip figlet + sudo apt-get install -y --force-yes git python-dev python-pip figlet sshpass sudo apt-get install -y --force-yes libxslt-dev libxml2-dev libvirt-dev build-essential qemu-utils qemu-kvm libvirt-bin virtinst libmysqld-dev sudo apt-get install -y --force-yes libffi-dev libssl-dev diff --git a/docs/release/installation/preconditions.rst b/docs/release/installation/preconditions.rst index 18bac119..67c0728a 100644 --- a/docs/release/installation/preconditions.rst +++ b/docs/release/installation/preconditions.rst @@ -41,7 +41,7 @@ http://artifacts.opnfv.org/compass4nfv.html NOTE: Search the keyword "compass4nfv/Danube" to locate the ISO image. E.g. -compass4nfv/Danube/opnfv-2016-09-18_08-15-13.iso +compass4nfv/danube/opnfv-2017-03-29_08-55-09.iso The name of iso image includes the time of iso building, you can get the daily ISO according the building time. diff --git a/docs/release/release-notes/release-notes.rst b/docs/release/release-notes/release-notes.rst index e44e6744..44678b87 100644 --- a/docs/release/release-notes/release-notes.rst +++ b/docs/release/release-notes/release-notes.rst @@ -31,7 +31,7 @@ Release Data | **Release designation** | Danube.1.0 | | | | +--------------------------------------+--------------------------------------+ -| **Release date** | March 27 2017 | +| **Release date** | March 31 2017 | | | | +--------------------------------------+--------------------------------------+ | **Purpose of the delivery** | OPNFV Danube release | @@ -88,11 +88,18 @@ Feature additions | **JIRA REFERENCE** | **SLOGAN** | | | | +--------------------------------------+-----------------------------------------+ +| COMPASS-504 | Open-O deployment with Compass | | | | ++--------------------------------------+-----------------------------------------+ +| COMPASS-362 | OpenDaylight Boron Support | +| | | ++--------------------------------------+-----------------------------------------+ +| COMPASS-491 | Support OpenStack Newton | | | | +--------------------------------------+-----------------------------------------+ + Bug corrections ~~~~~~~~~~~~~~~ @@ -124,27 +131,16 @@ System Limitations Known issues ------------ -+---------------+----------------------------------------------+ -| **Scenario** | **Issue** | -+---------------+----------------------------------------------+ -| | | -+---------------+----------------------------------------------+ -| | | -+---------------+----------------------------------------------+ - -**JIRA TICKETS:** - -+--------------------------------------+--------------------------------------+ -| **JIRA REFERENCE** | **SLOGAN** | -| | | -+--------------------------------------+--------------------------------------+ -| JIRA: | | -+--------------------------------------+--------------------------------------+ -| JIRA: | | -+--------------------------------------+--------------------------------------+ - -Workarounds ------------ ++----------------------+-------------------------------+-----------------------+ +| **Scenario** | **Issue** | **Workarounds** | ++----------------------+-------------------------------+-----------------------+ +| os-odl-l3-no-feature | Occasionally failed to assign | Rebuild the instance | +| | floating IP to an instance | and reassign floating | +| | | IP | ++----------------------+-------------------------------+-----------------------+ +| os-odl-l2-no-feature | Occasionally failed to login | Failed in testcase, | +| | instance via ssh | normal in usage | ++----------------------+-------------------------------+-----------------------+ Test Result @@ -152,4 +148,5 @@ Test Result The Danube release with the Compass4nfv deployment toolchain has undergone QA test runs with the following results: +Functest: http://testresults.opnfv.org/reporting/functest/release/danube/index-status-compass.html diff --git a/util/check_valid.py b/util/check_valid.py index 9eaa100d..e3ad6bcd 100644 --- a/util/check_valid.py +++ b/util/check_valid.py @@ -135,7 +135,7 @@ if __name__ == "__main__": _, dha_file, network_file = sys.argv if not os.path.exists(dha_file): - err_print("DHA file doesn't exit") + err_print("DHA file doesn't exist") sys.exit(1) else: dha = load_file(dha_file) @@ -148,7 +148,7 @@ if __name__ == "__main__": has_invalid = True if not os.path.exists(network_file): - err_print("NETWORK file doesn't exit") + err_print("NETWORK file doesn't exist") sys.exit(1) else: network = load_file(network_file) |