From 36424f46ff5543c2ae475c60bb3e08f299c55799 Mon Sep 17 00:00:00 2001 From: Ed Warnicke Date: Sun, 10 Jan 2016 06:15:18 -0800 Subject: Initial honeycomb code commit. This commit drops the basic structure with disabled integration tests. The tests will be enabled in a follow-up patch, which sorts out the current .so loading problems. Change-Id: If70f2f13b2cf49af82996f884218ac05d335c2ed Signed-off-by: Ed Warnicke Signed-off-by: Robert Varga --- .../v3po/impl/VppStateBridgeDomainBuilder.java | 102 +++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/VppStateBridgeDomainBuilder.java (limited to 'v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/VppStateBridgeDomainBuilder.java') diff --git a/v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/VppStateBridgeDomainBuilder.java b/v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/VppStateBridgeDomainBuilder.java new file mode 100644 index 000000000..d547342bd --- /dev/null +++ b/v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/VppStateBridgeDomainBuilder.java @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2015 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.impl; + +import java.util.ArrayList; +import java.util.List; + +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.PhysAddress; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.vpp.state.bridge.domains.BridgeDomain; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.vpp.state.bridge.domains.BridgeDomainBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.vpp.state.bridge.domains.bridge.domain.Interface; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.vpp.state.bridge.domains.bridge.domain.InterfaceBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.vpp.state.bridge.domains.bridge.domain.L2Fib; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.vpp.state.bridge.domains.bridge.domain.L2Fib.Action; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.vpp.state.bridge.domains.bridge.domain.L2FibBuilder; + +public class VppStateBridgeDomainBuilder { + private BridgeDomainBuilder bdStateBuilder = new BridgeDomainBuilder(); + private List bdIfaces = new ArrayList(); + private List bdL2Fibs = new ArrayList(); + + /** + * TODO-ADD-JAVADOC. + */ + public VppStateBridgeDomainBuilder(String bdName, boolean flood, + boolean unknownUnicastFlood, + boolean arpTermination, + boolean forward, boolean learn) { + bdStateBuilder + .setName(bdName) + .setFlood(flood) + .setUnknownUnicastFlood(unknownUnicastFlood) + .setArpTermination(arpTermination) + .setForward(forward) + .setLearn(learn); + } + + /** + * TODO-ADD-JAVADOC. + */ + public void addInterface(String interfaceName, boolean bvi, + short splitHorizonGroup) { + InterfaceBuilder ifBuilder = new InterfaceBuilder(); + ifBuilder + .setName(interfaceName) + .setBridgedVirtualInterface(bvi) + .setSplitHorizonGroup(splitHorizonGroup); + + bdIfaces.add(ifBuilder.build()); + } + + private static String getMacAddress(byte[] mac) { + StringBuilder sb = new StringBuilder(18); + for (byte b : mac) { + if (sb.length() > 0) { + sb.append(':'); + } + sb.append(String.format("%02x", b)); + } + return sb.toString(); + } + + /** + * TODO-ADD-JAVADOC. + */ + public void addL2Fib(boolean filter, boolean bvi, + String outgoingIfaceName, byte[] physAddress, + boolean isStatic) { + L2FibBuilder l2fibBuilder = new L2FibBuilder(); + l2fibBuilder + .setAction((filter ? Action.Filter : Action.Forward)) + .setBridgedVirtualInterface(bvi) + .setOutgoingInterface(outgoingIfaceName) + .setPhysAddress(new PhysAddress(getMacAddress(physAddress))) + .setStaticConfig(isStatic); + + bdL2Fibs.add(l2fibBuilder.build()); + } + + /** + * TODO-ADD-JAVADOC. + */ + public BridgeDomain build() { + bdStateBuilder.setInterface(bdIfaces); + bdStateBuilder.setL2Fib(bdL2Fibs); + return bdStateBuilder.build(); + } +} -- cgit 1.2.3-korg