package org.opendaylight.groupbasedpolicy.renderer.ios_xe_provider.impl.writer;
+import java.util.List;
+import java.util.Set;
import com.google.common.base.Optional;
import com.google.common.util.concurrent.CheckedFuture;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
import org.opendaylight.groupbasedpolicy.renderer.ios_xe_provider.impl.util.PolicyManagerUtil;
-import org.opendaylight.groupbasedpolicy.renderer.ios_xe_provider.impl.util.ServiceChainingUtil;
import org.opendaylight.yang.gen.v1.urn.ios.rev160308.ClassNameType;
import org.opendaylight.yang.gen.v1.urn.ios.rev160308.Native;
import org.opendaylight.yang.gen.v1.urn.ios.rev160308._interface.common.grouping.ServicePolicy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.List;
-
/**
* Purpose: Util class for every policy writer
*/
private static final Logger LOG = LoggerFactory.getLogger(PolicyWriterUtil.class);
- static boolean writeClassMaps(final List<ClassMap> classMapEntries, final NodeId nodeId, final DataBroker mountpoint) {
+ static boolean writeClassMaps(final Set<ClassMap> classMapEntries, final NodeId nodeId, final DataBroker mountpoint) {
if (classMapEntries == null || classMapEntries.isEmpty()) {
return true;
}
return true;
}
- static boolean removeClassMaps(final List<ClassMap> classMapEntries, final NodeId nodeId, final DataBroker mountpoint) {
+ static boolean removeClassMaps(final Set<ClassMap> classMapEntries, final NodeId nodeId, final DataBroker mountpoint) {
boolean result = true;
if (classMapEntries == null || classMapEntries.isEmpty()) {
return true;
return result;
}
- static boolean writePolicyMap(final String policyMapName, final List<Class> policyMapEntries, NodeId nodeId,
+ static boolean writePolicyMap(final String policyMapName, final Set<Class> policyMapEntries, NodeId nodeId,
final DataBroker mountpoint) {
final java.util.Optional<WriteTransaction> optionalWriteTransaction =
NetconfTransactionCreator.netconfWriteOnlyTransaction(mountpoint);
return true;
}
- static boolean removePolicyMapEntries(final String policyMapName, final List<Class> policyMapEntries,
+ static boolean removePolicyMapEntries(final String policyMapName, final Set<Class> policyMapEntries,
final NodeId nodeId, final DataBroker mountpoint) {
if (policyMapEntries == null || policyMapEntries.isEmpty()) {
return true;
return true;
}
- static boolean writeLocal(final Local localForwarder, final NodeId nodeId, final DataBroker mountpoint) {
- if (localForwarder == null) {
+ static boolean writeRemote(final Set<ServiceFfName> remoteForwarders, final NodeId nodeId,
+ final DataBroker mountpoint) {
+ if (remoteForwarders == null || remoteForwarders.isEmpty()) {
return true;
}
- final java.util.Optional<WriteTransaction> optionalWriteTransaction =
- NetconfTransactionCreator.netconfWriteOnlyTransaction(mountpoint);
- if (!optionalWriteTransaction.isPresent()) {
- LOG.warn("Failed to create write-only transaction, mountpoint: {}", mountpoint);
- return false;
- }
- final WriteTransaction writeTransaction = optionalWriteTransaction.get();
- final InstanceIdentifier<Local> localIid = localSffInstanceIdentifier();
- writeMergeTransaction(writeTransaction, localIid, localForwarder);
- LOG.info("Local forwarder created on node {}", nodeId.getValue());
- return true;
- }
-
- static boolean removeLocal(final NodeId nodeId, final DataBroker mountpoint) {
- // Remove local forwarder only when there are no more service-paths
- if (ServiceChainingUtil.checkServicePathPresence(mountpoint)) {
+ for (ServiceFfName forwarder : remoteForwarders) {
final java.util.Optional<WriteTransaction> optionalWriteTransaction =
NetconfTransactionCreator.netconfWriteOnlyTransaction(mountpoint);
if (!optionalWriteTransaction.isPresent()) {
- LOG.warn("Failed to create write-only transaction, mountpoint: {}", mountpoint);
+ LOG.warn("Failed to create transaction, mountpoint: {}", mountpoint);
return false;
}
final WriteTransaction writeTransaction = optionalWriteTransaction.get();
- final InstanceIdentifier<Local> localIid = localSffInstanceIdentifier();
- deleteTransaction(writeTransaction, localIid);
- LOG.info("Local forwarder removed from node {}", nodeId.getValue());
+ final InstanceIdentifier<ServiceFfName> forwarderIid = remoteSffInstanceIdentifier(forwarder);
+ writeMergeTransaction(writeTransaction, forwarderIid, forwarder);
+ LOG.info("Remote forwarder {} created on node {}", forwarder.getName(), nodeId.getValue());
}
return true;
}
- static boolean writeRemote(final List<ServiceFfName> remoteForwarders, final NodeId nodeId,
- final DataBroker mountpoint) {
+ static boolean removeRemote(final Set<ServiceFfName> remoteForwarders, final NodeId nodeId,
+ final DataBroker mountpoint) {
if (remoteForwarders == null || remoteForwarders.isEmpty()) {
return true;
}
}
final WriteTransaction writeTransaction = optionalWriteTransaction.get();
final InstanceIdentifier<ServiceFfName> forwarderIid = remoteSffInstanceIdentifier(forwarder);
- writeMergeTransaction(writeTransaction, forwarderIid, forwarder);
- LOG.info("Remote forwarder {} created on node {}", forwarder.getName(), nodeId.getValue());
+ deleteTransaction(writeTransaction, forwarderIid);
+ LOG.info("Remote forwarder {} removed from node {}", forwarder.getName(), nodeId.getValue());
}
return true;
}
- static boolean writeServicePaths(final List<ServiceChain> serviceChains, final NodeId nodeId,
+ static boolean writeServicePaths(final Set<ServiceChain> serviceChains, final NodeId nodeId,
final DataBroker mountpoint) {
for (org.opendaylight.yang.gen.v1.urn.ios.rev160308._native.ServiceChain serviceChain : serviceChains) {
for (ServicePath entry : serviceChain.getServicePath()) {
return true;
}
- static boolean removeServicePaths(final List<ServiceChain> serviceChains, final NodeId nodeId,
+ static boolean removeServicePaths(final Set<ServiceChain> serviceChains, final NodeId nodeId,
final DataBroker mountpoint) {
if (serviceChains == null || serviceChains.isEmpty()) {
return true;