<name>cfg-init-binding-data-broker</name>
</binding-data-broker>
</module>
+ <!-- Config initializer for vpp-classifier subtree-->
+ <module>
+ <type xmlns:prefix="urn:honeycomb:params:xml:ns:yang:v3po2vpp">prefix:vpp-classifier-cfg-initializer</type>
+ <name>vpp-classifier-cfg-initializer</name>
+ <binding-data-broker>
+ <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">prefix:binding-async-data-broker</type>
+ <name>cfg-init-binding-data-broker</name>
+ </binding-data-broker>
+ </module>
<module>
<type xmlns:prefix="urn:honeycomb:params:xml:ns:yang:vpp:data:init">prefix:persisted-file-initializer</type>
<name>persisted-context-initializer</name>
<type xmlns:prefix="urn:honeycomb:params:xml:ns:yang:vpp:data:init">prefix:cfg-initializer</type>
<name>interfaces-cfg-initializer</name>
</initializers>
+ <initializers>
+ <type xmlns:prefix="urn:honeycomb:params:xml:ns:yang:vpp:data:init">prefix:cfg-initializer</type>
+ <name>vpp-classifier-cfg-initializer</name>
+ </initializers>
<persisted-config-initializer>
<type xmlns:prefix="urn:honeycomb:params:xml:ns:yang:vpp:data:init">prefix:cfg-initializer</type>
<name>persisted-config-initializer</name>
<provider>/modules/module[type='interfaces-cfg-initializer'][name='interfaces-cfg-initializer']
</provider>
</instance>
+ <instance>
+ <name>vpp-classifier-cfg-initializer</name>
+ <provider>/modules/module[type='vpp-classifier-cfg-initializer'][name='vpp-classifier-cfg-initializer']
+ </provider>
+ </instance>
<instance>
<name>persisted-context-initializer</name>
<provider>/modules/module[type='persisted-file-initializer'][name='persisted-context-initializer']
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VppInterfaceStateAugmentation;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VxlanGpeVni;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VxlanVni;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.AclBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.EthernetBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.L2Builder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.TapBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.VhostUserBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.VxlanBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.VxlanGpeBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces.state._interface.Acl;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces.state._interface.Ethernet;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces.state._interface.L2;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces.state._interface.Tap;
public InterfacesInitializer(@Nonnull final DataBroker bindingDataBroker) {
super(bindingDataBroker, InstanceIdentifier.create(InterfacesState.class),
- InstanceIdentifier.create(Interfaces.class));
+ InstanceIdentifier.create(Interfaces.class));
}
@Override
}
private static void initializeVppInterfaceStateAugmentation(
- final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface input,
- final InterfaceBuilder builder) {
+ final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface input,
+ final InterfaceBuilder builder) {
final VppInterfaceStateAugmentation vppIfcAugmentation =
- input.getAugmentation(VppInterfaceStateAugmentation.class);
- if(vppIfcAugmentation != null) {
+ input.getAugmentation(VppInterfaceStateAugmentation.class);
+ if (vppIfcAugmentation != null) {
final VppInterfaceAugmentationBuilder augmentBuilder = new VppInterfaceAugmentationBuilder();
builder.setDescription(vppIfcAugmentation.getDescription());
final Vxlan vxlan = vppIfcAugmentation.getVxlan();
- if(vxlan != null) {
+ if (vxlan != null) {
setVxlan(augmentBuilder, vxlan);
}
final VxlanGpe vxlanGpe = vppIfcAugmentation.getVxlanGpe();
- if(vxlanGpe != null) {
+ if (vxlanGpe != null) {
setVxlanGpe(augmentBuilder, vxlanGpe);
}
final Tap tap = vppIfcAugmentation.getTap();
- if(tap != null) {
+ if (tap != null) {
setTap(input, augmentBuilder, tap);
}
final VhostUser vhostUser = vppIfcAugmentation.getVhostUser();
- if(vhostUser != null) {
+ if (vhostUser != null) {
setVhostUser(augmentBuilder, vhostUser);
}
final L2 l2 = vppIfcAugmentation.getL2();
- if(l2 != null) {
+ if (l2 != null) {
setL2(augmentBuilder, l2);
}
final Ethernet ethernet = vppIfcAugmentation.getEthernet();
- if(ethernet != null) {
+ if (ethernet != null) {
setEthernet(augmentBuilder, ethernet);
}
+ final Acl acl = vppIfcAugmentation.getAcl();
+ if (acl != null) {
+ setAcl(augmentBuilder, acl);
+ }
+
// TODO set routing, not present in interface-state
builder.addAugmentation(VppInterfaceAugmentation.class, augmentBuilder.build());
}
private static void initializeIetfIpAugmentation(
- final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface input,
- final InterfaceBuilder builder) {
+ final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface input,
+ final InterfaceBuilder builder) {
final Interface2 ietfIpAugmentation = input.getAugmentation(Interface2.class);
- if(ietfIpAugmentation != null) {
+ if (ietfIpAugmentation != null) {
final Interface1Builder augmentBuilder = new Interface1Builder();
final Ipv4 ipv4 = ietfIpAugmentation.getIpv4();
if (ipv4 != null) {
final List<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces._interface.ipv4.Address>
- collect =
- ipv4.getAddress().stream()
- .map(address -> new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces._interface.ipv4.AddressBuilder()
- .setIp(address.getIp())
- .setSubnet(getSubnet(address))
- .build())
- .collect(Collectors.toList());
+ collect =
+ ipv4.getAddress().stream()
+ .map(
+ address -> new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces._interface.ipv4.AddressBuilder()
+ .setIp(address.getIp())
+ .setSubnet(getSubnet(address))
+ .build())
+ .collect(Collectors.toList());
final List<Neighbor> neighbors = ipv4.getNeighbor().stream()
- .map(neighbor -> new NeighborBuilder().setIp(neighbor.getIp())
- .setLinkLayerAddress(neighbor.getLinkLayerAddress()).build())
- .collect(Collectors.toList());
+ .map(neighbor -> new NeighborBuilder().setIp(neighbor.getIp())
+ .setLinkLayerAddress(neighbor.getLinkLayerAddress()).build())
+ .collect(Collectors.toList());
augmentBuilder.setIpv4(new Ipv4Builder().setAddress(collect).setNeighbor(neighbors).build());
}
augmentBuilder.setEthernet(ethernetBuilder.build());
}
+ private static void setAcl(final VppInterfaceAugmentationBuilder augmentBuilder, final Acl acl) {
+ final AclBuilder aclBuilder = new AclBuilder();
+ aclBuilder.setL2Acl(acl.getL2Acl());
+ aclBuilder.setIp4Acl(acl.getIp4Acl());
+ aclBuilder.setIp6Acl(acl.getIp6Acl());
+ augmentBuilder.setAcl(aclBuilder.build());
+ }
+
private static void setL2(final VppInterfaceAugmentationBuilder augmentBuilder, final L2 l2) {
final L2Builder l2Builder = new L2Builder();
final Interconnection interconnection = l2.getInterconnection();
- if(interconnection != null) {
+ if (interconnection != null) {
if (interconnection instanceof XconnectBased) {
final XconnectBasedBuilder xconnectBasedBuilder = new XconnectBasedBuilder();
xconnectBasedBuilder.setXconnectOutgoingInterface(
--- /dev/null
+/*
+ * Copyright (c) 2016 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.honeycomb.v3po.translate.v3po.initializers;
+
+import io.fd.honeycomb.v3po.vpp.data.init.AbstractDataTreeConverter;
+import java.util.stream.Collectors;
+import javax.annotation.Nonnull;
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.classifier.rev150603.VppClassifier;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.classifier.rev150603.VppClassifierBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.classifier.rev150603.vpp.classifier.ClassifyTableBuilder;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
+/**
+ * Initializes vpp-classfier node in config data tree based on operational state.
+ */
+public class VppClasifierInitializer extends AbstractDataTreeConverter<VppClassifier, VppClassifier> {
+ private static final InstanceIdentifier<VppClassifier> ID = InstanceIdentifier.create(VppClassifier.class);
+
+ public VppClasifierInitializer(@Nonnull final DataBroker bindingDataBroker) {
+ super(bindingDataBroker, ID, ID);
+ }
+
+ @Override
+ protected VppClassifier convert(final VppClassifier operationalData) {
+ final VppClassifierBuilder builder = new VppClassifierBuilder();
+ builder.setClassifyTable(operationalData.getClassifyTable().stream()
+ .map(oper -> new ClassifyTableBuilder(oper).setActiveSessions(null).build())
+ .collect(Collectors.toList()));
+ return builder.build();
+ }
+}