From ff08d87f973c3aa4c041a55d42ae73a51593b7ca Mon Sep 17 00:00:00 2001 From: golabek Date: Wed, 27 Feb 2019 16:47:09 +0100 Subject: VnfInPlaceFields and ScaleOut rendered dynamically * hardcoded workflows parameters moved to the internal API. * html changed to dynamically render parameters from the new API. Change-Id: Id2f61dbf88ae65401a8974422ab7c6da07053da2 Issue-ID: VID-398 Signed-off-by: Tomasz Golabek --- .../onap/vid/controller/WorkflowsController.java | 26 ++++--- .../main/java/org/onap/vid/model/SOWorkflows.kt | 53 ++++++++++++--- .../org/onap/vid/services/ExtWorkflowsService.java | 31 --------- .../onap/vid/services/ExtWorkflowsServiceImpl.java | 79 ---------------------- .../vid/services/ExternalWorkflowsService.java | 31 +++++++++ .../vid/services/ExternalWorkflowsServiceImpl.java | 79 ++++++++++++++++++++++ .../onap/vid/services/LocalWorkflowsService.java | 26 +++++++ .../vid/services/LocalWorkflowsServiceImpl.java | 58 ++++++++++++++++ 8 files changed, 255 insertions(+), 128 deletions(-) delete mode 100644 vid-app-common/src/main/java/org/onap/vid/services/ExtWorkflowsService.java delete mode 100644 vid-app-common/src/main/java/org/onap/vid/services/ExtWorkflowsServiceImpl.java create mode 100644 vid-app-common/src/main/java/org/onap/vid/services/ExternalWorkflowsService.java create mode 100644 vid-app-common/src/main/java/org/onap/vid/services/ExternalWorkflowsServiceImpl.java create mode 100644 vid-app-common/src/main/java/org/onap/vid/services/LocalWorkflowsService.java create mode 100644 vid-app-common/src/main/java/org/onap/vid/services/LocalWorkflowsServiceImpl.java (limited to 'vid-app-common/src/main/java/org') diff --git a/vid-app-common/src/main/java/org/onap/vid/controller/WorkflowsController.java b/vid-app-common/src/main/java/org/onap/vid/controller/WorkflowsController.java index b8f033c95..a94481b9e 100644 --- a/vid-app-common/src/main/java/org/onap/vid/controller/WorkflowsController.java +++ b/vid-app-common/src/main/java/org/onap/vid/controller/WorkflowsController.java @@ -21,10 +21,11 @@ package org.onap.vid.controller; import java.util.List; -import org.onap.portalsdk.core.controller.RestrictedBaseController; +import org.onap.vid.model.LocalWorkflowParameterDefinitions; import org.onap.vid.model.SOWorkflow; import org.onap.vid.model.SOWorkflowParameterDefinitions; -import org.onap.vid.services.ExtWorkflowsService; +import org.onap.vid.services.ExternalWorkflowsService; +import org.onap.vid.services.LocalWorkflowsService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; @@ -34,24 +35,31 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping(WorkflowsController.WORKFLOWS_MANAGEMENT) -public class WorkflowsController extends RestrictedBaseController { +public class WorkflowsController extends VidRestrictedBaseController { static final String WORKFLOWS_MANAGEMENT = "workflows-management"; - private ExtWorkflowsService extWorkflowsService; + private ExternalWorkflowsService externalWorkflowsService; + private LocalWorkflowsService localWorkflowsService; @Autowired - public WorkflowsController(ExtWorkflowsService extWorkflowsService) { - this.extWorkflowsService = extWorkflowsService; + public WorkflowsController(ExternalWorkflowsService externalWorkflowsService, LocalWorkflowsService localWorkflowsService) { + this.externalWorkflowsService = externalWorkflowsService; + this.localWorkflowsService = localWorkflowsService; } @RequestMapping(value = "workflows", method = RequestMethod.GET) public List getWorkflows(@RequestParam(value = "vnfName") String vnfName){ - return extWorkflowsService.getWorkflows(vnfName); + return externalWorkflowsService.getWorkflows(vnfName); } - @RequestMapping(value = "workflow-parameters/{id}", method = RequestMethod.GET) + @RequestMapping(value = "remote-workflow-parameters/{id}", method = RequestMethod.GET) SOWorkflowParameterDefinitions getParameters(@PathVariable Long id) { - return extWorkflowsService.getWorkflowParameterDefinitions(id); + return externalWorkflowsService.getWorkflowParameterDefinitions(id); + } + + @RequestMapping(value = "local-workflow-parameters/{name}", method = RequestMethod.GET) + LocalWorkflowParameterDefinitions getParameters(@PathVariable String name) { + return localWorkflowsService.getWorkflowParameterDefinitions(name); } } diff --git a/vid-app-common/src/main/java/org/onap/vid/model/SOWorkflows.kt b/vid-app-common/src/main/java/org/onap/vid/model/SOWorkflows.kt index 9fbae0612..b88c3f6f6 100644 --- a/vid-app-common/src/main/java/org/onap/vid/model/SOWorkflows.kt +++ b/vid-app-common/src/main/java/org/onap/vid/model/SOWorkflows.kt @@ -2,14 +2,14 @@ * ============LICENSE_START======================================================= * VID * ================================================================================ - * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved. + * 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. @@ -20,27 +20,62 @@ package org.onap.vid.model -data class SOWorkflow constructor(val id: Long, val name: String) { +data class SOWorkflow constructor( + val id: Long, + val name: String) { fun clone(): SOWorkflow { return copy() } } -data class SOWorkflows @JvmOverloads constructor(val workflows: List = emptyList()) { +data class SOWorkflows @JvmOverloads constructor( + val workflows: List = emptyList()) { fun clone(): SOWorkflows { return copy(workflows.toMutableList()) } } -enum class SOWorkflowType(val type: String) { +enum class SOWorkflowType( + val type: String) { STRING("STRING") } -data class SOWorkflowParameterDefinition constructor(val id: Long, val name: String, val pattern: String, - val type: SOWorkflowType, val required: Boolean) +enum class LocalWorkflowType( + val type: String) { + STRING("STRING"), + FILE("FILE") +} + +data class SOWorkflowParameterDefinition constructor( + val id: Long, + val name: String, + val pattern: String, + val type: SOWorkflowType, + val required: Boolean) -data class SOWorkflowParameterDefinitions constructor(val parameterDefinitions: List = emptyList()) { +data class SOWorkflowParameterDefinitions constructor( + val parameterDefinitions: List = emptyList()) { fun clone(): SOWorkflowParameterDefinitions { return copy(parameterDefinitions.toMutableList()) } } + +data class LocalWorkflowParameterDefinition @JvmOverloads constructor( + val id: Long, + val name: String, + val required: Boolean, + val type: LocalWorkflowType, + val pattern: String? = null, + val msgOnPatternError: String? = null, + val msgOnContentError: String? = null, + val acceptableFileType: String? = null +) + +data class LocalWorkflowParameterDefinitions constructor( + val parameterDefinitions: List = emptyList() +) { + fun clone(): LocalWorkflowParameterDefinitions { + return copy(parameterDefinitions.toMutableList()) + } +} + diff --git a/vid-app-common/src/main/java/org/onap/vid/services/ExtWorkflowsService.java b/vid-app-common/src/main/java/org/onap/vid/services/ExtWorkflowsService.java deleted file mode 100644 index a4450ca01..000000000 --- a/vid-app-common/src/main/java/org/onap/vid/services/ExtWorkflowsService.java +++ /dev/null @@ -1,31 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * VID - * ================================================================================ - * Copyright (C) 2017 - 2019 AT&T 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.vid.services; - -import java.util.List; -import org.onap.vid.model.SOWorkflow; -import org.onap.vid.model.SOWorkflowParameterDefinitions; - -public interface ExtWorkflowsService { - List getWorkflows(String vnfName); - - SOWorkflowParameterDefinitions getWorkflowParameterDefinitions(Long workflowId); -} diff --git a/vid-app-common/src/main/java/org/onap/vid/services/ExtWorkflowsServiceImpl.java b/vid-app-common/src/main/java/org/onap/vid/services/ExtWorkflowsServiceImpl.java deleted file mode 100644 index 61ed2da67..000000000 --- a/vid-app-common/src/main/java/org/onap/vid/services/ExtWorkflowsServiceImpl.java +++ /dev/null @@ -1,79 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * VID - * ================================================================================ - * Copyright (C) 2017 - 2019 AT&T 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.vid.services; - -import java.util.List; -import org.onap.vid.model.SOWorkflow; -import org.onap.vid.model.SOWorkflowParameterDefinitions; -import org.onap.vid.model.SOWorkflows; -import org.onap.vid.mso.MsoResponseWrapper2; -import org.onap.vid.mso.rest.MockedWorkflowsRestClient; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -@Service -public class ExtWorkflowsServiceImpl implements ExtWorkflowsService { - - private MockedWorkflowsRestClient mockedWorkflowsRestClient; - - @Autowired - public ExtWorkflowsServiceImpl(MockedWorkflowsRestClient mockedWorkflowsRestClient) { - this.mockedWorkflowsRestClient = mockedWorkflowsRestClient; - } - - @Override - public List getWorkflows(String vnfName) { - MsoResponseWrapper2 msoResponse = mockedWorkflowsRestClient.getWorkflows(vnfName); - validateSOResponse(msoResponse, SOWorkflows.class); - return convertMsoResponseToWorkflowList(msoResponse); - } - - @Override - public SOWorkflowParameterDefinitions getWorkflowParameterDefinitions(Long workflowId) { - MsoResponseWrapper2 msoResponse = mockedWorkflowsRestClient.getWorkflowParameterDefinitions(workflowId); - validateSOResponse(msoResponse, SOWorkflowParameterDefinitions.class); - return (SOWorkflowParameterDefinitions) msoResponse.getEntity(); - } - - private List convertMsoResponseToWorkflowList(MsoResponseWrapper2 msoResponse) { - SOWorkflows soWorkflows = (SOWorkflows) msoResponse.getEntity(); - return soWorkflows.getWorkflows(); - } - - private void validateSOResponse(MsoResponseWrapper2 response, Class expectedResponseClass){ - if (response.getStatus() >= 400 || !expectedResponseClass.isInstance(response.getEntity())) { - throw new BadResponseFromMso(response); - } - } - - public static class BadResponseFromMso extends RuntimeException { - private final MsoResponseWrapper2 msoResponse; - - BadResponseFromMso(MsoResponseWrapper2 msoResponse) { - this.msoResponse = msoResponse; - } - - public MsoResponseWrapper2 getMsoResponse() { - return msoResponse; - } - } - -} diff --git a/vid-app-common/src/main/java/org/onap/vid/services/ExternalWorkflowsService.java b/vid-app-common/src/main/java/org/onap/vid/services/ExternalWorkflowsService.java new file mode 100644 index 000000000..da909a54d --- /dev/null +++ b/vid-app-common/src/main/java/org/onap/vid/services/ExternalWorkflowsService.java @@ -0,0 +1,31 @@ +/*- + * ============LICENSE_START======================================================= + * VID + * ================================================================================ + * Copyright (C) 2017 - 2019 AT&T 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.vid.services; + +import java.util.List; +import org.onap.vid.model.SOWorkflow; +import org.onap.vid.model.SOWorkflowParameterDefinitions; + +public interface ExternalWorkflowsService { + List getWorkflows(String vnfName); + + SOWorkflowParameterDefinitions getWorkflowParameterDefinitions(Long workflowId); +} diff --git a/vid-app-common/src/main/java/org/onap/vid/services/ExternalWorkflowsServiceImpl.java b/vid-app-common/src/main/java/org/onap/vid/services/ExternalWorkflowsServiceImpl.java new file mode 100644 index 000000000..1da03f0ac --- /dev/null +++ b/vid-app-common/src/main/java/org/onap/vid/services/ExternalWorkflowsServiceImpl.java @@ -0,0 +1,79 @@ +/*- + * ============LICENSE_START======================================================= + * VID + * ================================================================================ + * Copyright (C) 2017 - 2019 AT&T 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.vid.services; + +import java.util.List; +import org.onap.vid.model.SOWorkflow; +import org.onap.vid.model.SOWorkflowParameterDefinitions; +import org.onap.vid.model.SOWorkflows; +import org.onap.vid.mso.MsoResponseWrapper2; +import org.onap.vid.mso.rest.MockedWorkflowsRestClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class ExternalWorkflowsServiceImpl implements ExternalWorkflowsService { + + private MockedWorkflowsRestClient mockedWorkflowsRestClient; + + @Autowired + public ExternalWorkflowsServiceImpl(MockedWorkflowsRestClient mockedWorkflowsRestClient) { + this.mockedWorkflowsRestClient = mockedWorkflowsRestClient; + } + + @Override + public List getWorkflows(String vnfName) { + MsoResponseWrapper2 msoResponse = mockedWorkflowsRestClient.getWorkflows(vnfName); + validateSOResponse(msoResponse, SOWorkflows.class); + return convertMsoResponseToWorkflowList(msoResponse); + } + + @Override + public SOWorkflowParameterDefinitions getWorkflowParameterDefinitions(Long workflowId) { + MsoResponseWrapper2 msoResponse = mockedWorkflowsRestClient.getWorkflowParameterDefinitions(workflowId); + validateSOResponse(msoResponse, SOWorkflowParameterDefinitions.class); + return (SOWorkflowParameterDefinitions) msoResponse.getEntity(); + } + + private List convertMsoResponseToWorkflowList(MsoResponseWrapper2 msoResponse) { + SOWorkflows soWorkflows = (SOWorkflows) msoResponse.getEntity(); + return soWorkflows.getWorkflows(); + } + + private void validateSOResponse(MsoResponseWrapper2 response, Class expectedResponseClass){ + if (response.getStatus() >= 400 || !expectedResponseClass.isInstance(response.getEntity())) { + throw new BadResponseFromMso(response); + } + } + + public static class BadResponseFromMso extends RuntimeException { + private final MsoResponseWrapper2 msoResponse; + + BadResponseFromMso(MsoResponseWrapper2 msoResponse) { + this.msoResponse = msoResponse; + } + + public MsoResponseWrapper2 getMsoResponse() { + return msoResponse; + } + } + +} diff --git a/vid-app-common/src/main/java/org/onap/vid/services/LocalWorkflowsService.java b/vid-app-common/src/main/java/org/onap/vid/services/LocalWorkflowsService.java new file mode 100644 index 000000000..b0674f0e3 --- /dev/null +++ b/vid-app-common/src/main/java/org/onap/vid/services/LocalWorkflowsService.java @@ -0,0 +1,26 @@ +/*- + * ============LICENSE_START======================================================= + * VID + * ================================================================================ + * 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.vid.services; + +import org.onap.vid.model.LocalWorkflowParameterDefinitions; + +public interface LocalWorkflowsService { + LocalWorkflowParameterDefinitions getWorkflowParameterDefinitions(String workflowName); +} diff --git a/vid-app-common/src/main/java/org/onap/vid/services/LocalWorkflowsServiceImpl.java b/vid-app-common/src/main/java/org/onap/vid/services/LocalWorkflowsServiceImpl.java new file mode 100644 index 000000000..733d275d8 --- /dev/null +++ b/vid-app-common/src/main/java/org/onap/vid/services/LocalWorkflowsServiceImpl.java @@ -0,0 +1,58 @@ +/*- + * ============LICENSE_START======================================================= + * VID + * ================================================================================ + * 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.vid.services; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import java.util.Map; +import org.onap.vid.model.LocalWorkflowParameterDefinition; +import org.onap.vid.model.LocalWorkflowParameterDefinitions; +import org.onap.vid.model.LocalWorkflowType; +import org.springframework.stereotype.Service; + +@Service +public class LocalWorkflowsServiceImpl implements LocalWorkflowsService { + + Map WORKFLOWS_WITH_PARAMETERS = ImmutableMap.builder() + .put("VNF Scale Out", new LocalWorkflowParameterDefinitions( + ImmutableList.of( + new LocalWorkflowParameterDefinition(1, "Configuration Parameters", true, LocalWorkflowType.STRING,".*") + ) + )) + .put("VNF In Place Software Update", new LocalWorkflowParameterDefinitions( + ImmutableList.of( + new LocalWorkflowParameterDefinition(2, "Operations timeout",true, LocalWorkflowType.STRING,"[0-9]+"), + new LocalWorkflowParameterDefinition(3, "Existing software version", true, LocalWorkflowType.STRING, "[-a-zA-Z0-9.]+"), + new LocalWorkflowParameterDefinition(4, "New software version", true, LocalWorkflowType.STRING, "[-a-zA-Z0-9.]+") + ) + )) + .put("VNF Config Update", new LocalWorkflowParameterDefinitions( + ImmutableList.of( + new LocalWorkflowParameterDefinition(5, "Attach configuration file", true, LocalWorkflowType.FILE, ".*", "Invalid file type. Please select a file with a CSV extension.", "Invalid file structure.", ".csv") + ) + )) + .build(); + + @Override + public LocalWorkflowParameterDefinitions getWorkflowParameterDefinitions(String workflowName) { + return WORKFLOWS_WITH_PARAMETERS.get(workflowName); + } + +} -- cgit 1.2.3-korg