Fix reference to information model
[osm/N2VC.git] / n2vc / vnf.py
index 04ad301..74f4d94 100644 (file)
@@ -287,9 +287,10 @@ class N2VC:
 
         vdu:
             ...
-            relation:
-            -   provides: dataVM:db
-                requires: mgmtVM:app
+            vca-relationships:
+                relation:
+                -   provides: dataVM:db
+                    requires: mgmtVM:app
 
         This tells N2VC that the charm referred to by the dataVM vdu offers a relation named 'db', and the mgmtVM vdu has an 'app' endpoint that should be connected to a database.
 
@@ -339,8 +340,9 @@ class N2VC:
         # Loop through relations
         for cfg in configs:
             if 'juju' in cfg:
-                if 'relation' in juju:
-                    for rel in juju['relation']:
+                juju = cfg['juju']
+                if 'vca-relationships' in juju and 'relation' in juju['vca-relationships']:
+                    for rel in juju['vca-relationships']['relation']:
                         try:
 
                             # get the application name for the provides
@@ -502,10 +504,19 @@ class N2VC:
             # Where to deploy the charm to.
             to=to,
         )
-
-        # Map the vdu id<->app name,
-        #
-        await self.Relate(model_name, vnfd)
+        #############################
+        # Map the vdu id<->app name #
+        #############################
+        try:
+            await self.Relate(model_name, vnfd)
+        except KeyError as ex:
+            # We don't currently support relations between NS and VNF/VDU charms
+            self.log.warn("[N2VC] Relations not supported: {}".format(ex))
+        except Exception as ex:
+            # This may happen if not all of the charms needed by the relation
+            # are ready. We can safely ignore this, because Relate will be
+            # retried when the endpoint of the relation is deployed.
+            self.log.warn("[N2VC] Relations not ready")
 
         # #######################################
         # # Execute initial config primitive(s) #