2015-08-24 17:21:41 +00:00
|
|
|
#!/usr/bin/python
|
|
|
|
# -*- coding: utf-8 -*-
|
2018-03-02 00:07:17 +00:00
|
|
|
# Copyright: (c) 2015, Joseph Callen <jcallen () csc.com>
|
2018-04-28 11:01:45 +00:00
|
|
|
# Copyright: (c) 2018, Ansible Project
|
|
|
|
# Copyright: (c) 2018, Abhijeet Kasurde <akasurde@redhat.com>
|
2017-07-29 15:05:38 +00:00
|
|
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
|
|
|
|
|
|
from __future__ import absolute_import, division, print_function
|
|
|
|
__metaclass__ = type
|
|
|
|
|
2018-04-28 11:01:45 +00:00
|
|
|
|
|
|
|
ANSIBLE_METADATA = {
|
|
|
|
'metadata_version': '1.1',
|
|
|
|
'status': ['preview'],
|
|
|
|
'supported_by': 'community'
|
|
|
|
}
|
2017-03-14 16:07:22 +00:00
|
|
|
|
2015-08-24 17:21:41 +00:00
|
|
|
DOCUMENTATION = '''
|
|
|
|
---
|
|
|
|
module: vmware_vswitch
|
2018-04-28 11:01:45 +00:00
|
|
|
short_description: Manage a VMware Standard Switch to an ESXi host.
|
2015-08-24 17:21:41 +00:00
|
|
|
description:
|
2018-04-28 11:01:45 +00:00
|
|
|
- This module can be used to add, remove and update a VMware Standard Switch to an ESXi host.
|
2015-08-24 17:21:41 +00:00
|
|
|
version_added: 2.0
|
2017-08-08 15:41:57 +00:00
|
|
|
author:
|
2017-08-24 12:31:13 +00:00
|
|
|
- Joseph Callen (@jcpowermac)
|
|
|
|
- Russell Teague (@mtnbikenc)
|
2018-05-16 23:51:55 +00:00
|
|
|
- Abhijeet Kasurde (@Akasurde) <akasurde@redhat.com>
|
2015-08-24 17:21:41 +00:00
|
|
|
notes:
|
2018-04-28 11:01:45 +00:00
|
|
|
- Tested on vSphere 5.5 and 6.5
|
2015-08-24 17:21:41 +00:00
|
|
|
requirements:
|
2017-08-24 12:31:13 +00:00
|
|
|
- python >= 2.6
|
|
|
|
- PyVmomi
|
2015-08-24 17:21:41 +00:00
|
|
|
options:
|
2017-08-24 12:31:13 +00:00
|
|
|
switch:
|
|
|
|
description:
|
|
|
|
- vSwitch name to add.
|
|
|
|
- Alias C(switch) is added in version 2.4.
|
|
|
|
required: yes
|
|
|
|
aliases: [ switch_name ]
|
|
|
|
nics:
|
|
|
|
description:
|
|
|
|
- A list of vmnic names or vmnic name to attach to vSwitch.
|
|
|
|
- Alias C(nics) is added in version 2.4.
|
|
|
|
aliases: [ nic_name ]
|
2018-04-28 11:01:45 +00:00
|
|
|
default: []
|
2017-08-24 12:31:13 +00:00
|
|
|
number_of_ports:
|
|
|
|
description:
|
|
|
|
- Number of port to configure on vSwitch.
|
|
|
|
default: 128
|
|
|
|
mtu:
|
|
|
|
description:
|
|
|
|
- MTU to configure on vSwitch.
|
2018-02-21 15:20:42 +00:00
|
|
|
default: 1500
|
2017-08-24 12:31:13 +00:00
|
|
|
state:
|
|
|
|
description:
|
|
|
|
- Add or remove the switch.
|
|
|
|
default: present
|
|
|
|
choices: [ absent, present ]
|
2017-12-01 15:19:37 +00:00
|
|
|
esxi_hostname:
|
|
|
|
description:
|
2018-04-28 11:01:45 +00:00
|
|
|
- Manage the vSwitch using this ESXi host system.
|
2017-12-01 15:19:37 +00:00
|
|
|
version_added: "2.5"
|
|
|
|
aliases: [ 'host' ]
|
2017-08-24 12:31:13 +00:00
|
|
|
extends_documentation_fragment:
|
|
|
|
- vmware.documentation
|
2015-08-24 17:21:41 +00:00
|
|
|
'''
|
|
|
|
|
|
|
|
EXAMPLES = '''
|
2017-06-26 16:47:10 +00:00
|
|
|
- name: Add a VMware vSwitch
|
2017-08-24 12:31:13 +00:00
|
|
|
action:
|
2017-06-26 16:47:10 +00:00
|
|
|
module: vmware_vswitch
|
|
|
|
hostname: esxi_hostname
|
|
|
|
username: esxi_username
|
|
|
|
password: esxi_password
|
2017-08-24 12:31:13 +00:00
|
|
|
switch: vswitch_name
|
|
|
|
nics: vmnic_name
|
2017-06-26 16:47:10 +00:00
|
|
|
mtu: 9000
|
2017-08-24 12:31:13 +00:00
|
|
|
delegate_to: localhost
|
2017-06-26 16:47:10 +00:00
|
|
|
|
|
|
|
- name: Add a VMWare vSwitch without any physical NIC attached
|
|
|
|
vmware_vswitch:
|
|
|
|
hostname: 192.168.10.1
|
|
|
|
username: admin
|
|
|
|
password: password123
|
2017-08-24 12:31:13 +00:00
|
|
|
switch: vswitch_0001
|
2017-06-26 16:47:10 +00:00
|
|
|
mtu: 9000
|
2017-08-24 12:31:13 +00:00
|
|
|
delegate_to: localhost
|
2017-06-26 16:47:10 +00:00
|
|
|
|
2017-08-08 15:41:57 +00:00
|
|
|
- name: Add a VMWare vSwitch with multiple NICs
|
|
|
|
vmware_vswitch:
|
|
|
|
hostname: esxi_hostname
|
|
|
|
username: esxi_username
|
|
|
|
password: esxi_password
|
2017-08-21 21:07:04 +00:00
|
|
|
switch: vmware_vswitch_0004
|
2017-08-24 12:31:13 +00:00
|
|
|
nics:
|
|
|
|
- vmnic1
|
|
|
|
- vmnic2
|
2017-08-08 15:41:57 +00:00
|
|
|
mtu: 9000
|
2017-08-24 12:31:13 +00:00
|
|
|
delegate_to: localhost
|
2017-12-01 15:19:37 +00:00
|
|
|
|
|
|
|
- name: Add a VMware vSwitch to a specific host system
|
|
|
|
vmware_vswitch:
|
|
|
|
hostname: 192.168.10.1
|
|
|
|
username: esxi_username
|
|
|
|
password: esxi_password
|
|
|
|
esxi_hostname: DC0_H0
|
|
|
|
switch_name: vswitch_001
|
|
|
|
nic_name: vmnic0
|
|
|
|
mtu: 9000
|
|
|
|
delegate_to: localhost
|
2015-08-24 17:21:41 +00:00
|
|
|
'''
|
|
|
|
|
2018-04-28 11:01:45 +00:00
|
|
|
RETURN = """
|
|
|
|
result:
|
|
|
|
description: information about performed operation
|
|
|
|
returned: always
|
|
|
|
type: string
|
|
|
|
sample: "vSwitch 'vSwitch_1002' is created successfully"
|
|
|
|
"""
|
2017-12-01 15:19:37 +00:00
|
|
|
|
2015-08-24 17:21:41 +00:00
|
|
|
try:
|
|
|
|
from pyVmomi import vim, vmodl
|
|
|
|
except ImportError:
|
2017-12-01 15:19:37 +00:00
|
|
|
pass
|
2015-08-24 17:21:41 +00:00
|
|
|
|
2018-04-28 11:01:45 +00:00
|
|
|
from ansible.module_utils.basic import AnsibleModule
|
|
|
|
from ansible.module_utils.vmware import PyVmomi, vmware_argument_spec
|
|
|
|
from ansible.module_utils._text import to_native
|
Resolves issue with vmware_vswitch module for v2.0
When this module was written back in May 2015 we were using 1.9.x. Being lazy I added to param the objects that the other functions would need. What I have noticed is in 2.0 exit_json is trying to jsonify those complex objects and failing.
Playbook
```yaml
- name: Add a temporary vSwitch
local_action:
module: vmware_vswitch
hostname: "{{ inventory_hostname }}"
username: "{{ esxi_username }}"
password: "{{ site_passwd }}"
switch_name: temp_vswitch
nic_name: "{{ vss_vmnic }}"
mtu: 1500
```
Module Testing
```bash
TASK [Add a temporary vSwitch] *************************************************
task path: /opt/autodeploy/projects/emmet/tasks/deploy/esxi_network.yml:13
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" )
localhost PUT /tmp/tmpLLExSG TO /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/" > /dev/null 2>&1
localhost PUT /tmp/tmpyoAaHt TO /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/" > /dev/null 2>&1
localhost PUT /tmp/tmpPcmaMZ TO /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/" > /dev/null 2>&1
changed: [foundation-esxi-01 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-01", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-02 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-02", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-03 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-03", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
```
Documentation fix
2016-02-01 16:21:38 +00:00
|
|
|
|
|
|
|
|
2017-12-01 15:19:37 +00:00
|
|
|
class VMwareHostVirtualSwitch(PyVmomi):
|
Resolves issue with vmware_vswitch module for v2.0
When this module was written back in May 2015 we were using 1.9.x. Being lazy I added to param the objects that the other functions would need. What I have noticed is in 2.0 exit_json is trying to jsonify those complex objects and failing.
Playbook
```yaml
- name: Add a temporary vSwitch
local_action:
module: vmware_vswitch
hostname: "{{ inventory_hostname }}"
username: "{{ esxi_username }}"
password: "{{ site_passwd }}"
switch_name: temp_vswitch
nic_name: "{{ vss_vmnic }}"
mtu: 1500
```
Module Testing
```bash
TASK [Add a temporary vSwitch] *************************************************
task path: /opt/autodeploy/projects/emmet/tasks/deploy/esxi_network.yml:13
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" )
localhost PUT /tmp/tmpLLExSG TO /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/" > /dev/null 2>&1
localhost PUT /tmp/tmpyoAaHt TO /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/" > /dev/null 2>&1
localhost PUT /tmp/tmpPcmaMZ TO /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/" > /dev/null 2>&1
changed: [foundation-esxi-01 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-01", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-02 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-02", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-03 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-03", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
```
Documentation fix
2016-02-01 16:21:38 +00:00
|
|
|
def __init__(self, module):
|
2017-12-01 15:19:37 +00:00
|
|
|
super(VMwareHostVirtualSwitch, self).__init__(module)
|
Resolves issue with vmware_vswitch module for v2.0
When this module was written back in May 2015 we were using 1.9.x. Being lazy I added to param the objects that the other functions would need. What I have noticed is in 2.0 exit_json is trying to jsonify those complex objects and failing.
Playbook
```yaml
- name: Add a temporary vSwitch
local_action:
module: vmware_vswitch
hostname: "{{ inventory_hostname }}"
username: "{{ esxi_username }}"
password: "{{ site_passwd }}"
switch_name: temp_vswitch
nic_name: "{{ vss_vmnic }}"
mtu: 1500
```
Module Testing
```bash
TASK [Add a temporary vSwitch] *************************************************
task path: /opt/autodeploy/projects/emmet/tasks/deploy/esxi_network.yml:13
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" )
localhost PUT /tmp/tmpLLExSG TO /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/" > /dev/null 2>&1
localhost PUT /tmp/tmpyoAaHt TO /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/" > /dev/null 2>&1
localhost PUT /tmp/tmpPcmaMZ TO /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/" > /dev/null 2>&1
changed: [foundation-esxi-01 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-01", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-02 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-02", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-03 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-03", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
```
Documentation fix
2016-02-01 16:21:38 +00:00
|
|
|
self.host_system = None
|
|
|
|
self.vss = None
|
2017-08-21 21:07:04 +00:00
|
|
|
self.switch = module.params['switch']
|
Resolves issue with vmware_vswitch module for v2.0
When this module was written back in May 2015 we were using 1.9.x. Being lazy I added to param the objects that the other functions would need. What I have noticed is in 2.0 exit_json is trying to jsonify those complex objects and failing.
Playbook
```yaml
- name: Add a temporary vSwitch
local_action:
module: vmware_vswitch
hostname: "{{ inventory_hostname }}"
username: "{{ esxi_username }}"
password: "{{ site_passwd }}"
switch_name: temp_vswitch
nic_name: "{{ vss_vmnic }}"
mtu: 1500
```
Module Testing
```bash
TASK [Add a temporary vSwitch] *************************************************
task path: /opt/autodeploy/projects/emmet/tasks/deploy/esxi_network.yml:13
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" )
localhost PUT /tmp/tmpLLExSG TO /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/" > /dev/null 2>&1
localhost PUT /tmp/tmpyoAaHt TO /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/" > /dev/null 2>&1
localhost PUT /tmp/tmpPcmaMZ TO /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/" > /dev/null 2>&1
changed: [foundation-esxi-01 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-01", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-02 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-02", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-03 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-03", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
```
Documentation fix
2016-02-01 16:21:38 +00:00
|
|
|
self.number_of_ports = module.params['number_of_ports']
|
2017-08-21 21:07:04 +00:00
|
|
|
self.nics = module.params['nics']
|
Resolves issue with vmware_vswitch module for v2.0
When this module was written back in May 2015 we were using 1.9.x. Being lazy I added to param the objects that the other functions would need. What I have noticed is in 2.0 exit_json is trying to jsonify those complex objects and failing.
Playbook
```yaml
- name: Add a temporary vSwitch
local_action:
module: vmware_vswitch
hostname: "{{ inventory_hostname }}"
username: "{{ esxi_username }}"
password: "{{ site_passwd }}"
switch_name: temp_vswitch
nic_name: "{{ vss_vmnic }}"
mtu: 1500
```
Module Testing
```bash
TASK [Add a temporary vSwitch] *************************************************
task path: /opt/autodeploy/projects/emmet/tasks/deploy/esxi_network.yml:13
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" )
localhost PUT /tmp/tmpLLExSG TO /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/" > /dev/null 2>&1
localhost PUT /tmp/tmpyoAaHt TO /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/" > /dev/null 2>&1
localhost PUT /tmp/tmpPcmaMZ TO /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/" > /dev/null 2>&1
changed: [foundation-esxi-01 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-01", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-02 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-02", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-03 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-03", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
```
Documentation fix
2016-02-01 16:21:38 +00:00
|
|
|
self.mtu = module.params['mtu']
|
|
|
|
self.state = module.params['state']
|
2018-04-28 11:01:45 +00:00
|
|
|
esxi_hostname = module.params['esxi_hostname']
|
|
|
|
|
|
|
|
hosts = self.get_all_host_objs(esxi_host_name=esxi_hostname)
|
|
|
|
if hosts:
|
|
|
|
self.host_system = hosts[0]
|
|
|
|
else:
|
|
|
|
self.module.fail_json(msg="Failed to get details of ESXi server."
|
|
|
|
" Please specify esxi_hostname.")
|
|
|
|
|
|
|
|
if self.params.get('state') == 'present':
|
|
|
|
# Gather information about all vSwitches and Physical NICs
|
|
|
|
network_manager = self.host_system.configManager.networkSystem
|
|
|
|
available_pnic = [pnic.device for pnic in network_manager.networkInfo.pnic]
|
|
|
|
self.available_vswitches = dict()
|
|
|
|
for available_vswitch in network_manager.networkInfo.vswitch:
|
|
|
|
used_pnic = []
|
|
|
|
for pnic in available_vswitch.pnic:
|
|
|
|
# vSwitch contains all PNICs as string in format of 'key-vim.host.PhysicalNic-vmnic0'
|
|
|
|
m_pnic = pnic.split("-", 3)[-1]
|
|
|
|
used_pnic.append(m_pnic)
|
|
|
|
self.available_vswitches[available_vswitch.name] = dict(pnic=used_pnic,
|
|
|
|
mtu=available_vswitch.mtu,
|
|
|
|
num_ports=available_vswitch.spec.numPorts,
|
|
|
|
)
|
|
|
|
for desired_pnic in self.nics:
|
|
|
|
if desired_pnic not in available_pnic:
|
|
|
|
# Check if pnic does not exists
|
|
|
|
self.module.fail_json(msg="Specified Physical NIC '%s' does not"
|
|
|
|
" exists on given ESXi '%s'." % (desired_pnic,
|
|
|
|
self.host_system.name))
|
|
|
|
for vswitch in self.available_vswitches:
|
|
|
|
if desired_pnic in self.available_vswitches[vswitch]['pnic'] and vswitch != self.switch:
|
|
|
|
# Check if pnic is already part of some other vSwitch
|
|
|
|
self.module.fail_json(msg="Specified Physical NIC '%s' is already used"
|
|
|
|
" by vSwitch '%s'." % (desired_pnic, vswitch))
|
Resolves issue with vmware_vswitch module for v2.0
When this module was written back in May 2015 we were using 1.9.x. Being lazy I added to param the objects that the other functions would need. What I have noticed is in 2.0 exit_json is trying to jsonify those complex objects and failing.
Playbook
```yaml
- name: Add a temporary vSwitch
local_action:
module: vmware_vswitch
hostname: "{{ inventory_hostname }}"
username: "{{ esxi_username }}"
password: "{{ site_passwd }}"
switch_name: temp_vswitch
nic_name: "{{ vss_vmnic }}"
mtu: 1500
```
Module Testing
```bash
TASK [Add a temporary vSwitch] *************************************************
task path: /opt/autodeploy/projects/emmet/tasks/deploy/esxi_network.yml:13
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" )
localhost PUT /tmp/tmpLLExSG TO /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/" > /dev/null 2>&1
localhost PUT /tmp/tmpyoAaHt TO /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/" > /dev/null 2>&1
localhost PUT /tmp/tmpPcmaMZ TO /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/" > /dev/null 2>&1
changed: [foundation-esxi-01 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-01", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-02 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-02", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-03 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-03", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
```
Documentation fix
2016-02-01 16:21:38 +00:00
|
|
|
|
|
|
|
def process_state(self):
|
2018-04-28 11:01:45 +00:00
|
|
|
"""
|
|
|
|
Function to manage internal state of vSwitch
|
|
|
|
"""
|
|
|
|
vswitch_states = {
|
|
|
|
'absent': {
|
|
|
|
'present': self.state_destroy_vswitch,
|
|
|
|
'absent': self.state_exit_unchanged,
|
|
|
|
},
|
|
|
|
'present': {
|
|
|
|
'present': self.state_update_vswitch,
|
|
|
|
'absent': self.state_create_vswitch,
|
Resolves issue with vmware_vswitch module for v2.0
When this module was written back in May 2015 we were using 1.9.x. Being lazy I added to param the objects that the other functions would need. What I have noticed is in 2.0 exit_json is trying to jsonify those complex objects and failing.
Playbook
```yaml
- name: Add a temporary vSwitch
local_action:
module: vmware_vswitch
hostname: "{{ inventory_hostname }}"
username: "{{ esxi_username }}"
password: "{{ site_passwd }}"
switch_name: temp_vswitch
nic_name: "{{ vss_vmnic }}"
mtu: 1500
```
Module Testing
```bash
TASK [Add a temporary vSwitch] *************************************************
task path: /opt/autodeploy/projects/emmet/tasks/deploy/esxi_network.yml:13
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" )
localhost PUT /tmp/tmpLLExSG TO /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/" > /dev/null 2>&1
localhost PUT /tmp/tmpyoAaHt TO /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/" > /dev/null 2>&1
localhost PUT /tmp/tmpPcmaMZ TO /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/" > /dev/null 2>&1
changed: [foundation-esxi-01 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-01", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-02 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-02", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-03 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-03", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
```
Documentation fix
2016-02-01 16:21:38 +00:00
|
|
|
}
|
2018-04-28 11:01:45 +00:00
|
|
|
}
|
2015-08-24 17:21:41 +00:00
|
|
|
|
2018-04-28 11:01:45 +00:00
|
|
|
try:
|
Resolves issue with vmware_vswitch module for v2.0
When this module was written back in May 2015 we were using 1.9.x. Being lazy I added to param the objects that the other functions would need. What I have noticed is in 2.0 exit_json is trying to jsonify those complex objects and failing.
Playbook
```yaml
- name: Add a temporary vSwitch
local_action:
module: vmware_vswitch
hostname: "{{ inventory_hostname }}"
username: "{{ esxi_username }}"
password: "{{ site_passwd }}"
switch_name: temp_vswitch
nic_name: "{{ vss_vmnic }}"
mtu: 1500
```
Module Testing
```bash
TASK [Add a temporary vSwitch] *************************************************
task path: /opt/autodeploy/projects/emmet/tasks/deploy/esxi_network.yml:13
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" )
localhost PUT /tmp/tmpLLExSG TO /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/" > /dev/null 2>&1
localhost PUT /tmp/tmpyoAaHt TO /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/" > /dev/null 2>&1
localhost PUT /tmp/tmpPcmaMZ TO /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/" > /dev/null 2>&1
changed: [foundation-esxi-01 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-01", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-02 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-02", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-03 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-03", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
```
Documentation fix
2016-02-01 16:21:38 +00:00
|
|
|
vswitch_states[self.state][self.check_vswitch_configuration()]()
|
|
|
|
except vmodl.RuntimeFault as runtime_fault:
|
2018-04-28 11:01:45 +00:00
|
|
|
self.module.fail_json(msg=to_native(runtime_fault.msg))
|
Resolves issue with vmware_vswitch module for v2.0
When this module was written back in May 2015 we were using 1.9.x. Being lazy I added to param the objects that the other functions would need. What I have noticed is in 2.0 exit_json is trying to jsonify those complex objects and failing.
Playbook
```yaml
- name: Add a temporary vSwitch
local_action:
module: vmware_vswitch
hostname: "{{ inventory_hostname }}"
username: "{{ esxi_username }}"
password: "{{ site_passwd }}"
switch_name: temp_vswitch
nic_name: "{{ vss_vmnic }}"
mtu: 1500
```
Module Testing
```bash
TASK [Add a temporary vSwitch] *************************************************
task path: /opt/autodeploy/projects/emmet/tasks/deploy/esxi_network.yml:13
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" )
localhost PUT /tmp/tmpLLExSG TO /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/" > /dev/null 2>&1
localhost PUT /tmp/tmpyoAaHt TO /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/" > /dev/null 2>&1
localhost PUT /tmp/tmpPcmaMZ TO /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/" > /dev/null 2>&1
changed: [foundation-esxi-01 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-01", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-02 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-02", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-03 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-03", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
```
Documentation fix
2016-02-01 16:21:38 +00:00
|
|
|
except vmodl.MethodFault as method_fault:
|
2018-04-28 11:01:45 +00:00
|
|
|
self.module.fail_json(msg=to_native(method_fault.msg))
|
Resolves issue with vmware_vswitch module for v2.0
When this module was written back in May 2015 we were using 1.9.x. Being lazy I added to param the objects that the other functions would need. What I have noticed is in 2.0 exit_json is trying to jsonify those complex objects and failing.
Playbook
```yaml
- name: Add a temporary vSwitch
local_action:
module: vmware_vswitch
hostname: "{{ inventory_hostname }}"
username: "{{ esxi_username }}"
password: "{{ site_passwd }}"
switch_name: temp_vswitch
nic_name: "{{ vss_vmnic }}"
mtu: 1500
```
Module Testing
```bash
TASK [Add a temporary vSwitch] *************************************************
task path: /opt/autodeploy/projects/emmet/tasks/deploy/esxi_network.yml:13
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" )
localhost PUT /tmp/tmpLLExSG TO /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/" > /dev/null 2>&1
localhost PUT /tmp/tmpyoAaHt TO /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/" > /dev/null 2>&1
localhost PUT /tmp/tmpPcmaMZ TO /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/" > /dev/null 2>&1
changed: [foundation-esxi-01 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-01", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-02 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-02", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-03 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-03", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
```
Documentation fix
2016-02-01 16:21:38 +00:00
|
|
|
except Exception as e:
|
2018-04-28 11:01:45 +00:00
|
|
|
self.module.fail_json(msg=to_native(e))
|
2017-01-27 23:45:23 +00:00
|
|
|
|
Resolves issue with vmware_vswitch module for v2.0
When this module was written back in May 2015 we were using 1.9.x. Being lazy I added to param the objects that the other functions would need. What I have noticed is in 2.0 exit_json is trying to jsonify those complex objects and failing.
Playbook
```yaml
- name: Add a temporary vSwitch
local_action:
module: vmware_vswitch
hostname: "{{ inventory_hostname }}"
username: "{{ esxi_username }}"
password: "{{ site_passwd }}"
switch_name: temp_vswitch
nic_name: "{{ vss_vmnic }}"
mtu: 1500
```
Module Testing
```bash
TASK [Add a temporary vSwitch] *************************************************
task path: /opt/autodeploy/projects/emmet/tasks/deploy/esxi_network.yml:13
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" )
localhost PUT /tmp/tmpLLExSG TO /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/" > /dev/null 2>&1
localhost PUT /tmp/tmpyoAaHt TO /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/" > /dev/null 2>&1
localhost PUT /tmp/tmpPcmaMZ TO /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/" > /dev/null 2>&1
changed: [foundation-esxi-01 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-01", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-02 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-02", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-03 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-03", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
```
Documentation fix
2016-02-01 16:21:38 +00:00
|
|
|
def state_create_vswitch(self):
|
2018-04-28 11:01:45 +00:00
|
|
|
"""
|
|
|
|
Function to create a virtual switch
|
|
|
|
|
|
|
|
Source from
|
|
|
|
https://github.com/rreubenur/pyvmomi-community-samples/blob/patch-1/samples/create_vswitch.py
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
results = dict(changed=False, result="")
|
Resolves issue with vmware_vswitch module for v2.0
When this module was written back in May 2015 we were using 1.9.x. Being lazy I added to param the objects that the other functions would need. What I have noticed is in 2.0 exit_json is trying to jsonify those complex objects and failing.
Playbook
```yaml
- name: Add a temporary vSwitch
local_action:
module: vmware_vswitch
hostname: "{{ inventory_hostname }}"
username: "{{ esxi_username }}"
password: "{{ site_passwd }}"
switch_name: temp_vswitch
nic_name: "{{ vss_vmnic }}"
mtu: 1500
```
Module Testing
```bash
TASK [Add a temporary vSwitch] *************************************************
task path: /opt/autodeploy/projects/emmet/tasks/deploy/esxi_network.yml:13
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" )
localhost PUT /tmp/tmpLLExSG TO /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/" > /dev/null 2>&1
localhost PUT /tmp/tmpyoAaHt TO /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/" > /dev/null 2>&1
localhost PUT /tmp/tmpPcmaMZ TO /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/" > /dev/null 2>&1
changed: [foundation-esxi-01 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-01", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-02 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-02", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-03 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-03", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
```
Documentation fix
2016-02-01 16:21:38 +00:00
|
|
|
vss_spec = vim.host.VirtualSwitch.Specification()
|
|
|
|
vss_spec.numPorts = self.number_of_ports
|
|
|
|
vss_spec.mtu = self.mtu
|
2017-08-21 21:07:04 +00:00
|
|
|
if self.nics:
|
|
|
|
vss_spec.bridge = vim.host.VirtualSwitch.BondBridge(nicDevice=self.nics)
|
2018-04-28 11:01:45 +00:00
|
|
|
try:
|
|
|
|
network_mgr = self.host_system.configManager.networkSystem
|
|
|
|
if network_mgr:
|
|
|
|
network_mgr.AddVirtualSwitch(vswitchName=self.switch,
|
|
|
|
spec=vss_spec)
|
|
|
|
results['changed'] = True
|
|
|
|
results['result'] = "vSwitch '%s' is created successfully" % self.switch
|
|
|
|
else:
|
|
|
|
self.module.fail_json(msg="Failed to find network manager for ESXi system")
|
|
|
|
except vim.fault.AlreadyExists as already_exists:
|
|
|
|
results['result'] = "vSwitch with name %s already exists: %s" % (self.switch,
|
|
|
|
to_native(already_exists.msg))
|
|
|
|
except vim.fault.ResourceInUse as resource_used:
|
|
|
|
self.module.fail_json(msg="Failed to add vSwitch '%s' as physical network adapter"
|
|
|
|
" being bridged is already in use: %s" % (self.switch,
|
|
|
|
to_native(resource_used.msg)))
|
|
|
|
except vim.fault.HostConfigFault as host_config_fault:
|
|
|
|
self.module.fail_json(msg="Failed to add vSwitch '%s' due to host"
|
|
|
|
" configuration fault : %s" % (self.switch,
|
|
|
|
to_native(host_config_fault.msg)))
|
|
|
|
except vmodl.fault.InvalidArgument as invalid_argument:
|
|
|
|
self.module.fail_json(msg="Failed to add vSwitch '%s', this can be due to either of following :"
|
|
|
|
" 1. vSwitch Name exceeds the maximum allowed length,"
|
|
|
|
" 2. Number of ports specified falls out of valid range,"
|
|
|
|
" 3. Network policy is invalid,"
|
|
|
|
" 4. Beacon configuration is invalid : %s" % (self.switch,
|
|
|
|
to_native(invalid_argument.msg)))
|
|
|
|
except vmodl.fault.SystemError as system_error:
|
|
|
|
self.module.fail_json(msg="Failed to add vSwitch '%s' due to : %s" % (self.switch,
|
|
|
|
to_native(system_error.msg)))
|
|
|
|
except Exception as generic_exc:
|
|
|
|
self.module.fail_json(msg="Failed to add vSwitch '%s' due to"
|
|
|
|
" generic exception : %s" % (self.switch,
|
|
|
|
to_native(generic_exc)))
|
|
|
|
self.module.exit_json(**results)
|
Resolves issue with vmware_vswitch module for v2.0
When this module was written back in May 2015 we were using 1.9.x. Being lazy I added to param the objects that the other functions would need. What I have noticed is in 2.0 exit_json is trying to jsonify those complex objects and failing.
Playbook
```yaml
- name: Add a temporary vSwitch
local_action:
module: vmware_vswitch
hostname: "{{ inventory_hostname }}"
username: "{{ esxi_username }}"
password: "{{ site_passwd }}"
switch_name: temp_vswitch
nic_name: "{{ vss_vmnic }}"
mtu: 1500
```
Module Testing
```bash
TASK [Add a temporary vSwitch] *************************************************
task path: /opt/autodeploy/projects/emmet/tasks/deploy/esxi_network.yml:13
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" )
localhost PUT /tmp/tmpLLExSG TO /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/" > /dev/null 2>&1
localhost PUT /tmp/tmpyoAaHt TO /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/" > /dev/null 2>&1
localhost PUT /tmp/tmpPcmaMZ TO /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/" > /dev/null 2>&1
changed: [foundation-esxi-01 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-01", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-02 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-02", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-03 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-03", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
```
Documentation fix
2016-02-01 16:21:38 +00:00
|
|
|
|
|
|
|
def state_exit_unchanged(self):
|
2018-04-28 11:01:45 +00:00
|
|
|
"""
|
|
|
|
Function to declare exit without unchanged
|
|
|
|
"""
|
Resolves issue with vmware_vswitch module for v2.0
When this module was written back in May 2015 we were using 1.9.x. Being lazy I added to param the objects that the other functions would need. What I have noticed is in 2.0 exit_json is trying to jsonify those complex objects and failing.
Playbook
```yaml
- name: Add a temporary vSwitch
local_action:
module: vmware_vswitch
hostname: "{{ inventory_hostname }}"
username: "{{ esxi_username }}"
password: "{{ site_passwd }}"
switch_name: temp_vswitch
nic_name: "{{ vss_vmnic }}"
mtu: 1500
```
Module Testing
```bash
TASK [Add a temporary vSwitch] *************************************************
task path: /opt/autodeploy/projects/emmet/tasks/deploy/esxi_network.yml:13
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" )
localhost PUT /tmp/tmpLLExSG TO /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/" > /dev/null 2>&1
localhost PUT /tmp/tmpyoAaHt TO /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/" > /dev/null 2>&1
localhost PUT /tmp/tmpPcmaMZ TO /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/" > /dev/null 2>&1
changed: [foundation-esxi-01 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-01", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-02 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-02", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-03 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-03", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
```
Documentation fix
2016-02-01 16:21:38 +00:00
|
|
|
self.module.exit_json(changed=False)
|
|
|
|
|
|
|
|
def state_destroy_vswitch(self):
|
2018-04-28 11:01:45 +00:00
|
|
|
"""
|
|
|
|
Function to remove vSwitch from configuration
|
|
|
|
|
|
|
|
"""
|
|
|
|
results = dict(changed=False, result="")
|
|
|
|
|
|
|
|
try:
|
|
|
|
self.host_system.configManager.networkSystem.RemoveVirtualSwitch(self.vss.name)
|
|
|
|
results['changed'] = True
|
|
|
|
results['result'] = "vSwitch '%s' removed successfully." % self.vss.name
|
|
|
|
except vim.fault.NotFound as vswitch_not_found:
|
|
|
|
results['result'] = "vSwitch '%s' not available. %s" % (self.switch,
|
|
|
|
to_native(vswitch_not_found.msg))
|
|
|
|
except vim.fault.ResourceInUse as vswitch_in_use:
|
|
|
|
self.module.fail_json(msg="Failed to remove vSwitch '%s' as vSwitch"
|
|
|
|
" is used by several virtual"
|
|
|
|
" network adapters: %s" % (self.switch,
|
|
|
|
to_native(vswitch_in_use.msg)))
|
|
|
|
except vim.fault.HostConfigFault as host_config_fault:
|
|
|
|
self.module.fail_json(msg="Failed to remove vSwitch '%s' due to host"
|
|
|
|
" configuration fault : %s" % (self.switch,
|
|
|
|
to_native(host_config_fault.msg)))
|
|
|
|
except Exception as generic_exc:
|
|
|
|
self.module.fail_json(msg="Failed to remove vSwitch '%s' due to generic"
|
|
|
|
" exception : %s" % (self.switch,
|
|
|
|
to_native(generic_exc)))
|
|
|
|
|
|
|
|
self.module.exit_json(**results)
|
Resolves issue with vmware_vswitch module for v2.0
When this module was written back in May 2015 we were using 1.9.x. Being lazy I added to param the objects that the other functions would need. What I have noticed is in 2.0 exit_json is trying to jsonify those complex objects and failing.
Playbook
```yaml
- name: Add a temporary vSwitch
local_action:
module: vmware_vswitch
hostname: "{{ inventory_hostname }}"
username: "{{ esxi_username }}"
password: "{{ site_passwd }}"
switch_name: temp_vswitch
nic_name: "{{ vss_vmnic }}"
mtu: 1500
```
Module Testing
```bash
TASK [Add a temporary vSwitch] *************************************************
task path: /opt/autodeploy/projects/emmet/tasks/deploy/esxi_network.yml:13
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" )
localhost PUT /tmp/tmpLLExSG TO /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/" > /dev/null 2>&1
localhost PUT /tmp/tmpyoAaHt TO /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/" > /dev/null 2>&1
localhost PUT /tmp/tmpPcmaMZ TO /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/" > /dev/null 2>&1
changed: [foundation-esxi-01 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-01", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-02 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-02", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-03 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-03", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
```
Documentation fix
2016-02-01 16:21:38 +00:00
|
|
|
|
|
|
|
def state_update_vswitch(self):
|
2018-04-28 11:01:45 +00:00
|
|
|
"""
|
|
|
|
Function to update vSwitch
|
|
|
|
|
|
|
|
"""
|
|
|
|
results = dict(changed=False, result="No change in vSwitch '%s'" % self.switch)
|
|
|
|
vswitch_pnic_info = self.available_vswitches[self.switch]
|
|
|
|
remain_pnic = []
|
|
|
|
for desired_pnic in self.nics:
|
|
|
|
if desired_pnic not in vswitch_pnic_info['pnic']:
|
|
|
|
remain_pnic.append(desired_pnic)
|
|
|
|
|
|
|
|
diff = False
|
|
|
|
# Update all nics
|
|
|
|
all_nics = vswitch_pnic_info['pnic']
|
|
|
|
if remain_pnic:
|
|
|
|
all_nics += remain_pnic
|
|
|
|
diff = True
|
|
|
|
|
|
|
|
# vSwitch needs every parameter again while updating,
|
|
|
|
# even if we are updating any one of them
|
|
|
|
vss_spec = vim.host.VirtualSwitch.Specification()
|
|
|
|
vss_spec.bridge = vim.host.VirtualSwitch.BondBridge(nicDevice=all_nics)
|
|
|
|
vss_spec.numPorts = self.number_of_ports
|
|
|
|
vss_spec.mtu = self.mtu
|
|
|
|
|
|
|
|
if vswitch_pnic_info['mtu'] != self.mtu or \
|
|
|
|
vswitch_pnic_info['num_ports'] != self.number_of_ports:
|
|
|
|
diff = True
|
|
|
|
|
|
|
|
try:
|
|
|
|
if diff:
|
|
|
|
network_mgr = self.host_system.configManager.networkSystem
|
|
|
|
if network_mgr:
|
|
|
|
network_mgr.UpdateVirtualSwitch(vswitchName=self.switch,
|
|
|
|
spec=vss_spec)
|
|
|
|
results['changed'] = True
|
|
|
|
results['result'] = "vSwitch '%s' is updated successfully" % self.switch
|
|
|
|
else:
|
|
|
|
self.module.fail_json(msg="Failed to find network manager for ESXi system.")
|
|
|
|
except vim.fault.ResourceInUse as resource_used:
|
|
|
|
self.module.fail_json(msg="Failed to update vSwitch '%s' as physical network adapter"
|
|
|
|
" being bridged is already in use: %s" % (self.switch,
|
|
|
|
to_native(resource_used.msg)))
|
|
|
|
except vim.fault.NotFound as not_found:
|
|
|
|
self.module.fail_json(msg="Failed to update vSwitch with name '%s'"
|
|
|
|
" as it does not exists: %s" % (self.switch,
|
|
|
|
to_native(not_found.msg)))
|
|
|
|
|
|
|
|
except vim.fault.HostConfigFault as host_config_fault:
|
|
|
|
self.module.fail_json(msg="Failed to update vSwitch '%s' due to host"
|
|
|
|
" configuration fault : %s" % (self.switch,
|
|
|
|
to_native(host_config_fault.msg)))
|
|
|
|
except vmodl.fault.InvalidArgument as invalid_argument:
|
|
|
|
self.module.fail_json(msg="Failed to update vSwitch '%s', this can be due to either of following :"
|
|
|
|
" 1. vSwitch Name exceeds the maximum allowed length,"
|
|
|
|
" 2. Number of ports specified falls out of valid range,"
|
|
|
|
" 3. Network policy is invalid,"
|
|
|
|
" 4. Beacon configuration is invalid : %s" % (self.switch,
|
|
|
|
to_native(invalid_argument.msg)))
|
|
|
|
except vmodl.fault.SystemError as system_error:
|
|
|
|
self.module.fail_json(msg="Failed to update vSwitch '%s' due to : %s" % (self.switch,
|
|
|
|
to_native(system_error.msg)))
|
|
|
|
except vmodl.fault.NotSupported as not_supported:
|
|
|
|
self.module.fail_json(msg="Failed to update vSwitch '%s' as network adapter teaming policy"
|
|
|
|
" is set but is not supported : %s" % (self.switch,
|
|
|
|
to_native(not_supported.msg)))
|
|
|
|
except Exception as generic_exc:
|
|
|
|
self.module.fail_json(msg="Failed to update vSwitch '%s' due to"
|
|
|
|
" generic exception : %s" % (self.switch,
|
|
|
|
to_native(generic_exc)))
|
|
|
|
self.module.exit_json(**results)
|
Resolves issue with vmware_vswitch module for v2.0
When this module was written back in May 2015 we were using 1.9.x. Being lazy I added to param the objects that the other functions would need. What I have noticed is in 2.0 exit_json is trying to jsonify those complex objects and failing.
Playbook
```yaml
- name: Add a temporary vSwitch
local_action:
module: vmware_vswitch
hostname: "{{ inventory_hostname }}"
username: "{{ esxi_username }}"
password: "{{ site_passwd }}"
switch_name: temp_vswitch
nic_name: "{{ vss_vmnic }}"
mtu: 1500
```
Module Testing
```bash
TASK [Add a temporary vSwitch] *************************************************
task path: /opt/autodeploy/projects/emmet/tasks/deploy/esxi_network.yml:13
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" )
localhost PUT /tmp/tmpLLExSG TO /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/" > /dev/null 2>&1
localhost PUT /tmp/tmpyoAaHt TO /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/" > /dev/null 2>&1
localhost PUT /tmp/tmpPcmaMZ TO /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/" > /dev/null 2>&1
changed: [foundation-esxi-01 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-01", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-02 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-02", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-03 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-03", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
```
Documentation fix
2016-02-01 16:21:38 +00:00
|
|
|
|
|
|
|
def check_vswitch_configuration(self):
|
2018-04-28 11:01:45 +00:00
|
|
|
"""
|
|
|
|
Function to check if vSwitch exists
|
|
|
|
Returns: 'present' if vSwitch exists or 'absent' if not
|
2017-01-27 23:45:23 +00:00
|
|
|
|
2018-04-28 11:01:45 +00:00
|
|
|
"""
|
|
|
|
self.vss = self.find_vswitch_by_name(self.host_system, self.switch)
|
Resolves issue with vmware_vswitch module for v2.0
When this module was written back in May 2015 we were using 1.9.x. Being lazy I added to param the objects that the other functions would need. What I have noticed is in 2.0 exit_json is trying to jsonify those complex objects and failing.
Playbook
```yaml
- name: Add a temporary vSwitch
local_action:
module: vmware_vswitch
hostname: "{{ inventory_hostname }}"
username: "{{ esxi_username }}"
password: "{{ site_passwd }}"
switch_name: temp_vswitch
nic_name: "{{ vss_vmnic }}"
mtu: 1500
```
Module Testing
```bash
TASK [Add a temporary vSwitch] *************************************************
task path: /opt/autodeploy/projects/emmet/tasks/deploy/esxi_network.yml:13
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" )
localhost PUT /tmp/tmpLLExSG TO /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/" > /dev/null 2>&1
localhost PUT /tmp/tmpyoAaHt TO /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/" > /dev/null 2>&1
localhost PUT /tmp/tmpPcmaMZ TO /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/" > /dev/null 2>&1
changed: [foundation-esxi-01 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-01", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-02 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-02", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-03 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-03", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
```
Documentation fix
2016-02-01 16:21:38 +00:00
|
|
|
if self.vss is None:
|
|
|
|
return 'absent'
|
|
|
|
else:
|
|
|
|
return 'present'
|
2017-01-27 23:45:23 +00:00
|
|
|
|
2018-04-28 11:01:45 +00:00
|
|
|
@staticmethod
|
|
|
|
def find_vswitch_by_name(host, vswitch_name):
|
|
|
|
"""
|
|
|
|
Function to find and return vSwitch managed object
|
|
|
|
Args:
|
|
|
|
host: Host system managed object
|
|
|
|
vswitch_name: Name of vSwitch to find
|
|
|
|
|
|
|
|
Returns: vSwitch managed object if found, else None
|
|
|
|
|
|
|
|
"""
|
|
|
|
for vss in host.configManager.networkSystem.networkInfo.vswitch:
|
|
|
|
if vss.name == vswitch_name:
|
|
|
|
return vss
|
|
|
|
return None
|
|
|
|
|
2015-08-24 17:21:41 +00:00
|
|
|
|
|
|
|
def main():
|
|
|
|
argument_spec = vmware_argument_spec()
|
2017-08-24 12:31:13 +00:00
|
|
|
argument_spec.update(dict(
|
|
|
|
switch=dict(type='str', required=True, aliases=['switch_name']),
|
2018-04-28 11:01:45 +00:00
|
|
|
nics=dict(type='list', aliases=['nic_name'], default=[]),
|
2017-08-24 12:31:13 +00:00
|
|
|
number_of_ports=dict(type='int', default=128),
|
|
|
|
mtu=dict(type='int', default=1500),
|
|
|
|
state=dict(type='str', default='present', choices=['absent', 'present'])),
|
2017-12-01 15:19:37 +00:00
|
|
|
esxi_hostname=dict(type='str', aliases=['host']),
|
2017-08-24 12:31:13 +00:00
|
|
|
)
|
2015-08-24 17:21:41 +00:00
|
|
|
|
2017-12-01 15:19:37 +00:00
|
|
|
module = AnsibleModule(argument_spec=argument_spec,
|
|
|
|
supports_check_mode=False)
|
2015-08-24 17:21:41 +00:00
|
|
|
|
Resolves issue with vmware_vswitch module for v2.0
When this module was written back in May 2015 we were using 1.9.x. Being lazy I added to param the objects that the other functions would need. What I have noticed is in 2.0 exit_json is trying to jsonify those complex objects and failing.
Playbook
```yaml
- name: Add a temporary vSwitch
local_action:
module: vmware_vswitch
hostname: "{{ inventory_hostname }}"
username: "{{ esxi_username }}"
password: "{{ site_passwd }}"
switch_name: temp_vswitch
nic_name: "{{ vss_vmnic }}"
mtu: 1500
```
Module Testing
```bash
TASK [Add a temporary vSwitch] *************************************************
task path: /opt/autodeploy/projects/emmet/tasks/deploy/esxi_network.yml:13
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598 )" )
ESTABLISH LOCAL CONNECTION FOR USER: root
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801 )" )
localhost PUT /tmp/tmpLLExSG TO /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.37-180776062017566/" > /dev/null 2>&1
localhost PUT /tmp/tmpyoAaHt TO /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.41-201974997737598/" > /dev/null 2>&1
localhost PUT /tmp/tmpPcmaMZ TO /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch
localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/vmware_vswitch; rm -rf "/root/.ansible/tmp/ansible-tmp-1454342817.44-148446986849801/" > /dev/null 2>&1
changed: [foundation-esxi-01 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-01", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-02 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-02", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
changed: [foundation-esxi-03 -> localhost] => {"changed": true, "invocation": {"module_args": {"hostname": "foundation-esxi-03", "mtu": 1500, "nic_name": "vmnic1", "number_of_ports": 128, "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "state": "present", "switch_name": "temp_vswitch", "username": "root"}, "module_name": "vmware_vswitch"}}
```
Documentation fix
2016-02-01 16:21:38 +00:00
|
|
|
host_virtual_switch = VMwareHostVirtualSwitch(module)
|
|
|
|
host_virtual_switch.process_state()
|
2015-08-24 17:21:41 +00:00
|
|
|
|
2017-07-29 15:05:38 +00:00
|
|
|
|
2015-08-24 17:21:41 +00:00
|
|
|
if __name__ == '__main__':
|
|
|
|
main()
|