change default configuration to do not proxy the VIM VNF consoles
[osm/RO.git] / vimconn_openvim.py
index ee0f960..62c1677 100644 (file)
@@ -591,8 +591,10 @@ class vimconnector(vimconn.vimconnector):
         '''Adds a tenant flavor to VIM'''
         '''Returns the flavor identifier'''
         try:
+            new_flavor_dict = flavor_data.copy()
+            new_flavor_dict["name"] = flavor_data["name"][:64]
             self._get_my_tenant()
-            payload_req = json.dumps({'flavor': flavor_data})
+            payload_req = json.dumps({'flavor': new_flavor_dict})
             url = self.url+'/'+self.tenant+'/flavors'
             self.logger.info("Adding a new VIM flavor POST %s", url)
             vim_response = requests.post(url, headers = self.headers_req, data=payload_req)
@@ -647,7 +649,7 @@ class vimconnector(vimconn.vimconnector):
         ''' Adds a tenant image to VIM, returns image_id'''
         try:
             self._get_my_tenant()
-            new_image_dict={'name': image_dict['name']}
+            new_image_dict={'name': image_dict['name'][:64]}
             if image_dict.get('description'):
                 new_image_dict['description'] = image_dict['description']
             if image_dict.get('metadata'):
@@ -688,7 +690,7 @@ class vimconnector(vimconn.vimconnector):
 
     
     def get_image_id_from_path(self, path):
-        '''Get the image id from image path in the VIM database'''
+        '''Get the image id from image path in the VIM database. Returns the image_id'''
         try:
             self._get_my_tenant()
             url=self.url + '/' + self.tenant + '/images?path='+quote(path)
@@ -710,6 +712,36 @@ class vimconnector(vimconn.vimconnector):
         except (requests.exceptions.RequestException, js_e.ValidationError) as e:
             self._format_request_exception(e)
 
+    def get_image_list(self, filter_dict={}):
+        '''Obtain tenant images from VIM
+        Filter_dict can be:
+            name: image name
+            id: image uuid
+            checksum: image checksum
+            location: image path
+        Returns the image list of dictionaries:
+            [{<the fields at Filter_dict plus some VIM specific>}, ...]
+            List can be empty
+        '''
+        try:
+            self._get_my_tenant()
+            filterquery=[]
+            filterquery_text=''
+            for k,v in filter_dict.iteritems():
+                filterquery.append(str(k)+'='+str(v))
+            if len(filterquery)>0:
+                filterquery_text='?'+ '&'.join(filterquery)
+            url = self.url+'/'+self.tenant+'/images'+filterquery_text
+            self.logger.info("Getting image list GET %s", url)
+            vim_response = requests.get(url, headers = self.headers_req)
+            self._check_http_request_response(vim_response)
+            self.logger.debug(vim_response.text)
+            #print json.dumps(vim_response.json(), indent=4)
+            response = vim_response.json()
+            return response['images']
+        except (requests.exceptions.RequestException, js_e.ValidationError) as e:
+            self._format_request_exception(e)
+
     def new_vminstancefromJSON(self, vm_data):
         '''Adds a VM instance to VIM'''
         '''Returns the instance identifier'''
@@ -746,7 +778,7 @@ class vimconnector(vimconn.vimconnector):
             #print text
             return -vim_response.status_code,text
 
-    def new_vminstance(self,name,description,start,image_id,flavor_id,net_list, cloud_config=None):
+    def new_vminstance(self,name,description,start,image_id,flavor_id,net_list, cloud_config=None, disk_list=None):
         '''Adds a VM instance to VIM
         Params:
             start: indicates if VM must start or boot in pause mode. Ignored
@@ -781,7 +813,7 @@ class vimconnector(vimconn.vimconnector):
                 if net.get("model"):       net_dict["model"] = net["model"]
                 if net.get("mac_address"): net_dict["mac_address"] = net["mac_address"]
                 virtio_net_list.append(net_dict)
-            payload_dict={  "name":        name,
+            payload_dict={  "name":        name[:64],
                             "description": description,
                             "imageRef":    image_id,
                             "flavorRef":   flavor_id,
@@ -910,7 +942,7 @@ class vimconnector(vimconn.vimconnector):
                         interface={}
                         interface['vim_info']  = yaml.safe_dump(port)
                         interface["mac_address"] = port.get("mac_address")
-                        interface["vim_net_id"] = port["network_id"]
+                        interface["vim_net_id"] = port.get("network_id")
                         interface["vim_interface_id"] = port["id"]
                         interface["ip_address"] = port.get("ip_address")
                         if interface["ip_address"]: