--- /dev/null
+---
+
+# Copyright 2019 Nokia
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# cmframework.requires: performance_nodes_post.yaml,provisioning_done.yml
+
+- name: Interface configuration postconfig
+ hosts: baremetal-nodes:!localhost
+ gather_facts: "{{ gather_facts | default(True) }}"
+ tasks:
+ - name: Run os-net-config command
+ command: "os-net-config --detailed-exit-codes -v -c /etc/os-net-config/config.json"
+ register: os_net_config_result
+ failed_when: not (os_net_config_result.rc == 0 or os_net_config_result.rc == 2)
+ changed_when: os_net_config_result.rc == 2
+
+ - debug: var=os_net_config_result.stderr_lines
+ when: os_net_config_result.rc == 2
+
+ - name: Get os-net-config
+ slurp:
+ src: /etc/os-net-config/config.json
+ register: os_net_config_b64
+
+ - name: Set os_net_config
+ set_fact:
+ os_net_config: "{{ os_net_config_b64['content'] | b64decode | from_json }}"
+
+ - name: Get interface names
+ set_fact:
+ phy_ifaces: "{{ os_net_config | json_query('network_config[*].name') }}"
+
+ - name: Make sure bridges are up
+ command: "ifup {{item}}"
+ with_items: "{{phy_ifaces}}"
+ ignore_errors: "yes"
+
+ - name: Updating the facts due to net changes
+ setup:
+
+ - name: Check if SR-IOV is configured
+ stat:
+ path: /etc/sriov/sriov.conf
+ register: sriov_result
+
+ - name: Enable sriov.service
+ systemd:
+ name: sriov
+ daemon_reload: "yes"
+ enabled: "yes"
+ when: sriov_result.stat.exists == True
+
+ - name: Start sriov.service
+ systemd:
+ name: sriov
+ state: started
+ when: sriov_result.stat.exists == True and hostname != installation_controller
+
+ - name: Check if OVS offload SR-IOV is configured
+ shell: grep "SRIOV_INTERFACES_OFFLOADED" /etc/sriov/sriov.conf | cut -d = -f2 | sed -e 's/^"//' -e 's/"$//'
+ register: offload_result
+ when: sriov_result.stat.exists == True
+
+ - name: Enable ovsoffloadsriov.service
+ systemd:
+ name: ovsoffloadsriov
+ daemon_reload: "yes"
+ enabled: "yes"
+ when:
+ - sriov_result.stat.exists == True
+ - offload_result.stdout != ""
+
+ - name: Start offload.service
+ systemd:
+ name: ovsoffloadsriov
+ state: started
+ when:
+ - sriov_result.stat.exists == True
+ - offload_result.stdout != "" and hostname != installation_controller
+
+- name: Restart nova compute if sr-iov configured except on CAAS nodes
+ hosts: base:!vnf-nodes
+ gather_facts: "{{ gather_facts | default(True) }}"
+ tasks:
+ - name: Check if nova-compute service is enabled here
+ shell: "systemctl list-unit-files | grep enabled | grep -w nova-compute | wc -l"
+ register: novacomputeresult
+
+ - name: Restart nova compute
+ systemd:
+ name: nova-compute
+ state: restarted
+ when: sriov_result.stat.exists == True and hostname != installation_controller and novacomputeresult.stdout|int > 0
+