Added information needed for dataplane connectivity in refresh_vms_status in openstac... 56/1356/1
authorPablo Montes Moreno <pablo.montesmoreno@telefonica.com>
Thu, 23 Mar 2017 15:39:12 +0000 (16:39 +0100)
committerPablo Montes Moreno <pablo.montesmoreno@telefonica.com>
Thu, 23 Mar 2017 15:39:12 +0000 (16:39 +0100)
Change-Id: Ia672a8570bd31361d3097b9c1f1b02ec3fa13362
Signed-off-by: Pablo Montes Moreno <pablo.montesmoreno@telefonica.com>
vim_thread.py
vimconn_openstack.py

index d89c4d1..eb740b4 100644 (file)
@@ -164,8 +164,8 @@ class vim_thread(threading.Thread):
                 network = {"name": net_name, "type": net_type}
 
                 vim_net = self.vim.get_network(net_id)
-                if vim_net.get('network_type') != 'vlan':
-                    raise vimconn.vimconnException(net_name + "defined as type " + net_type + " but the created network in vim is " + vim_net['provider:network_type'])
+                if vim_net.get('encapsulation') != 'vlan':
+                    raise vimconn.vimconnException(net_name + "defined as type " + net_type + " but the created network in vim is " + vim_net['encapsulation'])
 
                 network["vlan"] = vim_net.get('segmentation_id')
 
index 2c238db..ceaa762 100644 (file)
@@ -389,7 +389,7 @@ class vimconnector(vimconn.vimconnector):
                 subnet = {"id": subnet_id, "fault": str(e)}
             subnets.append(subnet)
         net["subnets"] = subnets
-        net["network_type"] = net.get('provider:network_type')
+        net["encapsulation"] = net.get('provider:network_type')
         net["segmentation_id"] = net.get('provider:segmentation_id')
         return net
 
@@ -1094,6 +1094,9 @@ class vimconnector(vimconn.vimconnector):
                         vim_net_id:       #network id where this interface is connected
                         vim_interface_id: #interface/port VIM id
                         ip_address:       #null, or text with IPv4, IPv6 address
+                        physical_compute: #identification of compute node where PF,VF interface is allocated
+                        physical_pci:     #PCI address of the NIC that hosts the PF,VF
+                        physical_vlan:    #physical VLAN used for VF
         '''
         vm_dict={}
         self.logger.debug("refresh_vms status: Getting tenant VM instance information from VIM")
@@ -1126,6 +1129,19 @@ class vimconnector(vimconn.vimconnector):
                         interface["mac_address"] = port.get("mac_address")
                         interface["vim_net_id"] = port["network_id"]
                         interface["vim_interface_id"] = port["id"]
+                        interface["physical_compute"] = vm_vim['OS-EXT-SRV-ATTR:host']
+                        interface["physical_pci"] = None
+                        # TODO: At the moment sr-iov pci addresses are converted to PF pci addresses by setting the slot to 0x00
+                        # TODO: This is just a workaround valid for niantinc. Find a better way to do so
+                        if 'pci_slot' in port['binding:profile']:
+                            pci = list(port['binding:profile']['pci_slot'])
+                            pci[-4] = '0'
+                            pci[-3] = '0'
+                            interface["physical_pci"] = ''.join(pci)
+                        interface["physical_vlan"] = None
+                        network = self.neutron.show_network(port["network_id"])
+                        if network['network'].get('provider:network_type') == 'vlan':
+                            interface["physical_vlan"] = network['network'].get('provider:segmentation_id')
                         ips=[]
                         #look for floating ip address
                         floating_ip_dict = self.neutron.list_floatingips(port_id=port["id"])