summaryrefslogtreecommitdiffstats
path: root/vpp-classifier/impl/src/main/java/io/fd/hc2vpp/vpp/classifier/write/acl/ingress
diff options
context:
space:
mode:
authorMarek Gradzki <mgradzki@cisco.com>2017-05-02 14:18:54 +0200
committerMarek Gradzki <mgradzki@cisco.com>2017-05-02 14:18:56 +0200
commit6233845a911d4db05eb2e02d8996398cc95fa6b5 (patch)
tree93bb615712ce43fb6cb3d5a7d7919d2de3084f45 /vpp-classifier/impl/src/main/java/io/fd/hc2vpp/vpp/classifier/write/acl/ingress
parentbd872e0134b794cbb72c1d2a2695c669371903d8 (diff)
HC2VPP-14: remove deprecated, classfier based ietf-acl model implementation
Change-Id: I3e7a91bab09b27b1032d27258be8886256841d5c Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
Diffstat (limited to 'vpp-classifier/impl/src/main/java/io/fd/hc2vpp/vpp/classifier/write/acl/ingress')
-rw-r--r--vpp-classifier/impl/src/main/java/io/fd/hc2vpp/vpp/classifier/write/acl/ingress/IetfAclCustomizer.java89
-rw-r--r--vpp-classifier/impl/src/main/java/io/fd/hc2vpp/vpp/classifier/write/acl/ingress/IngressIetfAclWriter.java118
-rw-r--r--vpp-classifier/impl/src/main/java/io/fd/hc2vpp/vpp/classifier/write/acl/ingress/SubInterfaceIetfAclCustomizer.java108
3 files changed, 0 insertions, 315 deletions
diff --git a/vpp-classifier/impl/src/main/java/io/fd/hc2vpp/vpp/classifier/write/acl/ingress/IetfAclCustomizer.java b/vpp-classifier/impl/src/main/java/io/fd/hc2vpp/vpp/classifier/write/acl/ingress/IetfAclCustomizer.java
deleted file mode 100644
index 96f034f72..000000000
--- a/vpp-classifier/impl/src/main/java/io/fd/hc2vpp/vpp/classifier/write/acl/ingress/IetfAclCustomizer.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 2017 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.hc2vpp.vpp.classifier.write.acl.ingress;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import io.fd.hc2vpp.common.translate.util.NamingContext;
-import io.fd.honeycomb.translate.spi.write.WriterCustomizer;
-import io.fd.honeycomb.translate.write.WriteContext;
-import io.fd.honeycomb.translate.write.WriteFailedException;
-import javax.annotation.Nonnull;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.classifier.acl.rev170315.ietf.acl.base.attributes.AccessLists;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.classifier.acl.rev170315.vpp.acl.attributes.ietf.acl.Ingress;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Customizer for enabling/disabling ingress ACLs for given interface (as defined in ietf-acl model).
- *
- * The customizer assumes it owns classify table management for interfaces where ietf-acl container is present. Using
- * low level classifier model or direct changes to classify tables in combination with ietf-acls are not supported and
- * can result in unpredictable behaviour.
- */
-public class IetfAclCustomizer implements WriterCustomizer<Ingress> {
-
- private static final Logger LOG = LoggerFactory.getLogger(IetfAclCustomizer.class);
- private final IngressIetfAclWriter aclWriter;
- private final NamingContext interfaceContext;
-
- public IetfAclCustomizer(@Nonnull final IngressIetfAclWriter aclWriter,
- @Nonnull final NamingContext interfaceContext) {
- this.aclWriter = checkNotNull(aclWriter, "aclWriter should not be null");
- this.interfaceContext = checkNotNull(interfaceContext, "interfaceContext should not be null");
- }
-
- @Override
- public void writeCurrentAttributes(@Nonnull final InstanceIdentifier<Ingress> id, @Nonnull final Ingress dataAfter,
- @Nonnull final WriteContext writeContext) throws WriteFailedException {
- final String ifName = id.firstKeyOf(Interface.class).getName();
- final int ifIndex = interfaceContext.getIndex(ifName, writeContext.getMappingContext());
- LOG.debug("Adding ACLs for interface={}(id={}): {}", ifName, ifIndex, dataAfter);
-
- final AccessLists accessLists = dataAfter.getAccessLists();
- checkArgument(accessLists != null && accessLists.getAcl() != null,
- "ietf-acl container does not define acl list");
-
- aclWriter.write(id, ifIndex, accessLists.getAcl(), accessLists.getDefaultAction(), accessLists.getMode(),
- writeContext, writeContext.getMappingContext());
- }
-
- @Override
- public void updateCurrentAttributes(@Nonnull final InstanceIdentifier<Ingress> id,
- @Nonnull final Ingress dataBefore, @Nonnull final Ingress dataAfter,
- @Nonnull final WriteContext writeContext)
- throws WriteFailedException {
- LOG.debug("ACLs update: removing previously configured ACLs");
- deleteCurrentAttributes(id, dataBefore, writeContext);
- LOG.debug("ACLs update: adding updated ACLs");
- writeCurrentAttributes(id, dataAfter, writeContext);
- LOG.debug("ACLs update was successful");
- }
-
- @Override
- public void deleteCurrentAttributes(@Nonnull final InstanceIdentifier<Ingress> id,
- @Nonnull final Ingress dataBefore,
- @Nonnull final WriteContext writeContext) throws WriteFailedException {
- final String ifName = id.firstKeyOf(Interface.class).getName();
- final int ifIndex = interfaceContext.getIndex(ifName, writeContext.getMappingContext());
- LOG.debug("Removing ACLs for interface={}(id={}): {}", ifName, ifIndex, dataBefore);
- aclWriter.deleteAcl(id, ifIndex, writeContext.getMappingContext());
- }
-}
diff --git a/vpp-classifier/impl/src/main/java/io/fd/hc2vpp/vpp/classifier/write/acl/ingress/IngressIetfAclWriter.java b/vpp-classifier/impl/src/main/java/io/fd/hc2vpp/vpp/classifier/write/acl/ingress/IngressIetfAclWriter.java
deleted file mode 100644
index 3a47f42f4..000000000
--- a/vpp-classifier/impl/src/main/java/io/fd/hc2vpp/vpp/classifier/write/acl/ingress/IngressIetfAclWriter.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (c) 2017 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.hc2vpp.vpp.classifier.write.acl.ingress;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Preconditions.checkState;
-
-import com.google.common.base.Optional;
-import io.fd.hc2vpp.vpp.classifier.write.acl.common.AbstractIetfAclWriter;
-import io.fd.hc2vpp.vpp.classifier.write.acl.common.AclTableContextManager;
-import io.fd.honeycomb.translate.MappingContext;
-import io.fd.honeycomb.translate.write.WriteContext;
-import io.fd.honeycomb.translate.write.WriteFailedException;
-import io.fd.vpp.jvpp.core.dto.InputAclSetInterface;
-import io.fd.vpp.jvpp.core.dto.InputAclSetInterfaceReply;
-import io.fd.vpp.jvpp.core.future.FutureJVppCore;
-import java.util.List;
-import java.util.concurrent.CompletionStage;
-import javax.annotation.Nonnegative;
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160708.access.lists.acl.access.list.entries.Ace;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.acl.context.rev161214.mapping.entry.context.attributes.acl.mapping.entry.context.mapping.table.MappingEntry;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.acl.context.rev161214.mapping.entry.context.attributes.acl.mapping.entry.context.mapping.table.MappingEntryBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.classifier.acl.rev170315.InterfaceMode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.classifier.acl.rev170315.ietf.acl.base.attributes.AccessLists;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.classifier.acl.rev170315.ietf.acl.base.attributes.access.lists.Acl;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-public final class IngressIetfAclWriter extends AbstractIetfAclWriter {
- private final AclTableContextManager aclCtx;
-
- public IngressIetfAclWriter(@Nonnull final FutureJVppCore futureJVppCore, @Nonnull AclTableContextManager aclCtx) {
- super(futureJVppCore);
- this.aclCtx = checkNotNull(aclCtx, "aclCtx should not be null");
- }
-
- @Override
- public void deleteAcl(@Nonnull final InstanceIdentifier<?> id, final int swIfIndex,
- @Nonnull final MappingContext mappingContext)
- throws WriteFailedException {
- Optional<MappingEntry> optional = aclCtx.getEntry(swIfIndex, mappingContext);
- checkState(optional.isPresent(), "Removing ACL id=%s, but acl mapping entry is not present", id);
- final MappingEntry entry = optional.get();
- unassignClassifyTables(id, entry);
- removeClassifyTables(id, entry);
- aclCtx.removeEntry(swIfIndex, mappingContext);
- }
-
- private void unassignClassifyTables(@Nonnull final InstanceIdentifier<?> id,
- @Nonnull final MappingEntry entry)
- throws WriteFailedException {
- final InputAclSetInterface request = new InputAclSetInterface();
- request.isAdd = 0;
- request.swIfIndex = entry.getIndex();
- request.l2TableIndex = entry.getL2TableId();
- request.ip4TableIndex = entry.getIp4TableId();
- request.ip6TableIndex = entry.getIp6TableId();
- final CompletionStage<InputAclSetInterfaceReply> inputAclSetInterfaceReplyCompletionStage =
- jvpp.inputAclSetInterface(request);
- getReplyForDelete(inputAclSetInterfaceReplyCompletionStage.toCompletableFuture(), id);
- }
-
- @Override
- public void write(@Nonnull final InstanceIdentifier<?> id, int swIfIndex, @Nonnull final List<Acl> acls,
- @Nonnull final AccessLists.DefaultAction defaultAction, @Nullable final InterfaceMode mode,
- @Nonnull final WriteContext writeContext, @Nonnegative final int numberOfTags,
- @Nonnull final MappingContext mappingContext)
- throws WriteFailedException {
- checkArgument(numberOfTags >= 0 && numberOfTags <= 2, "Number of vlan tags %s is not in [0,2] range");
-
- final InputAclSetInterface request = new InputAclSetInterface();
- request.isAdd = 1;
- request.swIfIndex = swIfIndex;
- request.l2TableIndex = NOT_DEFINED;
- request.ip4TableIndex = NOT_DEFINED;
- request.ip6TableIndex = NOT_DEFINED;
-
- if (InterfaceMode.L2.equals(mode)) {
- final List<Ace> aces = getACEs(acls, writeContext, ace -> true);
- request.l2TableIndex = writeAces(id, aces, defaultAction, mode, numberOfTags);
- } else {
- final List<Ace> ip4Aces = getACEs(acls, writeContext, (AbstractIetfAclWriter::appliesToIp4Path));
- request.ip4TableIndex = writeAces(id, ip4Aces, defaultAction, mode, numberOfTags);
- final List<Ace> ip6Aces = getACEs(acls, writeContext, (AbstractIetfAclWriter::appliesToIp6Path));
- request.ip6TableIndex = writeAces(id, ip6Aces, defaultAction, mode, numberOfTags);
- }
-
- final MappingEntry entry = new MappingEntryBuilder().setIndex(swIfIndex)
- .setIp4TableId(request.ip4TableIndex)
- .setIp6TableId(request.ip6TableIndex)
- .setL2TableId(request.l2TableIndex)
- .build();
- aclCtx.addEntry(entry, mappingContext);
-
- try {
- getReplyForWrite(jvpp.inputAclSetInterface(request).toCompletableFuture(), id);
- } catch (WriteFailedException e) {
- removeClassifyTables(id, entry);
- throw e;
- }
- }
-}
diff --git a/vpp-classifier/impl/src/main/java/io/fd/hc2vpp/vpp/classifier/write/acl/ingress/SubInterfaceIetfAclCustomizer.java b/vpp-classifier/impl/src/main/java/io/fd/hc2vpp/vpp/classifier/write/acl/ingress/SubInterfaceIetfAclCustomizer.java
deleted file mode 100644
index 6c2356efc..000000000
--- a/vpp-classifier/impl/src/main/java/io/fd/hc2vpp/vpp/classifier/write/acl/ingress/SubInterfaceIetfAclCustomizer.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (c) 2017 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.hc2vpp.vpp.classifier.write.acl.ingress;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Preconditions.checkState;
-import static io.fd.hc2vpp.v3po.util.SubInterfaceUtils.getNumberOfTags;
-
-import com.google.common.base.Optional;
-import io.fd.hc2vpp.common.translate.util.NamingContext;
-import io.fd.hc2vpp.v3po.util.SubInterfaceUtils;
-import io.fd.honeycomb.translate.spi.write.WriterCustomizer;
-import io.fd.honeycomb.translate.write.WriteContext;
-import io.fd.honeycomb.translate.write.WriteFailedException;
-import javax.annotation.Nonnull;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.classifier.acl.rev170315.ietf.acl.base.attributes.AccessLists;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.classifier.acl.rev170315.vpp.acl.attributes.ietf.acl.Ingress;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev170315.interfaces._interface.sub.interfaces.SubInterface;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev170315.interfaces._interface.sub.interfaces.SubInterfaceKey;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Customizer for enabling/disabling ingress ACLs for given sub-interface (as defined in ietf-acl model).
- *
- * The customizer assumes it owns classify table management for sub-interfaces where ietf-acl container is present.
- * Using low level classifier model or direct changes to classify tables in combination with ietf-acls are not supported
- * and can result in unpredictable behaviour.
- */
-public class SubInterfaceIetfAclCustomizer implements WriterCustomizer<Ingress> {
-
- private static final Logger LOG = LoggerFactory.getLogger(SubInterfaceIetfAclCustomizer.class);
- private final IngressIetfAclWriter aclWriter;
- private final NamingContext interfaceContext;
-
- public SubInterfaceIetfAclCustomizer(@Nonnull final IngressIetfAclWriter aclWriter,
- @Nonnull final NamingContext interfaceContext) {
- this.aclWriter = checkNotNull(aclWriter, "aclWriter should not be null");
- this.interfaceContext = checkNotNull(interfaceContext, "interfaceContext should not be null");
- }
-
- private String getSubInterfaceName(@Nonnull final InstanceIdentifier<Ingress> id) {
- final InterfaceKey parentInterfacekey = id.firstKeyOf(Interface.class);
- final SubInterfaceKey subInterfacekey = id.firstKeyOf(SubInterface.class);
- return SubInterfaceUtils
- .getSubInterfaceName(parentInterfacekey.getName(), subInterfacekey.getIdentifier().intValue());
- }
-
- @Override
- public void writeCurrentAttributes(@Nonnull final InstanceIdentifier<Ingress> id, @Nonnull final Ingress dataAfter,
- @Nonnull final WriteContext writeContext) throws WriteFailedException {
- final String subInterfaceName = getSubInterfaceName(id);
- final int subInterfaceIndex = interfaceContext.getIndex(subInterfaceName, writeContext.getMappingContext());
- LOG.debug("Adding IETF-ACL for sub-interface: {}(id={}): {}", subInterfaceName, subInterfaceIndex, dataAfter);
-
- final AccessLists accessLists = dataAfter.getAccessLists();
- checkArgument(accessLists != null && accessLists.getAcl() != null,
- "ietf-acl container does not define acl list");
-
- final Optional<SubInterface> subInterfaceOptional =
- writeContext.readAfter(id.firstIdentifierOf(SubInterface.class));
- checkState(subInterfaceOptional.isPresent(), "Could not read SubInterface data object for %s", id);
- final SubInterface subInterface = subInterfaceOptional.get();
-
- aclWriter
- .write(id, subInterfaceIndex, accessLists.getAcl(), accessLists.getDefaultAction(), accessLists.getMode(),
- writeContext, getNumberOfTags(subInterface.getTags()), writeContext.getMappingContext());
- }
-
- @Override
- public void updateCurrentAttributes(@Nonnull final InstanceIdentifier<Ingress> id,
- @Nonnull final Ingress dataBefore, @Nonnull final Ingress dataAfter,
- @Nonnull final WriteContext writeContext) throws WriteFailedException {
- LOG.debug("Sub-interface ACLs update: removing previously configured ACLs");
- deleteCurrentAttributes(id, dataBefore, writeContext);
- LOG.debug("Sub-interface ACLs update: adding updated ACLs");
- writeCurrentAttributes(id, dataAfter, writeContext);
- LOG.debug("Sub-interface ACLs update was successful");
- }
-
- @Override
- public void deleteCurrentAttributes(@Nonnull final InstanceIdentifier<Ingress> id,
- @Nonnull final Ingress dataBefore, @Nonnull final WriteContext writeContext)
- throws WriteFailedException {
- final String subInterfaceName = getSubInterfaceName(id);
- final int subInterfaceIndex = interfaceContext.getIndex(subInterfaceName, writeContext.getMappingContext());
- LOG.debug("Removing ACLs for sub-interface={}(id={}): {}", subInterfaceName, subInterfaceIndex, dataBefore);
- aclWriter.deleteAcl(id, subInterfaceIndex, writeContext.getMappingContext());
- }
-}