VMware: Add check for valid VLAN id range (#55023)
Check allows vmware_dvs_portgroup to fail early if user specified invalid range in VLAN id(s). Fixes: #54927 Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>pull/4420/head
parent
a62adaefa9
commit
98692ab350
|
@ -43,6 +43,7 @@ options:
|
||||||
description:
|
description:
|
||||||
- The VLAN ID that should be configured with the portgroup, use 0 for no VLAN.
|
- The VLAN ID that should be configured with the portgroup, use 0 for no VLAN.
|
||||||
- 'If C(vlan_trunk) is configured to be I(true), this can be a combination of multiple ranges and numbers, example: 1-200, 205, 400-4094.'
|
- 'If C(vlan_trunk) is configured to be I(true), this can be a combination of multiple ranges and numbers, example: 1-200, 205, 400-4094.'
|
||||||
|
- The valid C(vlan_id) range is from 0 to 4094. Overlapping ranges are allowed.
|
||||||
required: True
|
required: True
|
||||||
num_ports:
|
num_ports:
|
||||||
description:
|
description:
|
||||||
|
@ -260,8 +261,10 @@ class VMwareDvsPortgroup(PyVmomi):
|
||||||
vlan_id_list = []
|
vlan_id_list = []
|
||||||
for vlan_id_splitted in self.module.params['vlan_id'].split(','):
|
for vlan_id_splitted in self.module.params['vlan_id'].split(','):
|
||||||
try:
|
try:
|
||||||
vlan_id_start, vlan_id_end = vlan_id_splitted.split('-')
|
vlan_id_start, vlan_id_end = map(int, vlan_id_splitted.split('-'))
|
||||||
vlan_id_list.append(vim.NumericRange(start=int(vlan_id_start.strip()), end=int(vlan_id_end.strip())))
|
if vlan_id_start not in range(0, 4095) or vlan_id_end not in range(0, 4095):
|
||||||
|
self.module.fail_json(msg="vlan_id range %s specified is incorrect. The valid vlan_id range is from 0 to 4094." % vlan_id_splitted)
|
||||||
|
vlan_id_list.append(vim.NumericRange(start=vlan_id_start, end=vlan_id_end))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
vlan_id_list.append(vim.NumericRange(start=int(vlan_id_splitted.strip()), end=int(vlan_id_splitted.strip())))
|
vlan_id_list.append(vim.NumericRange(start=int(vlan_id_splitted.strip()), end=int(vlan_id_splitted.strip())))
|
||||||
config.defaultPortConfig.vlan.vlanId = vlan_id_list
|
config.defaultPortConfig.vlan.vlanId = vlan_id_list
|
||||||
|
|
|
@ -98,7 +98,7 @@
|
||||||
password: "{{ vcsim_instance['json']['password'] }}"
|
password: "{{ vcsim_instance['json']['password'] }}"
|
||||||
switch_name: "{{ new_dvs_0001['json'][0] | basename }}"
|
switch_name: "{{ new_dvs_0001['json'][0] | basename }}"
|
||||||
portgroup_name: "basic-trunk"
|
portgroup_name: "basic-trunk"
|
||||||
vlan_id: 1-4096
|
vlan_id: 1-4094
|
||||||
vlan_trunk: True
|
vlan_trunk: True
|
||||||
num_ports: 32
|
num_ports: 32
|
||||||
portgroup_type: earlyBinding
|
portgroup_type: earlyBinding
|
||||||
|
@ -231,3 +231,26 @@
|
||||||
assert:
|
assert:
|
||||||
that:
|
that:
|
||||||
- "{{ dvs_pg_result_0008.changed == false }}"
|
- "{{ dvs_pg_result_0008.changed == false }}"
|
||||||
|
|
||||||
|
# Testcase 0009: Check valid VLAN id range in DVS Portgroup
|
||||||
|
- name: Check valid VLAN id range in DVS Portgroup
|
||||||
|
vmware_dvs_portgroup:
|
||||||
|
validate_certs: False
|
||||||
|
hostname: "{{ vcsim }}"
|
||||||
|
username: "{{ vcsim_instance['json']['username'] }}"
|
||||||
|
password: "{{ vcsim_instance['json']['password'] }}"
|
||||||
|
switch_name: "{{ new_dvs_0001['json'][0] | basename }}"
|
||||||
|
portgroup_name: "basic_trunk_0001"
|
||||||
|
vlan_id: 1-4096
|
||||||
|
vlan_trunk: True
|
||||||
|
num_ports: 32
|
||||||
|
portgroup_type: earlyBinding
|
||||||
|
state: present
|
||||||
|
register: dvs_pg_result_0009
|
||||||
|
ignore_errors: True
|
||||||
|
|
||||||
|
- name: Ensure module fails for invalid VLAN id
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- not dvs_pg_result_0009.changed
|
||||||
|
- "'vlan_id range 1-4096 specified is incorrect. The valid vlan_id range is from 0 to 4094.' == '{{ dvs_pg_result_0009.msg }}'"
|
||||||
|
|
Loading…
Reference in New Issue