Merge "Replace outdated instruction with link to upstream doc"
[apex-tripleo-heat-templates.git] / extraconfig / pre_network / host_config_and_reboot.yaml
index 6c46133..2f5fcdf 100644 (file)
@@ -14,12 +14,6 @@ parameters:
   ServiceNames:
     type: comma_delimited_list
     default: []
-  IsolCpusList:
-    default: "0"
-    description: List of cores to be isolated by tuned
-    type: string
-    constraints:
-      - allowed_pattern: "[0-9,-]+"
   OvsEnableDpdk:
     default: false
     description: Whether or not to configure enable DPDK in OVS
@@ -47,12 +41,6 @@ parameters:
       mem>, <socket n mem>", where the value is specified in MB.  For example:
       "1024,0".
     type: string
-  OvsDpdkDriverType:
-    default: "vfio-pci"
-    description: >
-      DPDK Driver type. Ensure the Overcloud NIC to be used for DPDK supports
-      this UIO/PMD driver.
-    type: string
   OvsPmdCoreList:
     description: >
       A list or range of CPU cores for PMD threads to be pinned to.  Note, NIC
@@ -91,10 +79,6 @@ parameters:
     default: ''
     description: Memory allocated for each socket
     type: string
-  NeutronDpdkDriverType:
-    default: "vfio-pci"
-    description: DPDK Driver type
-    type: string
   deployment_actions:
     default: ['CREATE', 'UPDATE']
     type: comma_delimited_list
@@ -105,15 +89,13 @@ parameters:
 
 conditions:
   is_host_config_required: {not: {equals: [{get_param: [RoleParameters, KernelArgs]}, ""]}}
-  # YAQL is enabled in conditions with https://review.openstack.org/#/c/467506/
   is_dpdk_config_required:
     or:
       - yaql:
-        expression: $.data.service_names.contains('neutron_ovs_dpdk_agent')
-        data:
-          service_names: {get_param: ServiceNames}
-      - {get_param: OvsEnableDpdk}
-      - {get_param: [RoleParameters, OvsEnableDpdk]}
+          expression: $.data.service_names.contains('neutron_ovs_dpdk_agent')
+          data:
+            service_names: {get_param: ServiceNames}
+      - {equals: [{get_param: [RoleParameters, OvsEnableDpdk]}, true]}
   is_reboot_config_required:
     or:
       - is_host_config_required
@@ -122,8 +104,6 @@ conditions:
   pmd_cores_empty: {equals: [{get_param: OvsPmdCoreList}, '']}
   mem_channels_empty: {equals: [{get_param: OvsDpdkMemoryChannels}, '']}
   socket_mem_empty: {equals: [{get_param: OvsDpdkSocketMemory}, '']}
-  driver_not_set: {equals: [{get_param: OvsDpdkDriverType}, 'vfio-pci']}
-  isol_cpus_empty: {equals: [{get_param: IsolCpusList}, '0']}
   deployment_actions_empty:
     equals:
       - {get_param: deployment_actions}
@@ -137,19 +117,15 @@ resources:
       value:
         map_replace:
           - map_replace:
-            - IsolCpusList: IsolCpusList
-              OvsDpdkCoreList: OvsDpdkCoreList
+            - OvsDpdkCoreList: OvsDpdkCoreList
               OvsDpdkMemoryChannels: OvsDpdkMemoryChannels
               OvsDpdkSocketMemory: OvsDpdkSocketMemory
-              OvsDpdkDriverType: OvsDpdkDriverType
-              OvsPmdCoreList: OvsDpdkCoreList
+              OvsPmdCoreList: OvsPmdCoreList
             - values: {get_param: [RoleParameters]}
           - values:
-              IsolCpusList: {if: [isol_cpus_empty, {get_param: HostCpusList}, {get_param: IsolCpusList}]}
               OvsDpdkCoreList: {if: [l_cores_empty, {get_param: HostCpusList}, {get_param: OvsDpdkCoreList}]}
               OvsDpdkMemoryChannels: {if: [mem_channels_empty, {get_param: NeutronDpdkMemoryChannels}, {get_param: OvsDpdkMemoryChannels}]}
               OvsDpdkSocketMemory: {if: [socket_mem_empty, {get_param: NeutronDpdkSocketMemory}, {get_param: OvsDpdkSocketMemory}]}
-              OvsDpdkDriverType: {if: [driver_not_set, {get_param: NeutronDpdkDriverType}, {get_param: OvsDpdkDriverType}]}
               OvsPmdCoreList: {if: [pmd_cores_empty, {get_param: NeutronDpdkCoreList}, {get_param: OvsPmdCoreList}]}
 
   HostParametersConfig:
@@ -193,6 +169,32 @@ resources:
           template: |
             #!/bin/bash
             set -x
+
+            # OvS Permission issue temporary workaround
+            # https://bugzilla.redhat.com/show_bug.cgi?id=1459436
+            # Actual solution from openvswitch - https://mail.openvswitch.org/pipermail/ovs-dev/2017-June/333423.html
+            ovs_service_path="/usr/lib/systemd/system/ovs-vswitchd.service"
+
+            if grep -q 'RuntimeDirectoryMode' $ovs_service_path; then
+                sed -i 's/RuntimeDirectoryMode=.*/RuntimeDirectoryMode=0775/' $ovs_service_path
+            else
+                echo "RuntimeDirectoryMode=0775" >> $ovs_service_path
+            fi
+
+            if ! grep -Fxq "Group=qemu" $ovs_service_path ; then
+              echo "Group=qemu" >> $ovs_service_path
+            fi
+
+            if ! grep -Fxq "UMask=0002" $ovs_service_path ; then
+              echo "UMask=0002" >> $ovs_service_path
+            fi
+
+            ovs_ctl_path='/usr/share/openvswitch/scripts/ovs-ctl'
+            if ! grep -q "umask 0002 \&\& start_daemon \"\$OVS_VSWITCHD_PRIORITY\"" $ovs_ctl_path ; then
+              sed -i 's/start_daemon \"\$OVS_VSWITCHD_PRIORITY\"/umask 0002 \&\& start_daemon \"$OVS_VSWITCHD_PRIORITY\"/' $ovs_ctl_path
+            fi
+
+
             # DO NOT use --detailed-exitcodes
             puppet apply --logdest console \
               --modulepath /etc/puppet/modules:/opt/stack/puppet-modules:/usr/share/openstack-puppet/modules \
@@ -217,7 +219,11 @@ resources:
       name: EnableDpdkDeployment
       server:  {get_param: server}
       config: {get_resource: EnableDpdkConfig}
-      actions: ['CREATE'] # Only do this on CREATE
+      actions:
+        if:
+          - deployment_actions_empty
+          - []
+          - ['CREATE'] # Only do this on CREATE
 
   RebootConfig:
     type: OS::Heat::SoftwareConfig