diff options
Diffstat (limited to 'rest-services/aai-client')
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 |