@Override
protected void remove(InstanceIdentifier<Acl> key, Acl acl) {
+ if (!AclServiceUtils.isOfAclInterest(acl)) {
+ LOG.trace("{} does not have SecurityRuleAttr augmentation", acl.getAclName());
+ return;
+ }
+
this.aclServiceUtils.releaseAclId(acl.getAclName());
updateRemoteAclCache(acl.getAccessListEntries().getAce(), acl.getAclName(), AclServiceManager.Action.REMOVE);
}
@Override
protected void update(InstanceIdentifier<Acl> key, Acl aclBefore, Acl aclAfter) {
+ if (!AclServiceUtils.isOfAclInterest(aclAfter)) {
+ LOG.trace("{} does not have SecurityRuleAttr augmentation", aclAfter.getAclName());
+ return;
+ }
+
String aclName = aclAfter.getAclName();
List<AclInterface> interfaceList = aclDataUtil.getInterfaceList(new Uuid(aclName));
// find and update added ace rules in acl
@Override
protected void add(InstanceIdentifier<Acl> key, Acl acl) {
+ if (!AclServiceUtils.isOfAclInterest(acl)) {
+ LOG.trace("{} does not have SecurityRuleAttr augmentation", acl.getAclName());
+ return;
+ }
+
updateRemoteAclCache(acl.getAccessListEntries().getAce(), acl.getAclName(), AclServiceManager.Action.ADD);
}
public void testUpdate_singleInterface_addNewAce() {
prepareAclDataUtil(aclDataUtil, aclInterfaceMock, aclName);
- Acl previousAcl = prepareAcl(aclName, "AllowUDP");
- Acl updatedAcl = prepareAcl(aclName, "AllowICMP", "AllowUDP");
+ Acl previousAcl = prepareAcl(aclName, true, "AllowUDP");
+ Acl updatedAcl = prepareAcl(aclName, true, "AllowICMP", "AllowUDP");
aclEventListener.update(mockInstanceId, previousAcl, updatedAcl);
public void testUpdate_singleInterface_removeOldAce() {
prepareAclDataUtil(aclDataUtil, aclInterfaceMock, aclName);
- Acl previousAcl = prepareAcl(aclName, "AllowICMP", "AllowUDP");
- Acl updatedAcl = prepareAcl(aclName, "AllowUDP");
+ Acl previousAcl = prepareAcl(aclName, true, "AllowICMP", "AllowUDP");
+ Acl updatedAcl = prepareAcl(aclName, true, "AllowUDP");
aclEventListener.update(mockInstanceId, previousAcl, updatedAcl);
public void testUpdate_singleInterface_addNewAceAndRemoveOldAce() {
prepareAclDataUtil(aclDataUtil, aclInterfaceMock, aclName);
- Acl previousAcl = prepareAcl(aclName, "AllowICMP", "AllowUDP");
- Acl updatedAcl = prepareAcl(aclName, "AllowTCP", "AllowUDP");
+ Acl previousAcl = prepareAcl(aclName, true, "AllowICMP", "AllowUDP");
+ Acl updatedAcl = prepareAcl(aclName, true, "AllowTCP", "AllowUDP");
aclEventListener.update(mockInstanceId, previousAcl, updatedAcl);
assertEquals(Action.REMOVE, actionValueSaver.getAllValues().get(1));
assertEquals("AllowICMP", aceValueSaver.getAllValues().get(1).getRuleName());
}
+
+ @Test
+ public void testUpdate_addNewAce_withoutSecurityAttrAugmentation() {
+ prepareAclDataUtil(aclDataUtil, aclInterfaceMock, aclName);
+
+ Acl previousAcl = prepareAcl(aclName, false, "AllowUDP");
+ Acl updatedAcl = prepareAcl(aclName, false, "AllowICMP", "AllowUDP");
+
+ aclEventListener.update(mockInstanceId, previousAcl, updatedAcl);
+
+ verify(aclServiceManager, times(0)).notifyAce(aclInterfaceValueSaver.capture(), actionValueSaver.capture(),
+ aclNameSaver.capture(), aceValueSaver.capture());
+ }
+
+ @Test
+ public void testUpdate_removeOldAce_withoutSecurityAttrAugmentation() {
+ prepareAclDataUtil(aclDataUtil, aclInterfaceMock, aclName);
+
+ Acl previousAcl = prepareAcl(aclName, false, "AllowICMP", "AllowUDP");
+ Acl updatedAcl = prepareAcl(aclName, false, "AllowUDP");
+
+ aclEventListener.update(mockInstanceId, previousAcl, updatedAcl);
+
+ verify(aclServiceManager, times(0)).notifyAce(aclInterfaceValueSaver.capture(), actionValueSaver.capture(),
+ aclNameSaver.capture(), aceValueSaver.capture());
+ }
}
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.packet.fields.rev160218.acl.transport.header.fields.DestinationPortRangeBuilder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.packet.fields.rev160218.acl.transport.header.fields.SourcePortRangeBuilder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.aclservice.rev160608.SecurityRuleAttr;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.elan.instances.ElanInstance;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.elan.instances.ElanInstanceBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.elan.interfaces.ElanInterface;
aclDataUtil.addAclInterfaceMap(prapreaAclIds(updatedAclNames), inter);
}
- public static Acl prepareAcl(String aclName, String... aces) {
+ public static Acl prepareAcl(String aclName, boolean includeAug, String... aces) {
AccessListEntries aceEntries = mock(AccessListEntries.class);
- List<Ace> aceList = prepareAceList(aces);
+ List<Ace> aceList = prepareAceList(includeAug, aces);
when(aceEntries.getAce()).thenReturn(aceList);
Acl acl = mock(Acl.class);
return acl;
}
- public static List<Ace> prepareAceList(String... aces) {
+ public static List<Ace> prepareAceList(boolean includeAug, String... aces) {
List<Ace> aceList = new ArrayList<>();
for (String aceName : aces) {
Ace aceMock = mock(Ace.class);
when(aceMock.getRuleName()).thenReturn(aceName);
+ if (includeAug) {
+ when(aceMock.getAugmentation(SecurityRuleAttr.class)).thenReturn(mock(SecurityRuleAttr.class));
+ }
aceList.add(aceMock);
}
return aceList;