\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
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
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
* @author Zhigang Ji\r
*/\r
public class IntentResolverUtils {\r
-\r
private static final Logger LOG = LoggerFactory.getLogger(IntentResolverUtils.class);\r
\r
/**\r
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