aboutsummaryrefslogtreecommitdiffstats
path: root/rest-services/aai-client
diff options
context:
space:
mode:
Diffstat (limited to 'rest-services/aai-client')
-rw-r--r--rest-services/aai-client/pom.xml10
-rw-r--r--rest-services/aai-client/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/config/AaiClientConfiguration.java36
-rw-r--r--rest-services/aai-client/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/Request.java28
-rw-r--r--rest-services/aai-client/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/Transaction.java49
-rw-r--r--rest-services/aai-client/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/Transactions.java52
-rw-r--r--rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/AaiClientConfigurations.java4
-rw-r--r--rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/TransactionsTest.java67
-rw-r--r--rest-services/aai-client/src/test/resources/transaction.json11
8 files changed, 245 insertions, 12 deletions
diff --git a/rest-services/aai-client/pom.xml b/rest-services/aai-client/pom.xml
index 7c63f4b0..2b51227e 100644
--- a/rest-services/aai-client/pom.xml
+++ b/rest-services/aai-client/pom.xml
@@ -28,7 +28,10 @@
<artifactId>ssl</artifactId>
<version>${project.version}</version>
</dependency>
-
+ <dependency>
+ <groupId>org.immutables</groupId>
+ <artifactId>value</artifactId>
+ </dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
@@ -49,5 +52,10 @@
<artifactId>reactor-test</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.assertj</groupId>
+ <artifactId>assertj-core</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project> \ No newline at end of file
diff --git a/rest-services/aai-client/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/config/AaiClientConfiguration.java b/rest-services/aai-client/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/config/AaiClientConfiguration.java
index 00d323cc..ff74f9b7 100644
--- a/rest-services/aai-client/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/config/AaiClientConfiguration.java
+++ b/rest-services/aai-client/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/config/AaiClientConfiguration.java
@@ -20,22 +20,35 @@
package org.onap.dcaegen2.services.sdk.rest.services.aai.client.config;
-import org.immutables.gson.Gson;
-import org.immutables.value.Value;
-
import java.io.Serializable;
import java.util.Map;
-
+import org.immutables.gson.Gson;
+import org.immutables.value.Value;
@Value.Immutable(prehash = true)
@Value.Style(builder = "new")
@Gson.TypeAdapters
public abstract class AaiClientConfiguration implements Serializable {
+ private static final String PNF_PATH = "/network/pnfs/pnf";
+ private static final String SERVICE_INSTANCE_PATH = "/business/customers/customer/${customer}/service-subscriptions/service-subscription/${serviceType}/service-instances/service-instance/${serviceInstanceId}";
+
private static final long serialVersionUID = 1L;
@Value.Parameter
- public abstract String pnfUrl();
+ @Value.Default
+ public String baseUrl() {
+ return "";
+ }
+
+ /**
+ * Please use baseUrl() instead
+ */
+ @Deprecated
+ @Value.Default
+ public String pnfUrl() {
+ return baseUrl() + PNF_PATH;
+ }
@Value.Parameter
public abstract String aaiUserName();
@@ -46,8 +59,14 @@ public abstract class AaiClientConfiguration implements Serializable {
@Value.Parameter
public abstract Boolean aaiIgnoreSslCertificateErrors();
- @Value.Parameter
- public abstract String aaiServiceInstancePath();
+ /**
+ * Please use baseUrl() instead
+ */
+ @Deprecated
+ @Value.Default
+ public String aaiServiceInstancePath() {
+ return SERVICE_INSTANCE_PATH;
+ }
@Value.Parameter
public abstract Map<String, String> aaiHeaders();
@@ -66,5 +85,4 @@ public abstract class AaiClientConfiguration implements Serializable {
@Value.Parameter
public abstract Boolean enableAaiCertAuth();
-
-}
+} \ No newline at end of file
diff --git a/rest-services/aai-client/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/Request.java b/rest-services/aai-client/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/Request.java
new file mode 100644
index 00000000..cbe3b205
--- /dev/null
+++ b/rest-services/aai-client/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/Request.java
@@ -0,0 +1,28 @@
+/*
+ * ============LICENSE_START=======================================================
+ * DCAEGEN2-SERVICES-SDK
+ * ================================================================================
+ * Copyright (C) 2019 NOKIA Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.dcaegen2.services.sdk.rest.services.aai.client.service.http;
+
+import org.onap.dcaegen2.services.sdk.rest.services.adapters.http.HttpMethod;
+
+public interface Request {
+ HttpMethod method();
+ String uri();
+} \ No newline at end of file
diff --git a/rest-services/aai-client/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/Transaction.java b/rest-services/aai-client/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/Transaction.java
new file mode 100644
index 00000000..902282be
--- /dev/null
+++ b/rest-services/aai-client/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/Transaction.java
@@ -0,0 +1,49 @@
+/*
+ * ============LICENSE_START=======================================================
+ * DCAEGEN2-SERVICES-SDK
+ * ================================================================================
+ * Copyright (C) 2019 NOKIA Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.dcaegen2.services.sdk.rest.services.aai.client.service.http;
+
+import com.google.gson.JsonObject;
+import com.google.gson.annotations.SerializedName;
+import org.immutables.gson.Gson;
+import org.immutables.value.Value;
+
+/**
+ * @see Transactions
+ */
+@Value.Immutable
+@Gson.TypeAdapters(fieldNamingStrategy = true)
+public interface Transaction {
+
+ enum Action {
+ @SerializedName("put") PUT,
+ @SerializedName("patch") PATCH,
+ @SerializedName("delete") DELETE
+ }
+
+ Action action();
+
+ String uri();
+
+ @Value.Default
+ default JsonObject body() {
+ return new JsonObject();
+ }
+} \ No newline at end of file
diff --git a/rest-services/aai-client/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/Transactions.java b/rest-services/aai-client/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/Transactions.java
new file mode 100644
index 00000000..a21c5617
--- /dev/null
+++ b/rest-services/aai-client/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/Transactions.java
@@ -0,0 +1,52 @@
+/*
+ * ============LICENSE_START=======================================================
+ * DCAEGEN2-SERVICES-SDK
+ * ================================================================================
+ * Copyright (C) 2019 NOKIA Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.dcaegen2.services.sdk.rest.services.aai.client.service.http;
+
+import static org.onap.dcaegen2.services.sdk.rest.services.adapters.http.HttpMethod.POST;
+
+import com.google.gson.annotations.SerializedName;
+import java.util.List;
+import org.immutables.gson.Gson;
+import org.immutables.value.Value;
+import org.onap.dcaegen2.services.sdk.rest.services.adapters.http.HttpMethod;
+
+/**
+ * @see Transaction
+ * @see <a href="https://docs.onap.org/en/casablanca/submodules/aai/aai-common.git/docs/AAI%20REST%20API%20Documentation/bulkApi.html">AAI
+ * Bulk API</a>
+ */
+@Value.Immutable
+@Gson.TypeAdapters(fieldNamingStrategy = true)
+public interface Transactions extends Request {
+
+ String BULK_SINGLE_TRANSACTION = "/bulk/single-transaction";
+
+ @SerializedName("operations")
+ List<Transaction> operations();
+
+ default HttpMethod method() {
+ return POST;
+ }
+
+ default String uri() {
+ return BULK_SINGLE_TRANSACTION;
+ }
+} \ No newline at end of file
diff --git a/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/AaiClientConfigurations.java b/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/AaiClientConfigurations.java
index d56348c8..23bfb171 100644
--- a/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/AaiClientConfigurations.java
+++ b/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/AaiClientConfigurations.java
@@ -43,7 +43,7 @@ public final class AaiClientConfigurations {
private static AaiClientConfiguration validConfiguration(Map<String, String> headers, boolean secure) {
return new ImmutableAaiClientConfiguration.Builder()
- .pnfUrl("some-url")
+ .baseUrl("https://aai.onap.svc.cluster.local:8443/aai/v12")
.aaiUserName("sample-username")
.aaiUserPassword("sample-password")
.aaiIgnoreSslCertificateErrors(false)
@@ -56,4 +56,4 @@ public final class AaiClientConfigurations {
.aaiServiceInstancePath("sample-instance-path")
.build();
}
-}
+} \ No newline at end of file
diff --git a/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/TransactionsTest.java b/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/TransactionsTest.java
new file mode 100644
index 00000000..70d3653b
--- /dev/null
+++ b/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/TransactionsTest.java
@@ -0,0 +1,67 @@
+/*
+ * ============LICENSE_START=======================================================
+ * DCAEGEN2-SERVICES-SDK
+ * ================================================================================
+ * Copyright (C) 2019 NOKIA Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.dcaegen2.services.sdk.rest.services.aai.client.service.http;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.onap.dcaegen2.services.sdk.rest.services.aai.client.service.http.Transaction.Action.PUT;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Objects;
+import java.util.stream.Collectors;
+import org.junit.jupiter.api.Test;
+
+class TransactionsTest {
+
+ @Test
+ void shouldBuildTransactionRequest() throws IOException {
+ // given
+ JsonObject payload = new JsonObject();
+ payload.addProperty("link-name", "foo");
+
+ ImmutableTransactions transactions = ImmutableTransactions
+ .builder()
+ .addOperations(ImmutableTransaction.builder()
+ .action(PUT)
+ .uri("/network/logical-links/logical-link/foo")
+ .body(payload)
+ .build())
+ .build();
+
+ // when
+ Gson gson = new Gson().newBuilder().create();
+ String transaction = gson.toJson(transactions);
+
+ // then
+ String expectedJson = getJsonFromFile("transaction.json");
+ assertThat(transaction).isEqualToIgnoringWhitespace(expectedJson);
+ }
+
+ private String getJsonFromFile(String file) throws IOException {
+ try (BufferedReader br = new BufferedReader(new InputStreamReader(
+ Objects.requireNonNull(TransactionsTest.class.getClassLoader().getResourceAsStream(file))))) {
+ return br.lines().collect(Collectors.joining(System.lineSeparator()));
+ }
+ }
+} \ No newline at end of file
diff --git a/rest-services/aai-client/src/test/resources/transaction.json b/rest-services/aai-client/src/test/resources/transaction.json
new file mode 100644
index 00000000..5cbb5621
--- /dev/null
+++ b/rest-services/aai-client/src/test/resources/transaction.json
@@ -0,0 +1,11 @@
+{
+ "operations": [
+ {
+ "action": "put",
+ "uri": "/network/logical-links/logical-link/foo",
+ "body": {
+ "link-name": "foo"
+ }
+ }
+ ]
+} \ No newline at end of file