import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.openflow13.INetvirtSfcOF13Provider;
import org.opendaylight.ovsdb.utils.mdsal.utils.MdsalUtils;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.acl.rev141010.AccessLists;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.acl.rev141010.access.lists.AccessList;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.acl.rev141010.access.lists.AccessListKey;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.acl.rev141010.access.lists.access.list.AccessListEntries;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.acl.rev141010.access.lists.access.list.access.list.entries.AccessListEntry;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.acl.rev141010.access.lists.access.list.access.list.entries.AccessListEntryKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.classifier.rev150105.Classifiers;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.classifier.rev150105.classifiers.Classifier;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.classifier.rev150105.classifiers.classifier.sffs.Sff;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.AccessLists;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.Acl;
import org.opendaylight.yangtools.concepts.ListenerRegistration;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.slf4j.Logger;
/**
* Data tree listener for AccessList.
*/
-public class NetvirtSfcAclListener extends AbstractDataTreeListener<AccessList> {
+public class NetvirtSfcAclListener extends AbstractDataTreeListener<Acl> {
private static final Logger LOG = LoggerFactory.getLogger(NetvirtSfcAclListener.class);
private ListenerRegistration<NetvirtSfcAclListener> listenerRegistration;
- private MdsalUtils dbutils;
/**
* {@link NetvirtSfcAclListener} constructor.
* @param db MdSal {@link DataBroker}
*/
public NetvirtSfcAclListener(final INetvirtSfcOF13Provider provider, final DataBroker db) {
- super(provider, AccessList.class);
+ super(provider, Acl.class);
Preconditions.checkNotNull(db, "DataBroker can not be null!");
- dbutils = new MdsalUtils(db);
registrationListener(db);
}
private void registrationListener(final DataBroker db) {
- final DataTreeIdentifier<AccessList> treeId =
+ final DataTreeIdentifier<Acl> treeId =
new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, getIetfAclIid());
try {
- LOG.info("Registering Data Change Listener for Netvirt AccesList configuration.");
+ LOG.info("Registering Data Change Listener for NetvirtSfc AccessList configuration.");
listenerRegistration = db.registerDataTreeChangeListener(treeId, this);
} catch (final Exception e) {
LOG.warn("Netvirt AccesList DataChange listener registration fail!");
- LOG.debug("Netvirt AccesList DataChange listener registration fail!", e);
- throw new IllegalStateException("NetvirtSfcAccesListListener startup fail! System needs restart.", e);
+ throw new IllegalStateException("NetvirtSfcAccessListListener startup fail! System needs restart.", e);
}
}
}
@Override
- public void remove(final InstanceIdentifier<AccessList> identifier,
- final AccessList removeDataObj) {
+ public void remove(final InstanceIdentifier<Acl> identifier,
+ final Acl removeDataObj) {
Preconditions.checkNotNull(removeDataObj, "Removed object can not be null!");
- String aclName = removeDataObj.getAclName();
-
- Classifiers classifiers = dbutils.read(LogicalDatastoreType.CONFIGURATION, getClassifierIid());
- if (classifiers != null) {
- for (Classifier classifier : classifiers.getClassifier()) {
- if (classifier.getAcl().equalsIgnoreCase(aclName)) {
- if (classifier.getSffs() != null) {
- for (Sff sff : classifier.getSffs().getSff()) {
- provider.removeClassifierRules(sff, removeDataObj);
- }
- }
- }
- }
- }
+ provider.removeClassifierRules(removeDataObj);
}
@Override
- public void update(final InstanceIdentifier<AccessList> identifier,
- final AccessList original, final AccessList update) {
+ public void update(final InstanceIdentifier<Acl> identifier,
+ final Acl original, final Acl update) {
}
@Override
- public void add(final InstanceIdentifier<AccessList> identifier,
- final AccessList addDataObj) {
+ public void add(final InstanceIdentifier<Acl> identifier,
+ final Acl addDataObj) {
Preconditions.checkNotNull(addDataObj, "Added object can not be null!");
- String aclName = addDataObj.getAclName();
- LOG.debug("Adding accesslist = {}", identifier);
- Classifiers classifiers = dbutils.read(LogicalDatastoreType.CONFIGURATION, getClassifierIid());
- if (classifiers != null) {
- for (Classifier classifier : classifiers.getClassifier()) {
- if (classifier.getAcl().equalsIgnoreCase(aclName)) {
- if (classifier.getSffs() != null) {
- for (Sff sff : classifier.getSffs().getSff()) {
- provider.addClassifierRules(sff, addDataObj);
- }
- }
- }
- }
- }
+ LOG.debug("Adding accesslist iid = {}, dataObj = {}", identifier, addDataObj);
+ provider.addClassifierRules(addDataObj);
}
- private InstanceIdentifier<Classifiers> getClassifierIid() {
- return InstanceIdentifier.create(Classifiers.class);
- }
-
- public InstanceIdentifier<AccessList> getIetfAclIid() {
- return InstanceIdentifier.create(AccessLists.class).child(AccessList.class);
- }
-
- /**
- * Create an {@link AccessListEntry} {@link InstanceIdentifier}.
- * @param aclName is the name of the ACL
- * @param ruleName is the name of the rule
- * @return the {@link AccessListEntry} {@link InstanceIdentifier}
- */
- public InstanceIdentifier<AccessListEntry> getIetfAclEntryIid(String aclName, String ruleName) {
- return InstanceIdentifier.create(AccessLists.class).child(AccessList.class,
- new AccessListKey(aclName)).child(AccessListEntries.class).child(AccessListEntry.class,
- new AccessListEntryKey(ruleName));
+ public InstanceIdentifier<Acl> getIetfAclIid() {
+ return InstanceIdentifier.create(AccessLists.class).child(Acl.class);
}
}