aboutsummaryrefslogtreecommitdiffstats
path: root/ansible/roles/infra_create_network
diff options
context:
space:
mode:
authorJohn O Loughlin <john.oloughlin@intel.com>2018-01-22 11:49:43 +0000
committerJohn O'Loughlin <john.oloughlin@intel.com>2018-02-12 08:57:58 +0000
commit41908d415338fc2f6ad525bc1e2444c66d3532c4 (patch)
treee767c2c6a668cd8cf66053f7d902b85cdba02081 /ansible/roles/infra_create_network
parentcaa5354c05e567ee4c6753ed77c819dfa4e2a37e (diff)
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 <john.oloughlin@intel.com>
Diffstat (limited to 'ansible/roles/infra_create_network')
-rw-r--r--ansible/roles/infra_create_network/tasks/create_xml.yaml106
-rw-r--r--ansible/roles/infra_create_network/tasks/main.yml22
2 files changed, 128 insertions, 0 deletions
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: |
+ <network>
+ </network>
+
+- 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 }}"