diff --git a/ansible/roles/vm_set/library/kvm_port.py b/ansible/roles/vm_set/library/kvm_port.py index 70b9c5b9ab2..66f7926654b 100644 --- a/ansible/roles/vm_set/library/kvm_port.py +++ b/ansible/roles/vm_set/library/kvm_port.py @@ -36,8 +36,8 @@ def main(): module.fail_json(msg="failed to iflist dom %s" % vmname) mgmt_port = None - fp_ports = [] - + fp_ports = {} + cur_fp_idx = 0 for l in output.split('\n'): fds = re.split('\s+', l) if len(fds) != 5: @@ -46,7 +46,8 @@ def main(): if mgmt_port == None: mgmt_port = fds[0] else: - fp_ports.append(fds[0]) + fp_ports[cur_fp_idx] = fds[0] + cur_fp_idx = cur_fp_idx + 1 if mgmt_port == None: module.fail_json(msg="failed to find mgmt port") diff --git a/ansible/roles/vm_set/library/mellanox_simx_port.py b/ansible/roles/vm_set/library/mellanox_simx_port.py index 4ab84553b68..d4c87be5348 100644 --- a/ansible/roles/vm_set/library/mellanox_simx_port.py +++ b/ansible/roles/vm_set/library/mellanox_simx_port.py @@ -23,10 +23,10 @@ def main(): )) mgmt_port = None - fp_ports = [] + fp_ports = {} for i in range(1,33): - fp_ports.append("v000_port{}".format(i)) + fp_ports[i-1] = ("v000_port{}".format(i)) mgmt_port = "tap0" diff --git a/ansible/roles/vm_set/library/vlan_port.py b/ansible/roles/vm_set/library/vlan_port.py index 9c6537c72bc..7106b35aa72 100644 --- a/ansible/roles/vm_set/library/vlan_port.py +++ b/ansible/roles/vm_set/library/vlan_port.py @@ -123,6 +123,7 @@ def main(): cmd=dict(required=True, choices=['create', 'remove', 'list']), external_port = dict(required=True, type='str'), vlan_ids=dict(required=True, type='list'), + vlan_base=dict(type='int', default=0) )) cmd = module.params['cmd'] @@ -130,7 +131,7 @@ def main(): vlan_ids = module.params['vlan_ids'] vlan_ids.sort() - fp_ports = [] + fp_ports = {} vp = VlanPort(external_port, vlan_ids) @@ -140,9 +141,14 @@ def main(): elif cmd == "remove": vp.remove_vlan_ports() + cur_fp_idx = 0 for vlan_id in vlan_ids: - fp_ports.append("%s.%d" % (external_port, vlan_id)) - + if 'vlan_base' in module.params and module.params['vlan_base'] != 0: + fp_ports[vlan_id - module.params['vlan_base']] = "%s.%d" % (external_port, vlan_id) + else: + fp_ports[cur_fp_idx] = "%s.%d" % (external_port, vlan_id) + cur_fp_idx = cur_fp_idx + 1 + module.exit_json(changed=False, ansible_facts={'dut_fp_ports': fp_ports}) if __name__ == "__main__": diff --git a/ansible/roles/vm_set/library/vm_topology.py b/ansible/roles/vm_set/library/vm_topology.py index 0b13da441e4..5024b5343fe 100644 --- a/ansible/roles/vm_set/library/vm_topology.py +++ b/ansible/roles/vm_set/library/vm_topology.py @@ -363,7 +363,7 @@ def bind_fp_ports(self, disconnect_vm=False): injected_iface = INJECTED_INTERFACES_TEMPLATE % (self.vm_set_name, vlan) br_name = OVS_FP_BRIDGE_TEMPLATE % (self.vm_names[self.vm_base_index + attr['vm_offset']], vlan_num) vm_iface = OVS_FP_TAP_TEMPLATE % (self.vm_names[self.vm_base_index + attr['vm_offset']], vlan_num) - self.bind_ovs_ports(br_name, self.dut_fp_ports[vlan], injected_iface, vm_iface, disconnect_vm) + self.bind_ovs_ports(br_name, self.dut_fp_ports[str(vlan)], injected_iface, vm_iface, disconnect_vm) return @@ -471,7 +471,7 @@ def inject_host_ports(self): """inject dut port into the ptf docker""" self.update() for vlan in self.host_interfaces: - self.add_dut_if_to_docker(PTF_FP_IFACE_TEMPLATE % vlan, self.dut_fp_ports[vlan]) + self.add_dut_if_to_docker(PTF_FP_IFACE_TEMPLATE % vlan, self.dut_fp_ports[str(vlan)]) return @@ -479,7 +479,7 @@ def deject_host_ports(self): """deject dut port from the ptf docker""" self.update() for vlan in self.host_interfaces: - self.remove_dut_if_from_docker(PTF_FP_IFACE_TEMPLATE % vlan, self.dut_fp_ports[vlan]) + self.remove_dut_if_from_docker(PTF_FP_IFACE_TEMPLATE % vlan, self.dut_fp_ports[str(vlan)]) @staticmethod def iface_up(iface_name, pid=None): @@ -676,7 +676,7 @@ def main(): ptf_bp_ip_addr=dict(required=False, type='str'), ptf_bp_ipv6_addr=dict(required=False, type='str'), mgmt_bridge=dict(required=False, type='str'), - dut_fp_ports=dict(required=False, type='list'), + dut_fp_ports=dict(required=False, type='dict'), dut_mgmt_port=dict(required=False, type='str'), fp_mtu=dict(required=False, type='int', default=DEFAULT_MTU), max_fp_num=dict(required=False, type='int', default=NUM_FP_VLANS_PER_FP), diff --git a/ansible/roles/vm_set/tasks/add_topo.yml b/ansible/roles/vm_set/tasks/add_topo.yml index 8b1dd6eb8e4..2f14c53e659 100644 --- a/ansible/roles/vm_set/tasks/add_topo.yml +++ b/ansible/roles/vm_set/tasks/add_topo.yml @@ -35,6 +35,11 @@ command: docker exec -i ptf_{{ vm_set_name }} sysctl -w net.ipv6.conf.all.disable_ipv6=0 become: yes +- name: Set default value for vlan_base + set_fact: + vlan_base: 0 + when: vlan_base is not defined + - name: Set front panel/mgmt port for dut include_tasks: set_dut_port.yml @@ -42,6 +47,7 @@ vlan_port: external_port: "{{ external_port }}" vlan_ids: "{{ device_vlan_list }}" + vlan_base: "{{ vlan_base }}" cmd: "create" become: yes when: external_port is defined diff --git a/ansible/roles/vm_set/tasks/connect_vms.yml b/ansible/roles/vm_set/tasks/connect_vms.yml index c99fd4262cc..745d0b4fc94 100644 --- a/ansible/roles/vm_set/tasks/connect_vms.yml +++ b/ansible/roles/vm_set/tasks/connect_vms.yml @@ -1,3 +1,8 @@ +- name: Set default value for vlan_base + set_fact: + vlan_base: 0 + when: vlan_base is not defined + - name: Set front panel/mgmt port for dut include_tasks: set_dut_port.yml diff --git a/ansible/roles/vm_set/tasks/disconnect_vms.yml b/ansible/roles/vm_set/tasks/disconnect_vms.yml index 28743968b91..432ce985c4a 100644 --- a/ansible/roles/vm_set/tasks/disconnect_vms.yml +++ b/ansible/roles/vm_set/tasks/disconnect_vms.yml @@ -1,3 +1,8 @@ +- name: Set default value for vlan_base + set_fact: + vlan_base: 0 + when: vlan_base is not defined + - name: Set front panel/mgmt port for dut include_tasks: set_dut_port.yml diff --git a/ansible/roles/vm_set/tasks/remove_topo.yml b/ansible/roles/vm_set/tasks/remove_topo.yml index 622282f5141..ec5bf5440a1 100644 --- a/ansible/roles/vm_set/tasks/remove_topo.yml +++ b/ansible/roles/vm_set/tasks/remove_topo.yml @@ -1,3 +1,8 @@ +- name: Set default value for vlan_base + set_fact: + vlan_base: 0 + when: vlan_base is not defined + - name: Set front panel/mgmt port for dut include_tasks: set_dut_port.yml @@ -20,6 +25,7 @@ vlan_port: external_port: "{{ external_port }}" vlan_ids: "{{ device_vlan_list }}" + vlan_base: "{{ vlan_base }}" cmd: "remove" become: yes when: external_port is defined diff --git a/ansible/roles/vm_set/tasks/renumber_topo.yml b/ansible/roles/vm_set/tasks/renumber_topo.yml index 2b25744bb91..062155bf9e2 100644 --- a/ansible/roles/vm_set/tasks/renumber_topo.yml +++ b/ansible/roles/vm_set/tasks/renumber_topo.yml @@ -25,6 +25,11 @@ privileged: yes become: yes +- name: Set default value for vlan_base + set_fact: + vlan_base: 0 + when: vlan_base is not defined + - name: Set front panel/mgmt port for dut include_tasks: set_dut_port.yml diff --git a/ansible/roles/vm_set/tasks/set_dut_port.yml b/ansible/roles/vm_set/tasks/set_dut_port.yml index 93f912f9325..d85f666c34a 100644 --- a/ansible/roles/vm_set/tasks/set_dut_port.yml +++ b/ansible/roles/vm_set/tasks/set_dut_port.yml @@ -2,6 +2,7 @@ vlan_port: external_port: "{{ external_port }}" vlan_ids: "{{ device_vlan_list }}" + vlan_base: "{{ vlan_base }}" cmd: "list" become: yes when: external_port is defined