1a6e6737c7edd5c3d0ec32abeb580806a0587261
[netvirt.git] / coe / impl / src / main / java / org / opendaylight / netvirt / coe / utils / AclUtils.java
1 /*
2  * Copyright (c) 2018 Red Hat, 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 package org.opendaylight.netvirt.coe.utils;
9
10 import com.google.common.collect.ImmutableBiMap;
11 import javax.annotation.Nonnull;
12 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.AccessLists;
13 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.Ipv4Acl;
14 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.Acl;
15 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.AclKey;
16 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.acl.AccessListEntries;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.acl.access.list.entries.Ace;
18 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.acl.access.list.entries.AceKey;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.aclservice.rev160608.DirectionBase;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.aclservice.rev160608.DirectionEgress;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.aclservice.rev160608.DirectionIngress;
22 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
23
24 public final class AclUtils {
25     public static final String INGRESS = "ingress";
26     public static final String EGRESS = "egress";
27     public static final ImmutableBiMap<Class<? extends DirectionBase>, String> DIRECTION_MAP = ImmutableBiMap.of(
28         DirectionIngress.class, INGRESS,
29         DirectionEgress.class, EGRESS
30     );
31
32     private AclUtils() {}
33
34     @Nonnull
35     public static InstanceIdentifier<Acl> getAclIid(@Nonnull String aclName) {
36         return InstanceIdentifier
37             .builder(AccessLists.class)
38             .child(Acl.class, new AclKey(aclName, Ipv4Acl.class))
39             .build();
40     }
41
42     @Nonnull
43     public static InstanceIdentifier<Ace> getAceIid(@Nonnull String aclName, @Nonnull String ruleName) {
44         return getAclIid(aclName).builder()
45             .child(AccessListEntries.class)
46             .child(Ace.class, new AceKey(ruleName))
47             .build();
48     }
49
50     @Nonnull
51     public static String buildName(String... args) {
52         return String.join("_", args);
53     }
54 }