From 056b4e088e4d8df0e642ea9603f7a82fc98ab58c Mon Sep 17 00:00:00 2001 From: Alexis de Talhouët Date: Fri, 17 May 2019 13:50:31 -0400 Subject: Delete grpc client to CDS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I82dc77cbc28d68b06634a67708d29f750cfec2e9 Issue-ID: CCSDK-1340 Signed-off-by: Alexis de Talhouët --- grpc-resource/provider/pom.xml | 158 ----- .../onap/ccsdk/sli/adaptors/grpc/GrpcClient.java | 32 - .../ccsdk/sli/adaptors/grpc/GrpcProperties.java | 81 --- .../onap/ccsdk/sli/adaptors/grpc/JsonFormat.java | 668 --------------------- .../org/onap/ccsdk/sli/adaptors/grpc/Utils.java | 34 -- .../grpc/cds/BasicAuthClientInterceptor.java | 54 -- .../grpc/cds/BlueprintProcessingClient.java | 86 --- .../grpc/cds/BlueprintProcessingHandler.java | 187 ------ .../provider/src/main/resources/grpc.properties | 18 - .../org/opendaylight/blueprint/grpc-client.xml | 30 - .../grpc/cds/BlueprintProcessingClientTest.java | 171 ------ .../sli/adaptors/grpc/cds/GrpcClientTest.java | 84 --- 12 files changed, 1603 deletions(-) delete mode 100644 grpc-resource/provider/pom.xml delete mode 100644 grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/GrpcClient.java delete mode 100644 grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/GrpcProperties.java delete mode 100644 grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/JsonFormat.java delete mode 100644 grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/Utils.java delete mode 100644 grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BasicAuthClientInterceptor.java delete mode 100644 grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingClient.java delete mode 100644 grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingHandler.java delete mode 100644 grpc-resource/provider/src/main/resources/grpc.properties delete mode 100644 grpc-resource/provider/src/main/resources/org/opendaylight/blueprint/grpc-client.xml delete mode 100644 grpc-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingClientTest.java delete mode 100644 grpc-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/grpc/cds/GrpcClientTest.java (limited to 'grpc-resource/provider') diff --git a/grpc-resource/provider/pom.xml b/grpc-resource/provider/pom.xml deleted file mode 100644 index bb1239f9..00000000 --- a/grpc-resource/provider/pom.xml +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - org.onap.ccsdk.parent - binding-parent - 1.3.0-SNAPSHOT - - - - org.onap.ccsdk.sli.adaptors - grpc-client-provider - 0.5.0-SNAPSHOT - bundle - 4.0.0 - - ccsdk-sli-adaptors :: grpc-client :: ${project.artifactId} - - - 1.17.1 - 3.6.1 - 4.1.30.Final - ${project.version} - - - - - - org.onap.ccsdk.sli.core - sli-core-artifacts - ${ccsdk.sli.core.version} - pom - import - - - - - - - - - org.onap.ccsdk.sli.core - sliPluginUtils-provider - provided - - - - - org.onap.ccsdk.cds.components - proto-definition - ${ccsdk.sli.cds.version} - - - com.google.code.findbugs - jsr305 - - - com.google.protobuf - protobuf-java-util - - - - - - - com.google.protobuf - protobuf-java - ${protobuf.version} - - - - - io.grpc - grpc-protobuf - ${grpc.version} - - - com.google.code.findbugs - jsr305 - - - - - io.grpc - grpc-stub - ${grpc.version} - - - io.grpc - grpc-netty - ${grpc.version} - - - - org.osgi - org.osgi.core - provided - - - - - junit - junit - ${junit.version} - test - - - org.mockito - mockito-core - ${mockito.version} - test - - - io.grpc - grpc-testing - ${grpc.version} - test - - - - - - - org.apache.felix - maven-bundle-plugin - true - - - - io.grpc, - io.grpc.inprocess, - io.grpc.internal, - io.grpc.util - - !com.google.errorprone.annotations,* - *;inline=META-INF/services/** - - - - - - - diff --git a/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/GrpcClient.java b/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/GrpcClient.java deleted file mode 100644 index 91788274..00000000 --- a/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/GrpcClient.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (C) 2019 Bell Canada. - * - * 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 org.onap.ccsdk.sli.adaptors.grpc; - -import java.util.Map; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import org.onap.ccsdk.sli.core.sli.SvcLogicJavaPlugin; -import org.onap.ccsdk.sli.core.sli.SvcLogicResource.QueryStatus; - -public interface GrpcClient extends SvcLogicJavaPlugin { - - /** - * Send a request to process to a gRPC server. - * - * @param parameters HashMap of parameters passed by the DG to this function. - * Required parameters are defined in implemention. - */ - QueryStatus sendRequest(Map parameters, SvcLogicContext ctx); -} diff --git a/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/GrpcProperties.java b/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/GrpcProperties.java deleted file mode 100644 index ff158c2e..00000000 --- a/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/GrpcProperties.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright (C) 2018 Bell Canada. - * - * 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 org.onap.ccsdk.sli.adaptors.grpc; - -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; -import java.util.Properties; -import org.osgi.framework.Bundle; -import org.osgi.framework.BundleContext; -import org.osgi.framework.FrameworkUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class GrpcProperties { - - private static final Logger LOG = LoggerFactory.getLogger(GrpcProperties.class); - - private static final String GRPC_PROPERTY_FILE_NAME = "grpc.properties"; - private static final String DEFAULT_PROPERTIES_DIR = "/opt/onap/ccsdk/data/properties"; - private static final String PROPERTIES_DIR_KEY = "SDNC_CONFIG_DIR"; - - private static final String BLUEPRINT_PROCESSOR_URL_PROP = "org.onap.ccsdk.sli.adaptors.grpc.blueprint.processor.url"; - private static final String BLUEPRINT_PROCESSOR_PORT_PROP = "org.onap.ccsdk.sli.adaptors.grpc.blueprint.processor.port"; - private static final String BLUEPRINT_PROCESSOR_AUTH_PROP = "org.onap.ccsdk.sli.adaptors.grpc.blueprint.processor.auth"; - - private Properties properties; - - public GrpcProperties() { - loadProps(); - } - - public String getUrl() { - return properties.getProperty(BLUEPRINT_PROCESSOR_URL_PROP); - } - - public String getAuth() { - return properties.getProperty(BLUEPRINT_PROCESSOR_AUTH_PROP); - } - - public int getPort() { - return Integer.parseInt(properties.getProperty(BLUEPRINT_PROCESSOR_PORT_PROP)); - } - - private void loadProps() { - properties = new Properties(); - // Try to load config from dir - final String ccsdkConfigDir = - System.getProperty(PROPERTIES_DIR_KEY, DEFAULT_PROPERTIES_DIR) + "/" + GRPC_PROPERTY_FILE_NAME; - try (FileInputStream in = new FileInputStream(ccsdkConfigDir)) { - properties.load(in); - LOG.info("Loaded {} properties from file {}", properties.size(), ccsdkConfigDir); - } catch (Exception e) { - // Try to load config from jar - final Bundle bundle = FrameworkUtil.getBundle(GrpcProperties.class); - final BundleContext ctx = bundle.getBundleContext(); - final URL url = ctx.getBundle().getResource(GRPC_PROPERTY_FILE_NAME); - - try (InputStream inputStream = url.openStream()) { - properties.load(inputStream); - LOG.info("Loaded {} properties from file {}", properties.size(), GRPC_PROPERTY_FILE_NAME); - } catch (IOException e1) { - LOG.error("Failed to load properties for file: {} " + GRPC_PROPERTY_FILE_NAME, e1); - } - } - } -} diff --git a/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/JsonFormat.java b/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/JsonFormat.java deleted file mode 100644 index d169f14c..00000000 --- a/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/JsonFormat.java +++ /dev/null @@ -1,668 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package org.onap.ccsdk.sli.adaptors.grpc; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonNull; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; -import com.google.gson.JsonPrimitive; -import com.google.gson.stream.JsonReader; -import com.google.protobuf.Any; -import com.google.protobuf.BoolValue; -import com.google.protobuf.BytesValue; -import com.google.protobuf.Descriptors.Descriptor; -import com.google.protobuf.Descriptors.FieldDescriptor; -import com.google.protobuf.Descriptors.FieldDescriptor.JavaType; -import com.google.protobuf.DoubleValue; -import com.google.protobuf.FloatValue; -import com.google.protobuf.Int32Value; -import com.google.protobuf.Int64Value; -import com.google.protobuf.InvalidProtocolBufferException; -import com.google.protobuf.ListValue; -import com.google.protobuf.Message; -import com.google.protobuf.MessageOrBuilder; -import com.google.protobuf.NullValue; -import com.google.protobuf.StringValue; -import com.google.protobuf.Struct; -import com.google.protobuf.UInt32Value; -import com.google.protobuf.UInt64Value; -import com.google.protobuf.Value; -import java.io.IOException; -import java.io.StringReader; -import java.math.BigDecimal; -import java.math.BigInteger; -import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; - -//Fork from : -// -// -//com.google.protobuf -//protobuf-java-util -//3.6.1 -// - -public class JsonFormat { - - private JsonFormat() { - } - - public static JsonFormat.Printer printer() { - return new JsonFormat.Printer(JsonFormat.TypeRegistry.getEmptyTypeRegistry(), false, Collections.emptySet(), - false, false, false); - } - - public static JsonFormat.Parser parser() { - return new JsonFormat.Parser(JsonFormat.TypeRegistry.getEmptyTypeRegistry(), false, 100); - } - - private static class ParserImpl { - - private final JsonFormat.TypeRegistry registry; - private final JsonParser jsonParser; - private final boolean ignoringUnknownFields; - private final int recursionLimit; - private int currentDepth; - private static final Map wellKnownTypeParsers = buildWellKnownTypeParsers(); - private final Map> fieldNameMaps = new HashMap(); - private static final BigInteger MAX_UINT64 = new BigInteger("FFFFFFFFFFFFFFFF", 16); - private static final double EPSILON = 1.0E-6D; - private static final BigDecimal MORE_THAN_ONE = new BigDecimal(String.valueOf(1.000001D)); - private static final BigDecimal MAX_DOUBLE; - private static final BigDecimal MIN_DOUBLE; - - ParserImpl(JsonFormat.TypeRegistry registry, boolean ignoreUnknownFields, int recursionLimit) { - this.registry = registry; - this.ignoringUnknownFields = ignoreUnknownFields; - this.jsonParser = new JsonParser(); - this.recursionLimit = recursionLimit; - this.currentDepth = 0; - } - - void merge(String json, com.google.protobuf.Message.Builder builder) throws InvalidProtocolBufferException { - try { - JsonReader reader = new JsonReader(new StringReader(json)); - reader.setLenient(false); - this.merge(this.jsonParser.parse(reader), builder); - } catch (InvalidProtocolBufferException var4) { - throw var4; - } catch (Exception var5) { - throw new InvalidProtocolBufferException(var5.getMessage()); - } - } - - private static Map buildWellKnownTypeParsers() { - Map parsers = new HashMap(); - parsers.put(Any.getDescriptor().getFullName(), new JsonFormat.ParserImpl.WellKnownTypeParser() { - public void merge(JsonFormat.ParserImpl parser, JsonElement json, - com.google.protobuf.Message.Builder builder) throws InvalidProtocolBufferException { - } - }); - JsonFormat.ParserImpl.WellKnownTypeParser wrappersPrinter = new JsonFormat.ParserImpl.WellKnownTypeParser() { - public void merge(JsonFormat.ParserImpl parser, JsonElement json, - com.google.protobuf.Message.Builder builder) throws InvalidProtocolBufferException { - } - }; - parsers.put(BoolValue.getDescriptor().getFullName(), wrappersPrinter); - parsers.put(Int32Value.getDescriptor().getFullName(), wrappersPrinter); - parsers.put(UInt32Value.getDescriptor().getFullName(), wrappersPrinter); - parsers.put(Int64Value.getDescriptor().getFullName(), wrappersPrinter); - parsers.put(UInt64Value.getDescriptor().getFullName(), wrappersPrinter); - parsers.put(StringValue.getDescriptor().getFullName(), wrappersPrinter); - parsers.put(BytesValue.getDescriptor().getFullName(), wrappersPrinter); - parsers.put(FloatValue.getDescriptor().getFullName(), wrappersPrinter); - parsers.put(DoubleValue.getDescriptor().getFullName(), wrappersPrinter); - parsers.put(Struct.getDescriptor().getFullName(), new JsonFormat.ParserImpl.WellKnownTypeParser() { - public void merge(JsonFormat.ParserImpl parser, JsonElement json, - com.google.protobuf.Message.Builder builder) throws InvalidProtocolBufferException { - parser.mergeStruct(json, builder); - } - }); - parsers.put(ListValue.getDescriptor().getFullName(), new JsonFormat.ParserImpl.WellKnownTypeParser() { - public void merge(JsonFormat.ParserImpl parser, JsonElement json, - com.google.protobuf.Message.Builder builder) throws InvalidProtocolBufferException { - } - }); - parsers.put(Value.getDescriptor().getFullName(), new JsonFormat.ParserImpl.WellKnownTypeParser() { - public void merge(JsonFormat.ParserImpl parser, JsonElement json, - com.google.protobuf.Message.Builder builder) throws InvalidProtocolBufferException { - parser.mergeValue(json, builder); - } - }); - return parsers; - } - - private void merge(JsonElement json, com.google.protobuf.Message.Builder builder) - throws InvalidProtocolBufferException { - JsonFormat.ParserImpl.WellKnownTypeParser specialParser = (JsonFormat.ParserImpl.WellKnownTypeParser) wellKnownTypeParsers - .get(builder.getDescriptorForType().getFullName()); - if (specialParser != null) { - specialParser.merge(this, json, builder); - } - } - - - private void mergeStruct(JsonElement json, com.google.protobuf.Message.Builder builder) - throws InvalidProtocolBufferException { - Descriptor descriptor = builder.getDescriptorForType(); - FieldDescriptor field = descriptor.findFieldByName("fields"); - if (field == null) { - throw new InvalidProtocolBufferException("Invalid Struct type."); - } else { - this.mergeMapField(field, json, builder); - } - } - - private void mergeValue(JsonElement json, com.google.protobuf.Message.Builder builder) - throws InvalidProtocolBufferException { - Descriptor type = builder.getDescriptorForType(); - if (json instanceof JsonPrimitive) { - JsonPrimitive primitive = (JsonPrimitive) json; - if (primitive.isBoolean()) { - builder.setField(type.findFieldByName("bool_value"), primitive.getAsBoolean()); - } else if (primitive.isNumber()) { - builder.setField(type.findFieldByName("number_value"), primitive.getAsDouble()); - } else { - builder.setField(type.findFieldByName("string_value"), primitive.getAsString()); - } - } else { - com.google.protobuf.Message.Builder listBuilder; - FieldDescriptor field; - if (json instanceof JsonObject) { - field = type.findFieldByName("struct_value"); - listBuilder = builder.newBuilderForField(field); - this.merge(json, listBuilder); - builder.setField(field, listBuilder.build()); - } else if (json instanceof JsonArray) { - field = type.findFieldByName("list_value"); - listBuilder = builder.newBuilderForField(field); - this.merge(json, listBuilder); - builder.setField(field, listBuilder.build()); - } else { - if (!(json instanceof JsonNull)) { - throw new IllegalStateException("Unexpected json data: " + json); - } - - builder.setField(type.findFieldByName("null_value"), NullValue.NULL_VALUE.getValueDescriptor()); - } - } - - } - - private void mergeMapField(FieldDescriptor field, JsonElement json, com.google.protobuf.Message.Builder builder) - throws InvalidProtocolBufferException { - if (!(json instanceof JsonObject)) { - throw new InvalidProtocolBufferException("Expect a map object but found: " + json); - } else { - Descriptor type = field.getMessageType(); - FieldDescriptor keyField = type.findFieldByName("key"); - FieldDescriptor valueField = type.findFieldByName("value"); - if (keyField != null && valueField != null) { - JsonObject object = (JsonObject) json; - Iterator var8 = object.entrySet().iterator(); - - while (var8.hasNext()) { - Entry entry = (Entry) var8.next(); - com.google.protobuf.Message.Builder entryBuilder = builder.newBuilderForField(field); - Object key = this - .parseFieldValue(keyField, new JsonPrimitive((String) entry.getKey()), entryBuilder); - Object value = this.parseFieldValue(valueField, (JsonElement) entry.getValue(), entryBuilder); - if (value == null) { - throw new InvalidProtocolBufferException("Map value cannot be null."); - } - - entryBuilder.setField(keyField, key); - entryBuilder.setField(valueField, value); - builder.addRepeatedField(field, entryBuilder.build()); - } - - } else { - throw new InvalidProtocolBufferException("Invalid map field: " + field.getFullName()); - } - } - } - - private String parseString(JsonElement json) { - return json.getAsString(); - } - - private Object parseFieldValue(FieldDescriptor field, JsonElement json, - com.google.protobuf.Message.Builder builder) throws InvalidProtocolBufferException { - if (json instanceof JsonNull) { - if (field.getJavaType() == JavaType.MESSAGE && field.getMessageType().getFullName() - .equals(Value.getDescriptor().getFullName())) { - Value value = Value.newBuilder().setNullValueValue(0).build(); - return builder.newBuilderForField(field).mergeFrom(value.toByteString()).build(); - } else { - return field.getJavaType() == JavaType.ENUM && field.getEnumType().getFullName() - .equals(NullValue.getDescriptor().getFullName()) ? field.getEnumType().findValueByNumber(0) - : null; - } - } else { - switch (field.getType()) { - case STRING: - return this.parseString(json); - case MESSAGE: - case GROUP: - if (this.currentDepth >= this.recursionLimit) { - throw new InvalidProtocolBufferException("Hit recursion limit."); - } - - ++this.currentDepth; - com.google.protobuf.Message.Builder subBuilder = builder.newBuilderForField(field); - this.merge(json, subBuilder); - --this.currentDepth; - return subBuilder.build(); - default: - throw new InvalidProtocolBufferException("Invalid field type: " + field.getType()); - } - } - } - - static { - MAX_DOUBLE = (new BigDecimal(String.valueOf(1.7976931348623157E308D))).multiply(MORE_THAN_ONE); - MIN_DOUBLE = (new BigDecimal(String.valueOf(-1.7976931348623157E308D))).multiply(MORE_THAN_ONE); - } - - private interface WellKnownTypeParser { - - void merge(JsonFormat.ParserImpl var1, JsonElement var2, com.google.protobuf.Message.Builder var3) - throws InvalidProtocolBufferException; - } - } - - private static final class PrinterImpl { - - private final JsonFormat.TypeRegistry registry; - private final boolean alwaysOutputDefaultValueFields; - private final Set includingDefaultValueFields; - private final boolean preservingProtoFieldNames; - private final boolean printingEnumsAsInts; - private final JsonFormat.TextGenerator generator; - private final Gson gson; - private final CharSequence blankOrSpace; - private final CharSequence blankOrNewLine; - private static final Map wellKnownTypePrinters = buildWellKnownTypePrinters(); - - PrinterImpl(JsonFormat.TypeRegistry registry, boolean alwaysOutputDefaultValueFields, - Set includingDefaultValueFields, boolean preservingProtoFieldNames, Appendable jsonOutput, - boolean omittingInsignificantWhitespace, boolean printingEnumsAsInts) { - this.registry = registry; - this.alwaysOutputDefaultValueFields = alwaysOutputDefaultValueFields; - this.includingDefaultValueFields = includingDefaultValueFields; - this.preservingProtoFieldNames = preservingProtoFieldNames; - this.printingEnumsAsInts = printingEnumsAsInts; - this.gson = JsonFormat.PrinterImpl.GsonHolder.DEFAULT_GSON; - if (omittingInsignificantWhitespace) { - this.generator = new JsonFormat.CompactTextGenerator(jsonOutput); - this.blankOrSpace = ""; - this.blankOrNewLine = ""; - } else { - this.generator = new JsonFormat.PrettyTextGenerator(jsonOutput); - this.blankOrSpace = " "; - this.blankOrNewLine = "\n"; - } - - } - - void print(MessageOrBuilder message) throws IOException { - JsonFormat.PrinterImpl.WellKnownTypePrinter specialPrinter = (JsonFormat.PrinterImpl.WellKnownTypePrinter) wellKnownTypePrinters - .get(message.getDescriptorForType().getFullName()); - if (specialPrinter != null) { - specialPrinter.print(this, message); - } - } - - private static Map buildWellKnownTypePrinters() { - Map printers = new HashMap(); - printers.put(Any.getDescriptor().getFullName(), new JsonFormat.PrinterImpl.WellKnownTypePrinter() { - public void print(JsonFormat.PrinterImpl printer, MessageOrBuilder message) throws IOException { - } - }); - JsonFormat.PrinterImpl.WellKnownTypePrinter wrappersPrinter = new JsonFormat.PrinterImpl.WellKnownTypePrinter() { - public void print(JsonFormat.PrinterImpl printer, MessageOrBuilder message) throws IOException { - } - }; - printers.put(BoolValue.getDescriptor().getFullName(), wrappersPrinter); - printers.put(Int32Value.getDescriptor().getFullName(), wrappersPrinter); - printers.put(UInt32Value.getDescriptor().getFullName(), wrappersPrinter); - printers.put(Int64Value.getDescriptor().getFullName(), wrappersPrinter); - printers.put(UInt64Value.getDescriptor().getFullName(), wrappersPrinter); - printers.put(StringValue.getDescriptor().getFullName(), wrappersPrinter); - printers.put(BytesValue.getDescriptor().getFullName(), wrappersPrinter); - printers.put(FloatValue.getDescriptor().getFullName(), wrappersPrinter); - printers.put(DoubleValue.getDescriptor().getFullName(), wrappersPrinter); - printers.put(Struct.getDescriptor().getFullName(), new JsonFormat.PrinterImpl.WellKnownTypePrinter() { - public void print(JsonFormat.PrinterImpl printer, MessageOrBuilder message) throws IOException { - printer.printStruct(message); - } - }); - printers.put(Value.getDescriptor().getFullName(), new JsonFormat.PrinterImpl.WellKnownTypePrinter() { - public void print(JsonFormat.PrinterImpl printer, MessageOrBuilder message) throws IOException { - printer.printValue(message); - } - }); - printers.put(ListValue.getDescriptor().getFullName(), new JsonFormat.PrinterImpl.WellKnownTypePrinter() { - public void print(JsonFormat.PrinterImpl printer, MessageOrBuilder message) throws IOException { - } - }); - return printers; - } - - private void printStruct(MessageOrBuilder message) throws IOException { - Descriptor descriptor = message.getDescriptorForType(); - FieldDescriptor field = descriptor.findFieldByName("fields"); - if (field == null) { - throw new InvalidProtocolBufferException("Invalid Struct type."); - } else { - this.printMapFieldValue(field, message.getField(field)); - } - } - - private void printValue(MessageOrBuilder message) throws IOException { - Map fields = message.getAllFields(); - if (fields.isEmpty()) { - this.generator.print("null"); - } else if (fields.size() != 1) { - throw new InvalidProtocolBufferException("Invalid Value type."); - } else { - Iterator var3 = fields.entrySet().iterator(); - - while (var3.hasNext()) { - Entry entry = (Entry) var3.next(); - this.printSingleFieldValue((FieldDescriptor) entry.getKey(), entry.getValue()); - } - - } - } - - private void printMapFieldValue(FieldDescriptor field, Object value) throws IOException { - Descriptor type = field.getMessageType(); - FieldDescriptor keyField = type.findFieldByName("key"); - FieldDescriptor valueField = type.findFieldByName("value"); - if (keyField != null && valueField != null) { - this.generator.print("{" + this.blankOrNewLine); - this.generator.indent(); - boolean printedElement = false; - Iterator var7 = ((List) value).iterator(); - - while (var7.hasNext()) { - Object element = var7.next(); - Message entry = (Message) element; - Object entryKey = entry.getField(keyField); - Object entryValue = entry.getField(valueField); - if (printedElement) { - this.generator.print("," + this.blankOrNewLine); - } else { - printedElement = true; - } - - this.printSingleFieldValue(keyField, entryKey, true); - this.generator.print(":" + this.blankOrSpace); - this.printSingleFieldValue(valueField, entryValue); - } - - if (printedElement) { - this.generator.print(this.blankOrNewLine); - } - - this.generator.outdent(); - this.generator.print("}"); - } else { - throw new InvalidProtocolBufferException("Invalid map field."); - } - } - - private void printSingleFieldValue(FieldDescriptor field, Object value) throws IOException { - this.printSingleFieldValue(field, value, false); - } - - private void printSingleFieldValue(FieldDescriptor field, Object value, boolean alwaysWithQuotes) - throws IOException { - switch (field.getType()) { - case DOUBLE: - Double doubleValue = (Double) value; - if (doubleValue.isNaN()) { - this.generator.print("\"NaN\""); - } else if (doubleValue.isInfinite()) { - if (doubleValue < 0.0D) { - this.generator.print("\"-Infinity\""); - } else { - this.generator.print("\"Infinity\""); - } - } else { - if (alwaysWithQuotes) { - this.generator.print("\""); - } - - this.generator.print(doubleValue.toString()); - if (alwaysWithQuotes) { - this.generator.print("\""); - } - } - break; - case STRING: - this.generator.print(this.gson.toJson(value)); - break; - case MESSAGE: - case GROUP: - this.print((Message) value); - } - - } - - private interface WellKnownTypePrinter { - - void print(JsonFormat.PrinterImpl var1, MessageOrBuilder var2) throws IOException; - } - - private static class GsonHolder { - - private static final Gson DEFAULT_GSON = (new GsonBuilder()).disableHtmlEscaping().create(); - - private GsonHolder() { - } - } - } - - private static final class PrettyTextGenerator implements JsonFormat.TextGenerator { - - private final Appendable output; - private final StringBuilder indent; - private boolean atStartOfLine; - - private PrettyTextGenerator(Appendable output) { - this.indent = new StringBuilder(); - this.atStartOfLine = true; - this.output = output; - } - - public void indent() { - this.indent.append(" "); - } - - public void outdent() { - int length = this.indent.length(); - if (length < 2) { - throw new IllegalArgumentException(" Outdent() without matching Indent()."); - } else { - this.indent.delete(length - 2, length); - } - } - - public void print(CharSequence text) throws IOException { - int size = text.length(); - int pos = 0; - - for (int i = 0; i < size; ++i) { - if (text.charAt(i) == '\n') { - this.write(text.subSequence(pos, i + 1)); - pos = i + 1; - this.atStartOfLine = true; - } - } - - this.write(text.subSequence(pos, size)); - } - - private void write(CharSequence data) throws IOException { - if (data.length() != 0) { - if (this.atStartOfLine) { - this.atStartOfLine = false; - this.output.append(this.indent); - } - - this.output.append(data); - } - } - } - - private static final class CompactTextGenerator implements JsonFormat.TextGenerator { - - private final Appendable output; - - private CompactTextGenerator(Appendable output) { - this.output = output; - } - - public void indent() { - } - - public void outdent() { - } - - public void print(CharSequence text) throws IOException { - this.output.append(text); - } - } - - interface TextGenerator { - - void indent(); - - void outdent(); - - void print(CharSequence var1) throws IOException; - } - - public static class TypeRegistry { - - private final Map types; - - public static JsonFormat.TypeRegistry getEmptyTypeRegistry() { - return JsonFormat.TypeRegistry.EmptyTypeRegistryHolder.EMPTY; - } - - public Descriptor find(String name) { - return (Descriptor) this.types.get(name); - } - - private TypeRegistry(Map types) { - this.types = types; - } - - private static class EmptyTypeRegistryHolder { - - private static final JsonFormat.TypeRegistry EMPTY = new JsonFormat.TypeRegistry(Collections.emptyMap()); - - private EmptyTypeRegistryHolder() { - } - } - } - - public static class Parser { - - private final JsonFormat.TypeRegistry registry; - private final boolean ignoringUnknownFields; - private final int recursionLimit; - private static final int DEFAULT_RECURSION_LIMIT = 100; - - private Parser(JsonFormat.TypeRegistry registry, boolean ignoreUnknownFields, int recursionLimit) { - this.registry = registry; - this.ignoringUnknownFields = ignoreUnknownFields; - this.recursionLimit = recursionLimit; - } - - public void merge(String json, com.google.protobuf.Message.Builder builder) - throws InvalidProtocolBufferException { - (new JsonFormat.ParserImpl(this.registry, this.ignoringUnknownFields, this.recursionLimit)) - .merge(json, builder); - } - } - - public static class Printer { - - private final JsonFormat.TypeRegistry registry; - private boolean alwaysOutputDefaultValueFields; - private Set includingDefaultValueFields; - private final boolean preservingProtoFieldNames; - private final boolean omittingInsignificantWhitespace; - private final boolean printingEnumsAsInts; - - private Printer(JsonFormat.TypeRegistry registry, boolean alwaysOutputDefaultValueFields, - Set includingDefaultValueFields, boolean preservingProtoFieldNames, - boolean omittingInsignificantWhitespace, boolean printingEnumsAsInts) { - this.registry = registry; - this.alwaysOutputDefaultValueFields = alwaysOutputDefaultValueFields; - this.includingDefaultValueFields = includingDefaultValueFields; - this.preservingProtoFieldNames = preservingProtoFieldNames; - this.omittingInsignificantWhitespace = omittingInsignificantWhitespace; - this.printingEnumsAsInts = printingEnumsAsInts; - } - - public void appendTo(MessageOrBuilder message, Appendable output) throws IOException { - (new JsonFormat.PrinterImpl(this.registry, this.alwaysOutputDefaultValueFields, - this.includingDefaultValueFields, this.preservingProtoFieldNames, output, - this.omittingInsignificantWhitespace, this.printingEnumsAsInts)).print(message); - } - - public String print(MessageOrBuilder message) throws InvalidProtocolBufferException { - try { - StringBuilder builder = new StringBuilder(); - this.appendTo(message, builder); - return builder.toString(); - } catch (InvalidProtocolBufferException var3) { - throw var3; - } catch (IOException var4) { - throw new IllegalStateException(var4); - } - } - } -} diff --git a/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/Utils.java b/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/Utils.java deleted file mode 100644 index 831f09ea..00000000 --- a/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/Utils.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (C) 2019 Bell Canada. - * - * 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 org.onap.ccsdk.sli.adaptors.grpc; - -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.format.DateTimeFormatter; - -public final class Utils { - - private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); - - private Utils() { - throw new AssertionError("Utility class"); - } - - public static String timestamp() { - LocalDateTime now = LocalDateTime.now(ZoneId.systemDefault()); - return formatter.format(now); - } -} diff --git a/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BasicAuthClientInterceptor.java b/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BasicAuthClientInterceptor.java deleted file mode 100644 index 5d2e848c..00000000 --- a/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BasicAuthClientInterceptor.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (C) 2019 Bell Canada. - * - * 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 org.onap.ccsdk.sli.adaptors.grpc.cds; - -import io.grpc.CallOptions; -import io.grpc.Channel; -import io.grpc.ClientCall; -import io.grpc.ClientInterceptor; -import io.grpc.ForwardingClientCall; -import io.grpc.Metadata; -import io.grpc.Metadata.Key; -import io.grpc.MethodDescriptor; -import org.apache.http.HttpHeaders; -import org.onap.ccsdk.sli.adaptors.grpc.GrpcProperties; - -public class BasicAuthClientInterceptor implements ClientInterceptor { - - private GrpcProperties props; - - public BasicAuthClientInterceptor(GrpcProperties props) { - this.props = props; - } - - @Override - public ClientCall interceptCall( - MethodDescriptor method, - CallOptions callOptions, - Channel channel) { - - Key authHeader = Key.of(HttpHeaders.AUTHORIZATION, Metadata.ASCII_STRING_MARSHALLER); - - return new ForwardingClientCall.SimpleForwardingClientCall( - channel.newCall(method, callOptions)) { - @Override - public void start(Listener responseListener, Metadata headers) { - headers.put(authHeader, props.getAuth()); - super.start(responseListener, headers); - } - }; - } -} diff --git a/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingClient.java b/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingClient.java deleted file mode 100644 index f922f9ec..00000000 --- a/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingClient.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (C) 2019 Bell Canada. - * - * 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 org.onap.ccsdk.sli.adaptors.grpc.cds; - -import io.grpc.ManagedChannel; -import io.grpc.internal.DnsNameResolverProvider; -import io.grpc.internal.PickFirstLoadBalancerProvider; -import io.grpc.netty.NettyChannelBuilder; -import java.util.Map; -import org.onap.ccsdk.sli.adaptors.grpc.GrpcClient; -import org.onap.ccsdk.sli.adaptors.grpc.GrpcProperties; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import org.onap.ccsdk.sli.core.sli.SvcLogicResource.QueryStatus; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class BlueprintProcessingClient implements GrpcClient { - - private static final Logger log = LoggerFactory.getLogger(BlueprintProcessingClient.class); - - private ManagedChannel channel; - private BlueprintProcessingHandler handler; - - public BlueprintProcessingClient(GrpcProperties props) { - this.channel = NettyChannelBuilder - .forAddress(props.getUrl(), props.getPort()) - .nameResolverFactory(new DnsNameResolverProvider()) - .loadBalancerFactory(new PickFirstLoadBalancerProvider()) - .intercept(new BasicAuthClientInterceptor(props)) - .usePlaintext() - .build(); - this.handler = new BlueprintProcessingHandler(); - } - - public BlueprintProcessingClient(ManagedChannel channel, BlueprintProcessingHandler handler) { - this.channel = channel; - this.handler = handler; - } - - // Used by blueprint - public void start() { - log.info("BlueprintProcessingClient started"); - } - - // Used by blueprint - public void stop() { - if (channel != null) { - channel.shutdown(); - } - log.info("BlueprintProcessingClient stopped"); - } - - /* - * @param parameters HashMap of parameters passed by the DG to this function. - * - * - * - * - * - * - * - * - * - * - * - * - *
parameterMandatory/Optionaldescription
is_forceOptionalWhether to force or not the request.
ttlOptionalDuration of the request.
blueprint_nameMandatoryName of the blueprint to process.
blueprint_versionMandatoryVersion of the blueprint to process.
actionMandatoryAction of the blueprint to process.
modeMandatoryMode to operate the transaction.
payloadMandatoryPayload.
prefixMandatoryPrefix string to put response in context.
- */ - @Override - public QueryStatus sendRequest(Map parameters, SvcLogicContext ctx) { - return handler.process(parameters, channel, ctx); - } -} \ No newline at end of file diff --git a/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingHandler.java b/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingHandler.java deleted file mode 100644 index 5f4fad42..00000000 --- a/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingHandler.java +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Copyright (C) 2019 Bell Canada. - * - * 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 org.onap.ccsdk.sli.adaptors.grpc.cds; - -import com.google.common.collect.Maps; -import com.google.protobuf.InvalidProtocolBufferException; -import com.google.protobuf.Struct; -import com.google.protobuf.Struct.Builder; -import io.grpc.ManagedChannel; -import io.grpc.Status; -import io.grpc.stub.StreamObserver; -import java.util.Map; -import java.util.UUID; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicReference; -import org.onap.ccsdk.cds.controllerblueprints.common.api.ActionIdentifiers; -import org.onap.ccsdk.cds.controllerblueprints.common.api.CommonHeader; -import org.onap.ccsdk.cds.controllerblueprints.common.api.Flag; -import org.onap.ccsdk.cds.controllerblueprints.processing.api.BluePrintProcessingServiceGrpc; -import org.onap.ccsdk.cds.controllerblueprints.processing.api.BluePrintProcessingServiceGrpc.BluePrintProcessingServiceStub; -import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceInput; -import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceOutput; -import org.onap.ccsdk.sli.adaptors.grpc.JsonFormat; -import org.onap.ccsdk.sli.adaptors.grpc.Utils; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import org.onap.ccsdk.sli.core.sli.SvcLogicException; -import org.onap.ccsdk.sli.core.sli.SvcLogicResource.QueryStatus; -import org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -class BlueprintProcessingHandler { - - private static final Logger log = LoggerFactory.getLogger(BlueprintProcessingHandler.class); - - private static final int DEFAULT_TTL = 180; - private static final String CCSDK_ORIGINATOR = "CCSDK"; - private static final String IS_FORCE_PROP = "is_force"; - private static final String TTL_PROP = "ttl"; - private static final String BLUEPRINT_NAME_PROP = "blueprint_name"; - private static final String BLUEPRINT_VERSION_PROP = "blueprint_version"; - private static final String ACTION_PROP = "action"; - private static final String MODE_PROP = "mode"; - private static final String PAYLOAD_PROP = "payload"; - private static final String PREFIX_PROP = "prefix"; - - QueryStatus process(final Map parameters, final ManagedChannel channel, final SvcLogicContext ctx) { - try { - SliPluginUtils.checkParameters(parameters, - new String[]{BLUEPRINT_NAME_PROP, BLUEPRINT_VERSION_PROP, ACTION_PROP, MODE_PROP, PREFIX_PROP}, log); - } catch (SvcLogicException e) { - return QueryStatus.FAILURE; - } - - final boolean isForce = Boolean.getBoolean(parameters.get(IS_FORCE_PROP)); - int ttl = Integer.parseInt(parameters.get(TTL_PROP)); - if (ttl == 0) { - ttl = DEFAULT_TTL; - } - final String blueprintName = parameters.get(BLUEPRINT_NAME_PROP); - final String blueprintVersion = parameters.get(BLUEPRINT_VERSION_PROP); - final String action = parameters.get(ACTION_PROP); - final String mode = parameters.get(MODE_PROP); - final String payload = parameters.get(PAYLOAD_PROP); - final String prefix = parameters.get(PREFIX_PROP); - - log.info("Processing blueprint({}:{}) for action({})", blueprintVersion, blueprintName, action); - - final AtomicReference responseStatus = new AtomicReference<>(); - final CountDownLatch finishLatch = new CountDownLatch(1); - - final BluePrintProcessingServiceStub asyncStub = BluePrintProcessingServiceGrpc.newStub(channel); - - final StreamObserver responseObserver = new StreamObserver() { - @Override - public void onNext(ExecutionServiceOutput output) { - log.info("onNext: {}", output); - - Map jsonToCtx = Maps.newHashMap(); - String json = ""; - try { - json = JsonFormat.printer().print(output); - } catch (InvalidProtocolBufferException e) { - log.error("Failed to parse received message. blueprint({}:{}) for action({}). {}", blueprintVersion, - blueprintName, action, output, e); - responseStatus.compareAndSet(null, QueryStatus.FAILURE); - finishLatch.countDown(); - } - - ctx.setAttribute("BlueprintProcessingHandler_process", json); - jsonToCtx.put("source", "BlueprintProcessingHandler_process"); - jsonToCtx.put("outputPath", prefix); - jsonToCtx.put("isEscaped", Boolean.FALSE.toString()); - - try { - SliPluginUtils.jsonStringToCtx(jsonToCtx, ctx); - } catch (SvcLogicException e) { - log.error("Failed to put jsonStringToCtx. blueprint({}:{}) for action({}). {}", blueprintVersion, - blueprintName, action, output, e); - responseStatus.compareAndSet(null, QueryStatus.FAILURE); - finishLatch.countDown(); - } - } - - @Override - public void onError(Throwable t) { - Status status = Status.fromThrowable(t); - log.error("Failed processing blueprint({}:{}) for action({}). {}", blueprintVersion, blueprintName, - action, status); - responseStatus.compareAndSet(null, QueryStatus.FAILURE); - finishLatch.countDown(); - } - - @Override - public void onCompleted() { - log.info("Completed blueprint({}:{}) for action({})", blueprintVersion, blueprintName, action); - responseStatus.compareAndSet(null, QueryStatus.SUCCESS); - finishLatch.countDown(); - } - }; - - final CommonHeader commonHeader = CommonHeader.newBuilder() - .setOriginatorId(CCSDK_ORIGINATOR) - .setRequestId(UUID.randomUUID().toString()) - .setTimestamp(Utils.timestamp()) - .setFlag(Flag.newBuilder() - .setIsForce(isForce) - .setTtl(ttl) - .build()) - .build(); - final ActionIdentifiers actionIdentifiers = ActionIdentifiers.newBuilder() - .setActionName(action) - .setBlueprintName(blueprintName) - .setBlueprintVersion(blueprintVersion) - .setMode(mode) - .build(); - - Builder struct = Struct.newBuilder(); - try { - JsonFormat.parser().merge(payload, struct); - } catch (InvalidProtocolBufferException e) { - log.error("Failed converting payload for blueprint({}:{}) for action({}). {}", blueprintVersion, - blueprintName, action, e); - return QueryStatus.FAILURE; - } - - final ExecutionServiceInput request = ExecutionServiceInput.newBuilder() - .setActionIdentifiers(actionIdentifiers) - .setPayload(struct.build()) - .setCommonHeader(commonHeader).build(); - - final StreamObserver requestObserver = asyncStub.process(responseObserver); - - try { - requestObserver.onNext(request); - } catch (RuntimeException e) { - requestObserver.onError(e); - return QueryStatus.FAILURE; - } - - requestObserver.onCompleted(); - try { - finishLatch.await(ttl, TimeUnit.SECONDS); - } catch (InterruptedException e) { - log.error("Failed processing blueprint({}:{}) for action({}). {}", blueprintVersion, blueprintName, action, - e); - Thread.currentThread().interrupt(); - return QueryStatus.FAILURE; - } - - return responseStatus.get(); - } -} \ No newline at end of file diff --git a/grpc-resource/provider/src/main/resources/grpc.properties b/grpc-resource/provider/src/main/resources/grpc.properties deleted file mode 100644 index 797c67e2..00000000 --- a/grpc-resource/provider/src/main/resources/grpc.properties +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (C) 2019 Bell Canada. -# -# 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. -# -org.onap.ccsdk.sli.adaptors.grpc.blueprint.processor.url=cds-blueprints-processor-grpc -org.onap.ccsdk.sli.adaptors.grpc.blueprint.processor.port=9111 -org.onap.ccsdk.sli.adaptors.grpc.blueprint.processor.auth=Basic Y2NzZGthcHBzOmNjc2RrYXBwcw== diff --git a/grpc-resource/provider/src/main/resources/org/opendaylight/blueprint/grpc-client.xml b/grpc-resource/provider/src/main/resources/org/opendaylight/blueprint/grpc-client.xml deleted file mode 100644 index 9febe484..00000000 --- a/grpc-resource/provider/src/main/resources/org/opendaylight/blueprint/grpc-client.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - diff --git a/grpc-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingClientTest.java b/grpc-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingClientTest.java deleted file mode 100644 index ea012d3d..00000000 --- a/grpc-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingClientTest.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright (C) 2019 Bell Canada. - * - * 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 org.onap.ccsdk.sli.adaptors.grpc.cds; - - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.doReturn; - -import com.google.common.collect.Maps; -import io.grpc.inprocess.InProcessChannelBuilder; -import io.grpc.inprocess.InProcessServerBuilder; -import io.grpc.stub.StreamObserver; -import io.grpc.testing.GrpcCleanupRule; -import io.grpc.util.MutableHandlerRegistry; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicReference; -import org.junit.After; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; -import org.mockito.Mockito; -import org.onap.ccsdk.cds.controllerblueprints.common.api.ActionIdentifiers; -import org.onap.ccsdk.cds.controllerblueprints.processing.api.BluePrintProcessingServiceGrpc.BluePrintProcessingServiceImplBase; -import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceInput; -import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceOutput; -import org.onap.ccsdk.sli.adaptors.grpc.GrpcProperties; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import org.onap.ccsdk.sli.core.sli.SvcLogicResource.QueryStatus; - -@RunWith(JUnit4.class) -public class BlueprintProcessingClientTest { - - @Rule - public final GrpcCleanupRule grpcCleanup = new GrpcCleanupRule(); - - private BlueprintProcessingClient client; - - private final SvcLogicContext svcLogicContext = new SvcLogicContext(); - private final MutableHandlerRegistry serviceRegistry = new MutableHandlerRegistry(); - private final List messagesDelivered = new ArrayList<>(); - private final CountDownLatch allRequestsDelivered = new CountDownLatch(1); - private final AtomicReference> responseObserverRef = new AtomicReference<>(); - - @Before - public void setUp() throws Exception { - - String serverName = InProcessServerBuilder.generateName(); - grpcCleanup.register(InProcessServerBuilder.forName(serverName) - .fallbackHandlerRegistry(serviceRegistry).directExecutor().build().start()); - - BlueprintProcessingHandler handler = new BlueprintProcessingHandler(); - - client = - new BlueprintProcessingClient(InProcessChannelBuilder.forName(serverName).directExecutor().build(), - handler); - - final BluePrintProcessingServiceImplBase routeChatImpl = - new BluePrintProcessingServiceImplBase() { - @Override - public StreamObserver process( - StreamObserver responseObserver) { - - responseObserverRef.set(responseObserver); - - StreamObserver requestObserver = new StreamObserver() { - @Override - public void onNext(ExecutionServiceInput message) { - messagesDelivered.add(message.getActionIdentifiers().getActionName()); - } - - @Override - public void onError(Throwable t) { - - } - - @Override - public void onCompleted() { - allRequestsDelivered.countDown(); - } - }; - - return requestObserver; - } - }; - - serviceRegistry.addService(routeChatImpl); - } - - @After - public void tearDown() { - client.stop(); - } - - @Test - public void testClientCst() { - GrpcProperties props = Mockito.mock(GrpcProperties.class); - doReturn(999).when(props).getPort(); - doReturn("localhost").when(props).getUrl(); - new BlueprintProcessingClient(props).stop(); - } - - - @Test - public void testSendMessageFail() throws Exception { - Map input = Maps.newHashMap(); - input.put("is_force", "true"); - input.put("ttl", "1"); - input.put("blueprint_name", "test"); - input.put("blueprint_version", "1.0.0"); - input.put("action", "test-action"); - input.put("mode", "sync"); - input.put("payload", ""); - input.put("prefix", "res"); - - QueryStatus status = client.sendRequest(input, svcLogicContext); - - Assert.assertEquals(QueryStatus.FAILURE, status); - - } - - @Test - public void testSendMessage() throws Exception { - ExecutionServiceOutput fakeResponse1 = ExecutionServiceOutput.newBuilder().setActionIdentifiers( - ActionIdentifiers.newBuilder().setActionName("response1").build()).build(); - - ExecutionServiceOutput fakeResponse2 = ExecutionServiceOutput.newBuilder().setActionIdentifiers( - ActionIdentifiers.newBuilder().setActionName("response2").build()).build(); - - Map input = Maps.newHashMap(); - input.put("is_force", "true"); - input.put("ttl", "1"); - input.put("blueprint_name", "test"); - input.put("blueprint_version", "1.0.0"); - input.put("action", "test-action"); - input.put("mode", "sync"); - input.put("payload", "{}"); - input.put("prefix", "res"); - - client.sendRequest(input, svcLogicContext); - - // request message sent and delivered for one time - assertTrue(allRequestsDelivered.await(1, TimeUnit.SECONDS)); - assertEquals(Collections.singletonList("test-action"), messagesDelivered); - - // let server complete. - responseObserverRef.get().onCompleted(); - } - -} \ No newline at end of file diff --git a/grpc-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/grpc/cds/GrpcClientTest.java b/grpc-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/grpc/cds/GrpcClientTest.java deleted file mode 100644 index 2ad49d79..00000000 --- a/grpc-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/grpc/cds/GrpcClientTest.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (C) 2019 Bell Canada. - * - * 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 org.onap.ccsdk.sli.adaptors.grpc.cds; - -import com.google.common.collect.Maps; -import com.google.protobuf.InvalidProtocolBufferException; -import com.google.protobuf.Struct; -import com.google.protobuf.Struct.Builder; -import java.util.Map; -import org.junit.Test; -import org.onap.ccsdk.sli.adaptors.grpc.JsonFormat; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import org.onap.ccsdk.sli.core.sli.SvcLogicException; -import org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils; - -public class GrpcClientTest { - - @Test - public void testPayload() throws InvalidProtocolBufferException { - - String payload = "{\n" - + " \"commonHeader\": {\n" - + " \"timestamp\": \"2019-02-27T22:08:39.587Z\",\n" - + " \"originatorId\": \"System\",\n" - + " \"requestId\": \"1234\",\n" - + " \"subRequestId\": \"1234-12234\"\n" - + " },\n" - + " \"actionIdentifiers\": {\n" - + " \"blueprintName\": \"test\",\n" - + " \"blueprintVersion\": \"1.0.0\",\n" - + " \"actionName\": \"resource-assignment\",\n" - + " \"mode\": \"sync\"\n" - + " },\n" - + " \"status\": {\n" - + " \"code\": 200,\n" - + " \"eventType\": \"EVENT-COMPONENT-EXECUTED\",\n" - + " \"timestamp\": \"2019-02-27T22:08:39.981Z\",\n" - + " \"message\": \"success\"\n" - + " },\n" - + " \"payload\": {\n" - + " \"resource-assignment-params\": {\n" - + " \"test\": \"THIS IS A TEST: service-capability-resolved-status-test\"\n" - + " },\n" - + " \"status\": \"success\"\n" - + " }\n" - + "}"; - - Map jsonToCtx = Maps.newHashMap(); - jsonToCtx.put("source", "blueprint_processing_result"); - jsonToCtx.put("outputPath", "t"); - jsonToCtx.put("isEscaped", Boolean.FALSE.toString()); - - SvcLogicContext svcLogicContext = new SvcLogicContext(); - svcLogicContext.setAttribute("blueprint_processing_result", payload); - - try { - SliPluginUtils.jsonStringToCtx(jsonToCtx, svcLogicContext); - } catch (SvcLogicException e) { - e.printStackTrace(); - } - - Builder t = Struct.newBuilder(); - - JsonFormat.parser().merge(payload, t); - - System.out.println(((Builder) t).build().toString()); - - System.out.println(JsonFormat.printer().print(t)); - } - -} \ No newline at end of file -- cgit 1.2.3-korg