Initial pass at changing groupId
[netvirt.git] / openstack / net-virt-sfc / impl / src / main / java / org / opendaylight / netvirt / openstack / netvirt / sfc / NetvirtSfcClassifierDataProcessor.java
1 /*
2  * Copyright © 2015, 2016 Dell, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.netvirt.openstack.netvirt.sfc;
10
11 import com.google.common.base.Preconditions;
12 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
13 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
14 import org.opendaylight.netvirt.utils.mdsal.utils.MdsalUtils;
15 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.AccessLists;
16 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.Acl;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.AclKey;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.classifier.rev150105.classifiers
19         .Classifier;
20 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
21 import org.slf4j.Logger;
22 import org.slf4j.LoggerFactory;
23
24 /**
25  * Data processor for Classifier.
26  */
27 public class NetvirtSfcClassifierDataProcessor implements INetvirtSfcDataProcessor<Classifier> {
28     private static final Logger LOG = LoggerFactory.getLogger(NetvirtSfcClassifierDataProcessor.class);
29     private final MdsalUtils mdsalUtils;
30     private final INetvirtSfcOF13Provider provider;
31
32     /**
33      * {@link NetvirtSfcClassifierDataProcessor} constructor.
34      * @param provider OpenFlow 1.3 Provider
35      * @param db MdSal {@link DataBroker}
36      */
37     public NetvirtSfcClassifierDataProcessor(final INetvirtSfcOF13Provider provider, final DataBroker db) {
38         this.provider = Preconditions.checkNotNull(provider, "Provider can not be null!");
39         Preconditions.checkNotNull(db, "DataBroker can not be null!");
40         mdsalUtils = new MdsalUtils(db);
41     }
42
43     @Override
44     public void remove(final InstanceIdentifier<Classifier> identifier,
45                        final Classifier change) {
46         Preconditions.checkNotNull(change, "Added object can not be null!");
47         String aclName = change.getAcl();
48         // Read the ACL information from data store and make sure it exists.
49         Acl acl = mdsalUtils.read(LogicalDatastoreType.CONFIGURATION, getIetfAclIid(aclName));
50         if (acl == null) {
51             LOG.debug("IETF ACL with name ={} is not yet configured. skip this operation", aclName);
52             return;
53         }
54
55         provider.removeClassifierRules(acl);
56     }
57
58     @Override
59     public void update(final InstanceIdentifier<Classifier> identifier,
60                        final Classifier original, final Classifier change) {
61         //TODO
62
63     }
64
65     @Override
66     public void add(final InstanceIdentifier<Classifier> identifier,
67                     final Classifier change) {
68         Preconditions.checkNotNull(change, "Added object can not be null!");
69         String aclName = change.getAcl();
70         // Read the ACL information from data store and make sure it exists.
71         Acl acl = mdsalUtils.read(LogicalDatastoreType.CONFIGURATION, getIetfAclIid(aclName));
72         if (acl == null) {
73             LOG.debug("IETF ACL with name ={} is not yet configured. skip this operation", aclName);
74             return;
75         }
76
77         provider.addClassifierRules(acl);
78     }
79
80     private InstanceIdentifier<Acl> getIetfAclIid(String aclName) {
81         return InstanceIdentifier.create(AccessLists.class).child(Acl.class, new AclKey(aclName));
82     }
83 }