Modify intent handler.
[nemo.git] / nemo-impl / src / main / java / org / opendaylight / nemo / intent / IntentResolverUtils.java
index ffd1810aaeaead9ffec9848b514f9d677ac0f3ae..a3cce23d86254b58341eebbd531ec4cdc9e82502 100644 (file)
@@ -8,10 +8,7 @@
 \r
 package org.opendaylight.nemo.intent;\r
 \r
-import java.util.ArrayList;\r
-import java.util.List;\r
-import java.util.concurrent.ExecutionException;\r
-\r
+import com.google.common.base.Optional;\r
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;\r
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
@@ -20,12 +17,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.links.VirtualLink;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.nodes.VirtualNode;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.IntentVnMappingResult;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ConnectionId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.FlowId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.IntentId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ObjectId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.PropertyName;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.intent.vn.mapping.result.VirtualResource;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.*;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalHostId;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalNodeId;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.VirtualNodeId;\r
@@ -34,14 +27,19 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.int
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.MatchItem;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.SubNode;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.StringValue;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.Action;\r
 import org.opendaylight.yangtools.yang.binding.DataObject;\r
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
 import org.slf4j.Logger;\r
 import org.slf4j.LoggerFactory;\r
 \r
-import com.google.common.base.Optional;\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+import java.util.concurrent.ExecutionException;\r
 \r
 /**\r
  * Implement the common utilities frequently used in\r
@@ -50,7 +48,6 @@ import com.google.common.base.Optional;
  * @author Zhigang Ji\r
  */\r
 public class IntentResolverUtils {\r
-\r
     private static final Logger LOG = LoggerFactory.getLogger(IntentResolverUtils.class);\r
 \r
     /**\r
@@ -469,38 +466,42 @@ public class IntentResolverUtils {
         return null;\r
     }\r
 \r
-\r
     public static void copyPhysicalNetworkConfigToOperational(DataBroker dataBroker) {\r
         final InstanceIdentifier<PhysicalNetwork> physicalNetworkIid = InstanceIdentifier\r
-                .builder(PhysicalNetwork.class).build();\r
+                .builder(PhysicalNetwork.class)\r
+                .build();\r
 \r
         final ReadWriteTransaction txn = dataBroker.newReadWriteTransaction();\r
 \r
         try {\r
             final Optional<PhysicalNetwork> oper = txn.read(LogicalDatastoreType.OPERATIONAL, physicalNetworkIid).get();\r
 \r
-            if (oper.isPresent()) {\r
-                txn.cancel();\r
-                LOG.info("Physical network already exists in operational");\r
-            } else {\r
-                final Optional<PhysicalNetwork> config = txn.read(LogicalDatastoreType.CONFIGURATION,\r
-                        physicalNetworkIid).get();\r
-\r
-                if (config.isPresent()) {\r
-                    txn.put(LogicalDatastoreType.OPERATIONAL, physicalNetworkIid, config.get());\r
-                    txn.submit().get();\r
-                    LOG.info("Copied physical network from config to operational");\r
-                } else {\r
+            if ( oper.isPresent() ) {\r
+                PhysicalNetwork physicalNetwork = oper.get();\r
+\r
+                if ( null != physicalNetwork.getPhysicalNodes() ) {\r
                     txn.cancel();\r
-                    LOG.info("No physical network found in config; none copied to operational");\r
+                    LOG.info("Physical network already exists in operational");\r
+\r
+                    return;\r
                 }\r
             }\r
+\r
+            final Optional<PhysicalNetwork> config = txn.read(LogicalDatastoreType.CONFIGURATION,\r
+                    physicalNetworkIid).get();\r
+\r
+            if (config.isPresent()) {\r
+                txn.put(LogicalDatastoreType.OPERATIONAL, physicalNetworkIid, config.get());\r
+                txn.submit().get();\r
+                LOG.info("Copied physical network from config to operational");\r
+            } else {\r
+                txn.cancel();\r
+                LOG.info("No physical network found in config; none copied to operational");\r
+            }\r
         } catch (InterruptedException exception) {\r
-            LOG.error("Cannot copy the physical hosts.", exception);\r
+            LOG.error("Cannot copy the physical network.", exception);\r
         } catch (ExecutionException exception) {\r
-            LOG.error("Cannot copy the physical hosts.", exception);\r
+            LOG.error("Cannot copy the physical network.", exception);\r
         }\r
-\r
     }\r
-\r
 }\r