diff options
Diffstat (limited to 'runtime-acm/src/main/java/org/onap')
5 files changed, 294 insertions, 0 deletions
diff --git a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/CommissioningController.java b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/CommissioningController.java index 4247a5b31..653bb9daf 100644 --- a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/CommissioningController.java +++ b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/CommissioningController.java @@ -29,6 +29,7 @@ import org.onap.policy.clamp.models.acm.messages.rest.commissioning.Commissionin import org.onap.policy.models.base.PfModelException; import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplates; +import org.springframework.context.annotation.Profile; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RestController; @@ -37,6 +38,7 @@ import org.springframework.web.bind.annotation.RestController; */ @RestController @RequiredArgsConstructor +@Profile("default") public class CommissioningController extends AbstractRestController implements AutomationCompositionDefinitionApi { private final CommissioningProvider provider; diff --git a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/InstantiationController.java b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/InstantiationController.java index e828843a6..92651bc91 100644 --- a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/InstantiationController.java +++ b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/InstantiationController.java @@ -30,6 +30,7 @@ import org.onap.policy.clamp.models.acm.concepts.AutomationComposition; import org.onap.policy.clamp.models.acm.concepts.AutomationCompositions; import org.onap.policy.clamp.models.acm.messages.rest.instantiation.InstantiationResponse; import org.onap.policy.clamp.models.acm.messages.rest.instantiation.InstantiationUpdate; +import org.springframework.context.annotation.Profile; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RestController; @@ -38,6 +39,7 @@ import org.springframework.web.bind.annotation.RestController; */ @RestController @RequiredArgsConstructor +@Profile("default") public class InstantiationController extends AbstractRestController implements AutomationCompositionInstanceApi { // The Automation Composition provider for instantiation requests diff --git a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/stub/CommissioningControllerStub.java b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/stub/CommissioningControllerStub.java new file mode 100644 index 000000000..f03cc4ecd --- /dev/null +++ b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/stub/CommissioningControllerStub.java @@ -0,0 +1,107 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2022 Nordix Foundation. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.clamp.acm.runtime.main.rest.stub; + +import java.util.UUID; +import javax.servlet.http.HttpServletRequest; +import javax.validation.Valid; +import org.onap.policy.clamp.acm.runtime.main.rest.gen.AutomationCompositionDefinitionApi; +import org.onap.policy.clamp.acm.runtime.main.web.AbstractRestController; +import org.onap.policy.clamp.models.acm.messages.rest.commissioning.CommissioningResponse; +import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; +import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplates; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Profile; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@Profile("stub") +public class CommissioningControllerStub extends AbstractRestController + implements AutomationCompositionDefinitionApi { + + private static final Logger log = LoggerFactory.getLogger(CommissioningControllerStub.class); + + @Autowired + private HttpServletRequest request; + + @Autowired + private StubUtils stubUtils; + + @Value("${stub.deleteCompositionDefinitionResponse}") + private String pathToResponseFile; + + @Value("${stub.getAllCompositionDefinitions}") + private String pathToAllDefinitions; + + @Value("${stub.getSingleCompositionDefinition}") + private String pathToSingleDefinition; + + @Value("${stub.postCommissionResponse}") + private String pathToPostResponse; + + @Value("${stub.putCompositionDefinitionUpdateResponse}") + private String pathToPutUpdate; + + @Override + public ResponseEntity<CommissioningResponse> createCompositionDefinitions( + @Valid @RequestBody ToscaServiceTemplate body, + @RequestHeader(value = "X-onap-RequestId", required = false) UUID xonaprequestid) { + return stubUtils.getResponse(pathToPostResponse, CommissioningResponse.class, request, log); + } + + @Override + public ResponseEntity<CommissioningResponse> deleteCompositionDefinition( + @PathVariable("compositionId") UUID compositionId, + @RequestHeader(value = "X-onap-RequestId", required = false) UUID xonaprequestid) { + return stubUtils.getResponse(pathToResponseFile, CommissioningResponse.class, request, log); + } + + @Override + public ResponseEntity<ToscaServiceTemplate> getCompositionDefinition( + @PathVariable("compositionId") UUID compositionId, + @RequestHeader(value = "X-onap-RequestId", required = false) UUID xonaprequestid) { + return stubUtils.getResponse(pathToSingleDefinition, ToscaServiceTemplate.class, request, log); + } + + @Override + public ResponseEntity<ToscaServiceTemplates> queryCompositionDefinitions( + @Valid @RequestParam(value = "name", required = false) String name, + @Valid @RequestParam(value = "version", required = false) String version, + @RequestHeader(value = "X-onap-RequestId", required = false) UUID xonaprequestid) { + return stubUtils.getResponse(pathToAllDefinitions, ToscaServiceTemplates.class, request, log); + } + + @Override + public ResponseEntity<CommissioningResponse> updateCompositionDefinition( + @PathVariable("compositionId") UUID compositionId, + @Valid @RequestBody ToscaServiceTemplate body, + @RequestHeader(value = "X-onap-RequestId", required = false) UUID xonaprequestid) { + return stubUtils.getResponse(pathToPutUpdate, CommissioningResponse.class, request, log); + } +} diff --git a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/stub/InstantiationControllerStub.java b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/stub/InstantiationControllerStub.java new file mode 100644 index 000000000..40152683d --- /dev/null +++ b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/stub/InstantiationControllerStub.java @@ -0,0 +1,112 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2022 Nordix Foundation. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.clamp.acm.runtime.main.rest.stub; + +import java.util.UUID; +import javax.servlet.http.HttpServletRequest; +import javax.validation.Valid; +import org.onap.policy.clamp.acm.runtime.main.rest.gen.AutomationCompositionInstanceApi; +import org.onap.policy.clamp.acm.runtime.main.web.AbstractRestController; +import org.onap.policy.clamp.models.acm.concepts.AutomationComposition; +import org.onap.policy.clamp.models.acm.concepts.AutomationCompositions; +import org.onap.policy.clamp.models.acm.messages.rest.instantiation.InstantiationResponse; +import org.onap.policy.clamp.models.acm.messages.rest.instantiation.InstantiationUpdate; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Profile; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@Profile("stub") +public class InstantiationControllerStub extends AbstractRestController implements AutomationCompositionInstanceApi { + + private static final Logger log = LoggerFactory.getLogger(InstantiationControllerStub.class); + + @Autowired + private StubUtils stubUtils; + + @Autowired + private HttpServletRequest request; + + @Value("${stub.deleteCompositionInstanceResponse}") + private String pathToResponseFile; + + @Value("${stub.getCompositionInstancesResponse}") + private String pathToSingleIntance; + + @Value("${stub.getAllCompositionInstancesResponse}") + private String pathToAllIntances; + + @Value("${stub.postInstanceResponse}") + private String pathPostIntance; + + @Value("${stub.putCompositionInstanceUpdateResponse}") + private String pathToPutUpdate; + + @Override + public ResponseEntity<InstantiationResponse> createCompositionInstance( + @PathVariable("compositionId") UUID compositionId, + @Valid @RequestBody AutomationComposition body, + @RequestHeader(value = "X-onap-RequestId", required = false) UUID xonaprequestid) { + return stubUtils.getResponse(pathPostIntance, InstantiationResponse.class, request, log); + } + + @Override + public ResponseEntity<InstantiationResponse> deleteCompositionInstance( + @PathVariable("compositionId") UUID compositionId, + @PathVariable("instanceId") UUID instanceId, + @RequestHeader(value = "X-onap-RequestId", required = false) UUID xonaprequestid) { + return stubUtils.getResponse(pathToResponseFile, InstantiationResponse.class, request, log); + } + + @Override + public ResponseEntity<AutomationComposition> getCompositionInstance( + @PathVariable("compositionId") UUID compositionId, + @PathVariable("instanceId") UUID instanceId, + @RequestHeader(value = "X-onap-RequestId", required = false) UUID xonaprequestid) { + return stubUtils.getResponse(pathToSingleIntance, AutomationComposition.class, request, log); + } + + @Override + public ResponseEntity<AutomationCompositions> queryCompositionInstances( + @PathVariable("compositionId") UUID compositionId, + @Valid @RequestParam(value = "name", required = false) String name, + @Valid @RequestParam(value = "version", required = false) String version, + @RequestHeader(value = "X-onap-RequestId", required = false) UUID xonaprequestid) { + return stubUtils.getResponse(pathToAllIntances, AutomationCompositions.class, request, log); + } + + @Override + public ResponseEntity<InstantiationResponse> updateCompositionInstance( + UUID compositionId, + UUID instanceId, + InstantiationUpdate body, + UUID xonaprequestid) { + return stubUtils.getResponse(pathToResponseFile, InstantiationResponse.class, request, log); + } +}
\ No newline at end of file diff --git a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/stub/StubUtils.java b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/stub/StubUtils.java new file mode 100644 index 000000000..285365d9b --- /dev/null +++ b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/stub/StubUtils.java @@ -0,0 +1,71 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2022 Nordix Foundation. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.clamp.acm.runtime.main.rest.stub; + +import com.google.gson.Gson; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import javax.servlet.http.HttpServletRequest; +import org.onap.policy.common.utils.coder.CoderException; +import org.onap.policy.common.utils.coder.StandardYamlCoder; +import org.slf4j.Logger; +import org.springframework.context.annotation.Profile; +import org.springframework.core.io.ClassPathResource; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; + +@Service +@Profile("stub") +public class StubUtils { + + private static final StandardYamlCoder YAML_TRANSLATOR = new StandardYamlCoder(); + private static final Gson JSON_TRANSLATOR = new Gson(); + private static final String YAML = "application/yaml"; + private static final String ACCEPT = "Accept"; + + <T> ResponseEntity<T> getResponse(String path, Class<T> clazz, + HttpServletRequest request, Logger log) { + String accept = request.getHeader(ACCEPT); + if (accept.contains(YAML)) { + path = path.replace("json", "yaml"); + final ClassPathResource resourceY = new ClassPathResource(path); + try (InputStream inputStreamY = resourceY.getInputStream()) { + var targetObj = YAML_TRANSLATOR.decode(inputStreamY, clazz); + return new ResponseEntity<>(targetObj, HttpStatus.OK); + } catch (IOException | CoderException e) { + log.error("Error reading the file.", e); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); + } + } else { + final ClassPathResource resource = new ClassPathResource(path); + try (InputStream inputStream = resource.getInputStream()) { + final String string = new String(inputStream.readAllBytes(), StandardCharsets.UTF_8); + var targetObject = JSON_TRANSLATOR.fromJson(string, clazz); + return new ResponseEntity<>(targetObject, HttpStatus.OK); + } catch (final IOException exception) { + log.error("Error reading the file.", exception); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); + } + } + } +} |