2 * Copyright (c) 2016 Cisco and/or its affiliates.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at:
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package io.fd.honeycomb.translate.v3po.initializers;
18 import com.google.common.collect.Lists;
19 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceBuilder;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.SubInterfaceStatus;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.SubinterfaceAugmentation;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.SubinterfaceAugmentationBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.SubinterfaceStateAugmentation;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.interfaces._interface.sub.interfaces.SubInterfaceKey;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.interfaces.state._interface.SubInterfaces;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.interfaces.state._interface.sub.interfaces.SubInterface;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.sub._interface.base.attributes.AclBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.sub._interface.base.attributes.acl.Egress;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.sub._interface.base.attributes.acl.EgressBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.sub._interface.base.attributes.acl.Ingress;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.sub._interface.base.attributes.acl.IngressBuilder;
34 * Utility class for sub interface initialization
36 final class SubInterfaceInitializationUtils {
38 private SubInterfaceInitializationUtils() {
39 throw new UnsupportedOperationException("Utility class cannot be instantiated");
42 static void initializeSubinterfaceStateAugmentation(
43 final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface input,
44 final InterfaceBuilder builder) {
45 final SubinterfaceStateAugmentation subIfcAugmentation =
46 input.getAugmentation(SubinterfaceStateAugmentation.class);
47 if (subIfcAugmentation != null) {
48 final SubinterfaceAugmentationBuilder augmentBuilder = new SubinterfaceAugmentationBuilder();
50 final SubInterfaces subInterfaces = subIfcAugmentation.getSubInterfaces();
51 if (subInterfaces != null) {
52 setSubInterfaces(augmentBuilder, subInterfaces);
55 builder.addAugmentation(SubinterfaceAugmentation.class, augmentBuilder.build());
59 private static void setSubInterfaces(final SubinterfaceAugmentationBuilder augmentBuilder,
60 final SubInterfaces operationalData) {
62 final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.interfaces._interface.SubInterfacesBuilder
63 subInterfacesCfgBuilder =
64 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.interfaces._interface.SubInterfacesBuilder();
65 subInterfacesCfgBuilder.setSubInterface(Lists.transform(operationalData.getSubInterface(),
66 SubInterfaceInitializationUtils::convertSubInterface));
67 augmentBuilder.setSubInterfaces(subInterfacesCfgBuilder.build());
70 private static org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.interfaces._interface.sub.interfaces.SubInterface convertSubInterface(
71 final SubInterface operationalData) {
72 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.interfaces._interface.sub.interfaces.SubInterfaceBuilder subInterfaceCfgBuilder =
73 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.interfaces._interface.sub.interfaces.SubInterfaceBuilder();
75 subInterfaceCfgBuilder.setEnabled(SubInterfaceStatus.Up.equals(operationalData.getAdminStatus()));
76 subInterfaceCfgBuilder.setIdentifier(operationalData.getIdentifier());
77 subInterfaceCfgBuilder.setKey(new SubInterfaceKey(operationalData.getIdentifier()));
78 subInterfaceCfgBuilder.setL2(operationalData.getL2());
79 subInterfaceCfgBuilder.setMatch(operationalData.getMatch());
80 subInterfaceCfgBuilder.setTags(operationalData.getTags());
81 subInterfaceCfgBuilder.setVlanType(operationalData.getVlanType());
82 subInterfaceCfgBuilder.setIpv4(operationalData.getIpv4());
83 subInterfaceCfgBuilder.setIpv6(operationalData.getIpv6());
85 if (operationalData.getAcl() != null) {
86 final AclBuilder aclBuilder = new AclBuilder();
87 final Ingress ingress = operationalData.getAcl().getIngress();
88 if (ingress != null) {
89 final IngressBuilder builder = new IngressBuilder();
90 builder.setL2Acl(ingress.getL2Acl());
91 builder.setIp4Acl(ingress.getIp4Acl());
92 builder.setIp6Acl(ingress.getIp6Acl());
93 aclBuilder.setIngress(builder.build());
96 final Egress egress = operationalData.getAcl().getEgress();
98 final EgressBuilder builder = new EgressBuilder();
99 builder.setL2Acl(egress.getL2Acl());
100 builder.setIp4Acl(egress.getIp4Acl());
101 builder.setIp6Acl(egress.getIp6Acl());
102 aclBuilder.setEgress(builder.build());
104 subInterfaceCfgBuilder.setAcl(aclBuilder.build());
107 return subInterfaceCfgBuilder.build();