diff options
author | Feng Pan <fpan@redhat.com> | 2017-02-08 13:42:42 -0500 |
---|---|---|
committer | Feng Pan <fpan@redhat.com> | 2017-02-18 01:38:25 +0000 |
commit | c7e6d15b4d2570c7f9d2bc8dcfc57d8a68fede71 (patch) | |
tree | 81dcdb87979d37fa4bf061e92db79d88dd7c6f82 /lib | |
parent | 89f0410672d80015c419f77e69a5bb155cac2bfe (diff) |
Add support for odl-fdio scenario
Changes:
- Kernel parameters are now set through first-boot.yaml during deployment. No custom
images will be built. Note that all nodes will be configured the same way, we only
use compute's kernel parameter settings currently (from deploy settings file)
- Add support for VPP interface type in network settings file, it is now possible
to specify vpp_interface type and uio_driver for tenant nic in network settings
file. A new example config, network_settings_vpp.yaml is added.
- Add support for odl_l2-fdio scenario.
Limitations:
- Physical NIC names must be specified in network settings file, numbered nic names
such as nic1 are not supported for fdio scenarios.
- The same kernel parameters will be configured for all nodes. The paramters will be
taken from compute kernel parameter section in deploy settings file.
opnfv-tht-pr: 104
opnfv-puppet-tripleo-pr: 12
os-net-config-pr: 3
Change-Id: Ie9d6151e6e58d11da3c66fbcabe4a0886c3fa152
Signed-off-by: Feng Pan <fpan@redhat.com>
Diffstat (limited to 'lib')
-rwxr-xr-x | lib/overcloud-deploy-functions.sh | 94 | ||||
-rwxr-xr-x | lib/parse-functions.sh | 15 | ||||
-rw-r--r-- | lib/python/apex/network_environment.py | 5 |
3 files changed, 26 insertions, 88 deletions
diff --git a/lib/overcloud-deploy-functions.sh b/lib/overcloud-deploy-functions.sh index f6522b8a..2df5fb63 100755 --- a/lib/overcloud-deploy-functions.sh +++ b/lib/overcloud-deploy-functions.sh @@ -23,7 +23,7 @@ function overcloud_deploy { DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/services/gluon.yaml" fi elif [ "${deploy_options_array['vpp']}" == 'True' ]; then - DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/opendaylight_fdio.yaml" + DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/neutron-opendaylight-honeycomb.yaml" else DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/neutron-opendaylight-l3.yaml" fi @@ -92,7 +92,6 @@ EOF -a overcloud-full.qcow2 if [ "${deploy_options_array['dataplane']}" == 'ovs_dpdk' ]; then - sudo sed -i '/NeutronOVSDataPathType:/c\ NeutronOVSDataPathType: netdev' /usr/share/openstack-tripleo-heat-templates/environments/numa.yaml LIBGUESTFS_BACKEND=direct virt-customize --run-command "yum install -y /root/dpdk_rpms/*" \ --run-command "sed -i '/RuntimeDirectoryMode=.*/d' /usr/lib/systemd/system/openvswitch-nonetwork.service" \ --run-command "printf \"%s\\n\" RuntimeDirectoryMode=0775 Group=qemu UMask=0002 >> /usr/lib/systemd/system/openvswitch-nonetwork.service" \ @@ -120,6 +119,29 @@ EOI EOI fi + if [ -n "${deploy_options_array['performance']}" ]; then + for option in "${performance_options[@]}" ; do + arr=($option) + # use compute's kernel settings for all nodes for now. + if [ "${arr[0]}" == "Compute" ] && [ "${arr[1]}" == "kernel" ]; then + kernel_args+=" ${arr[2]}=${arr[3]}" + fi + done + + ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI + sed -i "/ComputeKernelArgs:/c\ ComputeKernelArgs: '$kernel_args'" ${ENV_FILE} + sed -i "$ a\resource_registry:\n OS::TripleO::NodeUserData: first-boot.yaml" ${ENV_FILE} + sed -i "/NovaSchedulerDefaultFilters:/c\ NovaSchedulerDefaultFilters: 'RamFilter,ComputeFilter,AvailabilityZoneFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,NUMATopologyFilter'" ${ENV_FILE} +EOI + fi + + if [[ "${deploy_options_array['sdn_controller']}" == 'opendaylight' && "${deploy_options_array['dataplane']}" == 'fdio' ]]; then + ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI + sed -i "/neutron::agents::dhcp::interface_driver:/c\ neutron::agents::dhcp::interface_driver: neutron.agent.linux.interface.NSDriver" ${ENV_FILE} + sed -i "/neutron::agents::l3::interface_driver:/c\ neutron::agents::l3::interface_driver: neutron.agent.linux.interface.NSDriver" ${ENV_FILE} +EOI + fi + # Set ODL version accordingly if [[ "${deploy_options_array['sdn_controller']}" == 'opendaylight' && -n "${deploy_options_array['odl_version']}" ]]; then case "${deploy_options_array['odl_version']}" in @@ -141,73 +163,6 @@ EOI EOI fi - # Add performance deploy options if they have been set - if [ ! -z "${deploy_options_array['performance']}" ]; then - - # Remove previous kernel args files per role - ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" "rm -f Compute-kernel_params.txt" - ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" "rm -f Controller-kernel_params.txt" - - # Push performance options to subscript to modify per-role images as needed - for option in "${performance_options[@]}" ; do - echo -e "${blue}Setting performance option $option${reset}" - ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" "dataplane=${deploy_options_array['dataplane']} bash build_perf_image.sh $option" - done - - # Build IPA kernel option ramdisks - ssh -T ${SSH_OPTIONS[@]} "root@$UNDERCLOUD" <<EOI -/bin/cp -f /home/stack/ironic-python-agent.initramfs /root/ -mkdir -p ipa/ -pushd ipa -gunzip -c ../ironic-python-agent.initramfs | cpio -i -if [ ! -f /home/stack/Compute-kernel_params.txt ]; then - touch /home/stack/Compute-kernel_params.txt - chown stack /home/stack/Compute-kernel_params.txt -fi -/bin/cp -f /home/stack/Compute-kernel_params.txt tmp/kernel_params.txt -echo "Compute params set: " -cat tmp/kernel_params.txt -/bin/cp -f /root/image.py usr/lib/python2.7/site-packages/ironic_python_agent/extensions/image.py -/bin/cp -f /root/image.pyc usr/lib/python2.7/site-packages/ironic_python_agent/extensions/image.pyc -find . | cpio -o -H newc | gzip > /home/stack/Compute-ironic-python-agent.initramfs -chown stack /home/stack/Compute-ironic-python-agent.initramfs -if [ ! -f /home/stack/Controller-kernel_params.txt ]; then - touch /home/stack/Controller-kernel_params.txt - chown stack /home/stack/Controller-kernel_params.txt -fi -/bin/cp -f /home/stack/Controller-kernel_params.txt tmp/kernel_params.txt -echo "Controller params set: " -cat tmp/kernel_params.txt -find . | cpio -o -H newc | gzip > /home/stack/Controller-ironic-python-agent.initramfs -chown stack /home/stack/Controller-ironic-python-agent.initramfs -popd -/bin/rm -rf ipa/ -EOI - - # set NIC heat params and resource registry - ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI -if [ -n "${private_network_compute_interface}" ]; then - sudo sed -i '/ComputeTenantNIC:/c\ ComputeTenantNIC: '${private_network_compute_interface} /usr/share/openstack-tripleo-heat-templates/environments/numa.yaml -fi -if [ -n "${private_network_controller_interface}" ]; then - sudo sed -i '/ControllerTenantNIC:/c\ ControllerTenantNIC: '${private_network_controller_interface} /usr/share/openstack-tripleo-heat-templates/environments/numa.yaml -fi -# TODO: PublicNIC is not used today, however, in the future, we'll bind public nic to DPDK as well for certain scenarios. At that time, -# we'll need to make sure public network is enabled. -if [ -n "${public_network_compute_interface}" ]; then - sudo sed -i '/ComputePublicNIC:/c\ ComputePublicNIC: '${public_network_compute_interface} /usr/share/openstack-tripleo-heat-templates/environments/numa.yaml -fi -if [ -n "${public_network_controller_interface}" ]; then - sudo sed -i '/ControllerPublicNIC:/c\ ControllerPublicNIC: '${public_network_controller_interface} /usr/share/openstack-tripleo-heat-templates/environments/numa.yaml -fi -EOI - - echo -e "${blue}INFO: Including /usr/share/openstack-tripleo-heat-templates/environments/numa.yaml ${reset}" - if [ "$debug" == 'TRUE' ]; then - ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" "cat /usr/share/openstack-tripleo-heat-templates/environments/numa.yaml" - fi - DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/numa.yaml" - fi # check if ceph should be enabled if [ "${deploy_options_array['ceph']}" == 'True' ]; then @@ -279,7 +234,6 @@ openstack overcloud image upload echo "Configuring undercloud and discovering nodes" openstack baremetal import --json instackenv.json -bash -x set_perf_images.sh ${performance_roles[@]} if [[ -z "$virtual" ]]; then openstack baremetal introspection bulk start if [[ -n "$root_disk_list" ]]; then diff --git a/lib/parse-functions.sh b/lib/parse-functions.sh index 94eac01a..2114c0b7 100755 --- a/lib/parse-functions.sh +++ b/lib/parse-functions.sh @@ -12,20 +12,9 @@ ##parses network settings yaml into globals parse_network_settings() { - local output parse_ext - parse_ext='' - - if [[ "${deploy_options_array['dataplane']}" == 'ovs_dpdk' || "${deploy_options_array['dataplane']}" == 'fdio' ]]; then - for val in ${performance_roles[@]}; do - if [ "$val" == "Compute" ]; then - parse_ext="${parse_ext} --compute-pre-config " - elif [ "$val" == "Controller" ]; then - parse_ext="${parse_ext} --controller-pre-config " - fi - done - fi + local output - if output=$(python3 -B $LIB/python/apex_python_utils.py parse-net-settings -s $NETSETS -td $APEX_TMP_DIR -e $BASE/network-environment.yaml $parse_ext); then + if output=$(python3 -B $LIB/python/apex_python_utils.py parse-net-settings -s $NETSETS -td $APEX_TMP_DIR -e $BASE/network-environment.yaml); then echo -e "${blue}${output}${reset}" eval "$output" else diff --git a/lib/python/apex/network_environment.py b/lib/python/apex/network_environment.py index 4fc6f583..dbe89b21 100644 --- a/lib/python/apex/network_environment.py +++ b/lib/python/apex/network_environment.py @@ -172,11 +172,6 @@ class NetworkEnvironment(dict): # apply resource registry update for API_RESOURCES self._config_resource_reg(API_RESOURCES, postfix) - if compute_pre_config: - self[reg][COMPUTE_PRE] = PRE_CONFIG_DIR + "compute/numa.yaml" - if controller_pre_config: - self[reg][CONTROLLER_PRE] = PRE_CONFIG_DIR + "controller/numa.yaml" - # Set IPv6 related flags to True. Not that we do not set those to False # when IPv4 is configured, we'll use the default or whatever the user # may have set. |