openstack: get vlan from port binding:vif_details 09/9109/2
authortierno <alfonso.tiernosepulveda@telefonica.com>
Thu, 18 Jun 2020 08:50:10 +0000 (08:50 +0000)
committertierno <alfonso.tiernosepulveda@telefonica.com>
Thu, 18 Jun 2020 20:07:03 +0000 (20:07 +0000)
Change-Id: I828cfa02a32e95a9a161ce0db288a11a4e9a591c
Signed-off-by: tierno <alfonso.tiernosepulveda@telefonica.com>
RO-VIM-openstack/osm_rovim_openstack/vimconn_openstack.py

index 6123141..ba8b004 100644 (file)
@@ -1655,11 +1655,16 @@ class vimconnector(vimconn.VimConnector):
                                 # interface["pci"] = pci[:-4] + "00." + str(int(pci[-1]) % 2)
                                 interface["pci"] = pci
                         interface["vlan"] = None
-                        #if network is of type vlan and port is of type direct (sr-iov) then set vlan id
-                        network = self.neutron.show_network(port["network_id"])
-                        if network['network'].get('provider:network_type') == 'vlan' and \
-                            port.get("binding:vnic_type") in ("direct", "direct-physical"):
-                            interface["vlan"] = network['network'].get('provider:segmentation_id')
+                        if port.get('binding:vif_details'):
+                            interface["vlan"] = port['binding:vif_details'].get('vlan')
+                        # Get vlan from network in case not present in port for those old openstacks and cases where
+                        # it is needed vlan at PT
+                        if not interface["vlan"]:
+                            # if network is of type vlan and port is of type direct (sr-iov) then set vlan id
+                            network = self.neutron.show_network(port["network_id"])
+                            if network['network'].get('provider:network_type') == 'vlan':
+                                # and port.get("binding:vnic_type") in ("direct", "direct-physical"):
+                                interface["vlan"] = network['network'].get('provider:segmentation_id')
                         ips=[]
                         #look for floating ip address
                         try: