From 41908d415338fc2f6ad525bc1e2444c66d3532c4 Mon Sep 17 00:00:00 2001 From: John O Loughlin Date: Mon, 22 Jan 2018 11:49:43 +0000 Subject: Create host networking configuration Create host networking configuration based on the input configuration file. To define the networks using libvirt, a temporary XML file is generated for each network. JIRA: YARDSTICK-962 Change-Id: I24d1c4d2f2e62884675599deb7db255862283ea4 Signed-off-by: John O Loughlin --- ansible/infra_deploy.yml | 1 + .../infra_create_network/tasks/create_xml.yaml | 106 +++++++++++++++++++++ ansible/roles/infra_create_network/tasks/main.yml | 22 +++++ etc/infra/infra_deploy.yaml.sample | 3 +- 4 files changed, 131 insertions(+), 1 deletion(-) create mode 100644 ansible/roles/infra_create_network/tasks/create_xml.yaml create mode 100644 ansible/roles/infra_create_network/tasks/main.yml diff --git a/ansible/infra_deploy.yml b/ansible/infra_deploy.yml index 948dd338a..2ab8a2e8b 100644 --- a/ansible/infra_deploy.yml +++ b/ansible/infra_deploy.yml @@ -17,3 +17,4 @@ roles: - infra_check_requirements - infra_destroy_previous_configuration + - infra_create_network diff --git a/ansible/roles/infra_create_network/tasks/create_xml.yaml b/ansible/roles/infra_create_network/tasks/create_xml.yaml new file mode 100644 index 000000000..a01c7974a --- /dev/null +++ b/ansible/roles/infra_create_network/tasks/create_xml.yaml @@ -0,0 +1,106 @@ +# Copyright (c) 2017-2018 Intel Corporation. +# +# 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. +--- +- name: Define XML file name + set_fact: + xml_file: "{{ '/tmp/'+item.name+'.xml' }}" + +- name: Delete the file, if exists + file: + path: "{{ xml_file }}" + state: absent + +- name: Create a new empty file + file: + path: "{{ xml_file }}" + state: touch + +- name: Add root "network" node + blockinfile: + path: "{{ xml_file }}" + marker: "" + content: | + + + +- name: Add new children nodes to "network" node + xml: + path: "{{ xml_file }}" + xpath: /network + add_children: + - name: "{{ item.name }}" + - bridge + - ip + pretty_print: yes + +- name: Add "name" attribute to "bridge" node + xml: + path: "{{ xml_file }}" + xpath: /network/bridge + attribute: name + value: "{{ item.name }}" + pretty_print: yes + +- name: Add "stp" attribute to "bridge" node + xml: + path: "{{ xml_file }}" + xpath: /network/bridge + attribute: stp + value: "on" + pretty_print: yes + +- name: Add "delay" attribute to "bridge" node + xml: + path: "{{ xml_file }}" + xpath: /network/bridge + attribute: delay + value: "0" + pretty_print: yes + +- name: Add "address" attribute to "ip" node + xml: + path: "{{ xml_file }}" + xpath: /network/ip + attribute: address + value: "{{ item.host_ip }}" + pretty_print: yes + +- name: Add "netmask" attribute to "ip" node + xml: + path: "{{ xml_file }}" + xpath: /network/ip + attribute: netmask + value: "{{ item.netmask }}" + pretty_print: yes + +- name: Define the networks + virt_net: + command: define + name: "{{ item.name }}" + xml: "{{ lookup('file', xml_file) }}" + +- name: Set autostart to yes + virt_net: + autostart: yes + name: "{{ item.name }}" + +- name: Start the networks + virt_net: + command: start + name: "{{ item.name }}" + +- name: Remove XML file + file: + path: "{{ xml_file }}" + state: absent diff --git a/ansible/roles/infra_create_network/tasks/main.yml b/ansible/roles/infra_create_network/tasks/main.yml new file mode 100644 index 000000000..eba4a3a49 --- /dev/null +++ b/ansible/roles/infra_create_network/tasks/main.yml @@ -0,0 +1,22 @@ +# Copyright (c) 2017-2018 Intel Corporation. +# +# 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. +--- +- name: Include + include_vars: + file: "{{ rs_file }}" + name: infra_deploy_vars + +- name: Create XML file + include_tasks: create_xml.yaml + with_items: "{{ infra_deploy_vars.networks }}" diff --git a/etc/infra/infra_deploy.yaml.sample b/etc/infra/infra_deploy.yaml.sample index df682ac3b..1dc459c0e 100644 --- a/etc/infra/infra_deploy.yaml.sample +++ b/etc/infra/infra_deploy.yaml.sample @@ -31,4 +31,5 @@ nodes: networks: - name: management - host_ip: 192.168.1.1 # not mandatory + host_ip: 192.168.1.1 + netmask: 255.255.255.0 -- cgit 1.2.3-korg