aboutsummaryrefslogtreecommitdiffstats
path: root/grpc-resource/provider
diff options
context:
space:
mode:
Diffstat (limited to 'grpc-resource/provider')
-rw-r--r--grpc-resource/provider/pom.xml158
-rw-r--r--grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/GrpcClient.java32
-rw-r--r--grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/GrpcProperties.java81
-rw-r--r--grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/JsonFormat.java668
-rw-r--r--grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/Utils.java34
-rw-r--r--grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BasicAuthClientInterceptor.java54
-rw-r--r--grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingClient.java86
-rw-r--r--grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingHandler.java187
-rw-r--r--grpc-resource/provider/src/main/resources/grpc.properties18
-rw-r--r--grpc-resource/provider/src/main/resources/org/opendaylight/blueprint/grpc-client.xml30
-rw-r--r--grpc-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingClientTest.java171
-rw-r--r--grpc-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/grpc/cds/GrpcClientTest.java84
12 files changed, 0 insertions, 1603 deletions
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 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
- -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <parent>
- <groupId>org.onap.ccsdk.parent</groupId>
- <artifactId>binding-parent</artifactId>
- <version>1.3.0-SNAPSHOT</version>
- <relativePath/>
- </parent>
-
- <groupId>org.onap.ccsdk.sli.adaptors</groupId>
- <artifactId>grpc-client-provider</artifactId>
- <version>0.5.0-SNAPSHOT</version>
- <packaging>bundle</packaging>
- <modelVersion>4.0.0</modelVersion>
-
- <name>ccsdk-sli-adaptors :: grpc-client :: ${project.artifactId}</name>
-
- <properties>
- <grpc.version>1.17.1</grpc.version>
- <protobuf.version>3.6.1</protobuf.version>
- <grpc.netty.version>4.1.30.Final</grpc.netty.version>
- <ccsdk.sli.cds.version>${project.version}</ccsdk.sli.cds.version>
- </properties>
-
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.onap.ccsdk.sli.core</groupId>
- <artifactId>sli-core-artifacts</artifactId>
- <version>${ccsdk.sli.core.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencies>
- </dependencyManagement>
-
- <dependencies>
-
- <!-- SLI dependencies -->
- <dependency>
- <groupId>org.onap.ccsdk.sli.core</groupId>
- <artifactId>sliPluginUtils-provider</artifactId>
- <scope>provided</scope>
- </dependency>
-
- <!-- CDS dependencies -->
- <dependency>
- <groupId>org.onap.ccsdk.cds.components</groupId>
- <artifactId>proto-definition</artifactId>
- <version>${ccsdk.sli.cds.version}</version>
- <exclusions>
- <exclusion>
- <groupId>com.google.code.findbugs</groupId>
- <artifactId>jsr305</artifactId>
- </exclusion>
- <exclusion>
- <groupId>com.google.protobuf</groupId>
- <artifactId>protobuf-java-util</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
-
- <!-- protobuf dependencies -->
- <dependency>
- <groupId>com.google.protobuf</groupId>
- <artifactId>protobuf-java</artifactId>
- <version>${protobuf.version}</version>
- </dependency>
-
- <!-- gRPC dependencies -->
- <dependency>
- <groupId>io.grpc</groupId>
- <artifactId>grpc-protobuf</artifactId>
- <version>${grpc.version}</version>
- <exclusions>
- <exclusion>
- <groupId>com.google.code.findbugs</groupId>
- <artifactId>jsr305</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>io.grpc</groupId>
- <artifactId>grpc-stub</artifactId>
- <version>${grpc.version}</version>
- </dependency>
- <dependency>
- <groupId>io.grpc</groupId>
- <artifactId>grpc-netty</artifactId>
- <version>${grpc.version}</version>
- </dependency>
-
- <dependency>
- <groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
- <scope>provided</scope>
- </dependency>
-
- <!-- Testing -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>${junit.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-core</artifactId>
- <version>${mockito.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>io.grpc</groupId>
- <artifactId>grpc-testing</artifactId>
- <version>${grpc.version}</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
- <extensions>true</extensions>
- <configuration>
- <instructions>
- <Export-Package>
- io.grpc,
- io.grpc.inprocess,
- io.grpc.internal,
- io.grpc.util
- </Export-Package>
- <Import-Package>!com.google.errorprone.annotations,*</Import-Package>
- <Embed-Dependency>*;inline=META-INF/services/**</Embed-Dependency>
- </instructions>
- </configuration>
- </plugin>
- </plugins>
- </build>
-
-</project>
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<String,String> of parameters passed by the DG to this function.
- * Required parameters are defined in implemention.
- */
- QueryStatus sendRequest(Map<String, String> 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 :
-//
-//<dependency>
-//<groupId>com.google.protobuf</groupId>
-//<artifactId>protobuf-java-util</artifactId>
-//<version>3.6.1</version>
-//</dependency>
-
-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<String, JsonFormat.ParserImpl.WellKnownTypeParser> wellKnownTypeParsers = buildWellKnownTypeParsers();
- private final Map<Descriptor, Map<String, FieldDescriptor>> 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<String, JsonFormat.ParserImpl.WellKnownTypeParser> buildWellKnownTypeParsers() {
- Map<String, JsonFormat.ParserImpl.WellKnownTypeParser> 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<String, JsonElement> 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<FieldDescriptor> 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<String, JsonFormat.PrinterImpl.WellKnownTypePrinter> wellKnownTypePrinters = buildWellKnownTypePrinters();
-
- PrinterImpl(JsonFormat.TypeRegistry registry, boolean alwaysOutputDefaultValueFields,
- Set<FieldDescriptor> 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<String, JsonFormat.PrinterImpl.WellKnownTypePrinter> buildWellKnownTypePrinters() {
- Map<String, JsonFormat.PrinterImpl.WellKnownTypePrinter> 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<FieldDescriptor, Object> 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<FieldDescriptor, Object> 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<String, Descriptor> 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<String, Descriptor> 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<FieldDescriptor> includingDefaultValueFields;
- private final boolean preservingProtoFieldNames;
- private final boolean omittingInsignificantWhitespace;
- private final boolean printingEnumsAsInts;
-
- private Printer(JsonFormat.TypeRegistry registry, boolean alwaysOutputDefaultValueFields,
- Set<FieldDescriptor> 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 <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(
- MethodDescriptor<ReqT, RespT> method,
- CallOptions callOptions,
- Channel channel) {
-
- Key<String> authHeader = Key.of(HttpHeaders.AUTHORIZATION, Metadata.ASCII_STRING_MARSHALLER);
-
- return new ForwardingClientCall.SimpleForwardingClientCall<ReqT, RespT>(
- channel.newCall(method, callOptions)) {
- @Override
- public void start(Listener<RespT> 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<String,String> of parameters passed by the DG to this function.
- * <table border="1">
- * <thead><th>parameter</th><th>Mandatory/Optional</th><th>description</th></thead>
- * <tbody>
- * <tr><td>is_force</td><td>Optional</td><td>Whether to force or not the request.</td></tr>
- * <tr><td>ttl</td><td>Optional</td><td>Duration of the request.</td></tr>
- * <tr><td>blueprint_name</td><td>Mandatory</td><td>Name of the blueprint to process.</td></tr>
- * <tr><td>blueprint_version</td><td>Mandatory</td><td>Version of the blueprint to process.</td></tr>
- * <tr><td>action</td><td>Mandatory</td><td>Action of the blueprint to process.</td></tr>
- * <tr><td>mode</td><td>Mandatory</td><td>Mode to operate the transaction.</td></tr>
- * <tr><td>payload</td><td>Mandatory</td><td>Payload.</td></tr>
- * <tr><td>prefix</td><td>Mandatory</td><td>Prefix string to put response in context.</td></tr>
- * </tbody>
- * </table>
- */
- @Override
- public QueryStatus sendRequest(Map<String, String> 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<String, String> 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<QueryStatus> responseStatus = new AtomicReference<>();
- final CountDownLatch finishLatch = new CountDownLatch(1);
-
- final BluePrintProcessingServiceStub asyncStub = BluePrintProcessingServiceGrpc.newStub(channel);
-
- final StreamObserver<ExecutionServiceOutput> responseObserver = new StreamObserver<ExecutionServiceOutput>() {
- @Override
- public void onNext(ExecutionServiceOutput output) {
- log.info("onNext: {}", output);
-
- Map<String, String> 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<ExecutionServiceInput> 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 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
- -->
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
- odl:use-default-for-reference-types="true" odl:restart-dependents-on-updates="true">
-
- <bean id="grpcProperty" class="org.onap.ccsdk.sli.adaptors.grpc.GrpcProperties"/>
-
- <!--CDS-->
- <bean id="grpcClient" class="org.onap.ccsdk.sli.adaptors.grpc.cds.BlueprintProcessingClient"
- init-method="start" destroy-method="stop">
- <argument ref="grpcProperty"/>
- </bean>
- <service ref="grpcClient" interface="org.onap.ccsdk.sli.adaptors.grpc.GrpcClient"
- odl:type="default"/>
-
-</blueprint>
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<String> messagesDelivered = new ArrayList<>();
- private final CountDownLatch allRequestsDelivered = new CountDownLatch(1);
- private final AtomicReference<StreamObserver<ExecutionServiceOutput>> 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<ExecutionServiceInput> process(
- StreamObserver<ExecutionServiceOutput> responseObserver) {
-
- responseObserverRef.set(responseObserver);
-
- StreamObserver<ExecutionServiceInput> requestObserver = new StreamObserver<ExecutionServiceInput>() {
- @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<String, String> 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<String, String> 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<String, String> 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