X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=vnfs%2Fhoneycomb_plugin%2Fsample_plugin%2Fsample-plugin-impl%2Fsrc%2Fmain%2Fjava%2Fio%2Ffd%2Fhoneycomb%2Ftutorial%2Fwrite%2FPgWriteCustomizer.java;fp=vnfs%2Fhoneycomb_plugin%2Fsample_plugin%2Fsample-plugin-impl%2Fsrc%2Fmain%2Fjava%2Fio%2Ffd%2Fhoneycomb%2Ftutorial%2Fwrite%2FPgWriteCustomizer.java;h=0000000000000000000000000000000000000000;hb=f4db92493f1bd94184d23e1771a8f600202391a6;hp=7a146f6c037d9fcb24f90560a75ee2b052fa916d;hpb=3e4c0d93034e07a93d881ef13db3e5f2e2f9f3ba;p=demo.git diff --git a/vnfs/honeycomb_plugin/sample_plugin/sample-plugin-impl/src/main/java/io/fd/honeycomb/tutorial/write/PgWriteCustomizer.java b/vnfs/honeycomb_plugin/sample_plugin/sample-plugin-impl/src/main/java/io/fd/honeycomb/tutorial/write/PgWriteCustomizer.java deleted file mode 100755 index 7a146f6c..00000000 --- a/vnfs/honeycomb_plugin/sample_plugin/sample-plugin-impl/src/main/java/io/fd/honeycomb/tutorial/write/PgWriteCustomizer.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * 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. - */ - - /* - * Modifications copyright (c) 2017 AT&T Intellectual Property - */ - -package io.fd.honeycomb.tutorial.write; - -import io.fd.honeycomb.translate.spi.write.ListWriterCustomizer; -import io.fd.honeycomb.translate.v3po.util.NamingContext; -import io.fd.honeycomb.translate.v3po.util.TranslateUtils; -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.opendaylight.params.xml.ns.yang.sample.plugin.rev160918.sample.plugin.params.pg.streams.PgStream; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.sample.plugin.rev160918.sample.plugin.params.pg.streams.PgStreamKey; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.openvpp.jvpp.VppBaseCallException; -import org.openvpp.jvpp.core.dto.PgEnableDisable; -import org.openvpp.jvpp.core.dto.PgEnableDisableReply; -import org.openvpp.jvpp.core.future.FutureJVppCore; - -import java.util.Arrays; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - - -/** - * Writer for {@link VxlanTunnel} list node from our YANG model. - */ -public final class PgWriteCustomizer implements ListWriterCustomizer { - - - private static final Logger LOG = LoggerFactory.getLogger(PgWriteCustomizer.class); - - /** - * JVpp APIs - */ - private final FutureJVppCore jvppCore; - /** - * Shared vxlan tunnel naming context - */ - private final NamingContext pgStreamNamingContext; - - public PgWriteCustomizer(final FutureJVppCore jvppCore, final NamingContext pgStreamNamingContext) { - this.jvppCore = jvppCore; - this.pgStreamNamingContext = pgStreamNamingContext; - } - - @Override - public void writeCurrentAttributes(@Nonnull final InstanceIdentifier id, - @Nonnull final PgStream dataAfter, - @Nonnull final WriteContext writeContext) throws WriteFailedException { - // Create and set vxlan tunnel add request - final PgEnableDisable pgEnableDisable = new PgEnableDisable(); - // 1 for add, 0 for delete - //look into this file: ~/vpp/build-root/build-vpp-native/vpp-api/java/jvpp-core/org/openvpp/jvpp/core/dto/PgEnableDisable.java - pgEnableDisable.isEnabled = 1;//public byte - String sName = dataAfter.getId(); - //pgEnableDisable.streamName = sName.getBytes();//public byte[] - byte[] tempArray = sName.getBytes(); - LOG.info("Going to copy array!!!"); - String tempMsg = ""; - pgEnableDisable.streamName = new byte[tempArray.length+1]; - for(int i = 0; i < tempArray.length; i++){ - tempMsg = "copying: i= "+i+" value: "+tempArray[i]; - LOG.info(tempMsg); - pgEnableDisable.streamName[i] = tempArray[i]; - } - - //System.arraycopy( sName.getBytes(), 0, pgEnableDisable.streamName, 0, sName.length()); - pgEnableDisable.streamNameLength = sName.length() + 1;//public int - String logMsg = "######***** Enabling: "+sName+" len: "+sName.length()+" getBytes:" + Arrays.toString(pgEnableDisable.streamName); - LOG.info(logMsg); - // dataAfter is the new vxlanTunnel configuration - //final boolean isIpv6 = dataAfter.getSrc().getIpv6Address() != null; - //vxlanAddDelTunnel.isIpv6 = TranslateUtils.booleanToByte(isIpv6); - //vxlanAddDelTunnel.srcAddress = TranslateUtils.ipAddressToArray(isIpv6, dataAfter.getSrc()); - //vxlanAddDelTunnel.dstAddress = TranslateUtils.ipAddressToArray(isIpv6, dataAfter.getDst()); - // There are other input parameters that are not exposed by our YANG model, default values will be used - - try { - final PgEnableDisableReply replyForWrite = TranslateUtils - .getReplyForWrite(jvppCore.pgEnableDisable(pgEnableDisable).toCompletableFuture(), id); - - // VPP returns the index of new vxlan tunnel - //final int newVxlanTunnelIndex = replyForWrite.swIfIndex; - // It's important to store it in context so that reader knows to which name a vxlan tunnel is mapped - pgStreamNamingContext.addName(1, dataAfter.getId(), writeContext.getMappingContext()); - } catch (VppBaseCallException e) { - throw new WriteFailedException.CreateFailedException(id, dataAfter, e); - } - } - - @Override - public void updateCurrentAttributes(@Nonnull final InstanceIdentifier id, - @Nonnull final PgStream dataBefore, - @Nonnull final PgStream dataAfter, @Nonnull final WriteContext writeContext) - throws WriteFailedException { - // Not supported at VPP API level, throw exception - throw new WriteFailedException.UpdateFailedException(id, dataBefore, dataAfter, - new UnsupportedOperationException("Vxlan tunnel update is not supported by VPP")); - } - - @Override - public void deleteCurrentAttributes(@Nonnull final InstanceIdentifier id, - @Nonnull final PgStream dataBefore, - @Nonnull final WriteContext writeContext) throws WriteFailedException { - // Create and set vxlan tunnel add request - //final VxlanAddDelTunnel vxlanAddDelTunnel = new VxlanAddDelTunnel(); - final PgEnableDisable pgEnableDisable = new PgEnableDisable(); - // 1 for add, 0 for delete - //vxlanAddDelTunnel.isAdd = 0; - pgEnableDisable.isEnabled = 0;//public byte - - String sName = dataBefore.getId(); - pgEnableDisable.streamName = sName.getBytes();//public byte[] - pgEnableDisable.streamNameLength = sName.length()+1;//public int - - String logMsg1 = "***** Disabling: "+sName+" len: "+sName.length()+" getBytes:" + Arrays.toString(pgEnableDisable.streamName); - LOG.info(logMsg1); - // Vxlan tunnel is identified by its attributes when deleting, not index, so set all attributes - // dataBefore is the vxlan tunnel that's being deleted - //final boolean isIpv6 = dataBefore.getSrc().getIpv6Address() != null; - //vxlanAddDelTunnel.isIpv6 = TranslateUtils.booleanToByte(isIpv6); - //vxlanAddDelTunnel.srcAddress = TranslateUtils.ipAddressToArray(isIpv6, dataBefore.getSrc()); - //vxlanAddDelTunnel.dstAddress = TranslateUtils.ipAddressToArray(isIpv6, dataBefore.getDst()); - // There are other input parameters that are not exposed by our YANG model, default values will be used - - try { - // final VxlanAddDelTunnelReply replyForWrite = TranslateUtils - // .getReplyForWrite(jvppCore.vxlanAddDelTunnel(vxlanAddDelTunnel).toCompletableFuture(), id); - final PgEnableDisableReply replyForWrite = TranslateUtils - .getReplyForWrite(jvppCore.pgEnableDisable(pgEnableDisable).toCompletableFuture(), id); - // It's important to remove the mapping from context - pgStreamNamingContext.removeName(dataBefore.getId(), writeContext.getMappingContext()); - } catch (VppBaseCallException e) { - throw new WriteFailedException.DeleteFailedException(id, e); - } - } -}