bug 544 Adding license headers
[osm/LCM.git] / osm_lcm / ROclient.py
index fe12f8b..dad89d5 100644 (file)
@@ -3,8 +3,6 @@
 
 ##
 # Copyright 2015 Telefónica Investigación y Desarrollo, S.A.U.
-# This file is part of openmano
-# All Rights Reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License"); you may
 # not use this file except in compliance with the License. You may obtain
@@ -18,8 +16,6 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 #
-# For those usages not covered by the Apache License, Version 2.0 please
-# contact with: nfvlabs@tid.es
 ##
 
 """
@@ -103,8 +99,8 @@ class ROClient:
                     'ns': 'instances'}
     mandatory_for_create = {
         'tenant': ("name", ),
-        'vnfd': ("name", "id", "connection-point", "vdu"),
-        'nsd': ("name", "id", "constituent-vnfd"),
+        'vnfd': ("name", "id"),
+        'nsd': ("name", "id"),
         'ns': ("name", "scenario", "datacenter"),
         'vim': ("name", "vim_url"),
         'vim_account': (),
@@ -206,7 +202,7 @@ class ROClient:
         try:
             UUID(uuid_text)
             return True
-        except (ValueError, TypeError):
+        except Exception:
             return False
 
     @staticmethod
@@ -353,7 +349,7 @@ class ROClient:
         """
         ns_info = {}
         for vnf in ns_descriptor["vnfs"]:
-            if not vnf.get("ip_address"):
+            if not vnf.get("ip_address") and vnf.get("vms"):
                 raise ROClientException("ns member_vnf_index '{}' has no IP address".format(
                     vnf["member_vnf_index"]), http_code=409)
             vnfr_info = {
@@ -693,7 +689,14 @@ class ROClient:
                 all_tenants = None
 
             with aiohttp.ClientSession(loop=self.loop) as session:
-                return await self._del_item(session, self.client_to_RO[item], item_id_name, all_tenants=all_tenants)
+                result = await self._del_item(session, self.client_to_RO[item], item_id_name, all_tenants=all_tenants)
+                # in case of ns delete, get the action_id embeded in text
+                if item == "ns" and result.get("result"):
+                    _, _, action_id = result["result"].partition("action_id=")
+                    action_id, _, _ = action_id.partition(" ")
+                    if action_id:
+                        result["action_id"] = action_id
+                return result
         except aiohttp.errors.ClientOSError as e:
             raise ROClientException(e, http_code=504)
         except asyncio.TimeoutError: