From 5a87ef15be1dd27dedacb748c58add2502e956c5 Mon Sep 17 00:00:00 2001 From: waynedunican Date: Fri, 14 Apr 2023 16:25:18 +0100 Subject: Restructure policy-gui repo - Removed gui-clamp module - Added gui-runtime module - Created gui-acm for future gui development work Issue-ID: POLICY-4638 Change-Id: I6d6468ae1c83d39e5b837f1dadf42bda5671ee70 Signed-off-by: waynedunican --- .../src/components/dialogs/ACM/AccordionHeader.js | 120 -- .../components/dialogs/ACM/AccordionHeader.test.js | 50 - .../dialogs/ACM/ChangeOrderStateModal.js | 171 -- .../dialogs/ACM/ChangeOrderStateModal.test.js | 262 --- .../components/dialogs/ACM/CommissioningModal.js | 155 -- .../dialogs/ACM/CommissioningModal.test.js | 227 -- .../components/dialogs/ACM/DeleteToscaTemplate.js | 56 - .../dialogs/ACM/DeleteToscaTemplate.test.js | 54 - .../dialogs/ACM/GetLocalToscaFileForUpload.js | 150 -- .../dialogs/ACM/GetLocalToscaFileForUpload.test.js | 122 -- .../src/components/dialogs/ACM/GetToscaTemplate.js | 54 - .../dialogs/ACM/GetToscaTemplate.test.js | 85 - .../dialogs/ACM/InstancePropertiesModal.js | 272 --- .../dialogs/ACM/InstancePropertiesModal.test.js | 152 -- .../dialogs/ACM/InstantiationElementItem.js | 124 -- .../dialogs/ACM/InstantiationElementItem.test.js | 49 - .../dialogs/ACM/InstantiationElements.js | 41 - .../dialogs/ACM/InstantiationElements.test.js | 33 - .../components/dialogs/ACM/InstantiationItem.js | 52 - .../dialogs/ACM/InstantiationItem.test.js | 53 - .../dialogs/ACM/InstantiationManagementModal.js | 217 -- .../ACM/InstantiationManagementModal.test.js | 155 -- .../ACM/InstantiationOrderStateChangeItem.js | 113 - .../ACM/InstantiationOrderStateChangeItem.test.js | 51 - .../components/dialogs/ACM/MonitorInstantiation.js | 85 - .../dialogs/ACM/MonitorInstantiation.test.js | 93 - .../components/dialogs/ACM/ReadAndConvertYaml.js | 132 -- .../dialogs/ACM/ReadAndConvertYaml.test.js | 252 --- .../src/components/dialogs/ACM/UploadToscaFile.js | 52 - .../components/dialogs/ACM/UploadToscaFile.test.js | 61 - .../ACM/__snapshots__/AccordionHeader.test.js.snap | 211 -- .../ChangeOrderStateModal.test.js.snap | 114 - .../__snapshots__/CommissioningModal.test.js.snap | 77 - .../__snapshots__/DeleteToscaTemplate.test.js.snap | 20 - .../GetLocalToscaFileForUpload.test.js.snap | 103 - .../__snapshots__/GetToscaTemplate.test.js.snap | 15 - .../InstancePropertiesModal.test.js.snap | 105 - .../InstantiationElementItem.test.js.snap | 9 - .../InstantiationElements.test.js.snap | 3 - .../__snapshots__/InstantiationItem.test.js.snap | 26 - .../InstantiationManagementModal.test.js.snap | 155 -- .../InstantiationOrderStateChangeItem.test.js.snap | 27 - .../MonitorInstantiation.test.js.snap | 41 - .../__snapshots__/ReadAndConvertYaml.test.js.snap | 63 - .../ACM/__snapshots__/UploadToscaFile.test.js.snap | 16 - .../components/dialogs/ACM/testFiles/acmList.json | 59 - .../dialogs/ACM/testFiles/commonProps.json | 1444 ------------- .../dialogs/ACM/testFiles/fullTemplate.json | 2194 -------------------- .../dialogs/ACM/testFiles/instanceProps.json | 1444 ------------- .../dialogs/ACM/testFiles/jsonEditorData.json | 50 - .../dialogs/ACM/testFiles/orderedStateJson.json | 9 - .../dialogs/ACM/utils/CommissioningUtils.js | 178 -- .../dialogs/ACM/utils/CommissioningUtils.test.js | 94 - .../dialogs/ACM/utils/InstantiationUtils.js | 177 -- .../dialogs/ACM/utils/InstantiationUtils.test.js | 54 - .../src/components/dialogs/Loop/CreateLoopModal.js | 193 -- .../dialogs/Loop/CreateLoopModal.test.js | 151 -- .../src/components/dialogs/Loop/DeployLoopModal.js | 178 -- .../dialogs/Loop/DeployLoopModal.test.js | 114 - .../components/dialogs/Loop/LoopPropertiesModal.js | 118 -- .../dialogs/Loop/LoopPropertiesModal.test.js | 110 - .../src/components/dialogs/Loop/ModifyLoopModal.js | 262 --- .../dialogs/Loop/ModifyLoopModal.test.js | 121 -- .../src/components/dialogs/Loop/OpenLoopModal.js | 139 -- .../components/dialogs/Loop/OpenLoopModal.test.js | 93 - .../__snapshots__/CreateLoopModal.test.js.snap | 167 -- .../__snapshots__/DeployLoopModal.test.js.snap | 88 - .../__snapshots__/LoopPropertiesModal.test.js.snap | 61 - .../Loop/__snapshots__/OpenLoopModal.test.js.snap | 137 -- .../ManageDictionaries/ManageDictionaries.js | 637 ------ .../ManageDictionaries/ManageDictionaries.test.js | 465 ----- .../__snapshots__/ManageDictionaries.test.js.snap | 196 -- .../src/components/dialogs/PerformActions.js | 95 - .../src/components/dialogs/PerformActions.test.js | 121 -- .../dialogs/Policy/PoliciesTreeViewer.js | 121 -- .../dialogs/Policy/PoliciesTreeViewer.test.js | 54 - .../dialogs/Policy/PolicyDeploymentEditor.js | 180 -- .../dialogs/Policy/PolicyDeploymentEditor.test.js | 93 - .../src/components/dialogs/Policy/PolicyEditor.js | 192 -- .../components/dialogs/Policy/PolicyEditor.test.js | 71 - .../src/components/dialogs/Policy/PolicyModal.js | 349 ---- .../components/dialogs/Policy/PolicyModal.test.js | 185 -- .../dialogs/Policy/PolicyToscaFileSelector.js | 135 -- .../dialogs/Policy/PolicyToscaFileSelector.test.js | 128 -- .../src/components/dialogs/Policy/ToscaViewer.js | 66 - .../components/dialogs/Policy/ToscaViewer.test.js | 54 - .../components/dialogs/Policy/ViewAllPolicies.js | 476 ----- .../dialogs/Policy/ViewAllPolicies.test.js | 164 -- .../__snapshots__/PoliciesTreeViewer.test.js.snap | 23 - .../PolicyDeploymentEditor.test.js.snap | 71 - .../Policy/__snapshots__/PolicyEditor.test.js.snap | 788 ------- .../Policy/__snapshots__/PolicyModal.test.js.snap | 159 -- .../PolicyToscaFileSelector.test.js.snap | 80 - .../Policy/__snapshots__/ToscaViewer.test.js.snap | 30 - .../__snapshots__/ViewAllPolicies.test.js.snap | 598 ------ .../components/dialogs/Policy/toscaData.test.json | 179 -- .../components/dialogs/Policy/toscaData.test.yaml | 13 - .../Policy/toscaInstantiationData.test.json | 59 - .../dialogs/Policy/toscaModels.test.json | 23 - .../dialogs/Policy/toscaPoliciesData.test.json | 336 --- .../dialogs/Policy/toscaPoliciesList.test.json | 94 - .../Policy/toscaPolicyDeploymentEditor.test.json | 90 - .../src/components/dialogs/RefreshStatus.js | 65 - .../src/components/dialogs/RefreshStatus.test.js | 72 - .../dialogs/Tosca/ViewLoopTemplatesModal.js | 173 -- .../dialogs/Tosca/ViewLoopTemplatesModal.test.js | 163 -- .../ViewLoopTemplatesModal.test.js.snap | 157 -- .../src/components/dialogs/UserInfoModal.js | 115 - .../src/components/dialogs/UserInfoModal.test.js | 84 - .../__snapshots__/UserInfoModal.test.js.snap | 119 -- 110 files changed, 19386 deletions(-) delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/AccordionHeader.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/AccordionHeader.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/ChangeOrderStateModal.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/ChangeOrderStateModal.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/CommissioningModal.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/CommissioningModal.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/DeleteToscaTemplate.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/DeleteToscaTemplate.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/GetLocalToscaFileForUpload.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/GetLocalToscaFileForUpload.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/GetToscaTemplate.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/GetToscaTemplate.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/InstancePropertiesModal.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/InstancePropertiesModal.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationElementItem.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationElementItem.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationElements.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationElements.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationItem.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationItem.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationManagementModal.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationManagementModal.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationOrderStateChangeItem.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationOrderStateChangeItem.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/MonitorInstantiation.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/MonitorInstantiation.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/ReadAndConvertYaml.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/ReadAndConvertYaml.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/UploadToscaFile.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/UploadToscaFile.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/AccordionHeader.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/ChangeOrderStateModal.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/CommissioningModal.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/DeleteToscaTemplate.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/GetLocalToscaFileForUpload.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/GetToscaTemplate.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/InstancePropertiesModal.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/InstantiationElementItem.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/InstantiationElements.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/InstantiationItem.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/InstantiationManagementModal.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/InstantiationOrderStateChangeItem.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/MonitorInstantiation.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/ReadAndConvertYaml.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/UploadToscaFile.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/testFiles/acmList.json delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/testFiles/commonProps.json delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/testFiles/fullTemplate.json delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/testFiles/instanceProps.json delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/testFiles/jsonEditorData.json delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/testFiles/orderedStateJson.json delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/utils/CommissioningUtils.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/utils/CommissioningUtils.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/utils/InstantiationUtils.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ACM/utils/InstantiationUtils.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Loop/CreateLoopModal.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Loop/CreateLoopModal.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Loop/DeployLoopModal.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Loop/DeployLoopModal.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Loop/LoopPropertiesModal.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Loop/LoopPropertiesModal.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Loop/ModifyLoopModal.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Loop/ModifyLoopModal.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Loop/OpenLoopModal.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Loop/OpenLoopModal.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Loop/__snapshots__/CreateLoopModal.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Loop/__snapshots__/DeployLoopModal.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Loop/__snapshots__/LoopPropertiesModal.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Loop/__snapshots__/OpenLoopModal.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ManageDictionaries/ManageDictionaries.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ManageDictionaries/ManageDictionaries.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/ManageDictionaries/__snapshots__/ManageDictionaries.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/PerformActions.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/PerformActions.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/PoliciesTreeViewer.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/PoliciesTreeViewer.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/PolicyDeploymentEditor.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/PolicyDeploymentEditor.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/PolicyEditor.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/PolicyEditor.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/PolicyModal.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/PolicyModal.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/PolicyToscaFileSelector.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/PolicyToscaFileSelector.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/ToscaViewer.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/ToscaViewer.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/ViewAllPolicies.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/ViewAllPolicies.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/PoliciesTreeViewer.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/PolicyDeploymentEditor.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/PolicyEditor.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/PolicyModal.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/PolicyToscaFileSelector.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/ToscaViewer.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/ViewAllPolicies.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/toscaData.test.json delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/toscaData.test.yaml delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/toscaInstantiationData.test.json delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/toscaModels.test.json delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/toscaPoliciesData.test.json delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/toscaPoliciesList.test.json delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/toscaPolicyDeploymentEditor.test.json delete mode 100644 gui-clamp/ui-react/src/components/dialogs/RefreshStatus.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/RefreshStatus.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Tosca/ViewLoopTemplatesModal.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Tosca/ViewLoopTemplatesModal.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/Tosca/__snapshots__/ViewLoopTemplatesModal.test.js.snap delete mode 100644 gui-clamp/ui-react/src/components/dialogs/UserInfoModal.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/UserInfoModal.test.js delete mode 100644 gui-clamp/ui-react/src/components/dialogs/__snapshots__/UserInfoModal.test.js.snap (limited to 'gui-clamp/ui-react/src/components/dialogs') diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/AccordionHeader.js b/gui-clamp/ui-react/src/components/dialogs/ACM/AccordionHeader.js deleted file mode 100644 index a34b5b3..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/AccordionHeader.js +++ /dev/null @@ -1,120 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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========================================================= - * - * - */ - -import React from "react"; -import styled from "styled-components"; -import { Accordion, Button } from "react-bootstrap"; - -const UninitialisedHeader = styled.div` - margin: 0; - padding: 0 0 1px 0; - border-bottom: 1px solid #7f7f7f; - background: #cccccc; - font-weight: normal; - border-radius: 0; -` - -const PassiveHeader = styled.div` - margin: 0; - padding: 0 0 1px 0; - border-bottom: 1px solid #7f7f7f; - background: #ffe87c; - font-weight: normal; - border-radius: 0; -` - -const RunningHeader = styled.div` - margin: 0; - padding: 0 0 1px 0; - border-bottom: 1px solid #7f7f7f; - background: #7ec699; - font-weight: normal; - border-radius: 0; -` - -const ToggleButton = styled(Button)` - color: #000000; - text-decoration: none; - - :hover, :active { - color: #000000; - text-decoration: none !important; - } -` - -const AccordionHeader = (props) => { - - const index = props.index; - - console.log("----------------"); - console.log(index); - console.log("----------------"); - - const toggleState = () => { - switch (props.orderedState) { - case 'UNINITIALISED': - return renderUninitialisedOrderedState(); - case 'PASSIVE': - return renderPassiveOrderedState(); - case 'RUNNING': - return renderRunningOrderedState(); - default: - return renderUninitialisedOrderedState(); - } - } - - const renderUninitialisedOrderedState = () => { - - return ( - - - { props.title } - - - ) - } - - const renderPassiveOrderedState = () => { - return ( - - - { props.title } - - - ) - } - - const renderRunningOrderedState = () => { - return ( - - - { props.title } - - - ) - } - - return ( - toggleState() - ); -} - -export default AccordionHeader; \ No newline at end of file diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/AccordionHeader.test.js b/gui-clamp/ui-react/src/components/dialogs/ACM/AccordionHeader.test.js deleted file mode 100644 index 987f1fc..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/AccordionHeader.test.js +++ /dev/null @@ -1,50 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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========================================================= - * - * - */ - -import { shallow } from "enzyme"; -import React from "react"; -import AccordionHeader from "./AccordionHeader"; -import toJson from "enzyme-to-json"; - -describe('Verify AccordionHeader', () => { - - const index = 0; - - it("renders correctly", () => { - const container = shallow(); - expect(toJson(container)).toMatchSnapshot(); - }); - - it("renders correctly when orderState is uninitialized", () => { - const container = shallow(); - expect(toJson(container)).toMatchSnapshot(); - }); - - it("renders correctly when orderState is passive", () => { - const container = shallow(); - expect(toJson(container)).toMatchSnapshot(); - }); - - it("renders correctly when orderState is running", () => { - const container = shallow(); - expect(toJson(container)).toMatchSnapshot(); - }); -}); \ No newline at end of file diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/ChangeOrderStateModal.js b/gui-clamp/ui-react/src/components/dialogs/ACM/ChangeOrderStateModal.js deleted file mode 100644 index 0c9e8b7..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/ChangeOrderStateModal.js +++ /dev/null @@ -1,171 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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========================================================= - */ - -import styled from "styled-components"; -import Modal from "react-bootstrap/Modal"; -import Button from "react-bootstrap/Button"; -import React, { useEffect, useState } from "react"; -import InstantiationOrderStateChangeItem from "./InstantiationOrderStateChangeItem"; -import ACMService from "../../../api/ACMService"; -import { Alert, Container, Dropdown } from "react-bootstrap"; - -const ModalStyled = styled(Modal)` - @media (min-width: 800px) { - .modal-xl { - max-width: 96%; - } - } - background-color: transparent; -` - -const DivWhiteSpaceStyled = styled.div` - overflow: auto; - min-width: 100%; - max-height: 300px; - padding: 5px 5px 0px 5px; - text-align: center; -` - -const AlertStyled = styled(Alert)` - margin-top: 10px; -` - -const ChangeOrderStateModal = (props) => { - const [show, setShow] = useState(true); - const [ACMIdentifierList, setACMIdentifierList] = useState([]); - const [orderedState, setOrderedState] = useState(''); - const [toscaOrderStateObject, setToscaOrderStateObject] = useState({}); - const [instantiationOrderStateError, setInstantiationOrderStateError] = useState(false); - const [instantiationOrderStateMsgError, setInstantiationOrderStateMsgError] = useState({}); - const [alertMessage, setAlertMessage] = useState(null); - - useEffect(async () => { - - const instantiationOrderState = await ACMService.getInstanceOrderState( - props.location.instantiationName, - props.location.instantiationVersion) - .catch(error => error.message); - - const orderStateJson = await instantiationOrderState.json(); - - console.log(orderStateJson); - - if (!instantiationOrderState.ok || orderStateJson['automationCompositionIdentifierList'].length === 0) { - setInstantiationOrderStateError(true); - setInstantiationOrderStateMsgError(orderStateJson); - } else { - setACMIdentifierList(orderStateJson['automationCompositionIdentifierList']); - setOrderedState(orderStateJson['orderedState']); - } - }, []); - - const handleDropSelect = (event) => { - console.log("handleDropDownChange called"); - - const stateChangeObject = { - orderedState: event, - automationCompositionIdentifierList: ACMIdentifierList - } - setToscaOrderStateObject(stateChangeObject); - setOrderedState(event); - } - - const handleSave = async () => { - console.log("handleSave called"); - - const response = await ACMService.changeInstanceOrderState(toscaOrderStateObject) - .catch(error => error.message); - - if (response.ok) { - successAlert(); - } else { - await errorAlert(response); - } - } - - const handleClose = () => { - console.log('handleClose called'); - setShow(false); - props.history.push('/'); - } - - const successAlert = () => { - console.log("successAlert called"); - setAlertMessage( - Order State Changed Success -

Order State Changed was successfully changed

-
-
); - } - - const errorAlert = async (response) => { - console.log("errorAlert called"); - setAlertMessage( - Order State Changed Failure -

An error occurred while trying to change order state

-

Status code: { await response.status } : { response.statusText }

-

Status Text: { await response.text() }

-
-
); - } - - return ( - - - Manage Instantiation - -
- - - - - Select Order State - - - UNINITIALISED - PASSIVE - RUNNING - - - { - ACMIdentifierList.map((clIdList, index) => ( - - )) - } - - Can't get instantiation ordered state:
{ JSON.stringify(instantiationOrderStateMsgError, null, 2) }
-
- - { alertMessage } - -
- - - - -
- ); -} - -export default ChangeOrderStateModal; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/ChangeOrderStateModal.test.js b/gui-clamp/ui-react/src/components/dialogs/ACM/ChangeOrderStateModal.test.js deleted file mode 100644 index 598e6e3..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/ChangeOrderStateModal.test.js +++ /dev/null @@ -1,262 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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========================================================= - */ - -import React from 'react'; -import { mount, shallow } from 'enzyme'; -import toJson from "enzyme-to-json"; -import ChangeOrderStateModal from "./ChangeOrderStateModal"; -import { createMemoryHistory } from "history"; -import { act } from "react-dom/test-utils"; -import acmList from "./testFiles/acmList.json"; -import orderedStateJson from "./testFiles/orderedStateJson.json"; -import ACMService from "../../../api/ACMService"; - -let logSpy = jest.spyOn(console, 'log') -const oldWindowLocation = window.location - -describe('Verify ChangeOrderStateModal', () => { - const flushPromises = () => new Promise(setImmediate); - - beforeEach(() => { - logSpy.mockClear() - }) - - afterAll(() => { - window.location = oldWindowLocation - }) - - beforeAll(() => { - jest - .spyOn(global, 'fetch') - .mockImplementation(() => { - return { - ok: true, - status: 200, - text: () => "OK", - json: () => { - return Promise.resolve(orderedStateJson) - } - } - } - ) - - - delete window.location - - // create a new `window.location` object that's *almost* - // like the real thing - window.location = Object.defineProperties( - // start with an empty object on which to define properties - {}, - { - // grab all of the property descriptors for the - // `jsdom` `Location` object - ...Object.getOwnPropertyDescriptors(oldWindowLocation), - instantiationName: { - configurable: true, - value: "PMSH_Instance1", - }, - instantiationVersion: { - configurable: true, - value: "2.3.1", - } - }, - ) - }) - - it("renders without crashing", () => { - act(() => { - shallow(); - }) - }); - - it("renders correctly", () => { - act(() => { - const tree = shallow(); - expect(toJson(tree)).toMatchSnapshot(); - }) - }); - - it('should have two Button elements', () => { - act(() => { - const container = shallow() - expect(container.find('Button').length).toEqual(2); - }) - }); - - it('should have one dropdown element', () => { - act(() => { - const container = shallow() - expect(container.find('Dropdown').length).toEqual(1); - }); - }); - - it('handleDropSelect called when dropdown clicked', () => { - const history = createMemoryHistory(); - const component = mount() - - act(() => { - component.find('Dropdown').get(0).props.onSelect(); - expect(logSpy).toHaveBeenCalledWith('handleDropDownChange called'); - }); - - component.unmount(); - }); - - it('handleClose called when bottom button clicked', () => { - const history = createMemoryHistory(); - const component = mount() - - act(() => { - component.find('[variant="secondary"]').simulate('click'); - expect(logSpy).toHaveBeenCalledWith('handleClose called'); - }); - - component.unmount(); - }); - - it('handleClose called when top-right button clicked', () => { - const history = createMemoryHistory(); - const component = mount() - - act(() => { - component.find('[size="sm"]').get(0).props.onHide(); - expect(logSpy).toHaveBeenCalledWith('handleClose called'); - }); - - component.unmount(); - }); - - it('handleSave called when save button clicked and response is ok', async () => { - jest.resetAllMocks() - const getInstanceOrderStateSpy = jest.spyOn(ACMService, 'getInstanceOrderState') - .mockImplementationOnce(() => { - return Promise.resolve({ - ok: true, - status: 200, - text: () => "OK", - json: () => { - return Promise.resolve(orderedStateJson) - } - }) - } - ) - - const changeInstanceOrderStateSpy = jest.spyOn(ACMService, 'changeInstanceOrderState') - .mockImplementationOnce(() => { - return Promise.resolve({ - ok: true, - status: 200, - text: () => "OK", - json: () => { - return Promise.resolve(acmList) - } - }) - } - ) - - const component = mount() - - act( async () => { - component.find('[variant="primary"]').simulate('click'); - await expect(getInstanceOrderStateSpy).toHaveBeenCalled() - await expect(changeInstanceOrderStateSpy).toHaveBeenCalled() - expect(logSpy).toHaveBeenNthCalledWith(1,"handleSave called"); - expect(logSpy).toHaveBeenNthCalledWith(2,"successAlert called"); - }); - }); - - it('handleSave called when save button clicked and response is not ok', async () => { - jest.resetAllMocks() - const getInstanceOrderStateSpy = jest.spyOn(ACMService, 'getInstanceOrderState') - .mockImplementationOnce(() => { - return Promise.resolve({ - ok: true, - status: 200, - text: () => "OK", - json: () => { - return Promise.resolve(orderedStateJson) - } - }) - } - ) - - const changeInstanceOrderStateSpy = jest.spyOn(ACMService, 'changeInstanceOrderState') - .mockImplementationOnce(() => { - return Promise.resolve({ - ok: false, - status: 200, - text: () => "OK", - json: () => { - return Promise.resolve(acmList) - } - }) - } - ) - - const component = mount() - - await act( async () => { - component.find('[variant="primary"]').simulate('click'); - await expect(getInstanceOrderStateSpy).toHaveBeenCalled() - await expect(changeInstanceOrderStateSpy).toHaveBeenCalled() - expect(logSpy).toHaveBeenNthCalledWith(1,"handleSave called"); - expect(logSpy).toHaveBeenNthCalledWith(2,"errorAlert called"); - }); - }); - - it('Check useEffect is being called', async () => { - jest.resetAllMocks() - jest.spyOn(ACMService, 'getInstanceOrderState') - .mockImplementationOnce(() => { - return Promise.resolve({ - ok: true, - status: 200, - text: () => "OK", - json: () => { - return Promise.resolve(orderedStateJson) - } - }) - } - ) - - jest.spyOn(ACMService, 'changeInstanceOrderState') - .mockImplementationOnce(() => { - return Promise.resolve({ - ok: true, - status: 200, - text: () => "OK", - json: () => { - return Promise.resolve(acmList) - } - }) - } - ) - - const component = mount() - - const useEffect = jest.spyOn(React, "useEffect"); - act(async () => { - await flushPromises() - component.update() - await expect(useEffect).toHaveBeenCalled(); - }) - component.unmount(); - }); -}); diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/CommissioningModal.js b/gui-clamp/ui-react/src/components/dialogs/ACM/CommissioningModal.js deleted file mode 100644 index d120def..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/CommissioningModal.js +++ /dev/null @@ -1,155 +0,0 @@ -/* - * ============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========================================================= - */ -import Modal from "react-bootstrap/Modal"; -import Button from "react-bootstrap/Button"; -import React, { useEffect, useState } from "react"; -import styled from "styled-components"; -import ACMService from "../../../api/ACMService"; -import { Alert } from "react-bootstrap"; -import CommissioningUtils from "./utils/CommissioningUtils"; - -const ModalStyled = styled(Modal)` - @media (min-width: 800px) { - .modal-xl { - max-width: 96%; - } - } - background-color: transparent; -` - -const StyledMessagesDiv = styled.div` - overflow: auto; - min-width: 100%; - max-height: 300px; - padding: 5px 5px 0px 5px; - text-align: center; -` - -const AlertStyled = styled(Alert)` - margin-top: 10px; -` - -const CommissioningModal = (props) => { - const [fullToscaTemplate, setFullToscaTemplate] = useState({}); - const [commonProperties, setCommonProperties] = useState({}) - const [jsonEditor, setJsonEditor] = useState(null); - const [show, setShow] = useState(true); - const [alertMessages, setAlertMessages] = useState(); - const [commonPropertiesResponseOk, setCommonPropertiesResponseOk] = useState(true); - const [serviceTemplateResponseOk, setServiceTemplateResponseOk] = useState(true); - const name = 'ToscaServiceTemplateSimple'; - const version = '1.0.0'; - - useEffect(async () => { - const toscaTemplateResponse = await ACMService.getToscaTemplate(name, version, null) - .catch(error => error.message); - const toscaCommonProperties = await ACMService.getCommonOrInstanceProperties(name, version, null, true) - .catch(error => error.message); - - if (!toscaCommonProperties.ok) { - const errorResponse = await toscaCommonProperties.json() - setCommonProperties(errorResponse) - setCommonPropertiesResponseOk(false); - } - - if (!toscaTemplateResponse.ok) { - const errorResponse = await toscaTemplateResponse.json() - console.log(errorResponse) - setFullToscaTemplate(errorResponse) - setServiceTemplateResponseOk(false); - } - - if (toscaTemplateResponse.ok && toscaCommonProperties.ok) { - const renderedEditorObjects = CommissioningUtils.renderJsonEditor(toscaTemplateResponse, toscaCommonProperties) - setFullToscaTemplate((await renderedEditorObjects).fullTemplate) - setJsonEditor((await renderedEditorObjects).editorTemp) - - } - - }, []); - - const handleClose = () => { - console.log('handleClose called'); - setShow(false); - props.history.push('/'); - } - - const handleSave = async () => { - console.log("handleSave called") - if (jsonEditor != null) { - setFullToscaTemplate(await CommissioningUtils.updateTemplate(jsonEditor.getValue(), fullToscaTemplate)) - } - } - - - - const handleCommission = async () => { - - console.log("handleCommission called") - - await ACMService.deleteToscaTemplate('ToscaServiceTemplateSimple', "1.0.0") - - const recommissioningResponse = await ACMService.uploadToscaFile(fullToscaTemplate) - - await receiveResponseFromCommissioning(recommissioningResponse) - } - - const receiveResponseFromCommissioning = async (response) => { - console.log("receiveResponseFromCommissioning called") - setAlertMessages(await CommissioningUtils.getAlertMessages(response)); - }; - - return ( - - - Change ACM Common Properties - -
-
- -
- Can't get service template:
{ JSON.stringify(fullToscaTemplate, null, 2) }
- Can't get common properties:
{ JSON.stringify(commonProperties, null, 2) }
- -
- - { alertMessages } - - - - - - - - ); -} - -export default CommissioningModal; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/CommissioningModal.test.js b/gui-clamp/ui-react/src/components/dialogs/ACM/CommissioningModal.test.js deleted file mode 100644 index e3a50be..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/CommissioningModal.test.js +++ /dev/null @@ -1,227 +0,0 @@ -/* - * ============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========================================================= - */ -import React from 'react'; -import { mount, shallow } from 'enzyme'; -import toJson from "enzyme-to-json"; -import { act } from "react-dom/test-utils"; -import { createMemoryHistory } from "history"; -import CommissioningModal from "./CommissioningModal"; -import commonProps from "./testFiles/commonProps.json"; -import fullTemp from "./testFiles/fullTemplate.json"; -import ACMService from "../../../api/ACMService"; - -let logSpy = jest.spyOn(console, 'log') -const commonProperties = JSON.parse(JSON.stringify(commonProps)) -const fullTemplate = JSON.parse(JSON.stringify(fullTemp)) -describe('Verify CommissioningModal', () => { - - const unmockedFetch = global.fetch - beforeAll(() => { - global.fetch = () => - Promise.resolve({ - status: 200, - text: () => "OK", - json: () => "{GlobalFetch}" - }) - }) - - afterAll(() => { - global.fetch = unmockedFetch - }) - - beforeEach(() => { - logSpy.mockClear() - }) - - it("renders without crashing", () => { - shallow(); - }); - - it("renders correctly", () => { - const tree = shallow(); - expect(toJson(tree)).toMatchSnapshot(); - }); - - it('should have three Button elements', () => { - const container = shallow() - expect(container.find('Button').length).toEqual(3); - }); - - it('handleClose called when bottom button clicked', () => { - const history = createMemoryHistory(); - const component = mount() - - act(() => { - component.find('[variant="secondary"]').simulate('click'); - expect(logSpy).toHaveBeenCalledWith('handleClose called'); - }); - - component.unmount(); - }); - - it('handleClose called when top-right button clicked', () => { - const history = createMemoryHistory(); - const component = mount() - - act(() => { - component.find('[size="xl"]').get(0).props.onHide(); - expect(logSpy).toHaveBeenCalledWith('handleClose called'); - }); - - component.unmount(); - }); - - it('handleSave called when save button clicked', () => { - const component = shallow() - act(() => { - component.find('[variant="primary"]').simulate('click'); - expect(logSpy).toHaveBeenCalledWith("handleSave called"); - }); - }); - - it('getToscaTemplate gets called in useEffect with error', async() => { - const fetchMock = jest.spyOn(ACMService, 'getToscaTemplate').mockImplementation(() => Promise.resolve({ - ok: false, - status: 200, - text: () => "OK", - json: () => fullTemplate - })) - - mount() - await act(async () => { - expect(fetchMock).toHaveBeenCalled(); - }); - }); - - it('getCommonProperties gets called in useEffect with error', async() => { - const fetchMock = jest.spyOn(ACMService, 'getToscaTemplate').mockImplementation(() => Promise.resolve({ - ok: false, - status: 200, - text: () => "OK", - json: () => commonProperties - })) - - mount() - await act(async () => { - expect(fetchMock).toHaveBeenCalled(); - }); - }); - - it('useState gets called in useEffect with error', async() => { - const useStateSpy = jest.spyOn(React, 'useState') - jest - .spyOn(global, 'fetch') - .mockImplementation(() => - Promise.resolve({ - ok: false, - status: 200, - text: () => "OK", - json: () => "{useState}" - }) - ) - - mount() - await act(async () => { - expect(useStateSpy).toHaveBeenCalledTimes(6); - }); - }); - - it('set state gets called for setFullToscaTemplate', () => { - const setFullToscaTemplate = jest.fn(); - const history = createMemoryHistory(); - jest - .spyOn(global, 'fetch') - .mockImplementation(() => - Promise.resolve({ - ok: true, - status: 200, - text: () => "OK", - json: () => fullTemplate - }) - ) - - mount() - act(async () => { - // expect(renderJsonEditor).toHaveBeenCalled(); - expect(setFullToscaTemplate).toHaveBeenCalledTimes(1); - }); - }); - - it('set state gets called for setToscaJsonSchema useEffect on success', () => { - const setToscaJsonEditor = jest.fn(); - const history = createMemoryHistory(); - jest - .spyOn(global, 'fetch') - .mockImplementation(() => - Promise.resolve({ - ok: true, - status: 200, - text: () => "OK", - json: () => fullTemplate - }) - ) - - mount() - act(async () => { - expect(setToscaJsonEditor).toHaveBeenCalledTimes(1); - }); - }); - - it('Check useEffect is being called', async () => { - const useEffect = jest.spyOn(React, "useEffect"); - mount() - await act(async () => { - expect(useEffect).toHaveBeenCalled(); - }) - }); - - it('test handleCommission called on click', async () => { - const deleteToscaTemplateSpy = jest.spyOn(ACMService, 'deleteToscaTemplate').mockImplementation(() => { - Promise.resolve({ - ok: true, - status: 200, - text: () => "OK", - json: () => "{handleCommissioning}" - }) - }) - const uploadToscaTemplateSpy = jest.spyOn(ACMService, 'uploadToscaFile').mockImplementation(() => { - Promise.resolve({ - ok: true, - status: 200, - text: () => "OK", - json: () => "{uploadToscaFile}" - }) - }) - - - const useStateSpy = jest.spyOn(React, 'useState') - - const component = shallow() - component.find('[variant="success mr-auto"]').simulate('click'); - - await act( async () => { - expect(logSpy).toHaveBeenCalledWith("handleCommission called") - expect(await deleteToscaTemplateSpy).toHaveBeenCalled() - expect(await uploadToscaTemplateSpy).toHaveBeenCalled() - expect(logSpy).toHaveBeenCalledWith("receiveResponseFromCommissioning called") - expect(useStateSpy).toHaveBeenCalled() - }) - }) -}); diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/DeleteToscaTemplate.js b/gui-clamp/ui-react/src/components/dialogs/ACM/DeleteToscaTemplate.js deleted file mode 100644 index 3dbf7bd..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/DeleteToscaTemplate.js +++ /dev/null @@ -1,56 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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========================================================= - */ - -import React, { useState } from "react"; -import Button from "react-bootstrap/Button"; -import ACMService from "../../../api/ACMService"; - -const DeleteToscaTemplate = props => { - - const deleteTemplateHandler = async () => { - console.log('deleteTemplateHandler called'); - - const response = await ACMService.deleteToscaTemplate(props.templateName, props.templateVersion) - .catch(error => error.message); - - if(!response.ok) { - console.log('deleteTemplateHandler called with error'); - } else { - console.log('deleteTemplateHandler called'); - } - // console.log('Response is ok: ' + response.ok); - - props.onDeleteToscaServiceTemplate(response); - - } - - return ( - - - - ); - - -} - -export default DeleteToscaTemplate; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/DeleteToscaTemplate.test.js b/gui-clamp/ui-react/src/components/dialogs/ACM/DeleteToscaTemplate.test.js deleted file mode 100644 index c52bdea..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/DeleteToscaTemplate.test.js +++ /dev/null @@ -1,54 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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========================================================= - */ - -import React from 'react'; -import { mount, shallow } from 'enzyme'; -import toJson from "enzyme-to-json"; -import DeleteToscaTemplate from "./DeleteToscaTemplate"; - -describe('Verify DeleteToscaTemplate', () => { - - it("renders without crashing", () => { - shallow(); - }); - - it("renders correctly", () => { - const tree = shallow(); - expect(toJson(tree)).toMatchSnapshot(); - }); - - it('should have a Button element', () => { - const container = shallow() - expect(container.find('Button').length).toEqual(1); - }); - - it('button should call deleteTemplateHandler when clicked', async () => { - const component = mount() - const logSpy = jest.spyOn(console, 'log'); - - component.find('[variant="danger"]').simulate('click'); - expect(logSpy).toHaveBeenCalledWith('deleteTemplateHandler called'); - }); - - it('should have a Button element with specified text', () => { - const container = shallow() - expect(container.find('Button').text()).toBe('Delete Tosca Service Template'); - }); -}); diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/GetLocalToscaFileForUpload.js b/gui-clamp/ui-react/src/components/dialogs/ACM/GetLocalToscaFileForUpload.js deleted file mode 100644 index 013dd89..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/GetLocalToscaFileForUpload.js +++ /dev/null @@ -1,150 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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========================================================= - */ - -import React, { useState } from 'react'; -import Button from "react-bootstrap/Button"; -import Modal from 'react-bootstrap/Modal'; -import Form from 'react-bootstrap/Form'; -import Row from 'react-bootstrap/Row'; -import styled from 'styled-components'; -import Alert from 'react-bootstrap/Alert'; -import * as yaml from "js-yaml"; -import UploadToscaFile from "./UploadToscaFile"; - -const ModalStyled = styled(Modal)` - background-color: transparent; -` - -const StyledMessagesDiv = styled.div` - overflow: auto; - min-width: 100%; - max-height: 300px; - padding: 5px 5px 0px 5px; - text-align: center; -` - -const GetLocalToscaFileForUpload = (props) => { - const [selectedFile, setSelectedFile] = useState(); - const [fileIsSelected, setFileIsSelected] = useState(false); - const [toscaJsonObject, setToscaJsonObject] = useState({}); - const [show, setShow] = useState(true); - const [alertMessages, setAlertMessages] = useState(); - - const handleClose = () => { - console.log('handleClose called'); - setShow(false); - props.history.push('/'); - } - - const fileChangeHandler = (event) => { - event.preventDefault(); - console.log('fileChangeHandler called'); - - if (event.currentTarget.files[0] !== undefined) { - console.log('file defined'); - setSelectedFile(event.currentTarget.files[0]); - setFileIsSelected(true); - - const file = event.currentTarget.files[0]; - - setAlertMessages([]); - - const fileReader = new FileReader(); - - fileReader.onload = () => { - const jsonObj = yaml.load(fileReader.result, 'utf8'); - setToscaJsonObject(jsonObj); - } - - fileReader.readAsText(file); - - } else { - return; - } - }; - - const receiveResponseFromUpload = async (response) => { - - if (await response.ok) { - setAlertMessages( - Upload Success -

Tosca Service Template from { selectedFile.name } was Successfully Uploaded

-
-

Type: { selectedFile.type }

Size: { +selectedFile.size / 1000 }Kb

-
); - } - else { - setAlertMessages( - Upload Failure -

Tosca Service Template from { selectedFile.name } failed to upload

-

Status code: { await response.status }: { response.statusText }

-

Response Text: { await response.text() }

-
-

Type: { selectedFile.type }

Size: { +selectedFile.size / 1000 }Kb

-
); - } - }; - - return ( - - - Upload Tosca to Commissioning API - -
-
- -
- - - - Only .yaml, .yml and .json files are supported - - - - - - - { alertMessages } - - -
-
-
- - - -
- ); -} - -export default GetLocalToscaFileForUpload; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/GetLocalToscaFileForUpload.test.js b/gui-clamp/ui-react/src/components/dialogs/ACM/GetLocalToscaFileForUpload.test.js deleted file mode 100644 index 9b885c6..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/GetLocalToscaFileForUpload.test.js +++ /dev/null @@ -1,122 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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========================================================= - */ - -import React from 'react'; -import { mount, shallow } from 'enzyme'; -import toJson from 'enzyme-to-json'; -import { act } from "react-dom/test-utils"; -import GetLocalToscaFileForUpload from './GetLocalToscaFileForUpload'; -import { createMemoryHistory } from 'history'; - - -describe('Verify GetLocalToscaFileForUpload', () => { - const fs = require('fs'); - let testFile = fs.readFileSync('src/components/dialogs/Policy/toscaData.test.json'); - const file = new Blob([testFile], { type: 'file' }); - - beforeEach(() => { - fetch.resetMocks(); - fetch.mockImplementation(() => { - return Promise.resolve({ - ok: true, - status: 200, - json: () => { - return Promise.resolve({ - "tosca_definitions_version": "tosca_simple_yaml_1_1_0", - "data_types": {}, - "policy_types": {}, - "topology_template": {}, - "name": "ToscaServiceTemplateSimple", - "version": "1.0.0", - "metadata": {}, - "id": "0.19518677404255147" - }); - } - }); - }); - }) - - it("renders without crashing", () => { - shallow(); - }); - - it("renders correctly", () => { - const tree = shallow(); - expect(toJson(tree)).toMatchSnapshot(); - }); - - it('should have a UploadToscaFile element', () => { - const container = shallow() - expect(container.find('UploadToscaFile').length).toEqual(1); - }); - - it('handleClose called when bottom button clicked', () => { - const history = createMemoryHistory(); - const component = mount() - const logSpy = jest.spyOn(console, 'log'); - - - act(() => { - component.find('[variant="secondary"]').simulate('click'); - expect(logSpy).toHaveBeenCalledWith('handleClose called'); - }); - }); - - it('handleClose called when top-right button clicked', () => { - const history = createMemoryHistory(); - const component = mount() - const logSpy = jest.spyOn(console, 'log'); - - - act(() => { - component.find('[size="lg"]').get(0).props.onHide(); - expect(logSpy).toHaveBeenCalledWith('handleClose called'); - }); - }); - - it('should call fileChangeHandler on change, file undefined', () => { - const component = mount(); - const logSpy = jest.spyOn(console, 'log'); - const event = { - preventDefault() { - }, - currentTarget: { files: [] } - }; - - act(() => { - component.find('[type="file"]').get(0).props.onChange(event); - expect(logSpy).toHaveBeenCalledWith('fileChangeHandler called'); - }); - }); - - it('should call fileChangeHandler on change, file defined', async () => { - const component = mount(); - const logSpy = jest.spyOn(console, 'log'); - const event = { - preventDefault() { - }, - currentTarget: { files: [file] } - }; - - act(async () => { - component.find('[type="file"]').get(0).props.onChange(event); - expect(logSpy).toHaveBeenCalledWith('file defined'); - }); - }); -}); diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/GetToscaTemplate.js b/gui-clamp/ui-react/src/components/dialogs/ACM/GetToscaTemplate.js deleted file mode 100644 index e86c2cf..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/GetToscaTemplate.js +++ /dev/null @@ -1,54 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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========================================================= - */ - -import React, { useState } from "react"; -import Button from "react-bootstrap/Button"; -import ACMService from "../../../api/ACMService"; - -const GetToscaTemplate = (props) => { - - const getTemplateHandler = async () => { - - const response = await ACMService.getToscaTemplate(props.templateName, props.templateVersion) - .catch(error => error.message); - - if(!response.ok) { - console.log('getToscaServiceTemplateHandler called with error') - - } else - { - console.log('getToscaServiceTemplateHandler called') - } - - props.onGetToscaServiceTemplate(response); - - } - - return ( - - - - ); - - -} - -export default GetToscaTemplate; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/GetToscaTemplate.test.js b/gui-clamp/ui-react/src/components/dialogs/ACM/GetToscaTemplate.test.js deleted file mode 100644 index 71fbeec..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/GetToscaTemplate.test.js +++ /dev/null @@ -1,85 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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========================================================= - */ - -import React from 'react'; -import { mount, shallow } from 'enzyme'; -import GetToscaTemplate from './GetToscaTemplate'; -import toJson from "enzyme-to-json"; -import { act } from "react-dom/test-utils"; - -describe('Verify GetToscaTemplate', () => { - - const flushPromises = () => new Promise(setImmediate); - - it("renders without crashing", () => { - shallow(); - }); - - it("renders correctly", () => { - const tree = shallow(); - expect(toJson(tree)).toMatchSnapshot(); - }); - - it('should have a Button element', () => { - const container = shallow() - expect(container.find('Button').length).toEqual(1); - }); - - it('button should call getTemplateHandler when clicked when response is error', async () => { - - const onGetToscaServiceTemplate = jest.fn() - jest - .spyOn(global, 'fetch') - .mockImplementationOnce(async () => - Promise.resolve({ - ok: false, - status: 200, - json: () => { - return Promise.resolve({ - "tosca_definitions_version": "tosca_simple_yaml_1_1_0", - "data_types": {}, - "policy_types": {}, - "topology_template": {}, - "name": "ToscaServiceTemplateSimple", - "version": "1.0.0", - "metadata": {}, - "id": "0.19518677404255147" - }) - } - } - ) - ) - - const component = mount() - const logSpy = jest.spyOn(console, 'log'); - - await act(async () => { - component.find('[variant="primary"]').simulate('click'); - await flushPromises() - component.update() - expect(logSpy).toHaveBeenCalledWith('getToscaServiceTemplateHandler called with error'); - }); - component.unmount(); - }); - - it('should have a Button element with specified text', () => { - const container = shallow() - expect(container.find('Button').text()).toBe('Pull Tosca Service Template'); - }); -}); diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/InstancePropertiesModal.js b/gui-clamp/ui-react/src/components/dialogs/ACM/InstancePropertiesModal.js deleted file mode 100644 index 1c152ff..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/InstancePropertiesModal.js +++ /dev/null @@ -1,272 +0,0 @@ -/* - * ============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========================================================= - */ - -import React, { useEffect, useState } from "react"; -import Modal from "react-bootstrap/Modal"; -import styled from "styled-components"; -import Button from "react-bootstrap/Button"; -import ACMService from "../../../api/ACMService"; -import Alert from "react-bootstrap/Alert"; -import * as PropTypes from "prop-types"; -import InstantiationUtils from "./utils/InstantiationUtils"; -import Row from "react-bootstrap/Row"; -import Form from "react-bootstrap/Form"; - -const ModalStyled = styled(Modal)` - @media (min-width: 800px) { - .modal-xl { - max-width: 96%; - } - } - background-color: transparent; -` - -const DivWhiteSpaceStyled = styled.div` - overflow: auto; - min-width: 100%; - max-height: 300px; - padding: 5px 5px 0px 5px; - text-align: center; -` - -const AlertStyled = styled(Alert)` - margin-top: 10px; -` - -const templateName = "ToscaServiceTemplateSimple"; -const templateVersion = "1.0.0"; - -function Fragment(props) { - return null; -} - -const specialCharacter = /[ `!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?~]/; - -Fragment.propTypes = {children: PropTypes.node}; -const InstancePropertiesModal = (props) => { - const [show, setShow] = useState(true); - const [toscaFullTemplate, setToscaFullTemplate] = useState({}); - const [jsonEditor, setJsonEditor] = useState(null); - const [alertMessage, setAlertMessage] = useState(null); - const [clearButton, setClearButton] = useState(null); - const [instancePropertiesGlobal, setInstancePropertiesGlobal] = useState({}); - const [serviceTemplateResponseOk, setServiceTemplateResponseOk] = useState(true); - const [instancePropertiesResponseOk, setInstancePropertiesResponseOk] = useState(true); - const [instanceName, setInstanceName] = useState(''); - const [instanceVersion, setInstanceVersion] = useState(''); - const [oldInstanceName, setOldInstanceName] = useState(''); - const [tempInstanceName, setTempInstanceName] = useState(''); - const [validated, setValidated] = useState(false); - const [editMode, setEditMode] = useState(false); - - useEffect(async () => { - let isEditMode = false; - - if (props.location.instantiationName !== undefined) { - isEditMode = true; - setEditMode(true); - setInstanceName(props.location.instantiationName); - setInstanceVersion(props.location.instantiationVersion); - } - - const instantiationName = isEditMode ? props.location.instantiationName : null; - console.log(instantiationName); - - const toscaTemplateResponse = await ACMService.getToscaTemplate(templateName, templateVersion, instantiationName) - .catch(error => error.message); - - const toscaInstanceProperties = await ACMService.getCommonOrInstanceProperties(templateName, templateVersion, instantiationName, false) - .catch(error => error.message); - - if (toscaInstanceProperties == null || toscaTemplateResponse == null) { - await warningAlert('Tosca service template is empty') - return; - } - - if (!toscaInstanceProperties.ok) { - const errorResponse = await toscaInstanceProperties.json(); - console.log(errorResponse); - setInstancePropertiesGlobal(errorResponse); - setInstancePropertiesResponseOk(false); - } - - if (!toscaTemplateResponse.ok) { - const errorResponse = await toscaTemplateResponse.json(); - console.log(errorResponse); - setToscaFullTemplate(errorResponse); - setServiceTemplateResponseOk(false); - } - - if (toscaTemplateResponse.ok && toscaInstanceProperties.ok) { - const renderedJsonSchema = await InstantiationUtils.parseJsonSchema(toscaTemplateResponse, toscaInstanceProperties); - setToscaFullTemplate(await (renderedJsonSchema).fullTemplate); - setJsonEditor(await (renderedJsonSchema).jsonEditor); - } - - }, []); - - useEffect(async () => { - - await validateInstanceName(); - - }, [instanceName]) - - const validateInstanceName = async () => { - console.log('validateInstanceName called'); - - if (specialCharacter.test(instanceName)) { - await warningAlert('Instance name cannot contain special characters'); - } else if (alertMessage) { - clearWarning(); - } - - if (instanceName.length > 2 && !specialCharacter.test(instanceName)) { - console.log('validated'); - setOldInstanceName(tempInstanceName); - setValidated(true); - } else { - setValidated(false); - } - } - - const handleClose = () => { - console.log('handleClose called'); - setShow(false); - props.history.push('/'); - } - - const handleInstanceName = (event) => { - console.log('handleInstanceName called'); - - setTempInstanceName(instanceName); - setInstanceName(event.target.value); - - validateInstanceName().then(() => { - }); - } - - const handleSave = async () => { - if (instanceName !== '' || instanceName !== undefined || instanceName.length > 0) { - console.log("handleSave called"); - - console.log("instanceName to be saved is: " + instanceName); - - if (jsonEditor != null) { - setToscaFullTemplate(InstantiationUtils.updateTemplate(instanceName, jsonEditor.getValue(), toscaFullTemplate)); - } - - let response = null; - - if (editMode) { - response = await ACMService.updateInstanceProperties(oldInstanceName, instanceVersion, toscaFullTemplate) - .catch(error => error.message); - } else { - response = await ACMService.createInstanceProperties(toscaFullTemplate) - .catch(error => error.message); - } - - if (response.ok) { - successAlert(); - } else { - await errorAlert(response); - } - } else { - await warningAlert('Instance name cannot be empty'); - } - } - - const warningAlert = async (message) => { - console.log("warningAlert called"); - - setAlertMessage( - Instantiation Properties Warning -

{message}

-
-
); - } - - const successAlert = () => { - console.log("successAlert called"); - setAlertMessage( - Instantiation Properties Success -

Instance Properties was successfully saved

-
-
); - } - - const errorAlert = async (response) => { - console.log("errorAlert called"); - setAlertMessage( - Instantiation Properties Failure -

An error occurred while trying to save

-

Status code: { await response.status } : { response.statusText }

-

Status Text: { await response.text() }

-
-
); - } - - const clearWarning = () => { - console.log("clearWarning called"); - - if (specialCharacter.test(instanceName)) { - return; - } - - setClearButton(null); - setAlertMessage(null); - } - - return ( - - - { editMode ? 'Edit' : 'Create' } Tosca Instance Properties - -
- - - Instance Name: - - -
- Can't get service template:
{ JSON.stringify(toscaFullTemplate, null, 2) }
- Can't get instance properties:
{ JSON.stringify(instancePropertiesGlobal, null, 2) }
- - - { alertMessage } - -
- - { clearButton } - - - - - ); -} - -export default InstancePropertiesModal; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/InstancePropertiesModal.test.js b/gui-clamp/ui-react/src/components/dialogs/ACM/InstancePropertiesModal.test.js deleted file mode 100644 index 5b60bce..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/InstancePropertiesModal.test.js +++ /dev/null @@ -1,152 +0,0 @@ -/* - * ============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========================================================= - */ - -import {shallow} from "enzyme"; -import React from "react"; -import InstancePropertiesModal from "./InstancePropertiesModal"; -import toJson from "enzyme-to-json"; -import { createMemoryHistory } from "history"; -import { act } from "react-dom/test-utils"; -import ACMService from "../../../api/ACMService"; -import fullTemp from "./testFiles/fullTemplate.json"; -import instanceProps from "./testFiles/instanceProps.json"; - -const instanceProperties = JSON.parse(JSON.stringify(instanceProps)) -const fullTemplate = JSON.parse(JSON.stringify(fullTemp)) -let logSpy = jest.spyOn(console, 'log'); - -describe('Verify InstancePropertiesModal', () => { - - const unmockedFetch = global.fetch - beforeAll(() => { - global.fetch = () => - Promise.resolve({ - status: 200, - text: () => "OK", - json: () => "{GlobalFetch}" - }); - }); - - afterAll(() => { - global.fetch = unmockedFetch - }); - - beforeEach(() => { - logSpy.mockClear() - }); - - it("renders without crashing", () => { - shallow(); - }); - - it("renders correctly", () => { - const tree = shallow(); - expect(toJson(tree)).toMatchSnapshot(); - }); - - it('should have save button element', () => { - const container = shallow() - expect(container.find('[variant="primary"]').length).toEqual(1); - }); - - it('should have close button element', () => { - const container = shallow() - expect(container.find('[variant="secondary"]').length).toEqual(1); - }); - - it('handleCreateUpdateToscaInstanceProperties called when save button clicked', () => { - const component = shallow(); - - const instanceNameState = jest.spyOn(React, "useState"); - instanceNameState.mockImplementation(instanceName => [instanceName, 'Test']); - - act(() => { - component.find('[variant="primary"]').simulate('click'); - expect(logSpy).toHaveBeenCalledWith('handleSave called'); - }); - }); - - it('handleClose called when close button clicked', () => { - const history = createMemoryHistory(); - const component = shallow() - - act(() => { - component.find('[variant="secondary"]').simulate('click'); - expect(logSpy).toHaveBeenCalledWith('handleClose called'); - }); - }); - - it('handleSave called when save button clicked', () => { - const component = shallow() - - act(() => { - component.find('[variant="primary"]').simulate('click'); - expect(logSpy).toHaveBeenCalledWith('handleSave called'); - }); - }); - - it('Check useEffect is being called', async () => { - const useEffect = jest.spyOn(React, "useEffect"); - const component = shallow() - act(async () => { - expect(useEffect).toHaveBeenCalled(); - component.update() - }); - }); - - it('Check useEffect is being called', async () => { - const useEffect = jest.spyOn(React, "useEffect"); - const component = shallow() - act(async () => { - expect(useEffect).toHaveBeenCalled(); - component.update(); - }); - }); - - it('getToscaTemplate gets called in useEffect with error', async() => { - const fetchMock = jest.spyOn(ACMService, 'getToscaTemplate').mockImplementation(() => Promise.resolve({ - ok: false, - status: 200, - text: () => "OK", - json: () => fullTemplate - })) - - const component = shallow() - act(async () => { - expect(fetchMock).toHaveBeenCalled(); - component.update(); - }); - }); - - it('getCommonOrInstanceProperties gets called in useEffect with error', async() => { - const fetchMock = jest.spyOn(ACMService, 'getCommonOrInstanceProperties').mockImplementation(() => Promise.resolve({ - ok: false, - status: 200, - text: () => "OK", - json: () => instanceProperties - })) - - const component = shallow() - act(async () => { - expect(fetchMock).toHaveBeenCalled(); - component.update(); - }); - }); - -}); diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationElementItem.js b/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationElementItem.js deleted file mode 100644 index 0e2c407..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationElementItem.js +++ /dev/null @@ -1,124 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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========================================================= - */ - -import React, { useEffect, useState } from "react"; -import styled from "styled-components"; -import { Button } from "react-bootstrap"; - -const UninitialisedBox = styled.div` - margin: 0; - padding: 0 0 1px 0; - border-bottom: 1px solid #7f7f7f; - background: #cccccc; - font-weight: normal; - border-radius: 0; -` -const PassiveBox = styled.div` - margin: 0; - padding: 0 0 1px 0; - border-bottom: 1px solid #7f7f7f; - background: #ffe87c; - font-weight: normal; - border-radius: 0; -` -const RunningBox = styled.div` - margin: 0; - padding: 0 0 1px 0; - border-bottom: 1px solid #7f7f7f; - background: #7ec699; - font-weight: normal; - border-radius: 0; -` -const ButtonStyle = styled(Button)` - margin: 0; - padding: 5px 12px; - width: 100%; - text-align: left; - background: transparent !important; - color: #000000 !important; - text-decoration: none !important; - border: none; - border-radius: 0; - - :hover, :active :focus { - color: #000000 !important; - outline: 0 !important; - box-shadow: none !important; - background: transparent !important; - text-decoration: none !important; - } -` - -const InstantiationElementItem = (props) => { - const [title, setTitle] = useState(""); - - useEffect(() => { - const title = props.title.split("."); - setTitle(title[4]); - }, []); - - const toggleState = () => { - switch (props.orderedState) { - case 'UNINITIALISED': - return renderUninitialisedOrderedState(); - case 'PASSIVE': - return renderPassiveOrderedState(); - case 'RUNNING': - return renderRunningOrderedState(); - } - } - - const renderUninitialisedOrderedState = () => { - return ( - - - - ) - } - - const renderPassiveOrderedState = () => { - return ( - - - - ) - } - - const renderRunningOrderedState = () => { - return ( - - - - ) - } - - return ( - - { toggleState() } - - ); -} - -export default InstantiationElementItem; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationElementItem.test.js b/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationElementItem.test.js deleted file mode 100644 index 7b1c1ec..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationElementItem.test.js +++ /dev/null @@ -1,49 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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========================================================= - * - * - */ - -import { shallow } from "enzyme"; -import toJson from "enzyme-to-json"; -import React from "react"; -import InstantiationElementItem from "./InstantiationElementItem"; - -describe('Verify InstantiationElementItem', () => { - const index = 0; - - it("renders correctly", () => { - const container = shallow(); - expect(toJson(container)).toMatchSnapshot(); - }); - - it("renders correctly when orderState is uninitialized", () => { - const container = shallow(); - expect(toJson(container)).toMatchSnapshot(); - }); - - it("renders correctly when orderState is passive", () => { - const container = shallow(); - expect(toJson(container)).toMatchSnapshot(); - }); - - it("renders correctly when orderState is running", () => { - const container = shallow(); - expect(toJson(container)).toMatchSnapshot(); - }); -}); \ No newline at end of file diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationElements.js b/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationElements.js deleted file mode 100644 index d8e6348..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationElements.js +++ /dev/null @@ -1,41 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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========================================================= - */ - -import React, { useEffect, useState } from "react"; -import InstantiationElementItem from "./InstantiationElementItem"; - -const InstantiationElements = (props) => { - const [clElements, setClElements] = useState([]); - - useEffect(() => { - setClElements(Object.values(props.elements)); - }, []); - - return ( - - { - clElements.map((clEl, index) => ( - - )) - } - - ); -} - -export default InstantiationElements; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationElements.test.js b/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationElements.test.js deleted file mode 100644 index 127a886..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationElements.test.js +++ /dev/null @@ -1,33 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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========================================================= - * - * - */ - -import toJson from "enzyme-to-json"; -import { shallow } from "enzyme"; -import React from "react"; -import InstantiationElements from "./InstantiationElements"; - -describe('Verify InstantiationElements', () => { - const container = shallow(); - - it("renders correctly", () => { - expect(toJson(container)).toMatchSnapshot(); - }); -}); \ No newline at end of file diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationItem.js b/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationItem.js deleted file mode 100644 index 7b8e453..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationItem.js +++ /dev/null @@ -1,52 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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========================================================= - */ - -import React from "react"; -import styled from 'styled-components'; - -import { Accordion, Button, Card } from "react-bootstrap"; -import AccordionHeader from "./AccordionHeader"; - -const AccordionBody = styled.div` - margin: 0; - padding: 0; - border: 1px solid #7f7f7f; - border-radius: 0; -` - -const CardBody = styled(Card.Body)` - padding: 0; - margin: 0; -` - -const InstantiationItem = (props) => { - - return ( - - - - - { props.children } - - - - ); -} - -export default InstantiationItem; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationItem.test.js b/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationItem.test.js deleted file mode 100644 index fe4aaf8..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationItem.test.js +++ /dev/null @@ -1,53 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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========================================================= - * - * - */ - -import React from "react"; -import { shallow } from "enzyme"; -import toJson from "enzyme-to-json"; - -import InstantiationItem from "./InstantiationItem"; - -describe('Verify InstantiationItem', () => { - - const index = 0; - const title = "PMSH Instance"; - const orderState = "UNINITIALISED"; - const container = shallow(); - - it("renders without crashing", () => { - shallow(); - }); - - it("renders correctly", () => { - expect(toJson(container)).toMatchSnapshot(); - }); - - it("should contain an Accordion", () => { - const accordion = container.find('Accordion'); - expect(accordion).toHaveLength(1); - }); - - it("should contain an AccordionHeader", () => { - const accordion = container.find('AccordionHeader'); - expect(accordion).toHaveLength(1); - }); - -}); \ No newline at end of file diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationManagementModal.js b/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationManagementModal.js deleted file mode 100644 index 2d87119..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationManagementModal.js +++ /dev/null @@ -1,217 +0,0 @@ -/* - * ============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========================================================= - * - * - */ - -import Modal from "react-bootstrap/Modal"; -import { Alert, Container, Table } from "react-bootstrap"; -import Button from "react-bootstrap/Button"; -import React, { useEffect, useState } from "react"; -import styled from "styled-components"; -import { Link } from "react-router-dom"; -import ACMService from "../../../api/ACMService"; -import Row from "react-bootstrap/Row"; -import InstantiationUtils from "./utils/InstantiationUtils"; - -const ModalStyled = styled(Modal)` - background-color: transparent; -` - -const HorizontalSpace = styled.div` - padding-right: 2px; - padding-left: 2px; -`; - -const DivWhiteSpaceStyled = styled.div` - overflow: auto; - min-width: 100%; - max-height: 300px; - padding: 5px 5px 0px 5px; - text-align: center; -` -const InstantiationManagementModal = (props) => { - const [show, setShow] = useState(true); - const [instantiationList, setInstantiationList] = useState([]); - const [alertMessage, setAlertMessage] = useState(null); - - useEffect(async () => { - - const response = await ACMService.getACMInstantiation(); - - const instantiationListJson = await response.json(); - - const parsedInstantiationList = InstantiationUtils.parseInstantiationList(instantiationListJson['automationCompositionList']); - - setInstantiationList(parsedInstantiationList); - }, []); - - const getBackgroundColor = (index) => { - if (index % 2 === 0) { - return 'Silver'; - } - - return 'White'; - } - - const deleteInstantiationHandler = async (index, instantiation) => { - console.log("deleteInstantiationHandler called"); - - if (instantiation.disableDelete) { - return; - } - - const name = instantiation.name; - const version = instantiation.version; - - const response = await ACMService.deleteInstantiation(name, version); - - updateList(index); - - if (response.ok) { - successAlert(); - } else { - await errorAlert(response); - } - } - - const updateList = (index) => { - console.log("updateList called") - - const updatedList = [...instantiationList]; - updatedList.splice(index, 1); - - setInstantiationList(updatedList); - } - - const handleClose = () => { - console.log("handleClose called"); - setShow(false); - props.history.push('/'); - } - - const successAlert = () => { - console.log("successAlert called"); - setAlertMessage( - Deletion of Instantiation Success -

Deletion of Instantiation was successful!

-
-
); - } - - const errorAlert = async (response) => { - console.log("errorAlert called"); - setAlertMessage( - Deletion of Instantiation Failure -

An error occurred while trying to delete instantiation

-

Status code: { await response.status } : { response.statusText }

-

Status Text: { await response.text() }

-
-
); - } - - const clearErrors = () => { - console.log("clearErrors called"); - setAlertMessage(null); - } - - return ( - - - Manage Instances - - - - - - - - - - - - - - - - - - - - - - - - - - - { instantiationList.map((instantiation, index) => { - return ( - - - - - - - - - - ) - }) } - -
#Instantiation NameEdit InstantiationDelete InstantiationChange Order StateInstantiation Order StateInstantiation Current State
{ index + 1 }{ instantiation.name } - - - - - - - - - - { instantiation.orderedState }{ instantiation.currentState }
- - { alertMessage } - -
- - - - -
- ); -} - -export default InstantiationManagementModal; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationManagementModal.test.js b/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationManagementModal.test.js deleted file mode 100644 index e511ce0..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationManagementModal.test.js +++ /dev/null @@ -1,155 +0,0 @@ -/* - * ============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========================================================= - * - * - */ - -import {mount, shallow} from "enzyme"; -import React from "react"; -import toJson from "enzyme-to-json"; -import InstantiationManagementModal from "./InstantiationManagementModal"; -import {act} from "react-dom/test-utils"; -import {createMemoryHistory} from "history"; -import ACMService from "../../../api/ACMService"; -import acmLoopList from "./testFiles/acmList.json"; -import {BrowserRouter} from "react-router-dom"; - -const logSpy = jest.spyOn(console, 'log') -const history = createMemoryHistory(); - -describe('Verify Instantiation Management', () => { - const flushPromises = () => new Promise(setImmediate); - - beforeEach(() => { - logSpy.mockClear(); - }); - - it("renders without crashing", () => { - shallow(); - }); - it("renders correctly", () => { - const tree = shallow(); - expect(toJson(tree)).toMatchSnapshot(); - }); - - it('should have a close Button element', () => { - const container = shallow(); - const button = container.find('[variant="secondary"]').at(2); - - expect(button.text()).toEqual("Close"); - }); - - it('should have a Create Instance Button element', () => { - const container = shallow(); - const button = container.find('[variant="primary"]').at(0); - - expect(button.text()).toEqual("Create Instance"); - }); - - it('should have a Monitor Instantiations Button element', () => { - const container = shallow(); - const button = container.find('[variant="secondary"]').at(0); - - expect(button.text()).toEqual("Monitor Instantiations"); - }); - - it('handleClose called when bottom button clicked', () => { - const container = shallow(); - const button = container.find('[variant="secondary"]').at(2); - - act(() => { - button.simulate('click'); - expect(logSpy).toHaveBeenCalledWith('handleClose called'); - }); - }); - - it('handleClose called when top-right button clicked', () => { - const container = shallow(); - - act(() => { - container.find('[size="xl"]').get(0).props.onHide(); - expect(logSpy).toHaveBeenCalledWith('handleClose called'); - }); - }); - - it('clearErrors called when clear error message button clicked', () => { - const container = shallow(); - const button = container.find('[variant="secondary"]').at(1); - - act(() => { - button.simulate('click'); - expect(logSpy).toHaveBeenCalledWith('clearErrors called'); - }); - }); - - it('Check useEffect is being called', async () => { - jest.resetAllMocks(); - jest.spyOn(ACMService, 'getACMInstantiation') - .mockImplementationOnce(async () => { - return Promise.resolve({ - ok: true, - status: 200, - text: () => "OK", - json: () => { - return Promise.resolve(acmLoopList); - } - }); - }); - - const component = mount( - - - - ); - const useEffect = jest.spyOn(React, "useEffect"); - - await act(async () => { - await flushPromises() - component.update(); - await expect(useEffect).toHaveBeenCalled(); - - }); - component.unmount(); - }); - - it('set state gets called for setInstantiationList useEffect on success', async () => { - const setInstantiationList = jest.fn(); - const setDeleteInstantiation = true; - const history = createMemoryHistory(); - jest - .spyOn(global, 'fetch') - .mockImplementation(() => - Promise.resolve({ - ok: true, - status: 200, - text: () => "OK", - json: () => acmLoopList - }) - ) - - mount( - - - - ); - act(async () => { - expect(setInstantiationList).toHaveBeenCalledTimes(1); - expect(setDeleteInstantiation).toHaveBeenCalledTimes(1); - }); - }); -}); diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationOrderStateChangeItem.js b/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationOrderStateChangeItem.js deleted file mode 100644 index 8545943..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationOrderStateChangeItem.js +++ /dev/null @@ -1,113 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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========================================================= - */ - -import React from "react"; -import styled from "styled-components"; - -const UninitialisedBox = styled.div` - margin: 2px -15px; - padding: 8px; - outline: none; - font-size: 16px; - font-weight: normal; - background: #cccccc; - border-radius: 8px; - border: 1px solid #7f7f7f; - - &:focus, &:active, &:after { - outline: none; - border-radius: 8px; - } -` - -const PassiveBox = styled.div` - margin: 2px -15px; - padding: 8px; - outline: none; - font-size: 16px; - font-weight: normal; - background: #ffe87c; - border-radius: 8px; - border: 1px solid #7f7f7f; - - &:focus, &:active, &:after { - outline: none; - border-radius: 8px; - } -` - -const RunningBox = styled.div` - margin: 2px -15px; - padding: 8px; - outline: none; - font-size: 16px; - font-weight: normal; - background: #7ec699; - border-radius: 8px; - border: 1px solid #7f7f7f; - - &:focus, &:active, &:after { - outline: none; - border-radius: 8px; - } -` - -const InstantiationOrderStateChangeItem = (props) => { - - const renderOrderStateItem = () => { - console.log("renderOrderStateItem called"); - switch (props.orderState) { - case 'UNINITIALISED': - console.log("called UNINITIALISED"); - return renderUninitialisedOrderedState(); - case 'PASSIVE': - console.log("called PASSIVE"); - return renderPassiveOrderedState(); - case 'RUNNING': - console.log("called RUNNING"); - return renderRunningOrderedState(); - } - } - - const renderUninitialisedOrderedState = () => { - return ( - { props.title } - ) - } - - const renderPassiveOrderedState = () => { - return ( - { props.title } - ) - } - - const renderRunningOrderedState = () => { - return ( - { props.title } - ) - } - - return ( - - { renderOrderStateItem() } - - ); -} - -export default InstantiationOrderStateChangeItem; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationOrderStateChangeItem.test.js b/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationOrderStateChangeItem.test.js deleted file mode 100644 index 3981ea5..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/InstantiationOrderStateChangeItem.test.js +++ /dev/null @@ -1,51 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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========================================================= - */ - -import React from 'react'; -import { mount, shallow } from 'enzyme'; -import toJson from "enzyme-to-json"; -import InstantiationOrderStateChangeItem from "./InstantiationOrderStateChangeItem"; -import CommissioningUtils from "./utils/CommissioningUtils"; - -describe('Verify InstantiationOrderStateChangeItem', () => { - - it("renders without crashing", () => { - shallow(); - }); - - it("renders correctly", () => { - const tree = shallow(); - expect(toJson(tree)).toMatchSnapshot(); - }); - - it("renders correctly when orderState is uninitialized", () => { - const tree = shallow(); - expect(toJson(tree)).toMatchSnapshot(); - }); - - it("renders correctly when orderState is passive", () => { - const tree = shallow(); - expect(toJson(tree)).toMatchSnapshot(); - }); - - it("renders correctly when orderState is running", () => { - const tree = shallow(); - expect(toJson(tree)).toMatchSnapshot(); - }); -}); diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/MonitorInstantiation.js b/gui-clamp/ui-react/src/components/dialogs/ACM/MonitorInstantiation.js deleted file mode 100644 index 5699b56..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/MonitorInstantiation.js +++ /dev/null @@ -1,85 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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========================================================= - */ - -import React, { useEffect, useState } from "react"; -import styled from "styled-components"; -import Modal from "react-bootstrap/Modal"; -import Button from "react-bootstrap/Button"; -import InstantiationItem from "./InstantiationItem"; -import ACMService from "../../../api/ACMService"; -import InstantiationElements from "./InstantiationElements"; -import { Alert } from "react-bootstrap"; - -const ModalStyled = styled(Modal)` - background-color: transparent; -` -const AlertStyled = styled(Alert)` - margin-top: 10px; -` - -const MonitorInstantiation = (props) => { - const [show, setShow] = useState(true); - const [acmList, setAcmList] = useState([]); - const [acmInstantiationOk, setAcmInstantiationOk] = useState(true); - const [acmInstantiationError, setACMInstantiationError] = useState({}); - - useEffect(async () => { - const acmInstantiation = await ACMService.getACMInstantiation() - .catch(error => error.message); - - const acmInstantiationJson = await acmInstantiation.json(); - - if (!acmInstantiation.ok || acmInstantiationJson['automationCompositionList'].length === 0) { - setAcmInstantiationOk(false) - setACMInstantiationError(acmInstantiationJson) - } else { - setAcmList(acmInstantiationJson['automationCompositionList']); - } - }, []) - - const handleClose = () => { - console.log('handleClose called'); - setShow(false); - props.history.push('/'); - } - - return ( - - - Tosca Instantiation - Monitoring - - - { - acmList.map((clList, index) => ( - - - - )) - } - Can't get acm instantiation info:
{ JSON.stringify(acmInstantiationError, null, 2) }
-
- - - -
- ) -} - -export default MonitorInstantiation; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/MonitorInstantiation.test.js b/gui-clamp/ui-react/src/components/dialogs/ACM/MonitorInstantiation.test.js deleted file mode 100644 index 5923f10..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/MonitorInstantiation.test.js +++ /dev/null @@ -1,93 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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========================================================= - */ - -import React from "react"; -import { mount, shallow } from "enzyme"; -import toJson from "enzyme-to-json"; -import { act } from "react-dom/test-utils"; -import { createMemoryHistory } from "history"; -import MonitorInstantiation from "./MonitorInstantiation"; -import ACMService from "../../../api/ACMService"; -import clLoopList from "./testFiles/acmList.json"; - -const logSpy = jest.spyOn(console, 'log') -const history = createMemoryHistory(); - -describe('Verify MonitorInstantiation', () => { - const flushPromises = () => new Promise(setImmediate); - - beforeEach(() => { - logSpy.mockClear(); - }); - - it("renders correctly", () => { - const container = shallow(); - expect(toJson(container)).toMatchSnapshot(); - }); - - it('should have a Button element', () => { - const container = shallow(); - expect(container.find('Button').length).toEqual(1); - }); - - it('handleClose called when bottom button clicked', () => { - const container = shallow(); - const logSpy = jest.spyOn(console, 'log'); - - act(() => { - container.find('[variant="secondary"]').simulate('click'); - expect(logSpy).toHaveBeenCalledWith('handleClose called'); - }); - }); - - it('handleClose called when top-right button clicked', () => { - const container = shallow(); - const logSpy = jest.spyOn(console, 'log'); - - act(() => { - container.find('[size="xl"]').get(0).props.onHide(); - expect(logSpy).toHaveBeenCalledWith('handleClose called'); - }); - }); - - it('Check useEffect is being called', async () => { - jest.resetAllMocks(); - jest.spyOn(ACMService, 'getACMInstantiation') - .mockImplementationOnce(async () => { - return Promise.resolve({ - ok: true, - status: 200, - text: () => "OK", - json: () => { - return Promise.resolve(clLoopList); - } - }); - }); - - const component = mount(); - const useEffect = jest.spyOn(React, "useEffect"); - - await act(async () => { - await flushPromises() - component.update(); - await expect(useEffect).toHaveBeenCalled(); - }); - component.unmount(); - }); -}); diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/ReadAndConvertYaml.js b/gui-clamp/ui-react/src/components/dialogs/ACM/ReadAndConvertYaml.js deleted file mode 100644 index 5fc97c4..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/ReadAndConvertYaml.js +++ /dev/null @@ -1,132 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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========================================================= - */ - -import React, { useState } from "react"; -import GetToscaTemplate from "./GetToscaTemplate"; -import Modal from "react-bootstrap/Modal"; -import Button from "react-bootstrap/Button"; -import { Alert } from "react-bootstrap"; - -import styled from 'styled-components'; -import DeleteToscaTemplate from "./DeleteToscaTemplate"; - -const ModalStyled = styled(Modal)` - background-color: transparent; -` - -const AlertStyled = styled(Alert)` - margin-top: 10px; -` - -const PreStyled = styled.pre` - color: #7F0055; - overflow: auto; - max-height: 70vh; - margin-top: 10px; -` - -const ReadAndConvertYaml = (props) => { - const [show, setShow] = useState(true); - const [toscaTemplateData, setToscaTemplateData] = useState(); - const [deleteToscaTemplateData, setDeleteToscaTemplateData] = useState(null); - const [responseOk, setResponseOk] = useState(true); - const [deleteResponseOk, setDeleteResponseOk] = useState(true); - const [showDeleteButton, setShowDeleteButton] = useState(false); - const name = 'ToscaServiceTemplateSimple'; - const version = '1.0.0'; - - const handleClose = () => { - console.log('handleClose called'); - setShow(false); - props.history.push('/'); - } - - const getToscaServiceTemplateHandler = async (toscaServiceTemplateResponse) => { - - if (!toscaServiceTemplateResponse.ok) { - console.log('Response is not ok'); - setResponseOk(false); - const toscaData = await toscaServiceTemplateResponse.json(); - setToscaTemplateData(toscaData); - } else { - setResponseOk(true); - console.log('Response is ok'); - const toscaData = await toscaServiceTemplateResponse.json(); - setToscaTemplateData(toscaData); - setShowDeleteButton(true) - } - } - - const deleteToscaServiceTemplateHandler = async (deleteToscaServiceTemplateResponse) => { - - if (!deleteToscaServiceTemplateResponse.ok) { - setShowDeleteButton(false) - console.log('Delete response not ok'); - setDeleteResponseOk(false); - const deleteToscaData = await deleteToscaServiceTemplateResponse.json(); - console.log(deleteToscaData) - setDeleteToscaTemplateData(deleteToscaData); - } else { - setShowDeleteButton(false) - setDeleteResponseOk(true); - const deleteToscaData = await deleteToscaServiceTemplateResponse.json(); - setDeleteToscaTemplateData(null) - setDeleteToscaTemplateData(deleteToscaData); - setShowDeleteButton(false); - } - } - - return ( - - - View Tosca Template - - - - { responseOk && { JSON.stringify(toscaTemplateData, null, 2) } } - { JSON.stringify(toscaTemplateData, null, 2) } - { showDeleteButton && - - } - { JSON.stringify(deleteToscaTemplateData, null, 2) } -

Delete Successful

{ JSON.stringify(deleteToscaTemplateData, null, 2) }
-
- - - -
- ); -} -; - -export default ReadAndConvertYaml; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/ReadAndConvertYaml.test.js b/gui-clamp/ui-react/src/components/dialogs/ACM/ReadAndConvertYaml.test.js deleted file mode 100644 index 03192a1..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/ReadAndConvertYaml.test.js +++ /dev/null @@ -1,252 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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========================================================= - */ - -import React from 'react'; -import { mount, shallow } from 'enzyme'; -import ReadAndConvertYaml from './ReadAndConvertYaml'; -import GetToscaTemplate from "./GetToscaTemplate"; -import toJson from "enzyme-to-json"; -import { act } from "react-dom/test-utils"; -import { createMemoryHistory } from "history"; - -let logSpy = jest.spyOn(console, 'log') -describe('Verify ReadAndConvertYaml', () => { - - const unmockedFetch = global.fetch - - const flushPromises = () => new Promise(setImmediate); - - beforeAll(() => { - global.fetch = () => - Promise.resolve({ - ok: true, - status: 200, - text: () => "OK", - json: () => Promise.resolve({ - "tosca_definitions_version": "tosca_simple_yaml_1_1_0", - "data_types": {}, - "policy_types": {}, - "topology_template": {}, - "name": "ToscaServiceTemplateSimple", - "version": "1.0.0", - "metadata": {}, - "id": "0.19518677404255147" - }) - }) - }) - - beforeEach(() => { - logSpy.mockClear() - }) - - afterAll(() => { - global.fetch = unmockedFetch - }) - - it("renders without crashing", () => { - shallow(); - }); - - it("renders correctly", () => { - const tree = shallow(); - expect(toJson(tree)).toMatchSnapshot(); - }); - - it('should have a GetToscaTemplate element', () => { - const container = shallow() - expect(container.find('GetToscaTemplate').length).toEqual(1); - }); - - it('should call getToscaServiceTemplateHandler on click', async () => { - const component = mount(); - - await act(async () => { - component.find('GetToscaTemplate').simulate('click'); - await flushPromises() - component.update() - await expect(logSpy).toHaveBeenCalledWith('getToscaServiceTemplateHandler called'); - }); - component.unmount() - }); - - it('should make unsuccessful call getToscaServiceTemplateHandler on click', async () => { - jest - .spyOn(global, 'fetch') - .mockImplementationOnce(async () => - Promise.resolve({ - ok: false, - status: 200, - json: () => { - return Promise.resolve({ - "tosca_definitions_version": "tosca_simple_yaml_1_1_0", - "data_types": {}, - "policy_types": {}, - "topology_template": {}, - "name": "ToscaServiceTemplateSimple", - "version": "1.0.0", - "metadata": {}, - "id": "0.19518677404255147" - }) - } - } - ) - ) - const component = mount(); - - await act(async () => { - component.find('GetToscaTemplate').simulate('click'); - await flushPromises() - component.update() - expect(logSpy).toHaveBeenCalledWith('getToscaServiceTemplateHandler called with error'); - }); - component.unmount(); - }); - - it('should make unsuccessful call deleteToscaServiceTemplateHandler on click', async () => { - jest - .spyOn(global, 'fetch') - .mockImplementationOnce(() => - Promise.resolve({ - ok: true, - status: 200, - json: () => { - return Promise.resolve({ - "tosca_definitions_version": "tosca_simple_yaml_1_1_0", - "data_types": {}, - "policy_types": {}, - "topology_template": {}, - "name": "ToscaServiceTemplateSimple", - "version": "1.0.0", - "metadata": {}, - "id": "0.19518677404255147" - }) - } - } - ) - ) - const component = mount(); - - await act(async () => { - component.find('GetToscaTemplate').simulate('click'); - await flushPromises() - component.update() - component.find('DeleteToscaTemplate').simulate('click'); - await flushPromises() - component.update() - expect(logSpy).toHaveBeenCalledWith('deleteTemplateHandler called'); - }); - - component.unmount() - }); - - it('should make unsuccessful call deleteToscaServiceTemplateHandler on click', async () => { - const realUseState = React.useState - const stubInitialState = [true] - - const useStateSpy = jest.spyOn(React, 'useState') - useStateSpy.mockImplementationOnce(() => realUseState(stubInitialState)); - - jest - .spyOn(global, 'fetch') - .mockImplementationOnce(() => - Promise.resolve({ - ok: true, - status: 200, - json: () => { - return Promise.resolve({ - "tosca_definitions_version": "tosca_simple_yaml_1_1_0", - "data_types": {}, - "policy_types": {}, - "topology_template": {}, - "name": "ToscaServiceTemplateSimple", - "version": "1.0.0", - "metadata": {}, - "id": "0.19518677404255147" - }) - } - } - ) - ) - const component = mount(); - - - await act(async () => { - component.find('GetToscaTemplate').simulate('click'); - await flushPromises() - component.update() - }); - - jest - .spyOn(global, 'fetch') - .mockImplementationOnce(() => - Promise.resolve({ - ok: false, - status: 200, - json: () => { - return Promise.resolve({ - "tosca_definitions_version": "tosca_simple_yaml_1_1_0", - "data_types": {}, - "policy_types": {}, - "topology_template": {}, - "name": "ToscaServiceTemplateSimple", - "version": "1.0.0", - "metadata": {}, - "id": "0.19518677404255147" - }) - } - } - ) - ) - - await act(async () => { - component.find('DeleteToscaTemplate').simulate('click'); - await flushPromises() - component.update() - expect(logSpy).toHaveBeenCalledWith('deleteTemplateHandler called with error'); - }); - component.unmount() - }); - - it('handleClose called when bottom button clicked', () => { - const history = createMemoryHistory(); - const component = mount() - - - act(() => { - component.find('[variant="secondary"]').simulate('click'); - expect(logSpy).toHaveBeenCalledWith('handleClose called'); - }); - component.unmount() - }); - - it('handleClose called when top-right button clicked', async () => { - const history = createMemoryHistory(); - const component = mount() - const logSpy = jest.spyOn(console, 'log'); - - - await act(async () => { - component.find('[size="xl"]').get(0).props.onHide(); - await flushPromises() - component.update() - expect(logSpy).toHaveBeenCalledWith('handleClose called'); - }); - component.unmount() - }); -}); diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/UploadToscaFile.js b/gui-clamp/ui-react/src/components/dialogs/ACM/UploadToscaFile.js deleted file mode 100644 index 4357a9f..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/UploadToscaFile.js +++ /dev/null @@ -1,52 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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========================================================= - */ - -import Button from "react-bootstrap/Button"; -import React, { useState } from "react"; -import ACMService from "../../../api/ACMService"; - -const UploadToscaFile = (props) => { - - const postServiceTemplateHandler = async (event) => { - event.preventDefault(); - console.log('postServiceTemplateHandler called'); - - const response = await ACMService.uploadToscaFile(props.toscaObject) - .catch(error => error.message); - - // const responseMessage = await response.text(); - - props.onResponseReceived(response); - - } - - return ( - - - - ); - -}; - -export default UploadToscaFile; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/UploadToscaFile.test.js b/gui-clamp/ui-react/src/components/dialogs/ACM/UploadToscaFile.test.js deleted file mode 100644 index 520eea9..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/UploadToscaFile.test.js +++ /dev/null @@ -1,61 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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========================================================= - */ - -import React from 'react'; -import { mount, shallow } from 'enzyme'; -import UploadToscaFile from './UploadToscaFile'; -import toJson from "enzyme-to-json"; -import { act } from "react-dom/test-utils"; - -describe('Verify UploadToscaFile', () => { - - it("renders without crashing", () => { - shallow(); - }); - - it("renders correctly", () => { - const tree = shallow(); - expect(toJson(tree)).toMatchSnapshot(); - }); - - it('should have a Button element', () => { - const container = shallow() - expect(container.find('Button').length).toEqual(1); - }); - - it('button should call postServiceTemplateHandler when clicked', async () => { - const component = mount() - const logSpy = jest.spyOn(console, 'log'); - const event = { - preventDefault() { - } - }; - - await act(() => { - component.find('[variant="primary"]').get(0).props.onClick(event); - expect(logSpy).toHaveBeenCalledWith('postServiceTemplateHandler called'); - }) - - }); - - it('should have a Button element with specified text', () => { - const container = shallow() - expect(container.find('Button').text()).toBe('Upload Tosca Service Template'); - }); -}); diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/AccordionHeader.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/AccordionHeader.test.js.snap deleted file mode 100644 index da86eb7..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/AccordionHeader.test.js.snap +++ /dev/null @@ -1,211 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify AccordionHeader renders correctly 1`] = ` - - - -`; - -exports[`Verify AccordionHeader renders correctly when orderState is passive 1`] = ` - - - PASSIVE_TEST - - -`; - -exports[`Verify AccordionHeader renders correctly when orderState is running 1`] = ` - - - RUNNING_TEST - - -`; - -exports[`Verify AccordionHeader renders correctly when orderState is uninitialized 1`] = ` - - - UNINITIALISED_TEST - - -`; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/ChangeOrderStateModal.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/ChangeOrderStateModal.test.js.snap deleted file mode 100644 index 478b886..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/ChangeOrderStateModal.test.js.snap +++ /dev/null @@ -1,114 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify ChangeOrderStateModal renders correctly 1`] = ` - - - - Manage Instantiation - - -
- - - - - Select Order State - - - - UNINITIALISED - - - PASSIVE - - - RUNNING - - - - - - Can't get instantiation ordered state: -
- {} -
-
- -
- - - - -
-`; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/CommissioningModal.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/CommissioningModal.test.js.snap deleted file mode 100644 index 4ff976a..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/CommissioningModal.test.js.snap +++ /dev/null @@ -1,77 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify CommissioningModal renders correctly 1`] = ` - - - - Change ACM Common Properties - - -
-
- -
- - Can't get service template: -
- {} -
- - Can't get common properties: -
- {} -
- -
- - - - - - - -`; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/DeleteToscaTemplate.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/DeleteToscaTemplate.test.js.snap deleted file mode 100644 index cd2288e..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/DeleteToscaTemplate.test.js.snap +++ /dev/null @@ -1,20 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify DeleteToscaTemplate renders correctly 1`] = ` - - - -`; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/GetLocalToscaFileForUpload.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/GetLocalToscaFileForUpload.test.js.snap deleted file mode 100644 index 84168fd..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/GetLocalToscaFileForUpload.test.js.snap +++ /dev/null @@ -1,103 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify GetLocalToscaFileForUpload renders correctly 1`] = ` - - - - Upload Tosca to Commissioning API - - -
-
- -
- - - - Only .yaml, .yml and .json files are supported - - - - - - - - -
-
-
- - - -
-`; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/GetToscaTemplate.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/GetToscaTemplate.test.js.snap deleted file mode 100644 index 873afa7..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/GetToscaTemplate.test.js.snap +++ /dev/null @@ -1,15 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify GetToscaTemplate renders correctly 1`] = ` - - - -`; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/InstancePropertiesModal.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/InstancePropertiesModal.test.js.snap deleted file mode 100644 index 4791083..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/InstancePropertiesModal.test.js.snap +++ /dev/null @@ -1,105 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify InstancePropertiesModal renders correctly 1`] = ` - - - - Create - Tosca Instance Properties - - -
- - - - Instance Name: - - - -
- - Can't get service template: -
- {} -
- - Can't get instance properties: -
- {} -
- - -
- - - - - -`; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/InstantiationElementItem.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/InstantiationElementItem.test.js.snap deleted file mode 100644 index 81f5f26..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/InstantiationElementItem.test.js.snap +++ /dev/null @@ -1,9 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify InstantiationElementItem renders correctly 1`] = ``; - -exports[`Verify InstantiationElementItem renders correctly when orderState is passive 1`] = ``; - -exports[`Verify InstantiationElementItem renders correctly when orderState is running 1`] = ``; - -exports[`Verify InstantiationElementItem renders correctly when orderState is uninitialized 1`] = ``; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/InstantiationElements.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/InstantiationElements.test.js.snap deleted file mode 100644 index 8fa928e..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/InstantiationElements.test.js.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify InstantiationElements renders correctly 1`] = ``; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/InstantiationItem.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/InstantiationItem.test.js.snap deleted file mode 100644 index a3a230a..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/InstantiationItem.test.js.snap +++ /dev/null @@ -1,26 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify InstantiationItem renders correctly 1`] = ` - - - - - - - - -`; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/InstantiationManagementModal.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/InstantiationManagementModal.test.js.snap deleted file mode 100644 index b800f52..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/InstantiationManagementModal.test.js.snap +++ /dev/null @@ -1,155 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify Instantiation Management renders correctly 1`] = ` - - - - Manage Instances - - - - - - - - - - - - - - - - - - - # - - - Instantiation Name - - - Edit Instantiation - - - Delete Instantiation - - - Change Order State - - - Instantiation Order State - - - Instantiation Current State - - - - - - - - - - - - -`; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/InstantiationOrderStateChangeItem.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/InstantiationOrderStateChangeItem.test.js.snap deleted file mode 100644 index bbf92ca..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/InstantiationOrderStateChangeItem.test.js.snap +++ /dev/null @@ -1,27 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify InstantiationOrderStateChangeItem renders correctly 1`] = ``; - -exports[`Verify InstantiationOrderStateChangeItem renders correctly when orderState is passive 1`] = ` - - - PASSIVE_TEST - - -`; - -exports[`Verify InstantiationOrderStateChangeItem renders correctly when orderState is running 1`] = ` - - - RUNNING_TEST - - -`; - -exports[`Verify InstantiationOrderStateChangeItem renders correctly when orderState is uninitialized 1`] = ` - - - UNINITIALISED_TEST - - -`; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/MonitorInstantiation.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/MonitorInstantiation.test.js.snap deleted file mode 100644 index 2b07252..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/MonitorInstantiation.test.js.snap +++ /dev/null @@ -1,41 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify MonitorInstantiation renders correctly 1`] = ` - - - - Tosca Instantiation - Monitoring - - - - - Can't get acm instantiation info: -
- {} -
-
- - - -
-`; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/ReadAndConvertYaml.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/ReadAndConvertYaml.test.js.snap deleted file mode 100644 index 76739f3..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/ReadAndConvertYaml.test.js.snap +++ /dev/null @@ -1,63 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify ReadAndConvertYaml renders correctly 1`] = ` - - - - View Tosca Template - - - - - - - - - - - null - - -

- Delete Successful -

- - null - -
-
- - - -
-`; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/UploadToscaFile.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/UploadToscaFile.test.js.snap deleted file mode 100644 index a1ae439..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/__snapshots__/UploadToscaFile.test.js.snap +++ /dev/null @@ -1,16 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify UploadToscaFile renders correctly 1`] = ` - - - -`; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/testFiles/acmList.json b/gui-clamp/ui-react/src/components/dialogs/ACM/testFiles/acmList.json deleted file mode 100644 index f854d90..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/testFiles/acmList.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "automationCompositionList": [ - { - "name": "PMSHInstance0", - "version": "1.0.1", - "definition": { - "name": "org.onap.domain.pmsh.PMSHControlLoopDefinition", - "version": "1.2.3" - }, - "state": "UNINITIALISED", - "orderedState": "UNINITIALISED", - "description": "PMSH control loop instance 0", - "elements": { - "709c62b3-8918-41b9-a747-d21eb79c6c20": { - "id": "709c62b3-8918-41b9-a747-d21eb79c6c20", - "definition": { - "name": "org.onap.domain.pmsh.PMSH_DCAEMicroservice", - "version": "1.2.3" - }, - "participantType": { - "name": "org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant", - "version": "2.3.4" - }, - "state": "UNINITIALISED", - "orderedState": "UNINITIALISED", - "description": "DCAE Control Loop Element for the PMSH instance 0 control loop" - }, - "709c62b3-8918-41b9-a747-d21eb79c6c21": { - "id": "709c62b3-8918-41b9-a747-d21eb79c6c21", - "definition": { - "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement", - "version": "1.2.3" - }, - "participantType": { - "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant", - "version": "2.3.1" - }, - "state": "UNINITIALISED", - "orderedState": "UNINITIALISED", - "description": "Monitoring Policy Control Loop Element for the PMSH instance 0 control loop" - }, - "709c62b3-8918-41b9-a747-d21eb79c6c22": { - "id": "709c62b3-8918-41b9-a747-d21eb79c6c22", - "definition": { - "name": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement", - "version": "1.2.3" - }, - "participantType": { - "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant", - "version": "2.3.1" - }, - "state": "UNINITIALISED", - "orderedState": "UNINITIALISED", - "description": "Operational Policy Control Loop Element for the PMSH instance 0 control loop" - } - } - } - ] -} diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/testFiles/commonProps.json b/gui-clamp/ui-react/src/components/dialogs/ACM/testFiles/commonProps.json deleted file mode 100644 index 71f98f8..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/testFiles/commonProps.json +++ /dev/null @@ -1,1444 +0,0 @@ -{ - "org.onap.domain.database.Http_PMSHMicroserviceControlLoopElement": { - "name": "org.onap.domain.database.Http_PMSHMicroserviceControlLoopElement", - "version": "1.2.3", - "derivedFrom": null, - "metadata": {}, - "description": "Control loop element for the http requests of PMSH microservice", - "type": "org.onap.policy.clamp.controlloop.HttpControlLoopElement", - "typeVersion": "1.0.1", - "properties": { - "provider": { - "name": "provider", - "type": "string", - "typeVersion": "0.0.0", - "description": "Specifies the organization that provides the control loop element", - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "passiveToUninitializedTimeout": { - "name": "passiveToUninitializedTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to uninitialized", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "participant_id": { - "name": "participant_id", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": null, - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "participantType": { - "name": "participantType", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": "The identity of the participant type that hosts this type of Control Loop Element", - "defaultValue": null, - "required": true, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "uninitializedToPassiveTimeout": { - "name": "uninitializedToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from uninitialized to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "startPhase": { - "name": "startPhase", - "type": "integer", - "typeVersion": "0.0.0", - "description": "A value indicating the start phase in which this control loop element will be started, the first start phase is zero. Control Loop Elements are started in their start_phase order and stopped in reverse start phase order. Control Loop Elements with the same start phase are started and stopped simultaneously", - "defaultValue": null, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "runningToPassiveTimeout": { - "name": "runningToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from running to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "passiveToRunningTimeout": { - "name": "passiveToRunningTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to running", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - } - }, - "requirements": null, - "capabilities": null, - "identifier": { - "name": "org.onap.domain.database.Http_PMSHMicroserviceControlLoopElement", - "version": "1.2.3" - }, - "typeIdentifier": { - "name": "org.onap.policy.clamp.controlloop.HttpControlLoopElement", - "version": "1.0.1" - }, - "key": { - "name": "org.onap.domain.database.Http_PMSHMicroserviceControlLoopElement", - "version": "1.2.3" - }, - "definedName": "org.onap.domain.database.Http_PMSHMicroserviceControlLoopElement", - "definedVersion": "1.2.3" - }, - "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement": { - "name": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement", - "version": "1.2.3", - "derivedFrom": null, - "metadata": {}, - "description": "Control loop element for the operational policy for Performance Management Subscription Handling", - "type": "org.onap.policy.clamp.controlloop.PolicyControlLoopElement", - "typeVersion": "1.0.0", - "properties": { - "provider": { - "name": "provider", - "type": "string", - "typeVersion": "0.0.0", - "description": "Specifies the organization that provides the control loop element", - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "passiveToUninitializedTimeout": { - "name": "passiveToUninitializedTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to uninitialized", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "participant_id": { - "name": "participant_id", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": null, - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "participantType": { - "name": "participantType", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": "The identity of the participant type that hosts this type of Control Loop Element", - "defaultValue": null, - "required": true, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "uninitializedToPassiveTimeout": { - "name": "uninitializedToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from uninitialized to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "startPhase": { - "name": "startPhase", - "type": "integer", - "typeVersion": "0.0.0", - "description": "A value indicating the start phase in which this control loop element will be started, the first start phase is zero. Control Loop Elements are started in their start_phase order and stopped in reverse start phase order. Control Loop Elements with the same start phase are started and stopped simultaneously", - "defaultValue": null, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "runningToPassiveTimeout": { - "name": "runningToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from running to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "passiveToRunningTimeout": { - "name": "passiveToRunningTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to running", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - } - }, - "requirements": null, - "capabilities": null, - "identifier": { - "name": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement", - "version": "1.2.3" - }, - "typeIdentifier": { - "name": "org.onap.policy.clamp.controlloop.PolicyControlLoopElement", - "version": "1.0.0" - }, - "key": { - "name": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement", - "version": "1.2.3" - }, - "definedName": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement", - "definedVersion": "1.2.3" - }, - "org.onap.domain.database.Local_K8SMicroserviceControlLoopElement": { - "name": "org.onap.domain.database.Local_K8SMicroserviceControlLoopElement", - "version": "1.2.3", - "derivedFrom": null, - "metadata": {}, - "description": "Control loop element for the K8S microservice for local chart", - "type": "org.onap.policy.clamp.controlloop.K8SMicroserviceControlLoopElement", - "typeVersion": "1.0.0", - "properties": { - "provider": { - "name": "provider", - "type": "string", - "typeVersion": "0.0.0", - "description": "Specifies the organization that provides the control loop element", - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "passiveToUninitializedTimeout": { - "name": "passiveToUninitializedTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to uninitialized", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "participant_id": { - "name": "participant_id", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": null, - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "participantType": { - "name": "participantType", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": "The identity of the participant type that hosts this type of Control Loop Element", - "defaultValue": null, - "required": true, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "uninitializedToPassiveTimeout": { - "name": "uninitializedToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from uninitialized to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "startPhase": { - "name": "startPhase", - "type": "integer", - "typeVersion": "0.0.0", - "description": "A value indicating the start phase in which this control loop element will be started, the first start phase is zero. Control Loop Elements are started in their start_phase order and stopped in reverse start phase order. Control Loop Elements with the same start phase are started and stopped simultaneously", - "defaultValue": null, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "runningToPassiveTimeout": { - "name": "runningToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from running to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "passiveToRunningTimeout": { - "name": "passiveToRunningTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to running", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - } - }, - "requirements": null, - "capabilities": null, - "identifier": { - "name": "org.onap.domain.database.Local_K8SMicroserviceControlLoopElement", - "version": "1.2.3" - }, - "typeIdentifier": { - "name": "org.onap.policy.clamp.controlloop.K8SMicroserviceControlLoopElement", - "version": "1.0.0" - }, - "key": { - "name": "org.onap.domain.database.Local_K8SMicroserviceControlLoopElement", - "version": "1.2.3" - }, - "definedName": "org.onap.domain.database.Local_K8SMicroserviceControlLoopElement", - "definedVersion": "1.2.3" - }, - "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement": { - "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement", - "version": "1.2.3", - "derivedFrom": null, - "metadata": {}, - "description": "Control loop element for the monitoring policy for Performance Management Subscription Handling", - "type": "org.onap.policy.clamp.controlloop.PolicyControlLoopElement", - "typeVersion": "1.0.0", - "properties": { - "provider": { - "name": "provider", - "type": "string", - "typeVersion": "0.0.0", - "description": "Specifies the organization that provides the control loop element", - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "passiveToUninitializedTimeout": { - "name": "passiveToUninitializedTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to uninitialized", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "participant_id": { - "name": "participant_id", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": null, - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "participantType": { - "name": "participantType", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": "The identity of the participant type that hosts this type of Control Loop Element", - "defaultValue": null, - "required": true, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "uninitializedToPassiveTimeout": { - "name": "uninitializedToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from uninitialized to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "startPhase": { - "name": "startPhase", - "type": "integer", - "typeVersion": "0.0.0", - "description": "A value indicating the start phase in which this control loop element will be started, the first start phase is zero. Control Loop Elements are started in their start_phase order and stopped in reverse start phase order. Control Loop Elements with the same start phase are started and stopped simultaneously", - "defaultValue": null, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "runningToPassiveTimeout": { - "name": "runningToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from running to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "passiveToRunningTimeout": { - "name": "passiveToRunningTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to running", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - } - }, - "requirements": null, - "capabilities": null, - "identifier": { - "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement", - "version": "1.2.3" - }, - "typeIdentifier": { - "name": "org.onap.policy.clamp.controlloop.PolicyControlLoopElement", - "version": "1.0.0" - }, - "key": { - "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement", - "version": "1.2.3" - }, - "definedName": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement", - "definedVersion": "1.2.3" - }, - "org.onap.domain.pmsh.DerivedDerivedPolicyControlLoopElement": { - "name": "org.onap.domain.pmsh.DerivedDerivedPolicyControlLoopElement", - "version": "1.2.3", - "derivedFrom": null, - "metadata": {}, - "description": "Control loop for Performance Management Subscription Handling", - "type": "org.onap.policy.clamp.controlloop.DerivedDerivedPolicyControlLoopElement", - "typeVersion": "1.0.0", - "properties": { - "provider": { - "name": "provider", - "type": "string", - "typeVersion": "0.0.0", - "description": "Specifies the organization that provides the control loop element", - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "passiveToUninitializedTimeout": { - "name": "passiveToUninitializedTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to uninitialized", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "participant_id": { - "name": "participant_id", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": null, - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "participantType": { - "name": "participantType", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": "The identity of the participant type that hosts this type of Control Loop Element", - "defaultValue": null, - "required": true, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "uninitializedToPassiveTimeout": { - "name": "uninitializedToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from uninitialized to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "startPhase": { - "name": "startPhase", - "type": "integer", - "typeVersion": "0.0.0", - "description": "A value indicating the start phase in which this control loop element will be started, the first start phase is zero. Control Loop Elements are started in their start_phase order and stopped in reverse start phase order. Control Loop Elements with the same start phase are started and stopped simultaneously", - "defaultValue": null, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "runningToPassiveTimeout": { - "name": "runningToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from running to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "passiveToRunningTimeout": { - "name": "passiveToRunningTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to running", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - } - }, - "requirements": null, - "capabilities": null, - "identifier": { - "name": "org.onap.domain.pmsh.DerivedDerivedPolicyControlLoopElement", - "version": "1.2.3" - }, - "typeIdentifier": { - "name": "org.onap.policy.clamp.controlloop.DerivedDerivedPolicyControlLoopElement", - "version": "1.0.0" - }, - "key": { - "name": "org.onap.domain.pmsh.DerivedDerivedPolicyControlLoopElement", - "version": "1.2.3" - }, - "definedName": "org.onap.domain.pmsh.DerivedDerivedPolicyControlLoopElement", - "definedVersion": "1.2.3" - }, - "org.onap.domain.sample.GenericK8s_ControlLoopDefinition": { - "name": "org.onap.domain.sample.GenericK8s_ControlLoopDefinition", - "version": "1.2.3", - "derivedFrom": null, - "metadata": {}, - "description": "Control loop for Hello World", - "type": "org.onap.policy.clamp.controlloop.ControlLoop", - "typeVersion": "1.0.0", - "properties": { - "provider": { - "name": "provider", - "type": "string", - "typeVersion": "0.0.0", - "description": "Specifies the organization that provides the control loop element", - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "elements": { - "name": "elements", - "type": "list", - "typeVersion": "0.0.0", - "description": "Specifies a list of control loop element definitions that make up this control loop definition", - "defaultValue": null, - "required": true, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": { - "name": null, - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": null, - "constraints": null - }, - "metadata": { - "common": "true" - } - } - }, - "requirements": null, - "capabilities": null, - "identifier": { - "name": "org.onap.domain.sample.GenericK8s_ControlLoopDefinition", - "version": "1.2.3" - }, - "typeIdentifier": { - "name": "org.onap.policy.clamp.controlloop.ControlLoop", - "version": "1.0.0" - }, - "key": { - "name": "org.onap.domain.sample.GenericK8s_ControlLoopDefinition", - "version": "1.2.3" - }, - "definedName": "org.onap.domain.sample.GenericK8s_ControlLoopDefinition", - "definedVersion": "1.2.3" - }, - "org.onap.domain.database.PMSH_K8SMicroserviceControlLoopElement": { - "name": "org.onap.domain.database.PMSH_K8SMicroserviceControlLoopElement", - "version": "1.2.3", - "derivedFrom": null, - "metadata": {}, - "description": "Control loop element for the K8S microservice for PMSH", - "type": "org.onap.policy.clamp.controlloop.K8SMicroserviceControlLoopElement", - "typeVersion": "1.0.0", - "properties": { - "provider": { - "name": "provider", - "type": "string", - "typeVersion": "0.0.0", - "description": "Specifies the organization that provides the control loop element", - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "passiveToUninitializedTimeout": { - "name": "passiveToUninitializedTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to uninitialized", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "participant_id": { - "name": "participant_id", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": null, - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "participantType": { - "name": "participantType", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": "The identity of the participant type that hosts this type of Control Loop Element", - "defaultValue": null, - "required": true, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "uninitializedToPassiveTimeout": { - "name": "uninitializedToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from uninitialized to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "startPhase": { - "name": "startPhase", - "type": "integer", - "typeVersion": "0.0.0", - "description": "A value indicating the start phase in which this control loop element will be started, the first start phase is zero. Control Loop Elements are started in their start_phase order and stopped in reverse start phase order. Control Loop Elements with the same start phase are started and stopped simultaneously", - "defaultValue": null, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "runningToPassiveTimeout": { - "name": "runningToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from running to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "passiveToRunningTimeout": { - "name": "passiveToRunningTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to running", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - } - }, - "requirements": null, - "capabilities": null, - "identifier": { - "name": "org.onap.domain.database.PMSH_K8SMicroserviceControlLoopElement", - "version": "1.2.3" - }, - "typeIdentifier": { - "name": "org.onap.policy.clamp.controlloop.K8SMicroserviceControlLoopElement", - "version": "1.0.0" - }, - "key": { - "name": "org.onap.domain.database.PMSH_K8SMicroserviceControlLoopElement", - "version": "1.2.3" - }, - "definedName": "org.onap.domain.database.PMSH_K8SMicroserviceControlLoopElement", - "definedVersion": "1.2.3" - }, - "org.onap.domain.pmsh.DerivedPolicyControlLoopElement": { - "name": "org.onap.domain.pmsh.DerivedPolicyControlLoopElement", - "version": "1.2.3", - "derivedFrom": null, - "metadata": {}, - "description": "Control loop for Performance Management Subscription Handling", - "type": "org.onap.policy.clamp.controlloop.DerivedPolicyControlLoopElement", - "typeVersion": "1.0.0", - "properties": { - "provider": { - "name": "provider", - "type": "string", - "typeVersion": "0.0.0", - "description": "Specifies the organization that provides the control loop element", - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "passiveToUninitializedTimeout": { - "name": "passiveToUninitializedTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to uninitialized", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "participant_id": { - "name": "participant_id", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": null, - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "participantType": { - "name": "participantType", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": "The identity of the participant type that hosts this type of Control Loop Element", - "defaultValue": null, - "required": true, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "uninitializedToPassiveTimeout": { - "name": "uninitializedToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from uninitialized to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "startPhase": { - "name": "startPhase", - "type": "integer", - "typeVersion": "0.0.0", - "description": "A value indicating the start phase in which this control loop element will be started, the first start phase is zero. Control Loop Elements are started in their start_phase order and stopped in reverse start phase order. Control Loop Elements with the same start phase are started and stopped simultaneously", - "defaultValue": null, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "runningToPassiveTimeout": { - "name": "runningToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from running to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - }, - "passiveToRunningTimeout": { - "name": "passiveToRunningTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to running", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "true" - } - } - }, - "requirements": null, - "capabilities": null, - "identifier": { - "name": "org.onap.domain.pmsh.DerivedPolicyControlLoopElement", - "version": "1.2.3" - }, - "typeIdentifier": { - "name": "org.onap.policy.clamp.controlloop.DerivedPolicyControlLoopElement", - "version": "1.0.0" - }, - "key": { - "name": "org.onap.domain.pmsh.DerivedPolicyControlLoopElement", - "version": "1.2.3" - }, - "definedName": "org.onap.domain.pmsh.DerivedPolicyControlLoopElement", - "definedVersion": "1.2.3" - } -} diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/testFiles/fullTemplate.json b/gui-clamp/ui-react/src/components/dialogs/ACM/testFiles/fullTemplate.json deleted file mode 100644 index 8b77554..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/testFiles/fullTemplate.json +++ /dev/null @@ -1,2194 +0,0 @@ -{ - "policy_types": { - "onap.policies.Monitoring": { - "name": "onap.policies.Monitoring", - "version": "1.0.0", - "derived_from": "tosca.policies.Root", - "metadata": {}, - "description": "a base policy type for all policies that govern monitoring provisioning", - "properties": {}, - "key": { - "name": "onap.policies.Monitoring", - "version": "1.0.0" - }, - "type": null, - "type_version": null, - "defined_name": "onap.policies.Monitoring", - "defined_version": "1.0.0" - }, - "onap.policies.Sirisha": { - "name": "onap.policies.Sirisha", - "version": "1.0.0", - "derived_from": "tosca.policies.Root", - "metadata": {}, - "description": "a base policy type for all policies that govern monitoring provisioning", - "properties": {}, - "key": { - "name": "onap.policies.Sirisha", - "version": "1.0.0" - }, - "type": null, - "type_version": null, - "defined_name": "onap.policies.Sirisha", - "defined_version": "1.0.0" - }, - "onap.policies.controlloop.operational.Common": { - "name": "onap.policies.controlloop.operational.Common", - "version": "1.0.0", - "derived_from": "tosca.policies.Root", - "metadata": {}, - "description": "Operational Policy for Control Loop execution. Originated in Frankfurt to support TOSCA Compliant\nPolicy Types. This does NOT support the legacy Policy YAML policy type.\n", - "properties": { - "abatement": { - "name": "abatement", - "type": "boolean", - "type_version": "0.0.0", - "description": "Whether an abatement event message will be expected for the control loop from DCAE.", - "default_value": false, - "required": true, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "operations": { - "name": "operations", - "type": "list", - "type_version": "0.0.0", - "description": "List of operations to be performed when Control Loop is triggered.", - "default_value": null, - "required": true, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": { - "name": null, - "type": "onap.datatype.controlloop.Operation", - "type_version": "0.0.0", - "description": null, - "constraints": null - }, - "metadata": null - }, - "trigger": { - "name": "trigger", - "type": "string", - "type_version": "0.0.0", - "description": "Initial operation to execute upon receiving an Onset event message for the Control Loop.", - "default_value": null, - "required": true, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "timeout": { - "name": "timeout", - "type": "integer", - "type_version": "0.0.0", - "description": "Overall timeout for executing all the operations. This timeout should equal or exceed the total\ntimeout for each operation listed.\n", - "default_value": null, - "required": true, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "id": { - "name": "id", - "type": "string", - "type_version": "0.0.0", - "description": "The unique control loop id.", - "default_value": null, - "required": true, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - } - }, - "key": { - "name": "onap.policies.controlloop.operational.Common", - "version": "1.0.0" - }, - "type": null, - "type_version": null, - "defined_name": "onap.policies.controlloop.operational.Common", - "defined_version": "1.0.0" - }, - "onap.policies.controlloop.operational.common.Apex": { - "name": "onap.policies.controlloop.operational.common.Apex", - "version": "1.0.0", - "derived_from": "onap.policies.controlloop.operational.Common", - "metadata": {}, - "description": "Operational policies for Apex PDP", - "properties": { - "engineServiceParameters": { - "name": "engineServiceParameters", - "type": "string", - "type_version": "0.0.0", - "description": "The engine parameters like name, instanceCount, policy implementation, parameters etc.", - "default_value": null, - "required": true, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "eventOutputParameters": { - "name": "eventOutputParameters", - "type": "string", - "type_version": "0.0.0", - "description": "The event output parameters.", - "default_value": null, - "required": true, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "javaProperties": { - "name": "javaProperties", - "type": "string", - "type_version": "0.0.0", - "description": "Name/value pairs of properties to be set for APEX if needed.", - "default_value": null, - "required": false, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "eventInputParameters": { - "name": "eventInputParameters", - "type": "string", - "type_version": "0.0.0", - "description": "The event input parameters.", - "default_value": null, - "required": true, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - } - }, - "key": { - "name": "onap.policies.controlloop.operational.common.Apex", - "version": "1.0.0" - }, - "type": null, - "type_version": null, - "defined_name": "onap.policies.controlloop.operational.common.Apex", - "defined_version": "1.0.0" - }, - "onap.policies.monitoring.dcae-pm-subscription-handler": { - "name": "onap.policies.monitoring.dcae-pm-subscription-handler", - "version": "1.0.0", - "derived_from": "onap.policies.Monitoring", - "metadata": {}, - "description": null, - "properties": { - "pmsh_policy": { - "name": "pmsh_policy", - "type": "onap.datatypes.monitoring.subscription", - "type_version": "0.0.0", - "description": "PMSH Policy JSON", - "default_value": null, - "required": false, - "status": null, - "constraints": [], - "key_schema": null, - "entry_schema": null, - "metadata": {} - } - }, - "key": { - "name": "onap.policies.monitoring.dcae-pm-subscription-handler", - "version": "1.0.0" - }, - "type": null, - "type_version": null, - "defined_name": "onap.policies.monitoring.dcae-pm-subscription-handler", - "defined_version": "1.0.0" - } - }, - "node_types": { - "org.onap.policy.clamp.controlloop.CDSControlLoopElement": { - "name": "org.onap.policy.clamp.controlloop.CDSControlLoopElement", - "version": "1.0.1", - "derived_from": "org.onap.policy.clamp.controlloop.ControlLoopElement", - "metadata": {}, - "description": null, - "properties": { - "cds_blueprint_id": { - "name": "cds_blueprint_id", - "type": "onap.datatypes.ToscaConceptIdentifier", - "type_version": "0.0.0", - "description": null, - "default_value": null, - "required": false, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - } - }, - "requirements": null, - "key": { - "name": "org.onap.policy.clamp.controlloop.CDSControlLoopElement", - "version": "1.0.1" - }, - "type": null, - "type_version": null, - "defined_name": "org.onap.policy.clamp.controlloop.CDSControlLoopElement", - "defined_version": "1.0.1" - }, - "org.onap.policy.clamp.controlloop.ControlLoop": { - "name": "org.onap.policy.clamp.controlloop.ControlLoop", - "version": "1.0.1", - "derived_from": "tosca.nodetypes.Root", - "metadata": {}, - "description": null, - "properties": { - "elements": { - "name": "elements", - "type": "list", - "type_version": "0.0.0", - "description": "Specifies a list of control loop element definitions that make up this control loop definition", - "default_value": null, - "required": true, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": { - "name": null, - "type": "onap.datatypes.ToscaConceptIdentifier", - "type_version": "0.0.0", - "description": null, - "constraints": null - }, - "metadata": { - "common": "true" - } - }, - "provider": { - "name": "provider", - "type": "string", - "type_version": "0.0.0", - "description": "Specifies the organization that provides the control loop element", - "default_value": null, - "required": false, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": { - "common": "true" - } - } - }, - "requirements": null, - "key": { - "name": "org.onap.policy.clamp.controlloop.ControlLoop", - "version": "1.0.1" - }, - "type": null, - "type_version": null, - "defined_name": "org.onap.policy.clamp.controlloop.ControlLoop", - "defined_version": "1.0.1" - }, - "org.onap.policy.clamp.controlloop.ControlLoopElement": { - "name": "org.onap.policy.clamp.controlloop.ControlLoopElement", - "version": "1.0.1", - "derived_from": "tosca.nodetypes.Root", - "metadata": {}, - "description": null, - "properties": { - "runningToPassiveTimeout": { - "name": "runningToPassiveTimeout", - "type": "integer", - "type_version": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from running to passive", - "default_value": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "valid_values": null, - "equal": null, - "greater_than": null, - "greater_or_equal": "0", - "less_than": null, - "less_or_equal": null, - "range_values": null - } - ], - "key_schema": null, - "entry_schema": null, - "metadata": { - "common": "true" - } - }, - "participantType": { - "name": "participantType", - "type": "onap.datatypes.ToscaConceptIdentifier", - "type_version": "0.0.0", - "description": "The identity of the participant type that hosts this type of Control Loop Element", - "default_value": null, - "required": true, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": { - "common": "true" - } - }, - "provider": { - "name": "provider", - "type": "string", - "type_version": "0.0.0", - "description": "Specifies the organization that provides the control loop element", - "default_value": null, - "required": false, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": { - "common": "true" - } - }, - "startPhase": { - "name": "startPhase", - "type": "integer", - "type_version": "0.0.0", - "description": "A value indicating the start phase in which this control loop element will be started, the first start phase is zero. Control Loop Elements are started in their start_phase order and stopped in reverse start phase order. Control Loop Elements with the same start phase are started and stopped simultaneously", - "default_value": null, - "required": false, - "status": null, - "constraints": [ - { - "valid_values": null, - "equal": null, - "greater_than": null, - "greater_or_equal": "0", - "less_than": null, - "less_or_equal": null, - "range_values": null - } - ], - "key_schema": null, - "entry_schema": null, - "metadata": { - "common": "true" - } - }, - "passiveToUninitializedTimeout": { - "name": "passiveToUninitializedTimeout", - "type": "integer", - "type_version": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to uninitialized", - "default_value": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "valid_values": null, - "equal": null, - "greater_than": null, - "greater_or_equal": "0", - "less_than": null, - "less_or_equal": null, - "range_values": null - } - ], - "key_schema": null, - "entry_schema": null, - "metadata": { - "common": "true" - } - }, - "uninitializedToPassiveTimeout": { - "name": "uninitializedToPassiveTimeout", - "type": "integer", - "type_version": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from uninitialized to passive", - "default_value": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "valid_values": null, - "equal": null, - "greater_than": null, - "greater_or_equal": "0", - "less_than": null, - "less_or_equal": null, - "range_values": null - } - ], - "key_schema": null, - "entry_schema": null, - "metadata": { - "common": "true" - } - }, - "participant_id": { - "name": "participant_id", - "type": "onap.datatypes.ToscaConceptIdentifier", - "type_version": "0.0.0", - "description": null, - "default_value": null, - "required": false, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": { - "common": "true" - } - }, - "passiveToRunningTimeout": { - "name": "passiveToRunningTimeout", - "type": "integer", - "type_version": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to running", - "default_value": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "valid_values": null, - "equal": null, - "greater_than": null, - "greater_or_equal": "0", - "less_than": null, - "less_or_equal": null, - "range_values": null - } - ], - "key_schema": null, - "entry_schema": null, - "metadata": { - "common": "true" - } - } - }, - "requirements": null, - "key": { - "name": "org.onap.policy.clamp.controlloop.ControlLoopElement", - "version": "1.0.1" - }, - "type": null, - "type_version": null, - "defined_name": "org.onap.policy.clamp.controlloop.ControlLoopElement", - "defined_version": "1.0.1" - }, - "org.onap.policy.clamp.controlloop.DerivedDerivedPolicyControlLoopElement": { - "name": "org.onap.policy.clamp.controlloop.DerivedDerivedPolicyControlLoopElement", - "version": "1.0.1", - "derived_from": "org.onap.policy.clamp.controlloop.DerivedPolicyControlLoopElement", - "metadata": {}, - "description": null, - "properties": { - "policy_id": { - "name": "policy_id", - "type": "onap.datatypes.ToscaConceptIdentifier", - "type_version": "0.0.0", - "description": null, - "default_value": null, - "required": false, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "policy_type_id": { - "name": "policy_type_id", - "type": "onap.datatypes.ToscaConceptIdentifier", - "type_version": "0.0.0", - "description": null, - "default_value": null, - "required": false, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - } - }, - "requirements": null, - "key": { - "name": "org.onap.policy.clamp.controlloop.DerivedDerivedPolicyControlLoopElement", - "version": "1.0.1" - }, - "type": null, - "type_version": null, - "defined_name": "org.onap.policy.clamp.controlloop.DerivedDerivedPolicyControlLoopElement", - "defined_version": "1.0.1" - }, - "org.onap.policy.clamp.controlloop.DerivedPolicyControlLoopElement": { - "name": "org.onap.policy.clamp.controlloop.DerivedPolicyControlLoopElement", - "version": "1.0.1", - "derived_from": "org.onap.policy.clamp.controlloop.PolicyControlLoopElement", - "metadata": {}, - "description": null, - "properties": { - "policy_id": { - "name": "policy_id", - "type": "onap.datatypes.ToscaConceptIdentifier", - "type_version": "0.0.0", - "description": null, - "default_value": null, - "required": false, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "policy_type_id": { - "name": "policy_type_id", - "type": "onap.datatypes.ToscaConceptIdentifier", - "type_version": "0.0.0", - "description": null, - "default_value": null, - "required": false, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - } - }, - "requirements": null, - "key": { - "name": "org.onap.policy.clamp.controlloop.DerivedPolicyControlLoopElement", - "version": "1.0.1" - }, - "type": null, - "type_version": null, - "defined_name": "org.onap.policy.clamp.controlloop.DerivedPolicyControlLoopElement", - "defined_version": "1.0.1" - }, - "org.onap.policy.clamp.controlloop.HttpControlLoopElement": { - "name": "org.onap.policy.clamp.controlloop.HttpControlLoopElement", - "version": "1.0.1", - "derived_from": "org.onap.policy.clamp.controlloop.ControlLoopElement", - "metadata": {}, - "description": null, - "properties": { - "httpHeaders": { - "name": "httpHeaders", - "type": "map", - "type_version": "0.0.0", - "description": "HTTP headers to send on REST requests", - "default_value": null, - "required": false, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": { - "name": null, - "type": "string", - "type_version": "0.0.0", - "description": null, - "constraints": null - }, - "metadata": null - }, - "baseUrl": { - "name": "baseUrl", - "type": "string", - "type_version": "0.0.0", - "description": "The base URL to be prepended to each path, identifies the host for the REST endpoints.", - "default_value": null, - "required": true, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "configurationEntities": { - "name": "configurationEntities", - "type": "map", - "type_version": "0.0.0", - "description": "The connfiguration entities the Control Loop Element is managing and their associated REST requests", - "default_value": null, - "required": true, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": { - "name": null, - "type": "org.onap.datatypes.policy.clamp.controlloop.httpControlLoopElement.ConfigurationEntity", - "type_version": "0.0.0", - "description": null, - "constraints": null - }, - "metadata": null - } - }, - "requirements": null, - "key": { - "name": "org.onap.policy.clamp.controlloop.HttpControlLoopElement", - "version": "1.0.1" - }, - "type": null, - "type_version": null, - "defined_name": "org.onap.policy.clamp.controlloop.HttpControlLoopElement", - "defined_version": "1.0.1" - }, - "org.onap.policy.clamp.controlloop.K8SMicroserviceControlLoopElement": { - "name": "org.onap.policy.clamp.controlloop.K8SMicroserviceControlLoopElement", - "version": "1.0.1", - "derived_from": "org.onap.policy.clamp.controlloop.ControlLoopElement", - "metadata": {}, - "description": null, - "properties": { - "values": { - "name": "values", - "type": "string", - "type_version": "0.0.0", - "description": null, - "default_value": null, - "required": false, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "templates": { - "name": "templates", - "type": "list", - "type_version": "0.0.0", - "description": null, - "default_value": null, - "required": false, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "chart": { - "name": "chart", - "type": "string", - "type_version": "0.0.0", - "description": null, - "default_value": null, - "required": true, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "requirements": { - "name": "requirements", - "type": "string", - "type_version": "0.0.0", - "description": null, - "default_value": null, - "required": false, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "configs": { - "name": "configs", - "type": "list", - "type_version": "0.0.0", - "description": null, - "default_value": null, - "required": false, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - } - }, - "requirements": null, - "key": { - "name": "org.onap.policy.clamp.controlloop.K8SMicroserviceControlLoopElement", - "version": "1.0.1" - }, - "type": null, - "type_version": null, - "defined_name": "org.onap.policy.clamp.controlloop.K8SMicroserviceControlLoopElement", - "defined_version": "1.0.1" - }, - "org.onap.policy.clamp.controlloop.Participant": { - "name": "org.onap.policy.clamp.controlloop.Participant", - "version": "1.0.1", - "derived_from": "tosca.nodetypes.Root", - "metadata": {}, - "description": null, - "properties": { - "provider": { - "name": "provider", - "type": "string", - "type_version": "0.0.0", - "description": null, - "default_value": null, - "required": false, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - } - }, - "requirements": null, - "key": { - "name": "org.onap.policy.clamp.controlloop.Participant", - "version": "1.0.1" - }, - "type": null, - "type_version": null, - "defined_name": "org.onap.policy.clamp.controlloop.Participant", - "defined_version": "1.0.1" - }, - "org.onap.policy.clamp.controlloop.PolicyControlLoopElement": { - "name": "org.onap.policy.clamp.controlloop.PolicyControlLoopElement", - "version": "1.0.1", - "derived_from": "org.onap.policy.clamp.controlloop.ControlLoopElement", - "metadata": {}, - "description": null, - "properties": { - "policy_id": { - "name": "policy_id", - "type": "onap.datatypes.ToscaConceptIdentifier", - "type_version": "0.0.0", - "description": null, - "default_value": null, - "required": false, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "policy_type_id": { - "name": "policy_type_id", - "type": "onap.datatypes.ToscaConceptIdentifier", - "type_version": "0.0.0", - "description": null, - "default_value": null, - "required": false, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - } - }, - "requirements": null, - "key": { - "name": "org.onap.policy.clamp.controlloop.PolicyControlLoopElement", - "version": "1.0.1" - }, - "type": null, - "type_version": null, - "defined_name": "org.onap.policy.clamp.controlloop.PolicyControlLoopElement", - "defined_version": "1.0.1" - } - }, - "topology_template": { - "description": null, - "inputs": { - "pmsh_operational_policy": { - "name": "pmsh_operational_policy", - "type": "onap.datatypes.ToscaConceptIdentifier", - "type_version": "0.0.0", - "value": null - }, - "pmsh_monitoring_policy": { - "name": "pmsh_monitoring_policy", - "type": "onap.datatypes.ToscaConceptIdentifier", - "type_version": "0.0.0", - "value": null - } - }, - "node_templates": { - "org.onap.controlloop.HttpControlLoopParticipant": { - "name": "org.onap.controlloop.HttpControlLoopParticipant", - "version": "2.3.4", - "derived_from": null, - "metadata": {}, - "description": "Participant for Http requests", - "type": "org.onap.policy.clamp.controlloop.Participant", - "type_version": "1.0.1", - "properties": { - "provider": "ONAP" - }, - "requirements": null, - "capabilities": null, - "identifier": { - "name": "org.onap.controlloop.HttpControlLoopParticipant", - "version": "2.3.4" - }, - "type_identifier": { - "name": "org.onap.policy.clamp.controlloop.Participant", - "version": "1.0.1" - }, - "key": { - "name": "org.onap.controlloop.HttpControlLoopParticipant", - "version": "2.3.4" - }, - "defined_name": "org.onap.controlloop.HttpControlLoopParticipant", - "defined_version": "2.3.4" - }, - "org.onap.domain.database.Http_PMSHMicroserviceControlLoopElement": { - "name": "org.onap.domain.database.Http_PMSHMicroserviceControlLoopElement", - "version": "1.2.3", - "derived_from": null, - "metadata": {}, - "description": "Control loop element for the http requests of PMSH microservice", - "type": "org.onap.policy.clamp.controlloop.HttpControlLoopElement", - "type_version": "1.0.1", - "properties": { - "participantType": { - "name": "org.onap.k8s.controlloop.HttpControlLoopParticipant", - "version": "2.3.4" - }, - "configurationEntities": [ - { - "configurationEntityId": { - "name": "entity1", - "version": "1.0.1" - }, - "restSequence": [ - { - "restRequestId": { - "name": "request1", - "version": "1.0.1" - }, - "httpMethod": "PUT", - "path": "v1/kv/dcae-pmsh2", - "body": "{ \"control_loop_name\":\"pmsh-control-loop\", \"operational_policy_name\":\"pmsh-operational-policy\", \"aaf_password\":\"demo123456!\", \"aaf_identity\":\"dcae@dcae.onap.org\", \"cert_path\":\"/opt/app/pmsh/etc/certs/cert.pem\", \"key_path\":\"/opt/app/pmsh/etc/certs/key.pem\", \"ca_cert_path\":\"/opt/app/pmsh/etc/certs/cacert.pem\", \"enable_tls\":\"true\", \"pmsh_policy\":{ \"subscription\":{ \"subscriptionName\":\"ExtraPM-All-gNB-R2B\", \"administrativeState\":\"UNLOCKED\", \"fileBasedGP\":15, \"fileLocation\":\"\/pm\/pm.xml\", \"nfFilter\":{ \"nfNames\":[ \"^pnf.*\", \"^vnf.*\" ], \"modelInvariantIDs\":[ ], \"modelVersionIDs\":[ ], \"modelNames\":[ ] }, \"measurementGroups\":[ { \"measurementGroup\":{ \"measurementTypes\":[ { \"measurementType\":\"countera\" }, { \"measurementType\":\"counterb\" } ], \"managedObjectDNsBasic\":[ { \"DN\":\"dna\" }, { \"DN\":\"dnb\" } ] } }, { \"measurementGroup\":{ \"measurementTypes\":[ { \"measurementType\":\"counterc\" }, { \"measurementType\":\"counterd\" } ], \"managedObjectDNsBasic\":[ { \"DN\":\"dnc\" }, { \"DN\":\"dnd\" } ] } } ] } }, \"streams_subscribes\":{ \"aai_subscriber\":{ \"type\":\"message_router\", \"dmaap_info\":{ \"topic_url\":\"https://10.152.183.151:3905/events/AAI_EVENT\", \"client_role\":\"org.onap.dcae.aaiSub\", \"location\":\"san-francisco\", \"client_id\":\"1575976809466\" } }, \"policy_pm_subscriber\":{ \"type\":\"message_router\", \"dmaap_info\":{ \"topic_url\":\"https://10.152.183.151:3905/events/org.onap.dmaap.mr.PM_SUBSCRIPTIONS\", \"client_role\":\"org.onap.dcae.pmSubscriber\", \"location\":\"san-francisco\", \"client_id\":\"1575876809456\" } } }, \"streams_publishes\":{ \"policy_pm_publisher\":{ \"type\":\"message_router\", \"dmaap_info\":{ \"topic_url\":\"https://10.152.183.151:3905/events/org.onap.dmaap.mr.PM_SUBSCRIPTIONS\", \"client_role\":\"org.onap.dcae.pmPublisher\", \"location\":\"san-francisco\", \"client_id\":\"1475976809466\" } }, \"other_publisher\":{ \"type\":\"message_router\", \"dmaap_info\":{ \"topic_url\":\"https://10.152.183.151:3905/events/org.onap.dmaap.mr.SOME_OTHER_TOPIC\", \"client_role\":\"org.onap.dcae.pmControlPub\", \"location\":\"san-francisco\", \"client_id\":\"1875976809466\" } } } }", - "expectedResponse": 200 - } - ] - } - ], - "provider": "ONAP", - "startPhase": 1, - "uninitializedToPassiveTimeout": 180, - "httpHeaders": { - "Content-Type": "application/json" - }, - "participant_id": { - "name": "HttpParticipant0", - "version": "1.0.0" - }, - "baseUrl": "http://10.152.183.51:8500" - }, - "requirements": null, - "capabilities": null, - "identifier": { - "name": "org.onap.domain.database.Http_PMSHMicroserviceControlLoopElement", - "version": "1.2.3" - }, - "type_identifier": { - "name": "org.onap.policy.clamp.controlloop.HttpControlLoopElement", - "version": "1.0.1" - }, - "key": { - "name": "org.onap.domain.database.Http_PMSHMicroserviceControlLoopElement", - "version": "1.2.3" - }, - "defined_name": "org.onap.domain.database.Http_PMSHMicroserviceControlLoopElement", - "defined_version": "1.2.3" - }, - "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement": { - "name": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement", - "version": "1.2.3", - "derived_from": null, - "metadata": {}, - "description": "Control loop element for the operational policy for Performance Management Subscription Handling", - "type": "org.onap.policy.clamp.controlloop.PolicyControlLoopElement", - "type_version": "1.0.0", - "properties": { - "participant_id": { - "name": "org.onap.PM_Policy", - "version": "1.0.0" - }, - "policy_type_id": { - "name": "onap.policies.operational.pm-subscription-handler", - "version": "1.0.0" - }, - "participantType": { - "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant", - "version": "2.3.1" - }, - "provider": "Ericsson", - "policy_id": { - "get_input": "pmsh_operational_policy" - } - }, - "requirements": null, - "capabilities": null, - "identifier": { - "name": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement", - "version": "1.2.3" - }, - "type_identifier": { - "name": "org.onap.policy.clamp.controlloop.PolicyControlLoopElement", - "version": "1.0.0" - }, - "key": { - "name": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement", - "version": "1.2.3" - }, - "defined_name": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement", - "defined_version": "1.2.3" - }, - "org.onap.domain.database.Local_K8SMicroserviceControlLoopElement": { - "name": "org.onap.domain.database.Local_K8SMicroserviceControlLoopElement", - "version": "1.2.3", - "derived_from": null, - "metadata": {}, - "description": "Control loop element for the K8S microservice for local chart", - "type": "org.onap.policy.clamp.controlloop.K8SMicroserviceControlLoopElement", - "type_version": "1.0.0", - "properties": { - "participant_id": { - "name": "K8sParticipant0", - "version": "1.0.0" - }, - "provider": "ONAP", - "chart": { - "chartId": { - "name": "nginx-ingress", - "version": "0.9.1" - }, - "releaseName": "nginxms", - "namespace": "test" - }, - "participantType": { - "name": "org.onap.k8s.controlloop.K8SControlLoopParticipant", - "version": "2.3.4" - } - }, - "requirements": null, - "capabilities": null, - "identifier": { - "name": "org.onap.domain.database.Local_K8SMicroserviceControlLoopElement", - "version": "1.2.3" - }, - "type_identifier": { - "name": "org.onap.policy.clamp.controlloop.K8SMicroserviceControlLoopElement", - "version": "1.0.0" - }, - "key": { - "name": "org.onap.domain.database.Local_K8SMicroserviceControlLoopElement", - "version": "1.2.3" - }, - "defined_name": "org.onap.domain.database.Local_K8SMicroserviceControlLoopElement", - "defined_version": "1.2.3" - }, - "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement": { - "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement", - "version": "1.2.3", - "derived_from": null, - "metadata": {}, - "description": "Control loop element for the monitoring policy for Performance Management Subscription Handling", - "type": "org.onap.policy.clamp.controlloop.PolicyControlLoopElement", - "type_version": "1.0.0", - "properties": { - "participant_id": { - "name": "org.onap.PM_Policy", - "version": "1.0.0" - }, - "policy_type_id": { - "name": "onap.policies.monitoring.pm-subscription-handler", - "version": "1.0.0" - }, - "participantType": { - "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant", - "version": "2.3.1" - }, - "provider": "Ericsson", - "policy_id": { - "get_input": "pmsh_monitoring_policy" - } - }, - "requirements": null, - "capabilities": null, - "identifier": { - "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement", - "version": "1.2.3" - }, - "type_identifier": { - "name": "org.onap.policy.clamp.controlloop.PolicyControlLoopElement", - "version": "1.0.0" - }, - "key": { - "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement", - "version": "1.2.3" - }, - "defined_name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement", - "defined_version": "1.2.3" - }, - "org.onap.k8s.controlloop.K8SControlLoopParticipant": { - "name": "org.onap.k8s.controlloop.K8SControlLoopParticipant", - "version": "2.3.4", - "derived_from": null, - "metadata": {}, - "description": "Participant for K8S", - "type": "org.onap.policy.clamp.controlloop.Participant", - "type_version": "1.0.1", - "properties": { - "provider": "ONAP" - }, - "requirements": null, - "capabilities": null, - "identifier": { - "name": "org.onap.k8s.controlloop.K8SControlLoopParticipant", - "version": "2.3.4" - }, - "type_identifier": { - "name": "org.onap.policy.clamp.controlloop.Participant", - "version": "1.0.1" - }, - "key": { - "name": "org.onap.k8s.controlloop.K8SControlLoopParticipant", - "version": "2.3.4" - }, - "defined_name": "org.onap.k8s.controlloop.K8SControlLoopParticipant", - "defined_version": "2.3.4" - }, - "org.onap.domain.pmsh.DerivedDerivedPolicyControlLoopElement": { - "name": "org.onap.domain.pmsh.DerivedDerivedPolicyControlLoopElement", - "version": "1.2.3", - "derived_from": null, - "metadata": {}, - "description": "Control loop for Performance Management Subscription Handling", - "type": "org.onap.policy.clamp.controlloop.DerivedDerivedPolicyControlLoopElement", - "type_version": "1.0.0", - "properties": { - "participant_id": { - "name": "org.onap.PM_Policy", - "version": "1.0.0" - }, - "provider": "Ericsson", - "participantType": { - "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant", - "version": "2.3.1" - } - }, - "requirements": null, - "capabilities": null, - "identifier": { - "name": "org.onap.domain.pmsh.DerivedDerivedPolicyControlLoopElement", - "version": "1.2.3" - }, - "type_identifier": { - "name": "org.onap.policy.clamp.controlloop.DerivedDerivedPolicyControlLoopElement", - "version": "1.0.0" - }, - "key": { - "name": "org.onap.domain.pmsh.DerivedDerivedPolicyControlLoopElement", - "version": "1.2.3" - }, - "defined_name": "org.onap.domain.pmsh.DerivedDerivedPolicyControlLoopElement", - "defined_version": "1.2.3" - }, - "org.onap.domain.sample.GenericK8s_ControlLoopDefinition": { - "name": "org.onap.domain.sample.GenericK8s_ControlLoopDefinition", - "version": "1.2.3", - "derived_from": null, - "metadata": {}, - "description": "Control loop for Hello World", - "type": "org.onap.policy.clamp.controlloop.ControlLoop", - "type_version": "1.0.0", - "properties": { - "elements": [ - { - "name": "org.onap.domain.database.PMSH_K8SMicroserviceControlLoopElement", - "version": "1.2.3" - }, - { - "name": "org.onap.domain.database.Local_K8SMicroserviceControlLoopElement", - "version": "1.2.3" - }, - { - "name": "org.onap.domain.database.Http_PMSHMicroserviceControlLoopElement", - "version": "1.2.3" - }, - { - "name": "org.onap.domain.pmsh.DerivedPolicyControlLoopElement", - "version": "1.2.3" - }, - { - "name": "org.onap.domain.pmsh.DerivedDerivedPolicyControlLoopElement", - "version": "1.2.3" - }, - { - "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement", - "version": "1.2.3" - }, - { - "name": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement", - "version": "1.2.3" - } - ], - "provider": "ONAP" - }, - "requirements": null, - "capabilities": null, - "identifier": { - "name": "org.onap.domain.sample.GenericK8s_ControlLoopDefinition", - "version": "1.2.3" - }, - "type_identifier": { - "name": "org.onap.policy.clamp.controlloop.ControlLoop", - "version": "1.0.0" - }, - "key": { - "name": "org.onap.domain.sample.GenericK8s_ControlLoopDefinition", - "version": "1.2.3" - }, - "defined_name": "org.onap.domain.sample.GenericK8s_ControlLoopDefinition", - "defined_version": "1.2.3" - }, - "org.onap.policy.controlloop.PolicyControlLoopParticipant": { - "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant", - "version": "2.3.1", - "derived_from": null, - "metadata": {}, - "description": "Participant for DCAE microservices", - "type": "org.onap.policy.clamp.controlloop.Participant", - "type_version": "1.0.1", - "properties": { - "provider": "ONAP" - }, - "requirements": null, - "capabilities": null, - "identifier": { - "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant", - "version": "2.3.1" - }, - "type_identifier": { - "name": "org.onap.policy.clamp.controlloop.Participant", - "version": "1.0.1" - }, - "key": { - "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant", - "version": "2.3.1" - }, - "defined_name": "org.onap.policy.controlloop.PolicyControlLoopParticipant", - "defined_version": "2.3.1" - }, - "org.onap.domain.database.PMSH_K8SMicroserviceControlLoopElement": { - "name": "org.onap.domain.database.PMSH_K8SMicroserviceControlLoopElement", - "version": "1.2.3", - "derived_from": null, - "metadata": {}, - "description": "Control loop element for the K8S microservice for PMSH", - "type": "org.onap.policy.clamp.controlloop.K8SMicroserviceControlLoopElement", - "type_version": "1.0.0", - "properties": { - "participant_id": { - "name": "K8sParticipant0", - "version": "1.0.0" - }, - "provider": "ONAP", - "chart": { - "chartId": { - "name": "dcae-pmsh", - "version": "8.0.0" - }, - "namespace": "onap", - "releaseName": "pmshms", - "repository": { - "repoName": "chartmuseum", - "protocol": "http", - "address": "10.152.183.120", - "port": 80, - "userName": "onapinitializer", - "password": "demo123456!" - }, - "overrideParams": { - "global.masterPassword": "test" - } - }, - "participantType": { - "name": "org.onap.k8s.controlloop.K8SControlLoopParticipant", - "version": "2.3.4" - } - }, - "requirements": null, - "capabilities": null, - "identifier": { - "name": "org.onap.domain.database.PMSH_K8SMicroserviceControlLoopElement", - "version": "1.2.3" - }, - "type_identifier": { - "name": "org.onap.policy.clamp.controlloop.K8SMicroserviceControlLoopElement", - "version": "1.0.0" - }, - "key": { - "name": "org.onap.domain.database.PMSH_K8SMicroserviceControlLoopElement", - "version": "1.2.3" - }, - "defined_name": "org.onap.domain.database.PMSH_K8SMicroserviceControlLoopElement", - "defined_version": "1.2.3" - }, - "org.onap.domain.pmsh.DerivedPolicyControlLoopElement": { - "name": "org.onap.domain.pmsh.DerivedPolicyControlLoopElement", - "version": "1.2.3", - "derived_from": null, - "metadata": {}, - "description": "Control loop for Performance Management Subscription Handling", - "type": "org.onap.policy.clamp.controlloop.DerivedPolicyControlLoopElement", - "type_version": "1.0.0", - "properties": { - "participant_id": { - "name": "org.onap.PM_Policy", - "version": "1.0.0" - }, - "provider": "Ericsson", - "participantType": { - "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant", - "version": "2.3.1" - } - }, - "requirements": null, - "capabilities": null, - "identifier": { - "name": "org.onap.domain.pmsh.DerivedPolicyControlLoopElement", - "version": "1.2.3" - }, - "type_identifier": { - "name": "org.onap.policy.clamp.controlloop.DerivedPolicyControlLoopElement", - "version": "1.0.0" - }, - "key": { - "name": "org.onap.domain.pmsh.DerivedPolicyControlLoopElement", - "version": "1.2.3" - }, - "defined_name": "org.onap.domain.pmsh.DerivedPolicyControlLoopElement", - "defined_version": "1.2.3" - } - }, - "policies": null, - "policies_as_map": {} - }, - "tosca_definitions_version": "tosca_simple_yaml_1_3", - "data_types": { - "onap.datatype.controlloop.Actor": { - "name": "onap.datatype.controlloop.Actor", - "version": "0.0.0", - "derived_from": "tosca.datatypes.Root", - "metadata": {}, - "description": "An actor/operation/target definition", - "properties": { - "payload": { - "name": "payload", - "type": "map", - "type_version": "0.0.0", - "description": "Name/value pairs of payload information passed by Policy to the actor", - "default_value": null, - "required": false, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": { - "name": null, - "type": "string", - "type_version": "0.0.0", - "description": null, - "constraints": null - }, - "metadata": { - "clamp_possible_values": "ClampExecution:CDS/payload" - } - }, - "target": { - "name": "target", - "type": "onap.datatype.controlloop.Target", - "type_version": "0.0.0", - "description": "The resource the operation should be performed on.", - "default_value": null, - "required": true, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "actor": { - "name": "actor", - "type": "string", - "type_version": "0.0.0", - "description": "The actor performing the operation.", - "default_value": null, - "required": true, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": { - "clamp_possible_values": "Dictionary:DefaultActors,ClampExecution:CDS/actor" - } - }, - "operation": { - "name": "operation", - "type": "string", - "type_version": "0.0.0", - "description": "The operation the actor is performing.", - "default_value": null, - "required": true, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": { - "clamp_possible_values": "Dictionary:DefaultOperations,ClampExecution:CDS/operation" - } - } - }, - "constraints": [], - "key": { - "name": "onap.datatype.controlloop.Actor", - "version": "0.0.0" - }, - "type": null, - "type_version": null, - "defined_name": "onap.datatype.controlloop.Actor", - "defined_version": null - }, - "onap.datatype.controlloop.Operation": { - "name": "onap.datatype.controlloop.Operation", - "version": "0.0.0", - "derived_from": "tosca.datatypes.Root", - "metadata": {}, - "description": "An operation supported by an actor", - "properties": { - "failure_retries": { - "name": "failure_retries", - "type": "string", - "type_version": "0.0.0", - "description": "Points to the operation to invoke when the current operation has exceeded its max retries.", - "default_value": "final_failure_retries", - "required": false, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "id": { - "name": "id", - "type": "string", - "type_version": "0.0.0", - "description": "Unique identifier for the operation", - "default_value": null, - "required": true, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "failure_timeout": { - "name": "failure_timeout", - "type": "string", - "type_version": "0.0.0", - "description": "Points to the operation to invoke when the time out for the operation occurs.", - "default_value": "final_failure_timeout", - "required": false, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "failure": { - "name": "failure", - "type": "string", - "type_version": "0.0.0", - "description": "Points to the operation to invoke on Actor operation failure.", - "default_value": "final_failure", - "required": false, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "operation": { - "name": "operation", - "type": "onap.datatype.controlloop.Actor", - "type_version": "0.0.0", - "description": "The definition of the operation to be performed.", - "default_value": null, - "required": true, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "failure_guard": { - "name": "failure_guard", - "type": "string", - "type_version": "0.0.0", - "description": "Points to the operation to invoke when the current operation is blocked due to guard policy enforcement.", - "default_value": "final_failure_guard", - "required": false, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "retries": { - "name": "retries", - "type": "integer", - "type_version": "0.0.0", - "description": "The number of retries the actor should attempt to perform the operation.", - "default_value": 0.0, - "required": true, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "timeout": { - "name": "timeout", - "type": "integer", - "type_version": "0.0.0", - "description": "The amount of time for the actor to perform the operation.", - "default_value": null, - "required": true, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "failure_exception": { - "name": "failure_exception", - "type": "string", - "type_version": "0.0.0", - "description": "Points to the operation to invoke when the current operation causes an exception.", - "default_value": "final_failure_exception", - "required": false, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "description": { - "name": "description", - "type": "string", - "type_version": "0.0.0", - "description": "A user-friendly description of the intent for the operation", - "default_value": null, - "required": false, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "success": { - "name": "success", - "type": "string", - "type_version": "0.0.0", - "description": "Points to the operation to invoke on success. A value of \"final_success\" indicates and end to the operation.", - "default_value": "final_success", - "required": false, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - } - }, - "constraints": [], - "key": { - "name": "onap.datatype.controlloop.Operation", - "version": "0.0.0" - }, - "type": null, - "type_version": null, - "defined_name": "onap.datatype.controlloop.Operation", - "defined_version": null - }, - "onap.datatype.controlloop.Target": { - "name": "onap.datatype.controlloop.Target", - "version": "0.0.0", - "derived_from": "tosca.datatypes.Root", - "metadata": {}, - "description": "Definition for a entity in A&AI to perform a control loop operation on", - "properties": { - "entityIds": { - "name": "entityIds", - "type": "map", - "type_version": "0.0.0", - "description": "Map of values that identify the resource. If none are provided, it is assumed that the\nentity that generated the ONSET event will be the target.\n", - "default_value": null, - "required": false, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": { - "name": null, - "type": "string", - "type_version": "0.0.0", - "description": null, - "constraints": null - }, - "metadata": { - "clamp_possible_values": "ClampExecution:CSAR_RESOURCES" - } - }, - "targetType": { - "name": "targetType", - "type": "string", - "type_version": "0.0.0", - "description": "Category for the target type", - "default_value": null, - "required": true, - "status": null, - "constraints": [ - { - "valid_values": [ - "VNF", - "VM", - "VFMODULE", - "PNF" - ], - "equal": null, - "greater_than": null, - "greater_or_equal": null, - "less_than": null, - "less_or_equal": null, - "range_values": null - } - ], - "key_schema": null, - "entry_schema": null, - "metadata": null - } - }, - "constraints": [], - "key": { - "name": "onap.datatype.controlloop.Target", - "version": "0.0.0" - }, - "type": null, - "type_version": null, - "defined_name": "onap.datatype.controlloop.Target", - "defined_version": null - }, - "onap.datatypes.ToscaConceptIdentifier": { - "name": "onap.datatypes.ToscaConceptIdentifier", - "version": "0.0.0", - "derived_from": "tosca.datatypes.Root", - "metadata": {}, - "description": null, - "properties": { - "version": { - "name": "version", - "type": "string", - "type_version": "0.0.0", - "description": null, - "default_value": null, - "required": true, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "name": { - "name": "name", - "type": "string", - "type_version": "0.0.0", - "description": null, - "default_value": null, - "required": true, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - } - }, - "constraints": [], - "key": { - "name": "onap.datatypes.ToscaConceptIdentifier", - "version": "0.0.0" - }, - "type": null, - "type_version": null, - "defined_name": "onap.datatypes.ToscaConceptIdentifier", - "defined_version": null - }, - "onap.datatypes.monitoring.managedObjectDNsBasic": { - "name": "onap.datatypes.monitoring.managedObjectDNsBasic", - "version": "0.0.0", - "derived_from": "tosca.datatypes.Root", - "metadata": {}, - "description": null, - "properties": { - "DN": { - "name": "DN", - "type": "string", - "type_version": "0.0.0", - "description": "Managed object distinguished name", - "default_value": null, - "required": true, - "status": null, - "constraints": [], - "key_schema": null, - "entry_schema": null, - "metadata": {} - } - }, - "constraints": [], - "key": { - "name": "onap.datatypes.monitoring.managedObjectDNsBasic", - "version": "0.0.0" - }, - "type": null, - "type_version": null, - "defined_name": "onap.datatypes.monitoring.managedObjectDNsBasic", - "defined_version": null - }, - "onap.datatypes.monitoring.managedObjectDNsBasics": { - "name": "onap.datatypes.monitoring.managedObjectDNsBasics", - "version": "0.0.0", - "derived_from": "tosca.datatypes.Root", - "metadata": {}, - "description": null, - "properties": { - "managedObjectDNsBasic": { - "name": "managedObjectDNsBasic", - "type": "map", - "type_version": "0.0.0", - "description": "Managed object distinguished name object", - "default_value": null, - "required": true, - "status": null, - "constraints": [], - "key_schema": null, - "entry_schema": { - "name": null, - "type": "onap.datatypes.monitoring.managedObjectDNsBasic", - "type_version": "0.0.0", - "description": null, - "constraints": [] - }, - "metadata": {} - } - }, - "constraints": [], - "key": { - "name": "onap.datatypes.monitoring.managedObjectDNsBasics", - "version": "0.0.0" - }, - "type": null, - "type_version": null, - "defined_name": "onap.datatypes.monitoring.managedObjectDNsBasics", - "defined_version": null - }, - "onap.datatypes.monitoring.measurementGroup": { - "name": "onap.datatypes.monitoring.measurementGroup", - "version": "0.0.0", - "derived_from": "tosca.datatypes.Root", - "metadata": {}, - "description": null, - "properties": { - "measurementTypes": { - "name": "measurementTypes", - "type": "list", - "type_version": "0.0.0", - "description": "List of measurement types", - "default_value": null, - "required": true, - "status": null, - "constraints": [], - "key_schema": null, - "entry_schema": { - "name": null, - "type": "onap.datatypes.monitoring.measurementTypes", - "type_version": "0.0.0", - "description": null, - "constraints": [] - }, - "metadata": {} - }, - "managedObjectDNsBasic": { - "name": "managedObjectDNsBasic", - "type": "list", - "type_version": "0.0.0", - "description": "List of managed object distinguished names", - "default_value": null, - "required": true, - "status": null, - "constraints": [], - "key_schema": null, - "entry_schema": { - "name": null, - "type": "onap.datatypes.monitoring.managedObjectDNsBasics", - "type_version": "0.0.0", - "description": null, - "constraints": [] - }, - "metadata": {} - } - }, - "constraints": [], - "key": { - "name": "onap.datatypes.monitoring.measurementGroup", - "version": "0.0.0" - }, - "type": null, - "type_version": null, - "defined_name": "onap.datatypes.monitoring.measurementGroup", - "defined_version": null - }, - "onap.datatypes.monitoring.measurementGroups": { - "name": "onap.datatypes.monitoring.measurementGroups", - "version": "0.0.0", - "derived_from": "tosca.datatypes.Root", - "metadata": {}, - "description": null, - "properties": { - "measurementGroup": { - "name": "measurementGroup", - "type": "map", - "type_version": "0.0.0", - "description": "Measurement Group", - "default_value": null, - "required": true, - "status": null, - "constraints": [], - "key_schema": null, - "entry_schema": { - "name": null, - "type": "onap.datatypes.monitoring.measurementGroup", - "type_version": "0.0.0", - "description": null, - "constraints": [] - }, - "metadata": {} - } - }, - "constraints": [], - "key": { - "name": "onap.datatypes.monitoring.measurementGroups", - "version": "0.0.0" - }, - "type": null, - "type_version": null, - "defined_name": "onap.datatypes.monitoring.measurementGroups", - "defined_version": null - }, - "onap.datatypes.monitoring.measurementType": { - "name": "onap.datatypes.monitoring.measurementType", - "version": "0.0.0", - "derived_from": "tosca.datatypes.Root", - "metadata": {}, - "description": null, - "properties": { - "measurementType": { - "name": "measurementType", - "type": "string", - "type_version": "0.0.0", - "description": "Measurement type", - "default_value": null, - "required": true, - "status": null, - "constraints": [], - "key_schema": null, - "entry_schema": null, - "metadata": {} - } - }, - "constraints": [], - "key": { - "name": "onap.datatypes.monitoring.measurementType", - "version": "0.0.0" - }, - "type": null, - "type_version": null, - "defined_name": "onap.datatypes.monitoring.measurementType", - "defined_version": null - }, - "onap.datatypes.monitoring.measurementTypes": { - "name": "onap.datatypes.monitoring.measurementTypes", - "version": "0.0.0", - "derived_from": "tosca.datatypes.Root", - "metadata": {}, - "description": null, - "properties": { - "measurementType": { - "name": "measurementType", - "type": "map", - "type_version": "0.0.0", - "description": "Measurement type object", - "default_value": null, - "required": true, - "status": null, - "constraints": [], - "key_schema": null, - "entry_schema": { - "name": null, - "type": "onap.datatypes.monitoring.measurementType", - "type_version": "0.0.0", - "description": null, - "constraints": [] - }, - "metadata": {} - } - }, - "constraints": [], - "key": { - "name": "onap.datatypes.monitoring.measurementTypes", - "version": "0.0.0" - }, - "type": null, - "type_version": null, - "defined_name": "onap.datatypes.monitoring.measurementTypes", - "defined_version": null - }, - "onap.datatypes.monitoring.nfFilter": { - "name": "onap.datatypes.monitoring.nfFilter", - "version": "0.0.0", - "derived_from": "tosca.datatypes.Root", - "metadata": {}, - "description": null, - "properties": { - "modelVersionIDs": { - "name": "modelVersionIDs", - "type": "list", - "type_version": "0.0.0", - "description": "List of model version IDs", - "default_value": null, - "required": true, - "status": null, - "constraints": [], - "key_schema": null, - "entry_schema": { - "name": null, - "type": "string", - "type_version": "0.0.0", - "description": null, - "constraints": [] - }, - "metadata": {} - }, - "modelInvariantIDs": { - "name": "modelInvariantIDs", - "type": "list", - "type_version": "0.0.0", - "description": "List of model invariant IDs", - "default_value": null, - "required": true, - "status": null, - "constraints": [], - "key_schema": null, - "entry_schema": { - "name": null, - "type": "string", - "type_version": "0.0.0", - "description": null, - "constraints": [] - }, - "metadata": {} - }, - "modelNames": { - "name": "modelNames", - "type": "list", - "type_version": "0.0.0", - "description": "List of model names", - "default_value": null, - "required": true, - "status": null, - "constraints": [], - "key_schema": null, - "entry_schema": { - "name": null, - "type": "string", - "type_version": "0.0.0", - "description": null, - "constraints": [] - }, - "metadata": {} - }, - "nfNames": { - "name": "nfNames", - "type": "list", - "type_version": "0.0.0", - "description": "List of network functions", - "default_value": null, - "required": true, - "status": null, - "constraints": [], - "key_schema": null, - "entry_schema": { - "name": null, - "type": "string", - "type_version": "0.0.0", - "description": null, - "constraints": [] - }, - "metadata": {} - } - }, - "constraints": [], - "key": { - "name": "onap.datatypes.monitoring.nfFilter", - "version": "0.0.0" - }, - "type": null, - "type_version": null, - "defined_name": "onap.datatypes.monitoring.nfFilter", - "defined_version": null - }, - "onap.datatypes.monitoring.subscription": { - "name": "onap.datatypes.monitoring.subscription", - "version": "0.0.0", - "derived_from": "tosca.datatypes.Root", - "metadata": {}, - "description": null, - "properties": { - "measurementGroups": { - "name": "measurementGroups", - "type": "list", - "type_version": "0.0.0", - "description": "Measurement Groups", - "default_value": null, - "required": true, - "status": null, - "constraints": [], - "key_schema": null, - "entry_schema": { - "name": null, - "type": "onap.datatypes.monitoring.measurementGroups", - "type_version": "0.0.0", - "description": null, - "constraints": [] - }, - "metadata": {} - }, - "fileBasedGP": { - "name": "fileBasedGP", - "type": "integer", - "type_version": "0.0.0", - "description": "File based granularity period", - "default_value": null, - "required": true, - "status": null, - "constraints": [], - "key_schema": null, - "entry_schema": null, - "metadata": {} - }, - "fileLocation": { - "name": "fileLocation", - "type": "string", - "type_version": "0.0.0", - "description": "ROP file location", - "default_value": null, - "required": true, - "status": null, - "constraints": [], - "key_schema": null, - "entry_schema": null, - "metadata": {} - }, - "subscriptionName": { - "name": "subscriptionName", - "type": "string", - "type_version": "0.0.0", - "description": "Name of the subscription", - "default_value": null, - "required": true, - "status": null, - "constraints": [], - "key_schema": null, - "entry_schema": null, - "metadata": {} - }, - "administrativeState": { - "name": "administrativeState", - "type": "string", - "type_version": "0.0.0", - "description": "State of the subscription", - "default_value": null, - "required": true, - "status": null, - "constraints": [ - { - "valid_values": [ - "LOCKED", - "UNLOCKED" - ], - "equal": null, - "greater_than": null, - "greater_or_equal": null, - "less_than": null, - "less_or_equal": null, - "range_values": null - } - ], - "key_schema": null, - "entry_schema": null, - "metadata": {} - }, - "nfFilter": { - "name": "nfFilter", - "type": "map", - "type_version": "0.0.0", - "description": "Network function filter", - "default_value": null, - "required": true, - "status": null, - "constraints": [], - "key_schema": null, - "entry_schema": { - "name": null, - "type": "onap.datatypes.monitoring.nfFilter", - "type_version": "0.0.0", - "description": null, - "constraints": [] - }, - "metadata": {} - } - }, - "constraints": [], - "key": { - "name": "onap.datatypes.monitoring.subscription", - "version": "0.0.0" - }, - "type": null, - "type_version": null, - "defined_name": "onap.datatypes.monitoring.subscription", - "defined_version": null - }, - "org.onap.datatypes.policy.clamp.controlloop.httpControlLoopElement.RestRequest": { - "name": "org.onap.datatypes.policy.clamp.controlloop.httpControlLoopElement.RestRequest", - "version": "1.0.0", - "derived_from": "tosca.datatypes.Root", - "metadata": {}, - "description": null, - "properties": { - "body": { - "name": "body", - "type": "string", - "type_version": "0.0.0", - "description": "The body of the REST request for PUT and POST requests", - "default_value": null, - "required": false, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "expectedResponse": { - "name": "expectedResponse", - "type": "integer", - "type_version": "0.0.0", - "description": "THe expected HTTP status code for the REST request", - "default_value": null, - "required": true, - "status": null, - "constraints": [], - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "httpMethod": { - "name": "httpMethod", - "type": "string", - "type_version": "0.0.0", - "description": "The REST method to use", - "default_value": null, - "required": true, - "status": null, - "constraints": [ - { - "valid_values": [ - "POST", - "PUT", - "GET", - "DELETE" - ], - "equal": null, - "greater_than": null, - "greater_or_equal": null, - "less_than": null, - "less_or_equal": null, - "range_values": null - } - ], - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "restRequestId": { - "name": "restRequestId", - "type": "onap.datatypes.ToscaConceptIdentifier", - "type_version": "0.0.0", - "description": "The name and version of a REST request to be sent to a REST endpoint", - "default_value": null, - "required": true, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - }, - "path": { - "name": "path", - "type": "string", - "type_version": "0.0.0", - "description": "The path of the REST request relative to the base URL", - "default_value": null, - "required": true, - "status": null, - "constraints": null, - "key_schema": null, - "entry_schema": null, - "metadata": null - } - }, - "constraints": [], - "key": { - "name": "org.onap.datatypes.policy.clamp.controlloop.httpControlLoopElement.RestRequest", - "version": "1.0.0" - }, - "type": null, - "type_version": null, - "defined_name": "org.onap.datatypes.policy.clamp.controlloop.httpControlLoopElement.RestRequest", - "defined_version": "1.0.0" - } - } -} diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/testFiles/instanceProps.json b/gui-clamp/ui-react/src/components/dialogs/ACM/testFiles/instanceProps.json deleted file mode 100644 index b8250fd..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/testFiles/instanceProps.json +++ /dev/null @@ -1,1444 +0,0 @@ -{ - "org.onap.domain.database.Http_PMSHMicroserviceControlLoopElement": { - "name": "org.onap.domain.database.Http_PMSHMicroserviceControlLoopElement", - "version": "1.2.3", - "derivedFrom": null, - "metadata": {}, - "description": "Control loop element for the http requests of PMSH microservice", - "type": "org.onap.policy.clamp.controlloop.HttpControlLoopElement", - "typeVersion": "1.0.1", - "properties": { - "provider": { - "name": "provider", - "type": "string", - "typeVersion": "0.0.0", - "description": "Specifies the organization that provides the control loop element", - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "passiveToUninitializedTimeout": { - "name": "passiveToUninitializedTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to uninitialized", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "participant_id": { - "name": "participant_id", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": null, - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "participantType": { - "name": "participantType", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": "The identity of the participant type that hosts this type of Control Loop Element", - "defaultValue": null, - "required": true, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "uninitializedToPassiveTimeout": { - "name": "uninitializedToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from uninitialized to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "startPhase": { - "name": "startPhase", - "type": "integer", - "typeVersion": "0.0.0", - "description": "A value indicating the start phase in which this control loop element will be started, the first start phase is zero. Control Loop Elements are started in their start_phase order and stopped in reverse start phase order. Control Loop Elements with the same start phase are started and stopped simultaneously", - "defaultValue": null, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "runningToPassiveTimeout": { - "name": "runningToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from running to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "passiveToRunningTimeout": { - "name": "passiveToRunningTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to running", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - } - }, - "requirements": null, - "capabilities": null, - "identifier": { - "name": "org.onap.domain.database.Http_PMSHMicroserviceControlLoopElement", - "version": "1.2.3" - }, - "typeIdentifier": { - "name": "org.onap.policy.clamp.controlloop.HttpControlLoopElement", - "version": "1.0.1" - }, - "key": { - "name": "org.onap.domain.database.Http_PMSHMicroserviceControlLoopElement", - "version": "1.2.3" - }, - "definedName": "org.onap.domain.database.Http_PMSHMicroserviceControlLoopElement", - "definedVersion": "1.2.3" - }, - "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement": { - "name": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement", - "version": "1.2.3", - "derivedFrom": null, - "metadata": {}, - "description": "Control loop element for the operational policy for Performance Management Subscription Handling", - "type": "org.onap.policy.clamp.controlloop.PolicyControlLoopElement", - "typeVersion": "1.0.0", - "properties": { - "provider": { - "name": "provider", - "type": "string", - "typeVersion": "0.0.0", - "description": "Specifies the organization that provides the control loop element", - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "passiveToUninitializedTimeout": { - "name": "passiveToUninitializedTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to uninitialized", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "participant_id": { - "name": "participant_id", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": null, - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "participantType": { - "name": "participantType", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": "The identity of the participant type that hosts this type of Control Loop Element", - "defaultValue": null, - "required": true, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "uninitializedToPassiveTimeout": { - "name": "uninitializedToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from uninitialized to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "startPhase": { - "name": "startPhase", - "type": "integer", - "typeVersion": "0.0.0", - "description": "A value indicating the start phase in which this control loop element will be started, the first start phase is zero. Control Loop Elements are started in their start_phase order and stopped in reverse start phase order. Control Loop Elements with the same start phase are started and stopped simultaneously", - "defaultValue": null, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "runningToPassiveTimeout": { - "name": "runningToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from running to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "passiveToRunningTimeout": { - "name": "passiveToRunningTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to running", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - } - }, - "requirements": null, - "capabilities": null, - "identifier": { - "name": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement", - "version": "1.2.3" - }, - "typeIdentifier": { - "name": "org.onap.policy.clamp.controlloop.PolicyControlLoopElement", - "version": "1.0.0" - }, - "key": { - "name": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement", - "version": "1.2.3" - }, - "definedName": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement", - "definedVersion": "1.2.3" - }, - "org.onap.domain.database.Local_K8SMicroserviceControlLoopElement": { - "name": "org.onap.domain.database.Local_K8SMicroserviceControlLoopElement", - "version": "1.2.3", - "derivedFrom": null, - "metadata": {}, - "description": "Control loop element for the K8S microservice for local chart", - "type": "org.onap.policy.clamp.controlloop.K8SMicroserviceControlLoopElement", - "typeVersion": "1.0.0", - "properties": { - "provider": { - "name": "provider", - "type": "string", - "typeVersion": "0.0.0", - "description": "Specifies the organization that provides the control loop element", - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "passiveToUninitializedTimeout": { - "name": "passiveToUninitializedTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to uninitialized", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "participant_id": { - "name": "participant_id", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": null, - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "participantType": { - "name": "participantType", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": "The identity of the participant type that hosts this type of Control Loop Element", - "defaultValue": null, - "required": true, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "uninitializedToPassiveTimeout": { - "name": "uninitializedToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from uninitialized to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "startPhase": { - "name": "startPhase", - "type": "integer", - "typeVersion": "0.0.0", - "description": "A value indicating the start phase in which this control loop element will be started, the first start phase is zero. Control Loop Elements are started in their start_phase order and stopped in reverse start phase order. Control Loop Elements with the same start phase are started and stopped simultaneously", - "defaultValue": null, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "runningToPassiveTimeout": { - "name": "runningToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from running to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "passiveToRunningTimeout": { - "name": "passiveToRunningTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to running", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - } - }, - "requirements": null, - "capabilities": null, - "identifier": { - "name": "org.onap.domain.database.Local_K8SMicroserviceControlLoopElement", - "version": "1.2.3" - }, - "typeIdentifier": { - "name": "org.onap.policy.clamp.controlloop.K8SMicroserviceControlLoopElement", - "version": "1.0.0" - }, - "key": { - "name": "org.onap.domain.database.Local_K8SMicroserviceControlLoopElement", - "version": "1.2.3" - }, - "definedName": "org.onap.domain.database.Local_K8SMicroserviceControlLoopElement", - "definedVersion": "1.2.3" - }, - "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement": { - "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement", - "version": "1.2.3", - "derivedFrom": null, - "metadata": {}, - "description": "Control loop element for the monitoring policy for Performance Management Subscription Handling", - "type": "org.onap.policy.clamp.controlloop.PolicyControlLoopElement", - "typeVersion": "1.0.0", - "properties": { - "provider": { - "name": "provider", - "type": "string", - "typeVersion": "0.0.0", - "description": "Specifies the organization that provides the control loop element", - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "passiveToUninitializedTimeout": { - "name": "passiveToUninitializedTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to uninitialized", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "participant_id": { - "name": "participant_id", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": null, - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "participantType": { - "name": "participantType", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": "The identity of the participant type that hosts this type of Control Loop Element", - "defaultValue": null, - "required": true, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "uninitializedToPassiveTimeout": { - "name": "uninitializedToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from uninitialized to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "startPhase": { - "name": "startPhase", - "type": "integer", - "typeVersion": "0.0.0", - "description": "A value indicating the start phase in which this control loop element will be started, the first start phase is zero. Control Loop Elements are started in their start_phase order and stopped in reverse start phase order. Control Loop Elements with the same start phase are started and stopped simultaneously", - "defaultValue": null, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "runningToPassiveTimeout": { - "name": "runningToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from running to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "passiveToRunningTimeout": { - "name": "passiveToRunningTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to running", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - } - }, - "requirements": null, - "capabilities": null, - "identifier": { - "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement", - "version": "1.2.3" - }, - "typeIdentifier": { - "name": "org.onap.policy.clamp.controlloop.PolicyControlLoopElement", - "version": "1.0.0" - }, - "key": { - "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement", - "version": "1.2.3" - }, - "definedName": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement", - "definedVersion": "1.2.3" - }, - "org.onap.domain.pmsh.DerivedDerivedPolicyControlLoopElement": { - "name": "org.onap.domain.pmsh.DerivedDerivedPolicyControlLoopElement", - "version": "1.2.3", - "derivedFrom": null, - "metadata": {}, - "description": "Control loop for Performance Management Subscription Handling", - "type": "org.onap.policy.clamp.controlloop.DerivedDerivedPolicyControlLoopElement", - "typeVersion": "1.0.0", - "properties": { - "provider": { - "name": "provider", - "type": "string", - "typeVersion": "0.0.0", - "description": "Specifies the organization that provides the control loop element", - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "passiveToUninitializedTimeout": { - "name": "passiveToUninitializedTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to uninitialized", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "participant_id": { - "name": "participant_id", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": null, - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "participantType": { - "name": "participantType", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": "The identity of the participant type that hosts this type of Control Loop Element", - "defaultValue": null, - "required": true, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "uninitializedToPassiveTimeout": { - "name": "uninitializedToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from uninitialized to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "startPhase": { - "name": "startPhase", - "type": "integer", - "typeVersion": "0.0.0", - "description": "A value indicating the start phase in which this control loop element will be started, the first start phase is zero. Control Loop Elements are started in their start_phase order and stopped in reverse start phase order. Control Loop Elements with the same start phase are started and stopped simultaneously", - "defaultValue": null, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "runningToPassiveTimeout": { - "name": "runningToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from running to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "passiveToRunningTimeout": { - "name": "passiveToRunningTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to running", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - } - }, - "requirements": null, - "capabilities": null, - "identifier": { - "name": "org.onap.domain.pmsh.DerivedDerivedPolicyControlLoopElement", - "version": "1.2.3" - }, - "typeIdentifier": { - "name": "org.onap.policy.clamp.controlloop.DerivedDerivedPolicyControlLoopElement", - "version": "1.0.0" - }, - "key": { - "name": "org.onap.domain.pmsh.DerivedDerivedPolicyControlLoopElement", - "version": "1.2.3" - }, - "definedName": "org.onap.domain.pmsh.DerivedDerivedPolicyControlLoopElement", - "definedVersion": "1.2.3" - }, - "org.onap.domain.sample.GenericK8s_ControlLoopDefinition": { - "name": "org.onap.domain.sample.GenericK8s_ControlLoopDefinition", - "version": "1.2.3", - "derivedFrom": null, - "metadata": {}, - "description": "Control loop for Hello World", - "type": "org.onap.policy.clamp.controlloop.ControlLoop", - "typeVersion": "1.0.0", - "properties": { - "provider": { - "name": "provider", - "type": "string", - "typeVersion": "0.0.0", - "description": "Specifies the organization that provides the control loop element", - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "elements": { - "name": "elements", - "type": "list", - "typeVersion": "0.0.0", - "description": "Specifies a list of control loop element definitions that make up this control loop definition", - "defaultValue": null, - "required": true, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": { - "name": null, - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": null, - "constraints": null - }, - "metadata": { - "common": "false" - } - } - }, - "requirements": null, - "capabilities": null, - "identifier": { - "name": "org.onap.domain.sample.GenericK8s_ControlLoopDefinition", - "version": "1.2.3" - }, - "typeIdentifier": { - "name": "org.onap.policy.clamp.controlloop.ControlLoop", - "version": "1.0.0" - }, - "key": { - "name": "org.onap.domain.sample.GenericK8s_ControlLoopDefinition", - "version": "1.2.3" - }, - "definedName": "org.onap.domain.sample.GenericK8s_ControlLoopDefinition", - "definedVersion": "1.2.3" - }, - "org.onap.domain.database.PMSH_K8SMicroserviceControlLoopElement": { - "name": "org.onap.domain.database.PMSH_K8SMicroserviceControlLoopElement", - "version": "1.2.3", - "derivedFrom": null, - "metadata": {}, - "description": "Control loop element for the K8S microservice for PMSH", - "type": "org.onap.policy.clamp.controlloop.K8SMicroserviceControlLoopElement", - "typeVersion": "1.0.0", - "properties": { - "provider": { - "name": "provider", - "type": "string", - "typeVersion": "0.0.0", - "description": "Specifies the organization that provides the control loop element", - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "passiveToUninitializedTimeout": { - "name": "passiveToUninitializedTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to uninitialized", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "participant_id": { - "name": "participant_id", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": null, - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "participantType": { - "name": "participantType", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": "The identity of the participant type that hosts this type of Control Loop Element", - "defaultValue": null, - "required": true, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "uninitializedToPassiveTimeout": { - "name": "uninitializedToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from uninitialized to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "startPhase": { - "name": "startPhase", - "type": "integer", - "typeVersion": "0.0.0", - "description": "A value indicating the start phase in which this control loop element will be started, the first start phase is zero. Control Loop Elements are started in their start_phase order and stopped in reverse start phase order. Control Loop Elements with the same start phase are started and stopped simultaneously", - "defaultValue": null, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "runningToPassiveTimeout": { - "name": "runningToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from running to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "passiveToRunningTimeout": { - "name": "passiveToRunningTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to running", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - } - }, - "requirements": null, - "capabilities": null, - "identifier": { - "name": "org.onap.domain.database.PMSH_K8SMicroserviceControlLoopElement", - "version": "1.2.3" - }, - "typeIdentifier": { - "name": "org.onap.policy.clamp.controlloop.K8SMicroserviceControlLoopElement", - "version": "1.0.0" - }, - "key": { - "name": "org.onap.domain.database.PMSH_K8SMicroserviceControlLoopElement", - "version": "1.2.3" - }, - "definedName": "org.onap.domain.database.PMSH_K8SMicroserviceControlLoopElement", - "definedVersion": "1.2.3" - }, - "org.onap.domain.pmsh.DerivedPolicyControlLoopElement": { - "name": "org.onap.domain.pmsh.DerivedPolicyControlLoopElement", - "version": "1.2.3", - "derivedFrom": null, - "metadata": {}, - "description": "Control loop for Performance Management Subscription Handling", - "type": "org.onap.policy.clamp.controlloop.DerivedPolicyControlLoopElement", - "typeVersion": "1.0.0", - "properties": { - "provider": { - "name": "provider", - "type": "string", - "typeVersion": "0.0.0", - "description": "Specifies the organization that provides the control loop element", - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "passiveToUninitializedTimeout": { - "name": "passiveToUninitializedTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to uninitialized", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "participant_id": { - "name": "participant_id", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": null, - "defaultValue": null, - "required": false, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "participantType": { - "name": "participantType", - "type": "onap.datatypes.ToscaConceptIdentifier", - "typeVersion": "0.0.0", - "description": "The identity of the participant type that hosts this type of Control Loop Element", - "defaultValue": null, - "required": true, - "status": null, - "constraints": null, - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "uninitializedToPassiveTimeout": { - "name": "uninitializedToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from uninitialized to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "startPhase": { - "name": "startPhase", - "type": "integer", - "typeVersion": "0.0.0", - "description": "A value indicating the start phase in which this control loop element will be started, the first start phase is zero. Control Loop Elements are started in their start_phase order and stopped in reverse start phase order. Control Loop Elements with the same start phase are started and stopped simultaneously", - "defaultValue": null, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "runningToPassiveTimeout": { - "name": "runningToPassiveTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from running to passive", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - }, - "passiveToRunningTimeout": { - "name": "passiveToRunningTimeout", - "type": "integer", - "typeVersion": "0.0.0", - "description": "The maximum time in seconds to wait for a state chage from passive to running", - "defaultValue": 60.0, - "required": false, - "status": null, - "constraints": [ - { - "validValues": null, - "equal": null, - "greaterThan": null, - "greaterOrEqual": "0", - "lessThan": null, - "lessOrEqual": null, - "rangeValues": null - } - ], - "keySchema": null, - "entrySchema": null, - "metadata": { - "common": "false" - } - } - }, - "requirements": null, - "capabilities": null, - "identifier": { - "name": "org.onap.domain.pmsh.DerivedPolicyControlLoopElement", - "version": "1.2.3" - }, - "typeIdentifier": { - "name": "org.onap.policy.clamp.controlloop.DerivedPolicyControlLoopElement", - "version": "1.0.0" - }, - "key": { - "name": "org.onap.domain.pmsh.DerivedPolicyControlLoopElement", - "version": "1.2.3" - }, - "definedName": "org.onap.domain.pmsh.DerivedPolicyControlLoopElement", - "definedVersion": "1.2.3" - } -} diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/testFiles/jsonEditorData.json b/gui-clamp/ui-react/src/components/dialogs/ACM/testFiles/jsonEditorData.json deleted file mode 100644 index c09424f..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/testFiles/jsonEditorData.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "__data": [ - "Object" - ], - "copyClipboard": null, - "editors": [ - "Object" - ], - "element": "
", - "expandRefs": [ - "Function anonymous" - ], - "expandSchema": [ - "Function anonymous" - ], - "iconlib": [ - "n" - ], - "options": [ - "Object" - ], - "ready": true, - "refs": [ - "Object" - ], - "root": [ - "o" - ], - "root_container": "
", - "schema": [ - "Object" - ], - "template": "undefined", - "theme": [ - "o" - ], - "translate": [ - "Function translate" - ], - "translateProperty": [ - "Function translateProperty" - ], - "uuid": 0, - "validation_results": [ - "Array" - ], - "validator": [ - "t" - ] -} diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/testFiles/orderedStateJson.json b/gui-clamp/ui-react/src/components/dialogs/ACM/testFiles/orderedStateJson.json deleted file mode 100644 index 1179fce..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/testFiles/orderedStateJson.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "orderedState": "PASSIVE", - "acmIdentifierList": [ - { - "name": "PMSH_Instance1", - "version": "2.3.1" - } - ] -} diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/utils/CommissioningUtils.js b/gui-clamp/ui-react/src/components/dialogs/ACM/utils/CommissioningUtils.js deleted file mode 100644 index 2d98598..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/utils/CommissioningUtils.js +++ /dev/null @@ -1,178 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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========================================================= - */ - -import { JSONEditor } from "@json-editor/json-editor"; -import { Alert } from "react-bootstrap"; -import React from "react"; - -const CommissioningUtils = { - makeSchemaForCommonProperties: (commonProps) => { - const commonPropsArr = Object.entries(commonProps) - - const newSchemaObject = {} - - newSchemaObject.title = "CommonProperties" - newSchemaObject.type = "object" - newSchemaObject.properties = {} - - commonPropsArr.forEach(([templateKey, template]) => { - - const propertiesObject = {} - Object.entries(template.properties).forEach(([propKey, prop]) => { - - propertiesObject[propKey] = { - type: CommissioningUtils.getType(prop.type) - } - - }) - newSchemaObject.properties[templateKey] = { - options: { - "collapsed": true - }, - properties: propertiesObject - } - }) - - return newSchemaObject - }, - getType: (propertyType) => { - switch (propertyType) - { - case "string": - return "string" - case "integer": - return "integer" - case "list": - return "array" - case "object": - return "object" - default: - return "object" - } - }, - createJsonEditor: (toscaModel, editorData) => { - JSONEditor.defaults.options.collapse = false; - - return new JSONEditor(document.getElementById("editor"), - { - schema: toscaModel, - startval: editorData, - theme: 'bootstrap4', - iconlib: 'fontawesome5', - object_layout: 'normal', - disable_properties: false, - disable_edit_json: true, - disable_array_reorder: true, - disable_array_delete_last_row: true, - disable_array_delete_all_rows: false, - array_controls_top: true, - keep_oneof_values: false, - collapsed: false, - show_errors: 'always', - display_required_only: false, - show_opt_in: false, - prompt_before_delete: true, - required_by_default: false, - }) - }, - renderJsonEditor: async (template, commonProps) => { - - const fullTemplate = await template.json() - - let toscaInitialValues - const allNodeTemplates = fullTemplate.topology_template.node_templates - const shortenedNodeTemplatesObjectStartValues = {} - // Get the common properties to construct a schema - // Get valid start values at the same time - const commonNodeTemplatesJson = await commonProps.json().then(data => { - const nodeTemplatesArray = Object.entries(data) - const shortenedNodeTemplatesObject = {} - nodeTemplatesArray.forEach(([key, temp]) => { - const currentNodeTemplate = allNodeTemplates[key] - const propertiesObject = { - properties: temp.properties - } - - shortenedNodeTemplatesObject[key] = propertiesObject - - const propertiesStartValues = {} - - // Get all the existing start values to populate the properties in the schema - Object.entries(propertiesObject.properties).forEach(([propKey, prop]) => { - propertiesStartValues[propKey] = currentNodeTemplate.properties[propKey] - }) - - shortenedNodeTemplatesObjectStartValues[key] = propertiesStartValues - - }) - - toscaInitialValues = shortenedNodeTemplatesObjectStartValues; - return shortenedNodeTemplatesObject; - }) - - const propertySchema = CommissioningUtils.makeSchemaForCommonProperties(commonNodeTemplatesJson); - - const editorTemp = CommissioningUtils.createJsonEditor(propertySchema, shortenedNodeTemplatesObjectStartValues); - - return { - fullTemplate: fullTemplate, - propertySchema: propertySchema, - editorTemp: editorTemp, - toscaInitialValues: toscaInitialValues - } - }, - getAlertMessages: async (response) => { - if (response.ok) { - return( - Commissioning Success -

Altered Template was Successfully Uploaded

-
-
); - } - else { - return( - Commissioning Failure -

Updated Template Failed to Upload

-

Status code: { await response.status }: { response.statusText }

-

Response Text: { await response.text() }

-
-
); - } - }, - - updateTemplate: async (userAddedCommonPropValues, fullToscaTemplate) => { - const nodeTemplates = fullToscaTemplate.topology_template.node_templates - const commonPropertyDataEntries = Object.entries(userAddedCommonPropValues) - - // This replaces the values for properties in the full tosca template - // that will be sent up to the api with the entries the user provided. - commonPropertyDataEntries.forEach(([templateKey, values]) => { - Object.entries(values).forEach(([propKey, propVal]) => { - nodeTemplates[templateKey].properties[propKey] = propVal - }) - }) - - fullToscaTemplate.topology_template.node_templates = nodeTemplates - - alert('Changes saved. Commission When Ready...') - return fullToscaTemplate - } -} - -export default CommissioningUtils; diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/utils/CommissioningUtils.test.js b/gui-clamp/ui-react/src/components/dialogs/ACM/utils/CommissioningUtils.test.js deleted file mode 100644 index 8304ecb..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/utils/CommissioningUtils.test.js +++ /dev/null @@ -1,94 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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========================================================= - */ - -import commonProps from "../testFiles/commonProps.json"; -import fullTemp from "../testFiles/fullTemplate.json"; -import CommissioningUtils from "./CommissioningUtils"; -import React from "react"; - -const commonProperties = JSON.parse(JSON.stringify(commonProps)) -const fullTemplate = JSON.parse(JSON.stringify(fullTemp)) - -describe('Verify CommissioningUtils', () => { - - const fullTemplatePromise = { - ok: true, - status: 200, - text: () => "OK", - json: () => { - return Promise.resolve(fullTemplate) - } - } - - const commonPropertiesPromise = { - ok: true, - status: 200, - text: () => "OK", - json: () => { - return Promise.resolve(commonProperties) - } - } - - it('test renderJsonEditor output is correct', async () => { - // Have to mock "editor" dom element for json editor to work in testing - document.body.innerHTML = '
'; - - await expect((await CommissioningUtils.renderJsonEditor(fullTemplatePromise, commonPropertiesPromise)).editorTemp).toBeTruthy() - await expect((await CommissioningUtils.renderJsonEditor(fullTemplatePromise, commonPropertiesPromise)).fullTemplate).toBeTruthy() - await expect((await CommissioningUtils.renderJsonEditor(fullTemplatePromise, commonPropertiesPromise)).propertySchema).toBeTruthy() - await expect((await CommissioningUtils.renderJsonEditor(fullTemplatePromise, commonPropertiesPromise)).toscaInitialValues).toBeTruthy() - }) - - it('test the getType method object type', () => { - expect(CommissioningUtils.getType("object")).toBe("object") - }) - - it('test getAlertMessages with response ok', async () => { - const response = { - ok: true, - status: 200, - text: () => { - return Promise.resolve("OK") - }, - json: () => { - return Promise.resolve("{}") - } - } - - await expect(JSON.stringify(await CommissioningUtils.getAlertMessages(response))).toContain("Commissioning Success") - }) - - it('test getAlertMessages with response not ok', async () => { - const response = { - ok: false, - status: 200, - text: () => { - return Promise.resolve("Error") - }, - json: () => { - return Promise.resolve("{}") - } - } - - await expect(JSON.stringify(await CommissioningUtils.getAlertMessages(response))).toContain("Commissioning Failure") - }) - - - } -) diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/utils/InstantiationUtils.js b/gui-clamp/ui-react/src/components/dialogs/ACM/utils/InstantiationUtils.js deleted file mode 100644 index 1e33edb..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/utils/InstantiationUtils.js +++ /dev/null @@ -1,177 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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========================================================= - * - * - */ - -import { JSONEditor } from "@json-editor/json-editor"; - -const InstantiationUtils = { - - parseInstantiationList: (acmList) => { - const parsedAcmList = []; - - acmList.map((instance, index) => { - - const acmObj = { - index, - name: instance['name'], - version: instance['version'], - orderedState: instance['orderedState'], - currentState: instance['state'], - disableDelete: instance['state'] !== 'UNINITIALISED', - disableEdit: instance['state'] !== 'UNINITIALISED' - } - - parsedAcmList.push(acmObj); - }); - - return parsedAcmList; - }, - - makeSchemaForInstanceProperties: (instanceProps) => { - const instancePropsArray = Object.entries(instanceProps); - - const newSchemaObject = {}; - - newSchemaObject.title = "InstanceProperties"; - newSchemaObject.type = "object"; - newSchemaObject.properties = {}; - - instancePropsArray.forEach(([key, value]) => { - - const propertiesObject = {}; - - Object.entries(value.properties).forEach(([pKey, pValue]) => { - propertiesObject[pKey] = { - type: InstantiationUtils.getType(pValue.type) - } - }); - - newSchemaObject.properties[key] = { - options: { - "collapsed": true - }, - properties: propertiesObject - } - }); - - return newSchemaObject; - }, - - parseJsonSchema: async (template, instanceProperties) => { - const fullTemplate = await template.json(); - - const filteredInitialValues = {}; - - const allInstanceProperties = await instanceProperties.json().then(properties => { - const filteredTemplateObj = {}; - const propertiesTemplateArray = Object.entries(properties); - - propertiesTemplateArray.forEach(([key, value]) => { - const propertiesObj = { - properties: value.properties - } - - const propValues = {}; - filteredTemplateObj[key] = propertiesObj; - - const jsonNodeSchemaKey = fullTemplate.topology_template.node_templates[key]; - - Object.entries(propertiesObj.properties).forEach(([pKey, pValue]) => { - propValues[pKey] = jsonNodeSchemaKey.properties[pKey]; - }); - - filteredInitialValues[key] = propValues; - }); - - return filteredTemplateObj; - }); - - const propertySchema = InstantiationUtils.makeSchemaForInstanceProperties(allInstanceProperties); - - const jsonEditor = InstantiationUtils.createJsonEditor(propertySchema, filteredInitialValues); - - return { - fullTemplate: fullTemplate, - jsonEditor: jsonEditor - } - }, - - getType: (pType) => { - switch (pType) { - case "map": - return "string"; - case "string": - return "string"; - case "integer": - return "integer"; - case "list": - return "array"; - case "object": - return "object"; - default: - return "object"; - } - }, - - createJsonEditor: (fullSchema, instanceProperties) => { - JSONEditor.defaults.options.collapse = true; - - return new JSONEditor(document.getElementById("editor"), - { - schema: fullSchema, - startval: instanceProperties, - theme: 'bootstrap4', - iconlib: 'fontawesome5', - object_layout: 'normal', - disable_properties: false, - disable_edit_json: false, - disable_array_reorder: true, - disable_array_delete_last_row: true, - disable_array_delete_all_rows: false, - array_controls_top: true, - keep_oneof_values: false, - collapsed: true, - show_errors: 'always', - display_required_only: false, - show_opt_in: false, - prompt_before_delete: true, - required_by_default: false, - }); - }, - - updateTemplate: (instanceName, jsonEditorValues, fullTemplate) => { - const nodeTemplates = fullTemplate.topology_template.node_templates; - const instanceDataProperties = Object.entries(jsonEditorValues); - - instanceDataProperties.forEach(([key, value]) => { - const nodeTemplatesKey = nodeTemplates[key] - Object.entries(value).forEach(([pKey, pValue]) => { - nodeTemplatesKey.properties[pKey] = pValue - }); - }); - - fullTemplate.topology_template.node_templates = nodeTemplates; - fullTemplate.name = instanceName; - - return fullTemplate; - } -} - -export default InstantiationUtils; \ No newline at end of file diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/utils/InstantiationUtils.test.js b/gui-clamp/ui-react/src/components/dialogs/ACM/utils/InstantiationUtils.test.js deleted file mode 100644 index 4077ff8..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ACM/utils/InstantiationUtils.test.js +++ /dev/null @@ -1,54 +0,0 @@ -/* - * ============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========================================================= - */ - -import InstantiationUtils from "./InstantiationUtils"; -import instanceProps from "../testFiles/instanceProps.json"; -import fullTemp from "../testFiles/fullTemplate.json"; - -const instanceProperties = JSON.parse(JSON.stringify(instanceProps)) -const fullTemplate = JSON.parse(JSON.stringify(fullTemp)) - -describe('Verify InstantiationUtils', () => { - - const fullTemplatePromise = { - ok: true, - status: 200, - text: () => "OK", - json: () => { - return Promise.resolve(fullTemplate) - } - } - - const instancePropertiesPromise = { - ok: true, - status: 200, - text: () => "OK", - json: () => { - return Promise.resolve(instanceProperties) - } - } - - it('test parseJsonSchema output is correct', async () => { - // Have to mock "editor" dom element for json editor to work in testing - document.body.innerHTML = '
'; - - await expect((await InstantiationUtils.parseJsonSchema(fullTemplatePromise, instancePropertiesPromise)).jsonEditor).toBeTruthy() - await expect((await InstantiationUtils.parseJsonSchema(fullTemplatePromise, instancePropertiesPromise)).fullTemplate).toBeTruthy() - }) -}); \ No newline at end of file diff --git a/gui-clamp/ui-react/src/components/dialogs/Loop/CreateLoopModal.js b/gui-clamp/ui-react/src/components/dialogs/Loop/CreateLoopModal.js deleted file mode 100644 index 690dcbb..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Loop/CreateLoopModal.js +++ /dev/null @@ -1,193 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2020 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============================================ - * =================================================================== - * - */ - -import React from 'react' -import Select from 'react-select'; -import Button from 'react-bootstrap/Button'; -import Modal from 'react-bootstrap/Modal'; -import Form from 'react-bootstrap/Form'; -import Row from 'react-bootstrap/Row'; -import Col from 'react-bootstrap/Col'; -import styled from 'styled-components'; -import LoopService from '../../../api/LoopService'; -import TemplateService from '../../../api/TemplateService'; -import LoopCache from '../../../api/LoopCache'; -import SvgGenerator from '../../loop_viewer/svg/SvgGenerator'; - -const ModalStyled = styled(Modal)` - background-color: transparent; -` - -const ErrMsgStyled = styled.div` - color: red; -` - -export default class CreateLoopModal extends React.Component { - constructor(props, context) { - super(props, context); - - this.getAllLoopTemplates = this.getAllLoopTemplates.bind(this); - this.handleCreate = this.handleCreate.bind(this); - this.handleModelName = this.handleModelName.bind(this); - this.handleClose = this.handleClose.bind(this); - this.handleDropDownListChange = this.handleDropDownListChange.bind(this); - this.renderSvg = this.renderSvg.bind(this); - this.state = { - show: true, - chosenTemplateName: '', - modelInputErrMsg: '', - modelName: '', - templateNames: [], - fakeLoopCacheWithTemplate: new LoopCache({}) - }; - } - - async componentDidMount() { - await this.getAllLoopTemplates(); - await this.getModelNames(); - } - - handleClose() { - this.setState({ show: false }); - this.props.history.push('/'); - } - - handleDropDownListChange(e) { - if (typeof e.value !== "undefined") { - this.setState({ - fakeLoopCacheWithTemplate: - new LoopCache({ - "loopTemplate": e.templateObject, - "name": "fakeLoop" - }), - chosenTemplateName: e.value - }) - } else { - this.setState({ fakeLoopCacheWithTemplate: new LoopCache({}) }) - } - } - - getAllLoopTemplates() { - TemplateService.getAllLoopTemplates().then(templatesData => { - const templateOptions = templatesData.map((templateData) => { - return { label: templateData.name, value: templateData.name, templateObject: templateData } - }); - this.setState({ - templateNames: templateOptions - }) - }); - } - - getModelNames() { - TemplateService.getLoopNames().then(loopNames => { - if (!loopNames) { - loopNames = []; - } - // Remove LOOP_ prefix - let trimmedLoopNames = loopNames.map(str => str.replace('LOOP_', '')); - this.setState({ modelNames: trimmedLoopNames }); - }); - } - - handleCreate() { - if (!this.state.modelName) { - alert("A model name is required"); - return; - } - console.debug("Create Model " + this.state.modelName + ", Template " + this.state.chosenTemplateName + " is chosen"); - this.setState({ show: false }); - LoopService.createLoop("LOOP_" + this.state.modelName, this.state.chosenTemplateName).then(text => { - console.debug("CreateLoop response received: ", text); - try { - this.props.history.push('/'); - this.props.loadLoopFunction("LOOP_" + this.state.modelName); - } catch (err) { - alert(text); - this.props.history.push('/'); - } - }) - .catch(error => { - console.debug("Create Loop failed"); - }); - } - - handleModelName(event) { - if (this.state.modelNames.includes(event.target.value)) { - this.setState({ - modelInputErrMsg: 'A model named "' + event.target.value + '" already exists. Please pick another name.', - modelName: event.target.value - }); - return; - } else { - this.setState({ - modelInputErrMsg: '', - modelName: event.target.value - }); - } - } - - renderSvg() { - return ( - - ); - } - - render() { - return ( - - - Create Model - - - - Template Name: - - - - - - - { this.state.modelInputErrMsg } - - - - - - - - ); - } -} diff --git a/gui-clamp/ui-react/src/components/dialogs/Loop/CreateLoopModal.test.js b/gui-clamp/ui-react/src/components/dialogs/Loop/CreateLoopModal.test.js deleted file mode 100644 index 3d94833..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Loop/CreateLoopModal.test.js +++ /dev/null @@ -1,151 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2020 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============================================ - * =================================================================== - * - */ -import React from 'react'; -import { shallow } from 'enzyme'; -import CreateLoopModal from './CreateLoopModal'; -import LoopService from '../../../api/LoopService'; -import TemplateService from '../../../api/TemplateService'; - -let errorMessage = ''; -window.alert = jest.fn().mockImplementation((mesg) => { - errorMessage = mesg; - return -}); - - -describe('Verify CreateLoopModal', () => { - - it('Test the render method', async () => { - const flushPromises = () => new Promise(setImmediate); - TemplateService.getAllLoopTemplates = jest.fn().mockImplementation(() => { - return Promise.resolve([{ "name": "template1" }, { "name": "template2" }]); - }); - TemplateService.getLoopNames = jest.fn().mockImplementation(() => { - return Promise.resolve([]); - }); - - const component = shallow(); - expect(component).toMatchSnapshot(); - await flushPromises(); - component.update(); - expect(component.state('templateNames')).toStrictEqual([{ "label": "template1", "value": "template1", "templateObject": { "name": "template1" } }, { - "label": "template2", - "value": "template2", - "templateObject": { "name": "template2" } - }]); - }); - - it('handleDropdownListChange event', async () => { - const flushPromises = () => new Promise(setImmediate); - - const component = shallow(); - component.find('StateManager').simulate('change', { value: 'template1', templateObject: { "name": "template1" } }); - await flushPromises(); - component.update(); - expect(component.state('chosenTemplateName')).toEqual("template1"); - expect(component.state('fakeLoopCacheWithTemplate').getLoopTemplate()['name']).toEqual("template1"); - expect(component.state('fakeLoopCacheWithTemplate').getLoopName()).toEqual("fakeLoop"); - - component.find('StateManager').simulate('change', { value: 'template2', templateObject: { "name": "template2" } }); - await flushPromises(); - component.update(); - expect(component.state('chosenTemplateName')).toEqual("template2"); - expect(component.state('fakeLoopCacheWithTemplate').getLoopTemplate()['name']).toEqual("template2"); - expect(component.state('fakeLoopCacheWithTemplate').getLoopName()).toEqual("fakeLoop"); - }); - - it('handleModelName event', async () => { - const flushPromises = () => new Promise(setImmediate); - TemplateService.getAllLoopTemplates = jest.fn().mockImplementation(() => { - return Promise.resolve([{ "name": "template1" }, { "name": "template2" }]); - }); - TemplateService.getLoopNames = jest.fn().mockImplementation(() => { - return Promise.resolve([]); - }); - const event = { target: { value: "model1" } }; - const component = shallow(); - await flushPromises(); - component.find('input').simulate('change', event); - component.update(); - expect(component.state('modelName')).toEqual("model1"); - }); - - it('Test handleClose', () => { - const historyMock = { push: jest.fn() }; - const handleClose = jest.spyOn(CreateLoopModal.prototype, 'handleClose'); - const component = shallow() - - component.find('[variant="secondary"]').prop('onClick')(); - - expect(handleClose).toHaveBeenCalledTimes(1); - expect(component.state('show')).toEqual(false); - expect(historyMock.push.mock.calls[0]).toEqual(['/']); - - handleClose.mockClear(); - }); - - it('Test handleCreate Fail', () => { - const handleCreate = jest.spyOn(CreateLoopModal.prototype, 'handleCreate'); - const component = shallow() - - component.find('[variant="primary"]').prop('onClick')(); - - expect(handleCreate).toHaveBeenCalledTimes(1); - expect(component.state('show')).toEqual(true); - - handleCreate.mockClear(); - }); - - it('Test handleCreate Suc', async () => { - const flushPromises = () => new Promise(setImmediate); - const historyMock = { push: jest.fn() }; - const loadLoopFunction = jest.fn(); - - LoopService.createLoop = jest.fn().mockImplementation(() => { - return Promise.resolve({ - ok: true, - status: 200, - json: () => { - } - }); - }); - - const handleCreate = jest.spyOn(CreateLoopModal.prototype, 'handleCreate'); - const component = shallow() - component.setState({ - modelName: "modelNameTest", - chosenTemplateName: "template1" - }); - - component.find('[variant="primary"]').prop('onClick')(); - await flushPromises(); - component.update(); - - expect(handleCreate).toHaveBeenCalledTimes(1); - expect(component.state('show')).toEqual(false); - expect(historyMock.push.mock.calls[0]).toEqual(['/']); - - handleCreate.mockClear(); - }); - -}); diff --git a/gui-clamp/ui-react/src/components/dialogs/Loop/DeployLoopModal.js b/gui-clamp/ui-react/src/components/dialogs/Loop/DeployLoopModal.js deleted file mode 100644 index 5fff586..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Loop/DeployLoopModal.js +++ /dev/null @@ -1,178 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP POLICY-CLAMP - * ================================================================================ - * Copyright (C) 2019, 2021 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============================================ - * =================================================================== - * - */ -import React from 'react'; -import LoopActionService from '../../../api/LoopActionService'; -import LoopService from '../../../api/LoopService'; -import Button from 'react-bootstrap/Button'; -import Modal from 'react-bootstrap/Modal'; -import Form from 'react-bootstrap/Form'; -import Tabs from 'react-bootstrap/Tabs'; -import Tab from 'react-bootstrap/Tab'; -import styled from 'styled-components'; -import Spinner from 'react-bootstrap/Spinner' - -const StyledSpinnerDiv = styled.div` - justify-content: center !important; - display: flex !important; -`; - -const ModalStyled = styled(Modal)` - background-color: transparent; -` -const FormStyled = styled(Form.Group)` - padding: .25rem 1.5rem; -` -export default class DeployLoopModal extends React.Component { - - - constructor(props, context) { - super(props, context); - - this.handleSave = this.handleSave.bind(this); - this.handleClose = this.handleClose.bind(this); - this.handleChange = this.handleChange.bind(this); - this.refreshStatus = this.refreshStatus.bind(this); - this.renderDeployParam = this.renderDeployParam.bind(this); - this.renderSpinner = this.renderSpinner.bind(this); - - const propertiesJson = JSON.parse(JSON.stringify(this.props.loopCache.getGlobalProperties())); - this.state = { - loopCache: this.props.loopCache, - temporaryPropertiesJson: propertiesJson, - show: true, - key: this.getInitialKeyValue(propertiesJson) - }; - } - - getInitialKeyValue(temporaryPropertiesJson) { - const deployJsonList = temporaryPropertiesJson["dcaeDeployParameters"]; - return Object.keys(deployJsonList).find((obj) => Object.keys(deployJsonList).indexOf(obj) === 0); - } - - componentWillReceiveProps(newProps) { - this.setState({ - loopName: newProps.loopCache.getLoopName(), - show: true - }); - } - - handleClose() { - this.setState({ show: false }); - this.props.history.push('/'); - } - - renderSpinner() { - if (this.state.deploying) { - return ( - - - Loading... - - - ); - } else { - return (
); - } - } - - handleSave() { - const loopName = this.props.loopCache.getLoopName(); - // save the global propserties - this.setState({ deploying: true }); - LoopService.updateGlobalProperties(loopName, this.state.temporaryPropertiesJson).then(resp => { - LoopActionService.performAction(loopName, "deploy").then(pars => { - this.props.showSucAlert("Action deploy successfully performed"); - // refresh status and update loop logs - this.refreshStatus(loopName); - }) - .catch(error => { - this.props.showFailAlert("Action deploy failed"); - // refresh status and update loop logs - this.refreshStatus(loopName); - }); - }); - } - - refreshStatus(loopName) { - LoopActionService.refreshStatus(loopName).then(data => { - this.props.updateLoopFunction(data); - this.setState({ show: false, deploying: false }); - this.props.history.push('/'); - }) - .catch(error => { - this.props.showFailAlert("Refresh status failed"); - this.setState({ show: false, deploying: false }); - this.props.history.push('/'); - }); - } - - handleChange(event) { - let deploymentParam = this.state.temporaryPropertiesJson["dcaeDeployParameters"]; - deploymentParam[this.state.key][event.target.name] = event.target.value; - - this.setState({ temporaryPropertiesJson: { dcaeDeployParameters: deploymentParam } }); - } - - renderDeployParamTabs() { - if (typeof (this.state.temporaryPropertiesJson) === "undefined") { - return ""; - } - - const deployJsonList = this.state.temporaryPropertiesJson["dcaeDeployParameters"]; - var indents = []; - Object.keys(deployJsonList).forEach(item => - indents.push( - { this.renderDeployParam(deployJsonList[item]) } - ) - ); - return indents; - } - - renderDeployParam(deployJson) { - var indents = []; - Object.keys(deployJson).forEach(item => - indents.push( - { item } - - )); - return indents; - } - - render() { - return ( - - - Deployment parameters - - this.setState({ key }) }> - { this.renderDeployParamTabs() } - - { this.renderSpinner() } - - - - - - ); - } -} diff --git a/gui-clamp/ui-react/src/components/dialogs/Loop/DeployLoopModal.test.js b/gui-clamp/ui-react/src/components/dialogs/Loop/DeployLoopModal.test.js deleted file mode 100644 index 0c68f23..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Loop/DeployLoopModal.test.js +++ /dev/null @@ -1,114 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 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============================================ - * =================================================================== - * - */ -import React from 'react'; -import { shallow } from 'enzyme'; -import DeployLoopModal from './DeployLoopModal'; -import LoopCache from '../../../api/LoopCache'; -import LoopActionService from '../../../api/LoopActionService'; -import LoopService from '../../../api/LoopService'; - -describe('Verify DeployLoopModal', () => { - const loopCache = new LoopCache({ - "name": "LOOP_Jbv1z_v1_0_ResourceInstanceName1_tca", - "globalPropertiesJson": { - "dcaeDeployParameters": { - "testMs": { - "location_id": "", - "policy_id": "TCA_h2NMX_v1_0_ResourceInstanceName1_tca" - } - } - } - }); - - it('Test the render method', () => { - const component = shallow( - - ) - - expect(component).toMatchSnapshot(); - }); - - it('Test handleClose', () => { - const historyMock = { push: jest.fn() }; - const handleClose = jest.spyOn(DeployLoopModal.prototype, 'handleClose'); - const component = shallow() - - component.find('[variant="secondary"]').prop('onClick')(); - - expect(handleClose).toHaveBeenCalledTimes(1); - expect(historyMock.push.mock.calls[0]).toEqual(['/']); - }); - - it('Test handleSave successful', async () => { - const flushPromises = () => new Promise(setImmediate); - const historyMock = { push: jest.fn() }; - const updateLoopFunction = jest.fn(); - const showSucAlert = jest.fn(); - const showFailAlert = jest.fn(); - const handleSave = jest.spyOn(DeployLoopModal.prototype, 'handleSave'); - LoopService.updateGlobalProperties = jest.fn().mockImplementation(() => { - return Promise.resolve({ - ok: true, - status: 200, - text: () => "OK" - }); - }); - LoopActionService.performAction = jest.fn().mockImplementation(() => { - return Promise.resolve({ - ok: true, - status: 200, - json: () => { - } - }); - }); - LoopActionService.refreshStatus = jest.fn().mockImplementation(() => { - return Promise.resolve({ - ok: true, - status: 200, - json: () => { - } - }); - }); - - const component = shallow() - - component.find('[variant="primary"]').prop('onClick')(); - await flushPromises(); - component.update(); - - expect(handleSave).toHaveBeenCalledTimes(1); - expect(component.state('show')).toEqual(false); - expect(historyMock.push.mock.calls[0]).toEqual(['/']); - handleSave.mockClear(); - }); - - it('Onchange event', () => { - const event = { target: { name: "location_id", value: "testLocation" } }; - const component = shallow(); - - component.find('[name="location_id"]').simulate('change', event); - component.update(); - expect(component.state('temporaryPropertiesJson').dcaeDeployParameters.testMs.location_id).toEqual("testLocation"); - }); -}); diff --git a/gui-clamp/ui-react/src/components/dialogs/Loop/LoopPropertiesModal.js b/gui-clamp/ui-react/src/components/dialogs/Loop/LoopPropertiesModal.js deleted file mode 100644 index 6917713..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Loop/LoopPropertiesModal.js +++ /dev/null @@ -1,118 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 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============================================ - * =================================================================== - * - */ - -import React from 'react' -import Button from 'react-bootstrap/Button'; -import Modal from 'react-bootstrap/Modal'; -import Form from 'react-bootstrap/Form'; -import styled from 'styled-components'; -import LoopService from '../../../api/LoopService'; - -const ModalStyled = styled(Modal)` - background-color: transparent; -` -export default class LoopPropertiesModal extends React.Component { - - state = { - show: true, - loopCache: this.props.loopCache, - temporaryPropertiesJson: JSON.parse(JSON.stringify(this.props.loopCache.getGlobalProperties())) - }; - - constructor(props, context) { - super(props, context); - - this.handleClose = this.handleClose.bind(this); - this.handleSave = this.handleSave.bind(this); - this.handleChange = this.handleChange.bind(this); - - this.renderDcaeParameters = this.renderDcaeParameters.bind(this); - this.renderAllParameters = this.renderAllParameters.bind(this); - this.getDcaeParameters = this.getDcaeParameters.bind(this); - this.readOnly = props.readOnly !== undefined ? props.readOnly : false; - } - - componentWillReceiveProps(newProps) { - this.setState({ - loopCache: newProps.loopCache, - temporaryPropertiesJson: JSON.parse(JSON.stringify(newProps.loopCache.getGlobalProperties())) - }); - } - - handleClose() { - this.props.history.push('/'); - } - - handleSave(event) { - LoopService.updateGlobalProperties(this.state.loopCache.getLoopName(), this.state.temporaryPropertiesJson).then(resp => { - this.setState({ show: false }); - this.props.history.push('/'); - this.props.loadLoopFunction(this.state.loopCache.getLoopName()); - }); - } - - handleChange(event) { - this.setState({ temporaryPropertiesJson: { [event.target.name]: JSON.parse(event.target.value) } }); - } - - renderAllParameters() { - return ( -
- { this.renderDcaeParameters() } -
-
- ); - } - - getDcaeParameters() { - if (typeof (this.state.temporaryPropertiesJson) !== "undefined") { - return JSON.stringify(this.state.temporaryPropertiesJson["dcaeDeployParameters"]); - } else { - return ""; - } - - } - - renderDcaeParameters() { - return ( - - Deploy Parameters - - - ); - } - - render() { - return ( - - - Model Properties - - { this.renderAllParameters() } - - - - - - ); - } -} diff --git a/gui-clamp/ui-react/src/components/dialogs/Loop/LoopPropertiesModal.test.js b/gui-clamp/ui-react/src/components/dialogs/Loop/LoopPropertiesModal.test.js deleted file mode 100644 index a9c5903..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Loop/LoopPropertiesModal.test.js +++ /dev/null @@ -1,110 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 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============================================ - * =================================================================== - * - */ -import React from 'react'; -import { shallow } from 'enzyme'; -import LoopPropertiesModal from './LoopPropertiesModal'; -import LoopCache from '../../../api/LoopCache'; -import LoopService from '../../../api/LoopService'; - -describe('Verify LoopPropertiesModal', () => { - const loopCache = new LoopCache({ - "name": "LOOP_Jbv1z_v1_0_ResourceInstanceName1_tca", - "globalPropertiesJson": { - "dcaeDeployParameters": { - "location_id": "", - "policy_id": "TCA_h2NMX_v1_0_ResourceInstanceName1_tca" - } - } - }); - - it('Test the render method', () => { - const component = shallow( - - ) - component.setState({ - show: true, - temporaryPropertiesJson: { - "dcaeDeployParameters": { - "location_id": "", - "policy_id": "TCA_h2NMX_v1_0_ResourceInstanceName1_tca" - } - } - }); - - expect(component.state('temporaryPropertiesJson')).toEqual({ - "dcaeDeployParameters": { - "location_id": "", - "policy_id": "TCA_h2NMX_v1_0_ResourceInstanceName1_tca" - } - }); - expect(component.state('show')).toEqual(true); - - expect(component).toMatchSnapshot(); - }); - - it('Test handleClose', () => { - const historyMock = { push: jest.fn() }; - const handleClose = jest.spyOn(LoopPropertiesModal.prototype, 'handleClose'); - const component = shallow() - - component.find('[variant="secondary"]').prop('onClick')(); - - expect(handleClose).toHaveBeenCalledTimes(1); - expect(historyMock.push.mock.calls[0]).toEqual(['/']); - }); - - it('Test handleSave successful', async () => { - const flushPromises = () => new Promise(setImmediate); - const historyMock = { push: jest.fn() }; - const loadLoopFunction = jest.fn(); - const handleSave = jest.spyOn(LoopPropertiesModal.prototype, 'handleSave'); - LoopService.updateGlobalProperties = jest.fn().mockImplementation(() => { - return Promise.resolve({ - ok: true, - status: 200, - text: () => "OK" - }); - }); - - const component = shallow() - - component.find('[variant="primary"]').prop('onClick')(); - await flushPromises(); - component.update(); - - expect(handleSave).toHaveBeenCalledTimes(1); - expect(component.state('show')).toEqual(false); - expect(historyMock.push.mock.calls[0]).toEqual(['/']); - }); - - it('Onchange event', () => { - const event = { target: { name: "dcaeDeployParameters", value: "{\"location_id\": \"testLocation\",\"policy_id\": \"TCA_h2NMX_v1_0_ResourceInstanceName1_tca\"}" } }; - const component = shallow(); - - component.find('FormControl').simulate('change', event); - component.update(); - - expect(component.state('temporaryPropertiesJson').dcaeDeployParameters.location_id).toEqual("testLocation"); - }); -}); diff --git a/gui-clamp/ui-react/src/components/dialogs/Loop/ModifyLoopModal.js b/gui-clamp/ui-react/src/components/dialogs/Loop/ModifyLoopModal.js deleted file mode 100644 index 32ae209..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Loop/ModifyLoopModal.js +++ /dev/null @@ -1,262 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. - * Modifications 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. - * ============LICENSE_END============================================ - * =================================================================== - * - */ - -import React, { forwardRef } from 'react' -import MaterialTable from "material-table"; -import Button from 'react-bootstrap/Button'; -import Modal from 'react-bootstrap/Modal'; -import styled from 'styled-components'; -import PolicyToscaService from '../../../api/PolicyToscaService'; -import ArrowUpward from '@material-ui/icons/ArrowUpward'; -import ChevronLeft from '@material-ui/icons/ChevronLeft'; -import ChevronRight from '@material-ui/icons/ChevronRight'; -import Clear from '@material-ui/icons/Clear'; -import FirstPage from '@material-ui/icons/FirstPage'; -import LastPage from '@material-ui/icons/LastPage'; -import Search from '@material-ui/icons/Search'; -import LoopService from '../../../api/LoopService'; -import Tabs from 'react-bootstrap/Tabs'; -import Tab from 'react-bootstrap/Tab'; -import Alert from 'react-bootstrap/Alert'; - -const ModalStyled = styled(Modal)` - background-color: transparent; -` -const TextModal = styled.textarea` - margin-top: 20px; - white-space: pre; - background-color: ${ props => props.theme.toscaTextareaBackgroundColor }; - text-align: justify; - font-size: ${ props => props.theme.toscaTextareaFontSize }; - width: 100%; - height: 300px; -` -const cellStyle = { border: '1px solid black' }; -const headerStyle = { backgroundColor: '#ddd', border: '2px solid black' }; -const rowHeaderStyle = { backgroundColor: '#ddd', fontSize: '15pt', text: 'bold', border: '1px solid black' }; - -export default class ModifyLoopModal extends React.Component { - - state = { - show: true, - loopCache: this.props.loopCache, - content: 'Please select Tosca model to view the details', - selectedRowData: {}, - toscaPolicyModelsData: [], - selectedPolicyModelsData: [], - key: 'add', - showFailAlert: false, - toscaColumns: [ - { - title: "#", field: "index", render: rowData => rowData.tableData.id + 1, - cellStyle: cellStyle, - headerStyle: headerStyle - }, - { - title: "Policy Model Type", field: "policyModelType", - cellStyle: cellStyle, - headerStyle: headerStyle - }, - { - title: "Policy Acronym", field: "policyAcronym", - cellStyle: cellStyle, - headerStyle: headerStyle - }, - { - title: "Policy Name", field: "policyName", - cellStyle: cellStyle, - headerStyle: headerStyle - }, - { - title: "Version", field: "version", - cellStyle: cellStyle, - headerStyle: headerStyle - }, - { - title: "Uploaded By", field: "updatedBy", - cellStyle: cellStyle, - headerStyle: headerStyle - }, - { - title: "Uploaded Date", field: "updatedDate", editable: 'never', - cellStyle: cellStyle, - headerStyle: headerStyle - }, - { - title: "Created Date", field: "createdDate", editable: 'never', - cellStyle: cellStyle, - headerStyle: headerStyle - } - ], - tableIcons: { - FirstPage: forwardRef((props, ref) => ), - LastPage: forwardRef((props, ref) => ), - NextPage: forwardRef((props, ref) => ), - PreviousPage: forwardRef((props, ref) => ), - ResetSearch: forwardRef((props, ref) => ), - Search: forwardRef((props, ref) => ), - SortArrow: forwardRef((props, ref) => ) - } - }; - - constructor(props, context) { - super(props, context); - this.handleClose = this.handleClose.bind(this); - this.initializeToscaPolicyModelsInfo = this.initializeToscaPolicyModelsInfo.bind(this); - this.handleYamlContent = this.handleYamlContent.bind(this); - this.getToscaPolicyModelYaml = this.getToscaPolicyModelYaml.bind(this); - this.handleAdd = this.handleAdd.bind(this); - this.handleRemove = this.handleRemove.bind(this); - this.initializeToscaPolicyModelsInfo(); - } - - initializeToscaPolicyModelsInfo() { - var operationalPolicies = this.state.loopCache.getOperationalPolicies(); - var selectedPolicyModels = []; - for (var policy in operationalPolicies) { - var newRow = operationalPolicies[policy]["policyModel"]; - newRow["policyName"] = operationalPolicies[policy].name; - selectedPolicyModels.push(newRow); - } - - PolicyToscaService.getToscaPolicyModels().then(allToscaModels => { - this.setState({ - toscaPolicyModelsData: allToscaModels, - selectedPolicyModelsData: selectedPolicyModels - }); - }); - } - - getToscaPolicyModelYaml(policyModelType, policyModelVersion) { - if (typeof policyModelType !== "undefined") { - PolicyToscaService.getToscaPolicyModelYaml(policyModelType, policyModelVersion).then(toscaYaml => { - if (toscaYaml.length !== 0) { - this.setState({ content: toscaYaml }) - } else { - this.setState({ content: 'No Tosca model Yaml available' }) - } - }); - } else { - this.setState({ content: 'Please select Tosca model to view the details' }) - } - } - - handleYamlContent(event) { - this.setState({ content: event.target.value }); - } - - handleClose() { - this.setState({ show: false }); - this.props.history.push('/'); - } - - renderAlert() { - return ( -
- - { this.state.showMessage } - -
- ); - } - - handleAdd() { - LoopService.addOperationalPolicyType(this.state.loopCache.getLoopName(), this.state.selectedRowData.policyModelType, this.state.selectedRowData.version) - .then(pars => { - this.props.loadLoopFunction(this.state.loopCache.getLoopName()); - this.handleClose(); - }) - .catch(error => { - this.setState({ showFailAlert: true, showMessage: "Adding failed with error: " + error.message }); - }); - } - - handleRemove() { - LoopService.removeOperationalPolicyType(this.state.loopCache.getLoopName(), this.state.selectedRowData.policyModelType, this.state.selectedRowData.version, this.state.selectedRowData.policyName); - this.props.loadLoopFunction(this.state.loopCache.getLoopName()); - this.handleClose(); - } - - render() { - return ( - - - Modify Loop Operational Policies - - this.setState({ key, selectedRowData: {} }) }> - - - { - this.getToscaPolicyModelYaml(rowData.policyModelType, rowData.version); - this.setState({ selectedRowData: rowData }) - } } - options={ { - headerStyle: rowHeaderStyle, - rowStyle: rowData => ({ - backgroundColor: (this.state.selectedRowData !== {} && this.state.selectedRowData.tableData !== undefined - && this.state.selectedRowData.tableData.id === rowData.tableData.id) ? '#EEE' : '#FFF' - }) - } } - /> -
- -
-
- { this.renderAlert() } -
- - - { - this.setState({ selectedRowData: rowData }) - } } - options={ { - headerStyle: rowHeaderStyle, - rowStyle: rowData => ({ - backgroundColor: (this.state.selectedRowData !== {} && this.state.selectedRowData.tableData !== undefined - && this.state.selectedRowData.tableData.id === rowData.tableData.id) ? '#EEE' : '#FFF' - }) - } } - /> - - -
- - - - - - -
- ); - } -} diff --git a/gui-clamp/ui-react/src/components/dialogs/Loop/ModifyLoopModal.test.js b/gui-clamp/ui-react/src/components/dialogs/Loop/ModifyLoopModal.test.js deleted file mode 100644 index ef57998..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Loop/ModifyLoopModal.test.js +++ /dev/null @@ -1,121 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. - * Modifications 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. - * ============LICENSE_END============================================ - * =================================================================== - * - */ -import React from 'react'; -import { mount } from 'enzyme'; -import ModifyLoopModal from './ModifyLoopModal'; -import LoopCache from '../../../api/LoopCache'; -import LoopService from '../../../api/LoopService'; -import PolicyToscaService from '../../../api/PolicyToscaService'; - -describe('Verify ModifyLoopModal', () => { - const toscaPolicyModels = [{ - "policyModelType": "test", - "policyAcronym": "test", - "version": "1.0.0", - "updatedBy": "", - "updatedDate": "" - }]; - const selectedPolicyModels = []; - - beforeEach(() => { - PolicyToscaService.getToscaPolicyModels = jest.fn().mockImplementation(() => { - return Promise.resolve(toscaPolicyModels); - }); - PolicyToscaService.getToscaPolicyModelYaml = jest.fn().mockImplementation(() => { - return Promise.resolve("OK"); - }); - }) - - const loopCache = new LoopCache({ - "name": "LOOP_Jbv1z_v1_0_ResourceInstanceName1_tca", - "microServicePolicies": [{ - "name": "TCA_h2NMX_v1_0_ResourceInstanceName1_tca", - "modelType": "onap.policies.monitoring.cdap.tca.hi.lo.app", - "properties": { "domain": "measurementsForVfScaling" }, - "shared": false, - "jsonRepresentation": { "schema": {} } - }], - "globalPropertiesJson": { - "dcaeDeployParameters": { - "testMs": { - "location_id": "", - "policy_id": "TCA_h2NMX_v1_0_ResourceInstanceName1_tca" - } - } - } - }); - const historyMock = { push: jest.fn() }; - - it('Test handleClose', () => { - const handleClose = jest.spyOn(ModifyLoopModal.prototype, 'handleClose'); - const component = mount() - - component.find('[variant="secondary"]').get(0).props.onClick(); - - expect(handleClose).toHaveBeenCalledTimes(1); - expect(component.state('show')).toEqual(false); - expect(historyMock.push.mock.calls[0]).toEqual(['/']); - }); - - it('Test getToscaPolicyModelYaml', async () => { - const flushPromises = () => new Promise(setImmediate); - const component = mount() - component.setState({ - "selectedRowData": { "tableData": { "id": 0 } } - }); - const instance = component.instance(); - - instance.getToscaPolicyModelYaml("", "1.0.0"); - expect(component.state('content')).toEqual("Please select Tosca model to view the details"); - - instance.getToscaPolicyModelYaml("test", "1.0.0"); - await flushPromises(); - expect(component.state('content')).toEqual("OK"); - - PolicyToscaService.getToscaPolicyModelYaml = jest.fn().mockImplementation(() => { - return Promise.resolve(""); - }); - instance.getToscaPolicyModelYaml("test", "1.0.0"); - await flushPromises(); - expect(component.state('content')).toEqual("No Tosca model Yaml available"); - }); - - it('Test handleYamlContent', async () => { - const component = mount() - const instance = component.instance(); - - const event = { "target": { "value": "testValue" } } - instance.handleYamlContent(event); - expect(component.state('content')).toEqual("testValue"); - }); - - it('Test initializeToscaPolicyModelsInfo', () => { - const component = mount() - component.setState({ - toscaPolicyModelsData: toscaPolicyModels, - selectedPolicyModelsData: selectedPolicyModels - }); - expect(component.state('toscaPolicyModelsData')).toEqual(toscaPolicyModels); - expect(component.state('selectedPolicyModelsData')).toEqual(selectedPolicyModels); - }); -}); diff --git a/gui-clamp/ui-react/src/components/dialogs/Loop/OpenLoopModal.js b/gui-clamp/ui-react/src/components/dialogs/Loop/OpenLoopModal.js deleted file mode 100644 index b6407fb..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Loop/OpenLoopModal.js +++ /dev/null @@ -1,139 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 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============================================ - * =================================================================== - * - */ - -import React from 'react' -import Select from 'react-select'; -import Button from 'react-bootstrap/Button'; -import Modal from 'react-bootstrap/Modal'; -import Form from 'react-bootstrap/Form'; -import Row from 'react-bootstrap/Row'; -import Col from 'react-bootstrap/Col'; -import FormCheck from 'react-bootstrap/FormCheck' -import styled from 'styled-components'; -import LoopService from '../../../api/LoopService'; -import SvgGenerator from '../../loop_viewer/svg/SvgGenerator'; -import LoopCache from '../../../api/LoopCache'; - -const ModalStyled = styled(Modal)` - background-color: transparent; -` -const CheckBoxStyled = styled(FormCheck.Input)` - margin-left: 3rem; -` - -export default class OpenLoopModal extends React.Component { - constructor(props, context) { - super(props, context); - - this.getLoopNames = this.getLoopNames.bind(this); - this.handleOpen = this.handleOpen.bind(this); - this.handleClose = this.handleClose.bind(this); - this.handleDropDownListChange = this.handleDropDownListChange.bind(this); - this.renderSvg = this.renderSvg.bind(this); - this.showReadOnly = props.showReadOnly !== undefined ? props.showReadOnly : true; - this.state = { - show: true, - chosenLoopName: '', - loopNames: [], - loopCacheOpened: new LoopCache({}) - }; - } - - componentWillMount() { - this.getLoopNames(); - } - - handleClose() { - this.setState({ show: false }); - this.props.history.push('/'); - } - - handleDropDownListChange(e) { - LoopService.getLoop(e.value).then(loop => { - this.setState({ - chosenLoopName: e.value, - loopCacheOpened: new LoopCache(loop) - }); - }); - } - - getLoopNames() { - LoopService.getLoopNames().then(loopNames => { - if (Object.entries(loopNames).length !== 0) { - const loopOptions = loopNames.filter(loopName => loopName !== 'undefined').map((loopName) => { - return { label: loopName, value: loopName } - }); - this.setState({ loopNames: loopOptions }) - } - }); - } - - handleOpen() { - console.info("Loop " + this.state.chosenLoopName + " is chosen"); - this.handleClose(); - this.props.loadLoopFunction(this.state.chosenLoopName); - } - - renderSvg() { - return ( - - ); - } - - render() { - return ( - - - Open Model - - - - Model Name: - - - - - - - - - - - - - - - - -`; diff --git a/gui-clamp/ui-react/src/components/dialogs/Loop/__snapshots__/DeployLoopModal.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/Loop/__snapshots__/DeployLoopModal.test.js.snap deleted file mode 100644 index 33f8faa..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Loop/__snapshots__/DeployLoopModal.test.js.snap +++ /dev/null @@ -1,88 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify DeployLoopModal Test the render method 1`] = ` - - - - Deployment parameters - - - - - - - location_id - - - - - - policy_id - - - - - -
- - - - - -`; diff --git a/gui-clamp/ui-react/src/components/dialogs/Loop/__snapshots__/LoopPropertiesModal.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/Loop/__snapshots__/LoopPropertiesModal.test.js.snap deleted file mode 100644 index 3baaa57..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Loop/__snapshots__/LoopPropertiesModal.test.js.snap +++ /dev/null @@ -1,61 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify LoopPropertiesModal Test the render method 1`] = ` - - - - Model Properties - - - -
- - - Deploy Parameters - - - -
-
- - - - -
-`; diff --git a/gui-clamp/ui-react/src/components/dialogs/Loop/__snapshots__/OpenLoopModal.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/Loop/__snapshots__/OpenLoopModal.test.js.snap deleted file mode 100644 index 581fd0e..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Loop/__snapshots__/OpenLoopModal.test.js.snap +++ /dev/null @@ -1,137 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify OpenLoopModal Test the render method 1`] = ` - - - - Open Model - - - - - - Model Name: - - - - - - - - Model Preview: - - - - - - - - - Read Only Mode: - - - - - - - - - - -`; diff --git a/gui-clamp/ui-react/src/components/dialogs/ManageDictionaries/ManageDictionaries.js b/gui-clamp/ui-react/src/components/dialogs/ManageDictionaries/ManageDictionaries.js deleted file mode 100644 index d7ba8d1..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ManageDictionaries/ManageDictionaries.js +++ /dev/null @@ -1,637 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 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============================================ - * =================================================================== - * - */ - - -import React, { forwardRef } from 'react'; -import Button from 'react-bootstrap/Button'; -import Modal from 'react-bootstrap/Modal'; -import Row from 'react-bootstrap/Row'; -import Col from 'react-bootstrap/Col'; -import styled from 'styled-components'; -import TemplateMenuService from '../../../api/TemplateService'; -import CsvToJson from '../../../utils/CsvToJson'; -import MaterialTable, { MTableToolbar } from "material-table"; -import IconButton from '@material-ui/core/IconButton'; -import Tooltip from '@material-ui/core/Tooltip'; -import AddBox from '@material-ui/icons/AddBox'; -import ArrowUpward from '@material-ui/icons/ArrowUpward'; -import Check from '@material-ui/icons/Check'; -import ChevronLeft from '@material-ui/icons/ChevronLeft'; -import VerticalAlignTopIcon from '@material-ui/icons/VerticalAlignTop'; -import VerticalAlignBottomIcon from '@material-ui/icons/VerticalAlignBottom'; -import ChevronRight from '@material-ui/icons/ChevronRight'; -import Clear from '@material-ui/icons/Clear'; -import DeleteOutline from '@material-ui/icons/DeleteOutline'; -import Edit from '@material-ui/icons/Edit'; -import FilterList from '@material-ui/icons/FilterList'; -import FirstPage from '@material-ui/icons/FirstPage'; -import LastPage from '@material-ui/icons/LastPage'; -import Remove from '@material-ui/icons/Remove'; -import Search from '@material-ui/icons/Search'; -import ViewColumn from '@material-ui/icons/ViewColumn'; - - -const ModalStyled = styled(Modal)` - @media (min-width: 1200px) { - .modal-xl { - max-width: 96%; - } - } - background-color: transparent; -` - -const MTableToolbarStyled = styled(MTableToolbar)` - display: flex; - flex-direction: row; - align-items: center; -` -const ColPullLeftStyled = styled(Col)` - display: flex; - flex-direction: row; - align-items: center; - margin-left: -40px; -` - -const cellStyle = { border: '1px solid black' }; -const headerStyle = { backgroundColor: '#ddd', border: '2px solid black' }; -const rowHeaderStyle = { backgroundColor: '#ddd', fontSize: '15pt', text: 'bold', border: '1px solid black' }; - -let dictList = []; -let subDictFlag = false; - -function SelectSubDictType(props) { - const { onChange } = props; - const selectedValues = (e) => { - let options = e.target.options; - let SelectedDictTypes = ''; - for (let dictType = 0, values = options.length; dictType < values; dictType++) { - if (options[dictType].selected) { - SelectedDictTypes = SelectedDictTypes.concat(options[dictType].value); - SelectedDictTypes = SelectedDictTypes.concat('|'); - } - } - SelectedDictTypes = SelectedDictTypes.slice(0, -1); - onChange(SelectedDictTypes); - } - // When the subDictFlag is true, we need to disable selection of element "type" - return ( -
- -
- ); -} - -function SubDict(props) { - const { onChange } = props; - const subDicts = []; - subDicts.push('none'); - if (dictList !== undefined && dictList.length > 0) { - let item; - for (item in dictList) { - if (dictList[item].secondLevelDictionary === 1) { - subDicts.push(dictList[item].name); - } - } - } - let optionItems = []; - for (let i = 0; i < subDicts.length; ++i) { - if (i === 0) { - optionItems.push(); - } else { - optionItems.push(); - } - } - - function selectedValue(e) { - onChange(e.target.value); - } - - // When the subDictFlag is true, we need to disable selection of - // the sub-dictionary flag - return ( - - ); -} - -export default class ManageDictionaries extends React.Component { - constructor(props, context) { - super(props, context); - this.addDictionaryElementRow = this.addDictionaryElementRow.bind(this); - this.addDictionaryRow = this.addDictionaryRow.bind(this); - this.addReplaceDictionaryRequest = this.addReplaceDictionaryRequest.bind(this); - this.clickHandler = this.clickHandler.bind(this); - this.deleteDictionaryElementRow = this.deleteDictionaryElementRow.bind(this); - this.deleteDictionaryRequest = this.deleteDictionaryRequest.bind(this); - this.deleteDictionaryRow = this.deleteDictionaryRow.bind(this); - this.fileSelectedHandler = this.fileSelectedHandler.bind(this); - this.getDictionaries = this.getDictionaries.bind(this); - this.getDictionaryElements = this.getDictionaryElements.bind(this); - this.handleClose = this.handleClose.bind(this); - this.handleDictionaryRowClick = this.handleDictionaryRowClick.bind(this); - this.importCsvData = this.importCsvData.bind(this); - this.updateDictionaryElementRow = this.updateDictionaryElementRow.bind(this); - this.updateDictionaryElementsRequest = this.updateDictionaryElementsRequest.bind(this); - this.updateDictionaryRow = this.updateDictionaryRow.bind(this); - this.readOnly = props.readOnly !== undefined ? props.readOnly : false; - this.state = { - show: true, - currentSelectedDictionary: null, - exportFilename: '', - content: null, - dictionaryElements: [], - tableIcons: { - Add: forwardRef((props, ref) => ), - Delete: forwardRef((props, ref) => ), - DetailPanel: forwardRef((props, ref) => ), - Edit: forwardRef((props, ref) => ), - Check: forwardRef((props, ref) => ), - Clear: forwardRef((props, ref) => ), - Export: forwardRef((props, ref) => ), - Filter: forwardRef((props, ref) => ), - FirstPage: forwardRef((props, ref) => ), - LastPage: forwardRef((props, ref) => ), - NextPage: forwardRef((props, ref) => ), - PreviousPage: forwardRef((props, ref) => ), - ResetSearch: forwardRef((props, ref) => ), - Search: forwardRef((props, ref) => ), - SortArrow: forwardRef((props, ref) => ), - ThirdStateCheck: forwardRef((props, ref) => ), - ViewColumn: forwardRef((props, ref) => ) - }, - dictColumns: [ - { - title: "Dictionary Name", field: "name", editable: 'onAdd', - cellStyle: cellStyle, - headerStyle: headerStyle - }, - { - title: "Sub Dictionary ?", field: "secondLevelDictionary", lookup: { 0: 'No', 1: 'Yes' }, - cellStyle: cellStyle, - headerStyle: headerStyle - }, - { - title: "Dictionary Type", field: "subDictionaryType", lookup: { string: 'string', number: 'number' }, - cellStyle: cellStyle, - headerStyle: headerStyle - }, - { - title: "Updated By", field: "updatedBy", editable: 'never', - cellStyle: cellStyle, - headerStyle: headerStyle - }, - { - title: "Last Updated Date", field: "updatedDate", editable: 'never', - cellStyle: cellStyle, - headerStyle: headerStyle - } - ], - dictElementColumns: [ - { - title: "Element Short Name", field: "shortName", editable: 'onAdd', - cellStyle: cellStyle, - headerStyle: headerStyle - }, - { - title: "Element Name", field: "name", - cellStyle: cellStyle, - headerStyle: headerStyle - }, - { - title: "Element Description", field: "description", - cellStyle: cellStyle, - headerStyle: headerStyle - }, - { - title: "Element Type", field: "type", - editComponent: props => ( -
- -
- ), - cellStyle: cellStyle, - headerStyle: headerStyle - }, - { - title: "Sub-Dictionary", field: "subDictionary", - editComponent: props => ( -
- -
- ), - cellStyle: cellStyle, - headerStyle: headerStyle - }, - { - title: "Updated By", field: "updatedBy", editable: 'never', - cellStyle: cellStyle, - headerStyle: headerStyle - }, - { - title: "Updated Date", field: "updatedDate", editable: 'never', - cellStyle: cellStyle, - headerStyle: headerStyle - } - ] - } - } - - componentDidMount() { - this.getDictionaries(); - } - - getDictionaries() { - TemplateMenuService.getDictionary().then(arrayOfdictionaries => { - this.setState({ dictionaries: arrayOfdictionaries, currentSelectedDictionary: null }) - // global variable setting used functional components in this file - dictList = arrayOfdictionaries; - }).catch(() => { - console.error('Failed to retrieve dictionaries'); - this.setState({ dictionaries: [], currentSelectedDictionary: null }) - }); - } - - getDictionaryElements(dictionaryName) { - TemplateMenuService.getDictionaryElements(dictionaryName).then(dictionaryElements => { - this.setState({ dictionaryElements: dictionaryElements.dictionaryElements }); - this.setState({ currentSelectDictionary: dictionaryName }); - }).catch(() => console.error('Failed to retrieve dictionary elements')) - } - - clickHandler(rowData) { - this.getDictionaries(); - } - - handleClose() { - this.setState({ show: false }); - this.props.history.push('/'); - } - - addReplaceDictionaryRequest(dictionaryEntry) { - TemplateMenuService.insDictionary(dictionaryEntry) - .then(resp => { - this.getDictionaries(); - }) - .catch(() => console.error('Failed to insert new dictionary elements')); - } - - updateDictionaryElementsRequest(dictElements) { - let reqData = { "name": this.state.currentSelectedDictionary, 'dictionaryElements': dictElements }; - TemplateMenuService.insDictionaryElements(reqData) - .then(resp => { - this.getDictionaryElements(this.state.currentSelectedDictionary) - }) - .catch(() => console.error('Failed to update dictionary elements')); - } - - deleteDictionaryRequest(dictionaryName) { - TemplateMenuService.deleteDictionary(dictionaryName) - .then(resp => { - this.getDictionaries(); - }) - .catch(() => console.error('Failed to delete dictionary')); - } - - deleteDictionaryElementRequest(dictionaryName, elemenetShortName) { - TemplateMenuService.deleteDictionaryElements({ 'name': dictionaryName, 'shortName': elemenetShortName }) - .then(resp => { - this.getDictionaryElements(dictionaryName); - }) - .catch(() => console.error('Failed to delete dictionary elements')); - } - - fileSelectedHandler = (event) => { - - if (event.target.files[0].type === 'text/csv' || event.target.files[0].type === 'application/vnd.ms-excel') { - if (event.target.files && event.target.files[0]) { - const reader = new FileReader(); - reader.onload = (e) => { - let errorMessages = this.importCsvData(reader.result); - if (errorMessages !== '') { - alert(errorMessages); - } - } - reader.readAsText(event.target.files[0]); - } - } else { - alert('Please upload .csv extention files only.'); - } - } - - importCsvData(rawCsvData) { - - const jsonKeyNames = ['shortName', 'name', 'description', 'type', 'subDictionary']; - const userHeaderNames = ['Element Short Name', 'Element Name', 'Element Description', 'Element Type', 'Sub-Dictionary']; - const validTypes = ['string', 'number', 'datetime', 'json', 'map']; - - let mandatory; - - if (subDictFlag) { - mandatory = [true, true, true, false, false]; - } else { - mandatory = [true, true, true, true, false]; - } - - let result = CsvToJson(rawCsvData, ',', '||||', userHeaderNames, jsonKeyNames, mandatory); - - let errorMessages = result.errorMessages; - let jsonObjArray = result.jsonObjArray; - - let validTypesErrorMesg = ''; - - for (let i = 0; i < validTypes.length; ++i) { - if (i === 0) { - validTypesErrorMesg = validTypes[i]; - } else { - validTypesErrorMesg += ',' + validTypes[i]; - } - } - - if (errorMessages !== '') { - return errorMessages; - } - - // Perform further checks on data that is now in JSON form - let subDictionaries = []; - - // NOTE: dictList is a global variable maintained faithfully - // by the getDictionaries() method outside this import - // functionality. - let item; - for (item in dictList) { - if (dictList[item].secondLevelDictionary === 1) { - subDictionaries.push(dictList[item].name); - } - } - ; - - // Check for valid Sub-Dictionary and Element Type values - subDictionaries = subDictionaries.toString(); - let row = 2; - let dictElem; - for (dictElem of jsonObjArray) { - let itemKey; - for (itemKey in dictElem) { - let value = dictElem[itemKey].trim(); - let keyIndex = jsonKeyNames.indexOf(itemKey); - if (itemKey === 'shortName' && /[^a-zA-Z0-9-_.]/.test(value)) { - errorMessages += '\n' + userHeaderNames[keyIndex] + - ' at row #' + row + - ' can only contain alphanumeric characters and periods, hyphens or underscores'; - } - if (itemKey === 'type' && validTypes.indexOf(value) < 0) { - errorMessages += '\nInvalid value of "' + value + '" for "' + userHeaderNames[keyIndex] + '" at row #' + row; - errorMessages += '\nValid types are: ' + validTypesErrorMesg; - } - if (value !== "" && itemKey === 'subDictionary' && subDictionaries.indexOf(value) < 0) { - errorMessages += '\nInvalid Sub-Dictionary value of "' + value + '" at row #' + row; - } - } - ++row; - } - if (errorMessages === '') { - // We made it through all the checks. Send it to back end - this.updateDictionaryElementsRequest(jsonObjArray); - } - - return errorMessages; - } - - addDictionaryRow(newData) { - let validData = true; - return new Promise((resolve, reject) => { - setTimeout(() => { - if (/[^a-zA-Z0-9-_.]/.test(newData.name)) { - validData = false; - alert('Please enter alphanumeric input. Only allowed special characters are:(period, hyphen, underscore)'); - reject(); - } - for (let i = 0; i < this.state.dictionaries.length; i++) { - if (this.state.dictionaries[i].name === newData.name) { - validData = false; - alert(newData.name + ' dictionary name already exists') - reject(); - } - } - if (validData) { - this.addReplaceDictionaryRequest(newData); - } - resolve(); - }, 1000); - }); - } - - - updateDictionaryRow(newData, oldData) { - let validData = true; - return new Promise((resolve, reject) => { - setTimeout(() => { - if (/[^a-zA-Z0-9-_.]/.test(newData.name)) { - validData = false; - alert('Please enter alphanumberic input. Only allowed special characters are:(period, hyphen, underscore)'); - reject(); - } - if (validData) { - this.addReplaceDictionaryRequest(newData); - } - resolve(); - }, 1000); - }); - } - - deleteDictionaryRow(oldData) { - return new Promise((resolve, reject) => { - setTimeout(() => { - this.deleteDictionaryRequest(oldData.name); - resolve(); - }, 1000); - }); - } - - addDictionaryElementRow(newData) { - return new Promise((resolve, reject) => { - setTimeout(() => { - let dictionaryElements = this.state.dictionaryElements; - let errorMessages = ''; - for (let i = 0; i < this.state.dictionaryElements.length; i++) { - if (this.state.dictionaryElements[i].shortName === newData.shortName) { - alert('Short Name "' + newData.shortName + '" already exists'); - reject(""); - } - } - // MaterialTable returns no property at all if the user has not touched a - // new column, so we want to add the property with an emptry string - // for several cases if that is the case to simplify other checks. - if (newData.description === undefined) { - newData.description = ""; - } - if (newData.subDictionary === undefined) { - newData.subDictionary = null; - } - if (newData.type === undefined) { - newData.type = ""; - } - if (!newData.shortName && /[^a-zA-Z0-9-_.]/.test(newData.shortName)) { - errorMessages += '\nShort Name is limited to alphanumeric characters and also period, hyphen, and underscore'; - } - if (!newData.shortName) { - errorMessages += '\nShort Name must be specified'; - } - if (!newData.name) { - errorMessages += '\nElement Name must be specified'; - } - if (!newData.type && !subDictFlag) { - errorMessages += '\nElement Type must be specified'; - } - if (errorMessages === '') { - dictionaryElements.push(newData); - this.updateDictionaryElementsRequest([newData]); - resolve(); - } else { - alert(errorMessages); - reject(""); - } - }, 1000); - }); - } - - updateDictionaryElementRow(newData, oldData) { - return new Promise((resolve, reject) => { - setTimeout(() => { - let dictionaryElements = this.state.dictionaryElements; - let validData = true; - if (!newData.type) { - validData = false; - alert('Element Type cannot be null'); - reject(); - } - if (validData) { - const index = dictionaryElements.indexOf(oldData); - dictionaryElements[index] = newData; - this.updateDictionaryElementsRequest([newData]); - } - resolve(); - }, 1000); - }); - } - - - deleteDictionaryElementRow(oldData) { - return new Promise((resolve) => { - setTimeout(() => { - this.deleteDictionaryElementRequest(this.state.currentSelectedDictionary, oldData.shortName); - resolve(); - }, 1000); - }); - } - - handleDictionaryRowClick(event, rowData) { - subDictFlag = rowData.secondLevelDictionary === 1 ? true : false; - this.setState({ - currentSelectedDictionary: rowData.name, - exportFilename: rowData.name - }) - this.getDictionaryElements(rowData.name); - } - - render() { - return ( - - - Manage Dictionaries - - - { this.state.currentSelectedDictionary === null ? - : null - } - { this.state.currentSelectedDictionary !== null ? - ( - - - - - - - this.fileUpload.click() }> - - - - { - this.fileUpload = fileUpload; - } } - style={ { visibility: 'hidden', width: '1px' } } onChange={ this.fileSelectedHandler }/> - - - ) - } } - editable={ !this.readOnly ? - { - onRowAdd: this.addDictionaryElementRow, - onRowUpdate: this.updateDictionaryElementRow, - onRowDelete: this.deleteDictionaryElementRow - } : undefined - } - /> : null - } - { this.state.currentSelectedDictionary !== null ? : "" } - - - - - - ); - } -} diff --git a/gui-clamp/ui-react/src/components/dialogs/ManageDictionaries/ManageDictionaries.test.js b/gui-clamp/ui-react/src/components/dialogs/ManageDictionaries/ManageDictionaries.test.js deleted file mode 100644 index 2552d7a..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ManageDictionaries/ManageDictionaries.test.js +++ /dev/null @@ -1,465 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 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============================================ - * =================================================================== - * - */ -import React from 'react'; -import { shallow } from 'enzyme'; -import { mount } from 'enzyme'; -import { render } from 'enzyme'; -import ManageDictionaries from './ManageDictionaries'; -import TemplateMenuService from '../../../api/TemplateService' - -const TestDictionaryElements = { - name: "test", - secondLevelDictionary: 0, - subDictionaryType: "", - dictionaryElements: [ - { - shortName: "alertType", - name: "Alert Type", - description: "Type of Alert", - type: "string", - subDictionary: "", - createdDate: "2020-06-12T13:58:51.443931Z", - updatedDate: "2020-06-13T16:27:57.084870Z", - updatedBy: "admin", - createdBy: "admin" - } - ] -}; - -const TestDictionaries = - [ - { - name: "test", - secondLevelDictionary: 0, - subDictionaryType: "string", - dictionaryElements: [TestDictionaryElements], - createdDate: "2020-06-14T21:00:33.231166Z", - updatedDate: "2020-06-14T21:00:33.231166Z", - updatedBy: "admin", - createdBy: "admin" - }, - { - name: "testSub1", - secondLevelDictionary: 1, - subDictionaryType: "string", - dictionaryElements: [ - { - shortName: "subElem", - name: "Sub Element", - description: "Sub Element Description", - type: "string", - createdDate: "2020-06-14T21:04:44.402287Z", - updatedDate: "2020-06-14T21:04:44.402287Z", - updatedBy: "admin", - createdBy: "admin" - } - ], - createdDate: "2020-06-14T21:01:16.390250Z", - updatedDate: "2020-06-14T21:01:16.390250Z", - updatedBy: "admin", - createdBy: "admin" - } - ]; - - -const historyMock = { push: jest.fn() }; - -let errorMessage = ''; - -window.alert = jest.fn().mockImplementation((mesg) => { - errorMessage = mesg; - return -}); - -TemplateMenuService.getDictionary = jest.fn().mockImplementation(() => { - return Promise.resolve(TestDictionaries); -}); - -TemplateMenuService.insDictionary = jest.fn().mockImplementation(() => { - return Promise.resolve({ ok: true, status: 200 }); -}); - -TemplateMenuService.deleteDictionary = jest.fn().mockImplementation(() => { - return Promise.resolve("200"); -}); - -TemplateMenuService.getDictionaryElements = jest.fn().mockImplementation(() => { - return Promise.resolve(TestDictionaryElements); -}); - -TemplateMenuService.deleteDictionaryElements = jest.fn().mockImplementation(() => { - return Promise.resolve("200"); -}); - -TemplateMenuService.insDictionaryElements = jest.fn().mockImplementation(() => { - return Promise.resolve("200"); -}); - - -describe('Verify ManageDictionaries', () => { - - beforeEach(() => { - fetch.resetMocks(); - }); - - it('Test API Successful', () => { - fetch.mockImplementationOnce(() => { - return Promise.resolve({ - ok: true, - status: 200, - json: () => { - return Promise.resolve({ - "name": "vtest", - "secondLevelDictionary": 1, - "subDictionaryType": "string", - "updatedBy": "test", - "updatedDate": "05-07-2019 19:09:42" - }); - } - }); - }); - const component = shallow(); - expect(component).toMatchSnapshot(); - }); - - it('Test API Exception', () => { - fetch.mockImplementationOnce(() => { - return Promise.resolve({ - ok: false, - status: 500, - json: () => { - return Promise.resolve({ - "name": "vtest", - "secondLevelDictionary": 1, - "subDictionaryType": "string", - "updatedBy": "test", - "updatedDate": "05-07-2019 19:09:42" - }); - } - }); - }); - const component = shallow(); - }); - - it('Test Table icons', () => { - - const component = mount(); - expect(component.find('[className="MuiSelect-icon MuiTablePagination-selectIcon"]')).toBeTruthy(); - }); - - test('Test add/replace and delete dictionary requests', async () => { - - const component = shallow() - const instance = component.instance(); - - const flushPromises = () => new Promise(setImmediate); - - instance.addReplaceDictionaryRequest({ name: "newdict", secondLevelDictionary: 0, subDictionaryType: "string" }); - instance.deleteDictionaryRequest("test"); - - await flushPromises(); - - expect(component.state('currentSelectedDictionary')).toEqual(null); - expect(component.state('dictionaries')).toEqual(TestDictionaries); - }); - - test('Test update dictionary row', async () => { - - const component = shallow() - const instance = component.instance(); - const rowData = { name: "newdict", secondLevelDictionary: 0, subDictionaryType: "string" }; - - await expect(instance.updateDictionaryRow(rowData, rowData)).resolves.toEqual(undefined); - - }, 2000); - - test('Test add dictionary row', async () => { - - const addReplaceRequest = jest.spyOn(ManageDictionaries.prototype, 'addReplaceDictionaryRequest'); - const component = shallow() - const instance = component.instance(); - const rowData = { name: "newdict", secondLevelDictionary: 0, subDictionaryType: "string" }; - - await instance.addDictionaryRow(rowData); - expect(addReplaceRequest).toHaveBeenCalledWith(rowData); - - }, 2000); - - test('Test add dictionary row with errors name already exists', async () => { - - const component = shallow() - const instance = component.instance(); - let rowData = { name: "test", secondLevelDictionary: 0, subDictionaryType: "" }; - - await expect(instance.addDictionaryRow(rowData)).rejects.toEqual(undefined); - - }, 2000); - - test('Test add dictionary row with errors illegal chars in name', async () => { - - const component = shallow() - const instance = component.instance(); - let rowData = { name: "test@@", secondLevelDictionary: 0, subDictionaryType: "" }; - - await expect(instance.addDictionaryRow(rowData)).rejects.toEqual(undefined); - - }, 2000); - - test('Test update dictionary row with errors illegal chars in name', async () => { - - const component = shallow() - const instance = component.instance(); - let rowData = { name: "test@@", secondLevelDictionary: 0, subDictionaryType: "" }; - - await expect(instance.updateDictionaryRow(rowData)).rejects.toEqual(undefined); - }); - - - test('Test add dictionary row with errors (illegal chars)', async () => { - - const addReplaceRequest = jest.spyOn(ManageDictionaries.prototype, 'addReplaceDictionaryRequest'); - const component = shallow() - const instance = component.instance(); - let rowData = { name: "test@@", secondLevelDictionary: 0, subDictionaryType: "" }; - - await expect(instance.addDictionaryRow(rowData)).rejects.toEqual(undefined); - - }, 2000); - - - test('Test delete dictionary row', async () => { - - const deleteRequest = jest.spyOn(ManageDictionaries.prototype, 'deleteDictionaryRequest'); - const component = shallow() - const instance = component.instance(); - const rowData = { name: "newdict", secondLevelDictionary: 0, subDictionaryType: "string" }; - - await instance.deleteDictionaryRow(rowData); - expect(deleteRequest).toHaveBeenCalledWith("newdict"); - - }, 2000); - - test('Test handle select dictionary row click', async () => { - - const component = shallow() - const instance = component.instance(); - const rowData = { name: "newdict", secondLevelDictionary: 0, subDictionaryType: "string" }; - - instance.handleDictionaryRowClick("event", rowData); - expect(component.state('currentSelectedDictionary')).toEqual("newdict"); - }, 2000); - - test('Test dictionary element row add, update, delete', async () => { - - const rowData = { - createdBy: "admin", - createdDate: "2020-06-15T13:59:20.467381Z", - description: "Description", - name: "Some Elem", - shortName: "someElem", - type: "string", - updatedBy: "admin", - updatedDate: "2020-06-15T13:59:20.467381Z" - }; - - const component = shallow() - const instance = component.instance(); - - const badRowData = { - description: "Description", - name: "Some Elem", - shortName: "someElem", - type: "string" - }; - - await instance.clickHandler(); - await instance.getDictionaryElements("test"); - - await expect(instance.addDictionaryElementRow(rowData)).resolves.toEqual(undefined); - await expect(instance.updateDictionaryElementRow(rowData, rowData)).resolves.toEqual(undefined); - await expect(instance.deleteDictionaryElementRow(rowData)).resolves.toEqual(undefined); - }); - - test('Test dictionary element row add with errors', async () => { - - const badRowData = { - description: "", - name: "", - shortName: "some#Elem", - type: "" - }; - - const component = shallow() - const instance = component.instance(); - - await expect(instance.addDictionaryElementRow(badRowData)).rejects.toEqual(""); - }); - - test('Test dictionary element update with error illegal name', async () => { - - const badRowData = { - description: "", - name: "test@@", - shortName: "some#Elem", - type: "" - }; - - const component = shallow() - const instance = component.instance(); - - await expect(instance.updateDictionaryElementRow(badRowData)).rejects.toEqual(undefined); - }); - - test('Test dictionary element addition with duplicate name error', async () => { - - const badRowData = { - description: "description", - name: "Alert Type", - shortName: "alertType", - type: "string" - }; - - const component = shallow() - const instance = component.instance(); - - component.setState({ currentSelectedDictionary: 'test' }); - - await instance.getDictionaryElements(); - await expect(instance.addDictionaryElementRow(badRowData)).rejects.toEqual(""); - }); - - test('Test dictionary element addition with empty name error', async () => { - - const badRowData = { - description: "description", - name: "Alert Type", - shortName: "", - type: "string" - }; - - const component = shallow() - const instance = component.instance(); - - component.setState({ currentSelectedDictionary: 'test' }); - - await instance.getDictionaryElements(); - await expect(instance.addDictionaryElementRow(badRowData)).rejects.toEqual(""); - }); - - - it('Test Import CSV Sunny Day', async () => { - - TemplateMenuService.insDictionaryElements = jest.fn().mockImplementation(() => { - return Promise.resolve({ ok: true, status: 200 }); - }); - - let rawCsvData = '"Element Short Name","Element Name","Element Description","Element Type","Sub-Dictionary"\n'; - rawCsvData += '"alertType","Alert Type","Alert Type Description","string","","admin","2020-06-11T13:56:14.927437Z"'; - - let expectedResult = [ - { - description: "Alert Type Description", - name: "Alert Type", - shortName: "alertType", - subDictionary: "", - type: "string" - } - ]; - - const updateDictionaryElementsRequest = jest.spyOn(ManageDictionaries.prototype, 'updateDictionaryElementsRequest'); - - const component = shallow() - const instance = component.instance(); - - await expect(instance.importCsvData(rawCsvData)).toEqual(''); - expect(updateDictionaryElementsRequest).toHaveBeenCalledWith(expectedResult); - }); - - it('Test Import CSV Mandatory Field Check Errors', () => { - - let rawCsvData = '"Element Short Name","Element Name","Element Description","Element Type","Sub-Dictionary"\n'; - rawCsvData += '"","","","","","",""'; - - // The empty values for all the fields in row 1 of the rawCsvData will trigger a bunch of errors. - // Getting Enzyme to properly match them with embedded newlines turned out to be impossible - // and maybe not desirable anyway; so our test for "success" here is simply that the - // routine returns a non-empty error string. - - const component = shallow() - const instance = component.instance(); - expect(instance.importCsvData(rawCsvData)).not.toEqual(''); - }); - - it('Test Import CSV Errors in Row Data', async () => { - - TemplateMenuService.insDictionaryElements = jest.fn().mockImplementation(() => { - return Promise.resolve({ ok: true, status: 200 }); - }); - - let rawCsvData = '"Element Short Name","Element Name","Element Description","Element Type","Sub-Dictionary"\n'; - rawCsvData += '"alert@Type","Alert Type","Alert Type Description","strin","subby","admin","2020-06-11T13:56:14.927437Z"'; - - let expectedResult = [ - { - description: "Alert Type Description", - name: "Alert Type", - shortName: "alertType", - subDictionary: "", - type: "string" - } - ]; - - const updateDictionaryElementsRequest = jest.spyOn(ManageDictionaries.prototype, 'updateDictionaryElementsRequest'); - - const component = shallow() - const instance = component.instance(); - - await expect(instance.importCsvData(rawCsvData)).not.toEqual(''); - }); - - - it('Test handleClose', () => { - fetch.mockImplementationOnce(() => { - return Promise.resolve({ - ok: true, - status: 200, - json: () => { - return Promise.resolve({ - "name": "vtest", - "secondLevelDictionary": 1, - "subDictionaryType": "string", - "updatedBy": "test", - "updatedDate": "05-07-2019 19:09:42" - }); - } - }); - }); - const handleClose = jest.spyOn(ManageDictionaries.prototype, 'handleClose'); - const component = shallow() - component.find('[variant="secondary"]').prop('onClick')(); - expect(handleClose).toHaveBeenCalledTimes(1); - expect(component.state('show')).toEqual(false); - expect(historyMock.push.mock.calls[0]).toEqual(['/']); - handleClose.mockClear(); - }); -}); diff --git a/gui-clamp/ui-react/src/components/dialogs/ManageDictionaries/__snapshots__/ManageDictionaries.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/ManageDictionaries/__snapshots__/ManageDictionaries.test.js.snap deleted file mode 100644 index 6b58363..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/ManageDictionaries/__snapshots__/ManageDictionaries.test.js.snap +++ /dev/null @@ -1,196 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify ManageDictionaries Test API Successful 1`] = ` - - - - Manage Dictionaries - - - - - - - - - -`; diff --git a/gui-clamp/ui-react/src/components/dialogs/PerformActions.js b/gui-clamp/ui-react/src/components/dialogs/PerformActions.js deleted file mode 100644 index 428902e..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/PerformActions.js +++ /dev/null @@ -1,95 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 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============================================ - * =================================================================== - * - */ -import React from 'react'; -import LoopActionService from '../../api/LoopActionService'; - - -export default class PerformActions extends React.Component { - state = { - loopName: this.props.loopCache.getLoopName(), - loopAction: this.props.loopAction - }; - - constructor(props, context) { - super(props, context); - this.refreshStatus = this.refreshStatus.bind(this); - } - - componentWillReceiveProps(newProps) { - this.setState({ - loopName: newProps.loopCache.getLoopName(), - loopAction: newProps.loopAction - }); - } - - componentDidMount() { - const action = this.state.loopAction; - const loopName = this.state.loopName; - - if (action === 'delete') { - if (window.confirm('You are about to remove ACM Model "' + loopName + - '". Select OK to continue with deletion or Cancel to keep the model.') === false) { - return; - } - } - - this.props.setBusyLoading(); // Alert top level to start block user clicks - - LoopActionService.performAction(loopName, action) - .then(pars => { - this.props.showSucAlert("Action " + action + " successfully performed"); - if (action === 'delete') { - this.props.updateLoopFunction(null); - this.props.history.push('/'); - } else { - // refresh status and update loop logs - this.refreshStatus(loopName); - } - }) - .catch(error => { - this.props.showFailAlert("Action " + action + " failed"); - // refresh status and update loop logs - this.refreshStatus(loopName); - }) - .finally(() => this.props.clearBusyLoading()); - } - - refreshStatus(loopName) { - - this.props.setBusyLoading(); - - LoopActionService.refreshStatus(loopName) - .then(data => { - this.props.updateLoopFunction(data); - this.props.history.push('/'); - }) - .catch(error => { - this.props.history.push('/'); - }) - .finally(() => this.props.clearBusyLoading()); - } - - render() { - return null; - } -} diff --git a/gui-clamp/ui-react/src/components/dialogs/PerformActions.test.js b/gui-clamp/ui-react/src/components/dialogs/PerformActions.test.js deleted file mode 100644 index e5a2f9f..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/PerformActions.test.js +++ /dev/null @@ -1,121 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights - * reserved. - * Modifications 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. - * ============LICENSE_END============================================ - * =================================================================== - * - */ -import React from 'react'; -import { shallow } from 'enzyme'; -import PerformActions from './PerformActions'; -import LoopCache from '../../api/LoopCache'; -import LoopActionService from '../../api/LoopActionService'; - -describe('Verify PerformActions', () => { - - const loopCache = new LoopCache({ - "name": "LOOP_Jbv1z_v1_0_ResourceInstanceName1_tca" - }); - - it('Test the render method action failed', async () => { - const flushPromises = () => new Promise(setImmediate); - const historyMock = { push: jest.fn() }; - const updateLoopFunction = jest.fn(); - const showSucAlert = jest.fn(); - const showFailAlert = jest.fn(); - const setBusyLoading = jest.fn(); - const clearBusyLoading = jest.fn(); - - LoopActionService.refreshStatus = jest.fn().mockImplementation(() => { - return Promise.resolve({ - ok: true, - status: 200, - json: () => { - } - }); - }); - const component = shallow() - await flushPromises(); - component.update(); - - expect(historyMock.push.mock.calls[0]).toEqual(['/']); - }); - - it('Test the render method action successful', async () => { - const flushPromises = () => new Promise(setImmediate); - const historyMock = { push: jest.fn() }; - const updateLoopFunction = jest.fn(); - const showSucAlert = jest.fn(); - const showFailAlert = jest.fn(); - const setBusyLoading = jest.fn(); - const clearBusyLoading = jest.fn(); - - LoopActionService.performAction = jest.fn().mockImplementation(() => { - return Promise.resolve({ - ok: true, - status: 200, - json: () => { - } - }); - }); - LoopActionService.refreshStatus = jest.fn().mockImplementation(() => { - return Promise.resolve({ - ok: true, - status: 200, - json: () => { - } - }); - }); - const component = shallow() - await flushPromises(); - component.update(); - - expect(historyMock.push.mock.calls[0]).toEqual(['/']); - }); - - it('Test the delete method action', async () => { - const flushPromises = () => new Promise(setImmediate); - const historyMock = { push: jest.fn() }; - const updateLoopFunction = jest.fn(); - const showSucAlert = jest.fn(); - const showFailAlert = jest.fn(); - const setBusyLoading = jest.fn(); - const clearBusyLoading = jest.fn(); - - LoopActionService.refreshStatus = jest.fn().mockImplementation(() => { - return Promise.resolve({ - ok: true, - status: 200, - json: () => { - } - }); - }); - const component = shallow() - await flushPromises(); - component.update(); - - expect(historyMock.push.mock.calls[0]).toEqual(['/']); - }); -}); diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/PoliciesTreeViewer.js b/gui-clamp/ui-react/src/components/dialogs/Policy/PoliciesTreeViewer.js deleted file mode 100644 index 7ec7eef..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/PoliciesTreeViewer.js +++ /dev/null @@ -1,121 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP POLICY-CLAMP - * ================================================================================ - * Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. - * Modifications 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. - * ============LICENSE_END============================================ - * =================================================================== - * - */ - -import React from 'react' -import TreeView from '@material-ui/lab/TreeView'; -import TreeItem from '@material-ui/lab/TreeItem'; -import FolderIcon from '@material-ui/icons/Folder'; -import FolderOpenIcon from '@material-ui/icons/FolderOpen'; -import DescriptionIcon from '@material-ui/icons/Description'; - - -export default class PoliciesTreeViewer extends React.Component { - - separator = "."; - - nodesList = new Map(); - - constructor(props, context) { - super(props, context); - this.createPoliciesTree = this.createPoliciesTree.bind(this); - this.handleTreeItemClick = this.handleTreeItemClick.bind(this); - this.buildNameWithParent = this.buildNameWithParent.bind(this); - - } - - state = { - policiesTreeData: this.createPoliciesTree(this.props.policiesData), - } - - componentDidUpdate(prevProps) { - if (prevProps.policiesData !== this.props.policiesData) { - this.setState({policiesTreeData: this.createPoliciesTree(this.props.policiesData)}) - } - } - - createPoliciesTree(policiesArray) { - console.log('createPoliciesTree called') - // put my policies array in a Json - let nodeId = 1; - let root = {id: nodeId, policyCount: 0, name: "ROOT", children: [], parent: undefined}; - this.nodesList.set(nodeId++, root); - - if (policiesArray !== null && policiesArray.forEach !== undefined) { - - policiesArray.forEach(policy => { - let currentTreeNode = root; - policy[this.props.valueForTreeCreation].split(this.separator).forEach((policyNamePart, index, policyNamePartsArray) => { - let node = currentTreeNode["children"].find(element => element.name === policyNamePart); - if (typeof (node) === "undefined") { - node = { - id: nodeId, - policyCount: 0, - children: [], - name: policyNamePart, - parent: currentTreeNode - }; - this.nodesList.set(nodeId++, node); - currentTreeNode["children"].push(node); - } - if ((index + 1) === policyNamePartsArray.length) { - ++currentTreeNode["policyCount"]; - } - currentTreeNode = node; - }) - }); - } - return root; - } - - buildNameWithParent(node) { - let nameToBuild = node.name; - if (node.parent !== undefined) { - nameToBuild = this.buildNameWithParent(node.parent) + this.separator + node.name; - } - return nameToBuild; - } - - handleTreeItemClick(event, value) { - let fullName = this.buildNameWithParent(this.nodesList.get(value[0])).substring(5); - this.props.policiesFilterFunction(fullName); - } - - renderTreeItems(nodes) { - return ( - { - Array.isArray(nodes.children) ? nodes.children.map((node) => this.renderTreeItems(node)) : null - } - ); - }; - - render() { - return ( - } - defaultExpandIcon={} defaultEndIcon={} - onNodeSelect={this.handleTreeItemClick} multiSelect> - {this.renderTreeItems(this.state.policiesTreeData)} - - ); - } -} diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/PoliciesTreeViewer.test.js b/gui-clamp/ui-react/src/components/dialogs/Policy/PoliciesTreeViewer.test.js deleted file mode 100644 index 7a6a76a..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/PoliciesTreeViewer.test.js +++ /dev/null @@ -1,54 +0,0 @@ -/* - * ============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========================================================= - */ - -import {shallow} from "enzyme"; -import React from "react"; -import PoliciesTreeViewer from "./PoliciesTreeViewer"; -import fs from "fs"; -import toJson from "enzyme-to-json"; - -describe('Verify PoliciesTreeViewer', () => { - - let toscaPoliciesData = fs.readFileSync('src/components/dialogs/Policy/toscaPoliciesData.test.json', { - encoding: 'utf8', - flag: 'r' - }); - const toscaPoliciesDataArray = JSON.parse(toscaPoliciesData); - - const logSpy = jest.spyOn(console, 'log'); - - - it("renders correctly", () => { - const component = shallow(); - - expect(toJson(component)).toMatchSnapshot(); - }); - - it("tests createPoliciesTree handler", () => { - const component = shallow(); - component.setState({ policiesTreeData: toscaPoliciesDataArray }); - - const instance = component.instance(); - instance.createPoliciesTree(toscaPoliciesDataArray); - - expect(logSpy).toHaveBeenCalledWith('createPoliciesTree called'); - expect(component.state('policiesTreeData')).toEqual(toscaPoliciesDataArray); - }); - -}); \ No newline at end of file diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/PolicyDeploymentEditor.js b/gui-clamp/ui-react/src/components/dialogs/Policy/PolicyDeploymentEditor.js deleted file mode 100644 index 27eed22..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/PolicyDeploymentEditor.js +++ /dev/null @@ -1,180 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP POLICY-CLAMP - * ================================================================================ - * Copyright (C) 2021 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============================================ - * =================================================================== - * - */ - -import React, { forwardRef } from 'react'; -import Modal from 'react-bootstrap/Modal'; -import styled from 'styled-components'; -import Button from 'react-bootstrap/Button'; -import Alert from 'react-bootstrap/Alert'; -import PolicyService from '../../../api/PolicyService'; -import FormGroup from '@material-ui/core/FormGroup'; -import Checkbox from '@material-ui/core/Checkbox'; -import FormControlLabel from '@material-ui/core/FormControlLabel'; - -const DivWhiteSpaceStyled = styled.div` - white-space: pre; -` - -const PanelDiv = styled.div` - text-align: justify; - font-size: ${ props => props.theme.policyEditorFontSize }; - background-color: ${ props => props.theme.loopViewerBackgroundColor }; -` - -export default class PolicyDeploymentEditor extends React.Component { - - state = { - policyData: this.props.policyData, - showSuccessAlert: false, - showFailAlert: false, - checkboxesState: this.createPdpStructure(this.props.policyData), - checkboxesInitialState: this.createPdpStructure(this.props.policyData), - }; - - constructor(props, context) { - super(props, context); - this.handleClose = this.handleClose.bind(this); - this.handleUpdatePdpDeployment = this.handleUpdatePdpDeployment.bind(this); - this.disableAlert = this.disableAlert.bind(this); - this.renderPdpDeploymentCheckboxes = this.renderPdpDeploymentCheckboxes.bind(this); - this.createPdpStructure = this.createPdpStructure.bind(this); - this.handleCheckboxChange = this.handleCheckboxChange.bind(this); - this.createPdpGroupOperations = this.createPdpGroupOperations.bind(this); - } - - handleClose() { - this.setState({ show: false }); - - } - - disableAlert() { - this.setState({ showSuccessAlert: false, showFailAlert: false }); - } - - createPdpGroupOperations(initialStates, newStates) { - console.log('createPdpGroupOperations called'); - let commandsArray = []; - initialStates.forEach(initElem => { - let newStateFound = newStates.find(newElement => newElement.name === initElem.name); - if (initElem.value !== newStateFound.value) { - let newPdpGroupsArray = newStateFound.name.split("/"); - let operation = "POST/"; - if (initElem.value) { - operation = "DELETE/"; - } - commandsArray.push(operation + newPdpGroupsArray[0] + "/" + newPdpGroupsArray[1] + "/" - + this.state.policyData.name + "/" + this.state.policyData.version); - } - }); - return commandsArray.length > 0 ? { "PdpActions": commandsArray } : undefined; - } - - handleUpdatePdpDeployment() { - console.log('handleUpdatePdpDeployment called'); - let operationsList = this.createPdpGroupOperations(this.state.checkboxesInitialState, - this.state.checkboxesState); - if (typeof (operationsList) !== "undefined") { - PolicyService.updatePdpDeployment(operationsList).then(respPdpDeploymentUpdate => { - if (typeof (respPdpDeploymentUpdate) === "undefined") { - //it indicates a failure - this.setState({ - showFailAlert: true, - showMessage: 'Pdp Deployment update Failure' - }); - } else { - this.setState({ - showSuccessAlert: true, - showMessage: 'Pdp Deployment Update successful' - }); - this.props.policiesTableUpdateFunction(); - } - }) - } else { - this.setState({ - showSuccessAlert: true, - showMessage: 'Pdp Deployment: Nothing to change' - }); - } - } - - createPdpStructure(policyData) { - // Create map with data for all group/subgroup where the policy is deployed - let infoPdpMap = new Map(); - if (typeof policyData.pdpGroupInfo !== "undefined") { - policyData["pdpGroupInfo"].forEach(pdpGroupElem => { - let pdpGroupName = Object.keys(pdpGroupElem)[0]; - pdpGroupElem[pdpGroupName]["pdpSubgroups"].forEach(pdpSubGroupElem => { - infoPdpMap.set(pdpGroupName + "/" + pdpSubGroupElem["pdpType"], true); - }); - }); - } - // Create the possible values for pdpgroup/subgroup and tick the ones where policy is deployed - let pdpStates = []; - if (typeof policyData.supportedPdpGroups !== "undefined") { - for (const pdpGroup of policyData["supportedPdpGroups"]) { - let pdpGroupName = Object.keys(pdpGroup)[0]; - for (const pdpSubGroup of Object.values(pdpGroup)[0]) { - let fullName = pdpGroupName + "/" + pdpSubGroup; - pdpStates.push({ - name: fullName, - value: infoPdpMap.get(fullName) !== undefined - }); - } - } - } - return pdpStates; - } - - handleCheckboxChange(event) { - const checkboxesArray = this.state.checkboxesState; - checkboxesArray.find(element => element.name === event.target.name).value = event.target.checked; - this.setState({ checkboxesState: checkboxesArray }); - } - - renderPdpDeploymentCheckboxes() { - return this.state.checkboxesState.map(item => { - return } label={ item.name }/>; - }); - } - - render() { - return ( - - - - { this.state.showMessage } - - - - - { this.state.showMessage } - - - - { this.renderPdpDeploymentCheckboxes() } - - ); - } -} diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/PolicyDeploymentEditor.test.js b/gui-clamp/ui-react/src/components/dialogs/Policy/PolicyDeploymentEditor.test.js deleted file mode 100644 index 1ae73a2..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/PolicyDeploymentEditor.test.js +++ /dev/null @@ -1,93 +0,0 @@ -/* - * ============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========================================================= - */ - -import {shallow} from "enzyme"; -import toJson from "enzyme-to-json"; -import React from "react"; -import PolicyDeploymentEditor from "./PolicyDeploymentEditor"; -import fs from "fs"; -import LoopService from "../../../api/LoopService"; - -describe('Verify PolicyDeploymentEditor', () => { - const toscaPolicyDeploymentEditor = fs.readFileSync('src/components/dialogs/Policy/toscaPolicyDeploymentEditor.test.json', { - encoding: 'utf8', - flag: 'r' - }); - - const toscaPolicyDeploymentEditorArray = JSON.parse(toscaPolicyDeploymentEditor); - - const initialStateTrue = [ - { - "name": "monitoring/xacml", - "value": true - } - ]; - - const initialStateFalse = [ - { - "name": "monitoring/xacml", - "value": false - } - ]; - - const logSpy = jest.spyOn(console, 'log'); - - it("renders correctly", () => { - const component = shallow(); - expect(toJson(component)).toMatchSnapshot(); - }); - - it('Test createPdpGroupOperations', () => { - const component = shallow(); - - const instance = component.instance(); - - instance.createPdpGroupOperations(initialStateTrue, initialStateTrue); - - component.update(); - - expect(logSpy).toHaveBeenCalledWith('createPdpGroupOperations called'); - }); - - it('Test handleUpdatePdpDeployment', () => { - LoopService.updatePdpDeployment = jest.fn().mockImplementation(() => { - return Promise.resolve(undefined); - }); - - const component = shallow(); - component.setState({checkboxesInitialState: initialStateTrue}); - component.setState({checkboxesState: initialStateFalse}); - - const instance = component.instance(); - instance.handleUpdatePdpDeployment(); - - expect(component.state('showFailAlert')).toEqual(false); - expect(component.state('showMessage')).toEqual(undefined); - - component.update(); - - component.setState({showFailAlert: true}); - component.setState({showMessage: 'Pdp Deployment update Failure'}); - - expect(logSpy).toHaveBeenCalledWith('handleUpdatePdpDeployment called'); - expect(component.state('showFailAlert')).toEqual(true); - expect(component.state('showMessage')).toEqual('Pdp Deployment update Failure'); - }); - -}); \ No newline at end of file diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/PolicyEditor.js b/gui-clamp/ui-react/src/components/dialogs/Policy/PolicyEditor.js deleted file mode 100644 index 1e27541..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/PolicyEditor.js +++ /dev/null @@ -1,192 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP POLICY-CLAMP - * ================================================================================ - * Copyright (C) 2021 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============================================ - * =================================================================== - * - */ - -import React from 'react' -import PolicyToscaService from '../../../api/PolicyToscaService'; -import { JSONEditor } from '@json-editor/json-editor/dist/nonmin/jsoneditor.js'; -import "@fortawesome/fontawesome-free/css/all.css" -import styled from 'styled-components'; -import Button from 'react-bootstrap/Button'; -import TextField from '@material-ui/core/TextField'; -import Alert from 'react-bootstrap/Alert'; -import PolicyService from '../../../api/PolicyService'; -import OnapUtils from '../../../utils/OnapUtils'; - -const DivWhiteSpaceStyled = styled.div` - white-space: pre; -` - -const JsonEditorDiv = styled.div` - margin-top: 20px; - background-color: ${ props => props.theme.loopViewerBackgroundColor }; - text-align: justify; - font-size: ${ props => props.theme.policyEditorFontSize }; - border: 1px solid #C0C0C0; -` -const PanelDiv = styled.div` - text-align: justify; - font-size: ${ props => props.theme.policyEditorFontSize }; - background-color: ${ props => props.theme.loopViewerBackgroundColor }; -` - -export default class PolicyEditor extends React.Component { - - state = { - policyModelType: this.props.policyModelType, - policyModelTypeVersion: this.props.policyModelTypeVersion, - policyName: (typeof this.props.policyName !== "undefined") ? this.props.policyName : "org.onap.policy.new", - policyVersion: (typeof this.props.policyVersion !== "undefined") ? this.props.policyVersion : "0.0.1", - policyProperties: this.props.policyProperties, - showSuccessAlert: false, - showFailAlert: false, - jsonEditor: null, - jsonEditorDivId: this.props.policyModelType + "_" + this.props.policyModelTypeVersion + "_" + this.props.policyName + "_" + this.props.policyVersion, - } - - constructor(props, context) { - super(props, context); - this.createJsonEditor = this.createJsonEditor.bind(this); - this.getToscaModelForPolicy = this.getToscaModelForPolicy.bind(this); - this.disableAlert = this.disableAlert.bind(this); - this.handleCreateNewVersion = this.handleCreateNewVersion.bind(this); - this.handleChangePolicyName = this.handleChangePolicyName.bind(this); - this.handleChangePolicyVersion = this.handleChangePolicyVersion.bind(this); - } - - disableAlert() { - this.setState({ showSuccessAlert: false, showFailAlert: false }); - } - - customValidation(editorData) { - // method for sub-classes to override with customized validation - return []; - } - - handleCreateNewVersion() { - var editorData = this.state.jsonEditor.getValue(); - var errors = this.state.jsonEditor.validate(); - errors = errors.concat(this.customValidation(editorData)); - - if (errors.length !== 0) { - console.error("Errors detected during policy data validation ", errors); - this.setState({ - showFailAlert: true, - showMessage: 'Errors detected during policy data validation:\n' + OnapUtils.jsonEditorErrorFormatter(errors) - }); - return; - } else { - console.info("NO validation errors found in policy data"); - PolicyService.createNewPolicy(this.state.policyModelType, this.state.policyModelTypeVersion, - this.state.policyName, this.state.policyVersion, editorData).then(respPolicyCreation => { - if (typeof (respPolicyCreation) === "undefined") { - //it indicates a failure - this.setState({ - showFailAlert: true, - showMessage: 'Policy Creation Failure' - }); - } else { - this.setState({ - showSuccessAlert: true, - showMessage: 'Policy ' + this.state.policyName + '/' + this.state.policyVersion + ' created successfully' - }); - this.props.policiesTableUpdateFunction(); - } - }) - } - } - - getToscaModelForPolicy() { - PolicyToscaService.getToscaPolicyModel(this.state.policyModelType, this.state.policyModelTypeVersion).then(respJsonPolicyTosca => { - if (respJsonPolicyTosca !== {}) { - this.setState({ - jsonSchemaPolicyTosca: respJsonPolicyTosca, - jsonEditor: this.createJsonEditor(respJsonPolicyTosca, this.state.policyProperties), - }) - } - }); - } - - componentDidMount() { - this.getToscaModelForPolicy(); - } - - createJsonEditor(toscaModel, editorData) { - return new JSONEditor(document.getElementById(this.state.jsonEditorDivId), - { - schema: toscaModel, - startval: editorData, - theme: 'bootstrap4', - iconlib: 'fontawesome5', - object_layout: 'grid', - disable_properties: false, - disable_edit_json: false, - disable_array_reorder: true, - disable_array_delete_last_row: true, - disable_array_delete_all_rows: false, - array_controls_top: true, - keep_oneof_values: false, - collapsed: true, - show_errors: 'always', - display_required_only: false, - show_opt_in: false, - prompt_before_delete: true, - required_by_default: false - }) - } - - handleChangePolicyName(event) { - this.setState({ - policyName: event.target.value, - }); - } - - handleChangePolicyVersion(event) { - this.setState({ - policyVersion: event.target.value, - }); - } - - render() { - return ( - - - - { this.state.showMessage } - - - - - { this.state.showMessage } - - - - - - - - ); - } -} diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/PolicyEditor.test.js b/gui-clamp/ui-react/src/components/dialogs/Policy/PolicyEditor.test.js deleted file mode 100644 index 339d660..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/PolicyEditor.test.js +++ /dev/null @@ -1,71 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP POLICY-CLAMP - * ================================================================================ - * Copyright (C) 2021 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============================================ - * =================================================================== - * - */ -import React from 'react'; -import PolicyEditor from './PolicyEditor'; -import { shallow, mount } from 'enzyme'; -import PolicyToscaService from '../../../api/PolicyToscaService'; - -describe('Verify PolicyEditor', () => { - const fs = require('fs'); - - let toscaJson = fs.readFileSync('src/components/dialogs/Policy/toscaData.test.json', { encoding: 'utf8', flag: 'r' }) - - const policyProperties = { - "tca.policy": { - "domain": "measurementsForVfScaling", - "metricsPerEventName": [ - { - "policyScope": "DCAE", - "thresholds": [ - { - "version": "1.0.2", - "severity": "MAJOR", - "thresholdValue": 200, - "closedLoopEventStatus": "ONSET", - "closedLoopControlName": "LOOP_test", - "direction": "LESS_OR_EQUAL", - "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta" - } - ], - "eventName": "vLoadBalancer", - "policyVersion": "v0.0.1", - "acmSchemaType": "VM", - "policyName": "DCAE.Config_tca-hi-lo" - } - ] - } - }; - - it('Test the render method', async () => { - PolicyToscaService.getToscaPolicyModel = jest.fn().mockImplementation(() => { - return Promise.resolve(toscaJson); - }); - - const component = mount( { - } }/>); - await PolicyToscaService.getToscaPolicyModel(); - expect(component).toMatchSnapshot(); - }); -}); diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/PolicyModal.js b/gui-clamp/ui-react/src/components/dialogs/Policy/PolicyModal.js deleted file mode 100644 index 0c7637c..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/PolicyModal.js +++ /dev/null @@ -1,349 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP POLICY-CLAMP - * ================================================================================ - * Copyright (C) 2020-2021 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============================================ - * =================================================================== - * - */ - -import React from 'react' -import Button from 'react-bootstrap/Button'; -import Form from 'react-bootstrap/Form'; -import Col from 'react-bootstrap/Col'; -import Row from 'react-bootstrap/Row'; -import Select from 'react-select'; -import Modal from 'react-bootstrap/Modal'; -import styled from 'styled-components'; -import LoopService from '../../../api/LoopService'; -import LoopCache from '../../../api/LoopCache'; -import { JSONEditor } from '@json-editor/json-editor/dist/jsoneditor.js'; -import "@fortawesome/fontawesome-free/css/all.css" -import Alert from 'react-bootstrap/Alert'; -import OnapConstant from '../../../utils/OnapConstants'; -import OnapUtils from '../../../utils/OnapUtils'; - -const ModalStyled = styled(Modal)` - background-color: transparent; -` - -const DivWhiteSpaceStyled = styled.div` - white-space: pre; -` - -export default class PolicyModal extends React.Component { - - state = { - show: true, - loopCache: this.props.loopCache, - jsonEditor: null, - policyName: this.props.match.params.policyName, - // This is to indicate whether it's an operational or config policy (in terms of loop instance) - policyInstanceType: this.props.match.params.policyInstanceType, - pdpGroup: null, - pdpGroupList: [], - pdpSubgroupList: [], - chosenPdpGroup: '', - chosenPdpSubgroup: '', - showSucAlert: false, - showFailAlert: false - }; - - constructor(props, context) { - super(props, context); - this.handleClose = this.handleClose.bind(this); - this.handleSave = this.handleSave.bind(this); - this.renderJsonEditor = this.renderJsonEditor.bind(this); - this.handlePdpGroupChange = this.handlePdpGroupChange.bind(this); - this.handlePdpSubgroupChange = this.handlePdpSubgroupChange.bind(this); - this.createJsonEditor = this.createJsonEditor.bind(this); - this.handleRefresh = this.handleRefresh.bind(this); - this.disableAlert = this.disableAlert.bind(this); - this.renderPdpGroupDropDown = this.renderPdpGroupDropDown.bind(this); - this.renderOpenLoopMessage = this.renderOpenLoopMessage.bind(this); - this.renderModalTitle = this.renderModalTitle.bind(this); - this.readOnly = props.readOnly !== undefined ? props.readOnly : false; - } - - handleSave() { - var editorData = this.state.jsonEditor.getValue(); - var errors = this.state.jsonEditor.validate(); - errors = errors.concat(this.customValidation(editorData, this.state.loopCache.getTemplateName())); - - if (errors.length !== 0) { - console.error("Errors detected during policy data validation ", errors); - this.setState({ - showFailAlert: true, - showMessage: 'Errors detected during policy data validation:\n' + OnapUtils.jsonEditorErrorFormatter(errors) - }); - return; - } else { - console.info("NO validation errors found in policy data"); - if (this.state.policyInstanceType === OnapConstant.microServiceType) { - this.state.loopCache.updateMicroServiceProperties(this.state.policyName, editorData); - this.state.loopCache.updateMicroServicePdpGroup(this.state.policyName, this.state.chosenPdpGroup, this.state.chosenPdpSubgroup); - LoopService.setMicroServiceProperties(this.state.loopCache.getLoopName(), this.state.loopCache.getMicroServiceForName(this.state.policyName)).then(resp => { - this.setState({ show: false }); - this.props.history.push('/'); - this.props.loadLoopFunction(this.state.loopCache.getLoopName()); - }); - } else if (this.state.policyInstanceType === OnapConstant.operationalPolicyType) { - this.state.loopCache.updateOperationalPolicyProperties(this.state.policyName, editorData); - this.state.loopCache.updateOperationalPolicyPdpGroup(this.state.policyName, this.state.chosenPdpGroup, this.state.chosenPdpSubgroup); - LoopService.setOperationalPolicyProperties(this.state.loopCache.getLoopName(), this.state.loopCache.getOperationalPolicies()).then(resp => { - this.setState({ show: false }); - this.props.history.push('/'); - this.props.loadLoopFunction(this.state.loopCache.getLoopName()); - }); - } - } - } - - customValidation(editorData, templateName) { - // method for sub-classes to override with customized validation - return []; - } - - handleClose() { - this.setState({ show: false }); - this.props.history.push('/'); - } - - componentDidMount() { - this.renderJsonEditor(); - } - - componentDidUpdate() { - if (this.state.showSucAlert === true || this.state.showFailAlert === true) { - let modalElement = document.getElementById("policyModal") - if (modalElement) { - modalElement.scrollTo(0, 0); - } - } - } - - createJsonEditor(toscaModel, editorData) { - return new JSONEditor(document.getElementById("editor"), - { - schema: toscaModel, - startval: editorData, - theme: 'bootstrap4', - iconlib: 'fontawesome5', - object_layout: 'grid', - disable_properties: false, - disable_edit_json: false, - disable_array_reorder: true, - disable_array_delete_last_row: true, - disable_array_delete_all_rows: false, - array_controls_top: true, - keep_oneof_values: false, - collapsed: true, - show_errors: 'always', - display_required_only: false, - show_opt_in: false, - prompt_before_delete: true, - required_by_default: false - }) - } - - renderJsonEditor() { - console.debug("Rendering PolicyModal ", this.state.policyName); - var toscaModel = {}; - var editorData = {}; - var pdpGroupValues = {}; - var chosenPdpGroupValue, chosenPdpSubgroupValue; - if (this.state.policyInstanceType === OnapConstant.microServiceType) { - toscaModel = this.state.loopCache.getMicroServiceJsonRepresentationForName(this.state.policyName); - editorData = this.state.loopCache.getMicroServicePropertiesForName(this.state.policyName); - pdpGroupValues = this.state.loopCache.getMicroServiceSupportedPdpGroup(this.state.policyName); - chosenPdpGroupValue = this.state.loopCache.getMicroServicePdpGroup(this.state.policyName); - chosenPdpSubgroupValue = this.state.loopCache.getMicroServicePdpSubgroup(this.state.policyName); - } else if (this.state.policyInstanceType === OnapConstant.operationalPolicyType) { - toscaModel = this.state.loopCache.getOperationalPolicyJsonRepresentationForName(this.state.policyName); - editorData = this.state.loopCache.getOperationalPolicyPropertiesForName(this.state.policyName); - pdpGroupValues = this.state.loopCache.getOperationalPolicySupportedPdpGroup(this.state.policyName); - chosenPdpGroupValue = this.state.loopCache.getOperationalPolicyPdpGroup(this.state.policyName); - chosenPdpSubgroupValue = this.state.loopCache.getOperationalPolicyPdpSubgroup(this.state.policyName); - } - - if (toscaModel == null) { - return; - } - - var pdpSubgroupValues = []; - if (typeof (chosenPdpGroupValue) !== "undefined") { - var selectedPdpGroup = pdpGroupValues.filter(entry => (Object.keys(entry)[0] === chosenPdpGroupValue)); - pdpSubgroupValues = selectedPdpGroup[0][chosenPdpGroupValue].map((pdpSubgroup) => { - return { label: pdpSubgroup, value: pdpSubgroup } - }); - } - this.setState({ - jsonEditor: this.createJsonEditor(toscaModel, editorData), - pdpGroup: pdpGroupValues, - pdpGroupList: pdpGroupValues.map(entry => { - return { label: Object.keys(entry)[0], value: Object.keys(entry)[0] }; - }), - pdpSubgroupList: pdpSubgroupValues, - chosenPdpGroup: chosenPdpGroupValue, - chosenPdpSubgroup: chosenPdpSubgroupValue - }) - } - - handlePdpGroupChange(e) { - var selectedPdpGroup = this.state.pdpGroup.filter(entry => (Object.keys(entry)[0] === e.value)); - const pdpSubgroupValues = selectedPdpGroup[0][e.value].map((pdpSubgroup) => { - return { label: pdpSubgroup, value: pdpSubgroup } - }); - if (this.state.chosenPdpGroup !== e.value) { - this.setState({ - chosenPdpGroup: e.value, - chosenPdpSubgroup: '', - pdpSubgroupList: pdpSubgroupValues - }); - } - } - - handlePdpSubgroupChange(e) { - this.setState({ chosenPdpSubgroup: e.value }); - } - - handleRefresh() { - var newLoopCache, toscaModel, editorData; - if (this.state.policyInstanceType === OnapConstant.microServiceType) { - LoopService.refreshMicroServicePolicyJson(this.state.loopCache.getLoopName(), this.state.policyName).then(data => { - newLoopCache = new LoopCache(data); - toscaModel = newLoopCache.getMicroServiceJsonRepresentationForName(this.state.policyName); - editorData = newLoopCache.getMicroServicePropertiesForName(this.state.policyName); - document.getElementById("editor").innerHTML = ""; - this.setState({ - loopCache: newLoopCache, - jsonEditor: this.createJsonEditor(toscaModel, editorData), - showSucAlert: true, - showMessage: "Successfully refreshed" - }); - }) - .catch(error => { - console.error("Error while refreshing the Operational Policy Json Representation"); - this.setState({ - showFailAlert: true, - showMessage: "Refreshing of UI failed" - }); - }); - } else if (this.state.policyInstanceType === OnapConstant.operationalPolicyType) { - LoopService.refreshOperationalPolicyJson(this.state.loopCache.getLoopName(), this.state.policyName).then(data => { - var newLoopCache = new LoopCache(data); - toscaModel = newLoopCache.getOperationalPolicyJsonRepresentationForName(this.state.policyName); - editorData = newLoopCache.getOperationalPolicyPropertiesForName(this.state.policyName); - document.getElementById("editor").innerHTML = ""; - this.setState({ - loopCache: newLoopCache, - jsonEditor: this.createJsonEditor(toscaModel, editorData), - showSucAlert: true, - showMessage: "Successfully refreshed" - }); - }) - .catch(error => { - console.error("Error while refreshing the Operational Policy Json Representation"); - this.setState({ - showFailAlert: true, - showMessage: "Refreshing of UI failed" - }); - }); - } - } - - disableAlert() { - this.setState({ showSucAlert: false, showFailAlert: false }); - } - - renderPdpGroupDropDown() { - if (this.state.policyInstanceType !== OnapConstant.operationalPolicyType || !this.state.loopCache.isOpenLoopTemplate()) { - return ( - - Pdp Group Info - - - - - ); - } - } - - renderOpenLoopMessage() { - if (this.state.policyInstanceType === OnapConstant.operationalPolicyType && this.state.loopCache.isOpenLoopTemplate()) { - return ( - "Operational Policy cannot be configured as only Open Loop is supported for this Template!" - ); - } - } - - renderModalTitle() { - return ( - Edit the policy - ); - } - - renderButton() { - var allElement = [()]; - if (this.state.policyInstanceType !== OnapConstant.operationalPolicyType || !this.state.loopCache.isOpenLoopTemplate()) { - allElement.push(( - - )); - allElement.push(( - - )); - } - return allElement; - } - - render() { - return ( - - - { this.renderModalTitle() } - - - - { this.state.showMessage } - - - - - { this.state.showMessage } - - - - { this.renderOpenLoopMessage() } -
- { this.renderPdpGroupDropDown() } - - - { this.renderButton() } - - - ); - } -} diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/PolicyModal.test.js b/gui-clamp/ui-react/src/components/dialogs/Policy/PolicyModal.test.js deleted file mode 100644 index 0f7d528..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/PolicyModal.test.js +++ /dev/null @@ -1,185 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP POLICY-CLAMP - * ================================================================================ - * Copyright (C) 2020-2021 AT&T Intellectual Property. All rights - * reserved. - * Modifications 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. - * ============LICENSE_END============================================ - * =================================================================== - * - */ -import React from 'react'; -import { mount } from 'enzyme'; -import PolicyModal from './PolicyModal'; -import LoopCache from '../../../api/LoopCache'; -import LoopService from '../../../api/LoopService'; -import OnapConstant from '../../../utils/OnapConstants'; -import { shallow } from 'enzyme'; - -describe('Verify PolicyModal', () => { - beforeEach(() => { - fetch.resetMocks(); - fetch.mockImplementation(() => { - return Promise.resolve({ - ok: true, - status: 200, - text: () => "OK" - }); - }); - }) - const loopCacheStr = { - "name": "LOOP_Jbv1z_v1_0_ResourceInstanceName1_tca", - "operationalPolicies": [{ - "name": "OPERATIONAL_h2NMX_v1_0_ResourceInstanceName1_tca", - "configurationsJson": { - "operational_policy": { - "acm": {}, - "policies": [] - } - }, - "policyModel": { "policyPdpGroup": { "supportedPdpGroups": [{ "monitoring": ["xacml"] }] } }, - "jsonRepresentation": { "schema": {} } - }] - }; - - const loopCacheStrMC = { - "name": "MICROSERVICE_type_tca", - "microServicePolicies": [{ - "name": "MICROSERVICE_type", - "configurationsJson": { - "operational_policy": { - "acm": {}, - "policies": [] - } - }, - "policyModel": { "policyPdpGroup": { "supportedPdpGroups": [{ "monitoring": ["xacml"] }] } }, - "jsonRepresentation": { "schema": {} } - }] - }; - - const loopCache = new LoopCache(loopCacheStr); - const historyMock = { push: jest.fn() }; - const flushPromises = () => new Promise(setImmediate); - const match = { params: { policyName: "OPERATIONAL_h2NMX_v1_0_ResourceInstanceName1_tca", policyInstanceType: OnapConstant.operationalPolicyType } } - const loopCacheMicroService = new LoopCache(loopCacheStrMC); - const matchMicroService = { params: { policyName: "MICROSERVICE_type", policyInstanceType: OnapConstant.microServiceType } } - - it('Test handleClose', () => { - const handleClose = jest.spyOn(PolicyModal.prototype, 'handleClose'); - const component = mount() - - component.find('[variant="secondary"]').prop('onClick')(); - - expect(handleClose).toHaveBeenCalledTimes(1); - expect(component.state('show')).toEqual(false); - expect(historyMock.push.mock.calls[0]).toEqual(['/']); - }); - - it('Test handleSave', async () => { - const loadLoopFunction = jest.fn(); - const handleSave = jest.spyOn(PolicyModal.prototype, 'handleSave'); - const component = mount() - - component.find('[variant="primary"]').get(0).props.onClick(); - await flushPromises(); - component.update(); - - expect(handleSave).toHaveBeenCalledTimes(1); - expect(component.state('show')).toEqual(false); - expect(historyMock.push.mock.calls[0]).toEqual(['/']); - }); - - it('Test handleSave MicroService', async () => { - const loadLoopFunctionMC = jest.fn(); - const handleSaveMC = jest.spyOn(PolicyModal.prototype, 'handleSave'); - const componentMC = mount() - componentMC.find('[variant="primary"]').get(0).props.onClick(); - await flushPromises(); - componentMC.update(); - - expect(handleSaveMC).toHaveBeenCalledTimes(2); //The 1st call it's done in the previous test - expect(componentMC.state('show')).toEqual(false); - expect(historyMock.push.mock.calls[0]).toEqual(['/']); - }); - - it('Test handleRefresh', async () => { - LoopService.refreshOperationalPolicyJson = jest.fn().mockImplementation(() => { - return Promise.resolve(loopCacheStr); - }); - const updateLoopFunction = jest.fn(); - const handleRefresh = jest.spyOn(PolicyModal.prototype, 'handleRefresh'); - const component = mount() - - component.find('[variant="primary"]').get(1).props.onClick(); - await flushPromises(); - component.update(); - - expect(handleRefresh).toHaveBeenCalledTimes(1); - expect(component.state('show')).toEqual(true); - expect(component.state('showSucAlert')).toEqual(true); - expect(component.state('showMessage')).toEqual("Successfully refreshed"); - }); - - it('Test handleRefresh MicroService Fail', async () => { - LoopService.refreshOperationalPolicyJson = jest.fn().mockImplementation(() => { - return Promise.resolve(loopCacheStrMC); - }); - const updateLoopFunction = jest.fn(); - const handleRefresh = jest.spyOn(PolicyModal.prototype, 'handleRefresh'); - const component = mount() - - component.find('[variant="primary"]').get(1).props.onClick(); - await flushPromises(); - component.update(); - - expect(handleRefresh).toHaveBeenCalledTimes(2); - expect(component.state('show')).toEqual(true); - expect(component.state('showSucAlert')).toEqual(false); - expect(component.state('showMessage')).toEqual("Refreshing of UI failed"); - }); - - it('Test handlePdpGroupChange', () => { - const component = mount() - component.setState({ - "pdpGroup": [{ "option1": ["subPdp1", "subPdp2"] }], - "chosenPdpGroup": "option2" - }); - expect(component.state('chosenPdpGroup')).toEqual("option2"); - - const instance = component.instance(); - const event = { label: "option1", value: "option1" } - instance.handlePdpGroupChange(event); - expect(component.state('chosenPdpGroup')).toEqual("option1"); - expect(component.state('chosenPdpSubgroup')).toEqual(""); - expect(component.state('pdpSubgroupList')).toEqual([{ label: "subPdp1", value: "subPdp1" }, { label: "subPdp2", value: "subPdp2" }]); - }); - - it('Test handlePdpSubgroupChange', () => { - const component = mount() - - const instance = component.instance(); - const event = { label: "option1", value: "option1" } - instance.handlePdpSubgroupChange(event); - expect(component.state('chosenPdpSubgroup')).toEqual("option1"); - }); - - it('Test the render method', () => { - const component = shallow() - expect(component).toMatchSnapshot(); - }); -}); diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/PolicyToscaFileSelector.js b/gui-clamp/ui-react/src/components/dialogs/Policy/PolicyToscaFileSelector.js deleted file mode 100644 index 8051059..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/PolicyToscaFileSelector.js +++ /dev/null @@ -1,135 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP POLICY-CLAMP - * ================================================================================ - * Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. - * Modifications 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. - * ============LICENSE_END============================================ - * =================================================================== - * - */ - -import React from 'react' -import Modal from 'react-bootstrap/Modal'; -import Form from 'react-bootstrap/Form'; -import Row from 'react-bootstrap/Row'; -import Col from 'react-bootstrap/Col'; -import styled from 'styled-components'; -import Alert from 'react-bootstrap/Alert'; -import { Button, SvgIcon } from "@material-ui/core"; -import PublishIcon from '@material-ui/icons/Publish'; -import PolicyService from "../../../api/PolicyService"; - -const ModalStyled = styled(Modal)` - background-color: transparent; -` - -const StyledMessagesDiv = styled.div` - overflow: auto; - max-height: 300px; -` - - -export default class PolicyToscaFileSelector extends React.Component { - - state = { - show: this.props.show, - alertMessages: [], - } - - constructor(props, context) { - super(props, context); - this.handleClose = this.handleClose.bind(this); - this.onFileChange = this.onFileChange.bind(this); - } - - componentDidUpdate(prevProps) { - if (this.props.show !== this.state.show) { - this.setState({ show: this.props.show }); - } - } - - handleClose() { - this.props.disableFunction(); - this.setState({ alertMessages: [] }); - } - - onFileChange(target) { - console.log('onFileChange target'); - this.setState({ alertMessages: [] }); - target.currentTarget.files.forEach(file => { - const fileReader = new FileReader(); - fileReader.readAsDataURL(file); - fileReader.onload = (content) => { - PolicyService.sendNewPolicyModel(atob(content.target.result.split(",")[1])).then(respModelCreate => { - if (typeof (respModelCreate) === "undefined") { - //it indicates a failure - this.setState(state => { - return { - alertMessages: [...state.alertMessages, ({ file.name }

Policy Tosca Model Creation Failure

-
-

Type: { file.type }

Size: { file.size }

)] - }; - }); - } else { - this.props.toscaTableUpdateFunction(); - this.setState(state => { - return { - alertMessages: [...state.alertMessages, ({ file.name }

Policy Tosca Model Created Successfully

-
-

Type: { file.type }

Size: { file.size }

)] - }; - }); - } - }); - }; - }); - - } - - render() { - return ( - - - Create New Policy Tosca Model - - - - - - - - { this.state.alertMessages } - - - - - - - - - ); - } -} diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/PolicyToscaFileSelector.test.js b/gui-clamp/ui-react/src/components/dialogs/Policy/PolicyToscaFileSelector.test.js deleted file mode 100644 index 412b1b0..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/PolicyToscaFileSelector.test.js +++ /dev/null @@ -1,128 +0,0 @@ -/* - * ============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========================================================= - */ - -import {shallow} from "enzyme"; -import toJson from "enzyme-to-json"; -import React from "react"; -import PolicyToscaFileSelector from "./PolicyToscaFileSelector"; -import PolicyService from "../../../api/PolicyService"; -import Alert from "react-bootstrap/Alert"; -import PolicyToscaService from "../../../api/PolicyToscaService"; -import fs from "fs"; - -describe('Verify PolicyToscaFileSelector', () => { - - let toscaPoliciesList = fs.readFileSync('src/components/dialogs/Policy/toscaPoliciesList.test.json', { - encoding: 'utf8', - flag: 'r' - }); - - const uploadFile = JSON.stringify( - { - name: 'test-file.yaml', - lastModified: 1639414348371, - lastModifiedDate: 'Sat Jan 1 2022 00:00:01 GMT+0000', - size: 32880, - type: '' - }); - - const file = new Blob([uploadFile], {type: 'file'}) - const logSpy = jest.spyOn(console, 'log'); - - const alertMessages = [( - {file.name}

Policy Tosca Model Creation Test

-
-

Type: {file.type}

Size: {file.size}

)]; - - it("renders correctly", () => { - const component = shallow(); - expect(toJson(component)).toMatchSnapshot(); - }); - - it('Test handleClose', async () => { - const flushPromises = () => new Promise(setImmediate); - const showFileSelectorMock = jest.fn(); - const showFileSelector = showFileSelectorMock.bind({ - showFileSelector: false - }); - const handleClose = jest.spyOn(PolicyToscaFileSelector.prototype, 'handleClose'); - const component = shallow(); - - component.find('[variant="secondary"]').get(0).props.onClick(); - await flushPromises(); - component.update(); - - expect(handleClose).toHaveBeenCalledTimes(1); - expect(component.state('show')).toEqual(false); - - handleClose.mockClear(); - }); - - it('handleClose called when top-right button clicked', async () => { - const flushPromises = () => new Promise(setImmediate); - const showFileSelectorMock = jest.fn(); - const showFileSelector = showFileSelectorMock.bind({ - showFileSelector: false - }); - const handleClose = jest.spyOn(PolicyToscaFileSelector.prototype, 'handleClose'); - const component = shallow(); - - component.find('[size="lg"]').get(0).props.onHide(); - await flushPromises(); - component.update(); - - expect(handleClose).toHaveBeenCalledTimes(1); - expect(component.state('show')).toEqual(false); - - handleClose.mockClear(); - }); - - it("onFileChange called when upload button clicked", () => { - PolicyService.sendNewPolicyModel = jest.fn().mockImplementation(() => { - return Promise.resolve({}); - }); - - const component = shallow(); - const instance = component.instance(); - const target = { - currentTarget: {files: [file]} - } - - instance.onFileChange(target); - - component.find('[type="file"]').get(0).props.onChange(target); - expect(logSpy).toHaveBeenCalledWith('onFileChange target'); - }); - - it("setAlertMessage state", () => { - PolicyToscaService.getToscaPolicyModels = jest.fn().mockImplementation(() => { - return Promise.resolve(toscaPoliciesList); - }); - const getAllToscaModelsMock = jest.fn(); - const getAllToscaModels = getAllToscaModelsMock.bind({ - toscaModelsListData: toscaPoliciesList, - toscaModelsListDataFiltered: toscaPoliciesList - }); - - const component = shallow(); - component.setState({alertMessages: alertMessages}); - - expect(component.state('alertMessages')).toEqual(alertMessages); - }); -}); \ No newline at end of file diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/ToscaViewer.js b/gui-clamp/ui-react/src/components/dialogs/Policy/ToscaViewer.js deleted file mode 100644 index fc69a63..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/ToscaViewer.js +++ /dev/null @@ -1,66 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP POLICY-CLAMP - * ================================================================================ - * Copyright (C) 2021 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============================================ - * =================================================================== - * - */ - -import React from 'react' -import PolicyToscaService from '../../../api/PolicyToscaService'; -import styled from 'styled-components'; -import Button from 'react-bootstrap/Button'; - -const ToscaDiv = styled.div` - background-color: ${ props => props.theme.toscaTextareaBackgroundColor }; - text-align: justify; - font-size: ${ props => props.theme.toscaTextareaFontSize }; - width: 100%; - height: 30%; -` - -export default class ToscaViewer extends React.Component { - - state = { - toscaData: this.props.toscaData, - yamlPolicyTosca: this.getToscaModelYamlFor(this.props.toscaData), - } - - constructor(props, context) { - super(props, context); - this.getToscaModelYamlFor = this.getToscaModelYamlFor.bind(this); - } - - getToscaModelYamlFor(toscaData) { - PolicyToscaService.getToscaPolicyModelYaml(toscaData["policyModelType"], toscaData["version"]).then(respYamlPolicyTosca => { - this.setState({ - yamlPolicyTosca: respYamlPolicyTosca, - }) - }); - } - - render() { - return ( - -
{ this.state.yamlPolicyTosca }
- -
- ); - } -} diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/ToscaViewer.test.js b/gui-clamp/ui-react/src/components/dialogs/Policy/ToscaViewer.test.js deleted file mode 100644 index 538f0a8..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/ToscaViewer.test.js +++ /dev/null @@ -1,54 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP POLICY-CLAMP - * ================================================================================ - * Copyright (C) 2021 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============================================ - * =================================================================== - * - */ -import React from 'react'; -import ToscaViewer from './ToscaViewer'; -import { shallow, mount } from 'enzyme'; -import PolicyToscaService from '../../../api/PolicyToscaService'; - -describe('Verify ToscaViewer', () => { - const fs = require('fs'); - - let toscaYaml = fs.readFileSync('src/components/dialogs/Policy/toscaData.test.yaml', { encoding: 'utf8', flag: 'r' }) - - const toscaData = { - "policyModelType": "onap.policies.acm.Guard", - "version": "1.0.0", - "policyAcronym": "Guard", - "createdDate": "2021-04-09T02:29:31.407356Z", - "updatedDate": "2021-04-09T02:29:31.407356Z", - "updatedBy": "Not found", - "createdBy": "Not found", - "tableData": { - "id": 0 - } - }; - - it('Test the render method', async () => { - PolicyToscaService.getToscaPolicyModelYaml = jest.fn().mockImplementation(() => { - return Promise.resolve(toscaYaml); - }); - const component = shallow(); - await PolicyToscaService.getToscaPolicyModelYaml(); - expect(component).toMatchSnapshot(); - }); -}); diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/ViewAllPolicies.js b/gui-clamp/ui-react/src/components/dialogs/Policy/ViewAllPolicies.js deleted file mode 100644 index 8f8bd51..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/ViewAllPolicies.js +++ /dev/null @@ -1,476 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP POLICY-CLAMP - * ================================================================================ - * Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. - * Modifications 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. - * ============LICENSE_END============================================ - * =================================================================== - * - */ - -import React, { forwardRef } from 'react' -import Button from 'react-bootstrap/Button'; -import Modal from 'react-bootstrap/Modal'; -import styled from 'styled-components'; -import AddBox from '@material-ui/icons/AddBox'; -import ArrowDownward from '@material-ui/icons/ArrowDownward'; -import Check from '@material-ui/icons/Check'; -import ChevronLeft from '@material-ui/icons/ChevronLeft'; -import ChevronRight from '@material-ui/icons/ChevronRight'; -import Clear from '@material-ui/icons/Clear'; -import DeleteRoundedIcon from '@material-ui/icons/DeleteRounded'; -import Edit from '@material-ui/icons/Edit'; -import FilterList from '@material-ui/icons/FilterList'; -import FirstPage from '@material-ui/icons/FirstPage'; -import LastPage from '@material-ui/icons/LastPage'; -import Remove from '@material-ui/icons/Remove'; -import SaveAlt from '@material-ui/icons/SaveAlt'; -import Search from '@material-ui/icons/Search'; -import ViewColumn from '@material-ui/icons/ViewColumn'; -import DehazeIcon from '@material-ui/icons/Dehaze'; -import ArrowForwardIosIcon from '@material-ui/icons/ArrowForwardIos'; -import AddIcon from '@material-ui/icons/Add'; -import PublishIcon from '@material-ui/icons/Publish'; -import MaterialTable from "material-table"; -import PolicyService from '../../../api/PolicyService'; -import PolicyToscaService from '../../../api/PolicyToscaService'; -import Alert from 'react-bootstrap/Alert'; -import Tabs from 'react-bootstrap/Tabs'; -import Tab from 'react-bootstrap/Tab'; -import PolicyEditor from './PolicyEditor'; -import ToscaViewer from './ToscaViewer'; -import PolicyDeploymentEditor from './PolicyDeploymentEditor'; -import PoliciesTreeViewer from './PoliciesTreeViewer'; -import PolicyToscaFileSelector from './PolicyToscaFileSelector'; - -const DivWhiteSpaceStyled = styled.div` - white-space: pre; -` - -const ModalStyled = styled(Modal)` - @media (min-width: 800px) { - .modal-xl { - max-width: 96%; - } - } - background-color: transparent; -` -const DetailedRow = styled.div` - margin: 0 auto; - background-color: ${ props => props.theme.policyEditorBackgroundColor }; - font-size: ${ props => props.theme.policyEditorFontSize }; - width: 97%; - margin-left: auto; - margin-right: auto; - margin-top: 20px; -` - -const PoliciesTreeViewerDiv = styled.div` - width: 20%; - float: left; - left: 0; - overflow: auto; -` - -const MaterialTableDiv = styled.div` - float: right; - width: 80%; - left: 20%; -` - -const standardCellStyle = { backgroundColor: '#039be5', color: '#FFF', border: '1px solid black' }; -const headerStyle = { backgroundColor: '#ddd', border: '2px solid black' }; -const rowHeaderStyle = { backgroundColor: '#ddd', fontSize: '15pt', text: 'bold', border: '1px solid black' }; - -export default class ViewAllPolicies extends React.Component { - state = { - show: true, - policiesListData: [], - policiesListDataFiltered: [], - toscaModelsListData: [], - toscaModelsListDataFiltered: [], - jsonEditorForPolicy: new Map(), - showSuccessAlert: false, - showFailAlert: false, - showFileSelector: false, - policyColumnsDefinition: [ - { - title: "Policy Name", field: "name", - cellStyle: standardCellStyle, - headerStyle: headerStyle - }, - { - title: "Policy Version", field: "version", - cellStyle: standardCellStyle, - headerStyle: headerStyle, - }, - { - title: "Policy Type", field: "type", - cellStyle: standardCellStyle, - headerStyle: headerStyle - }, - { - title: "Policy Type Version", field: "type_version", - cellStyle: standardCellStyle, - headerStyle: headerStyle - }, - { - title: "Deployable in PDP Group", field: "supportedPdpGroupsString", - cellStyle: standardCellStyle, - headerStyle: headerStyle - }, - { - title: "Deployed in PDP Group", field: "pdpGroupInfoString", - cellStyle: standardCellStyle, - headerStyle: headerStyle - } - ], - toscaColumnsDefinition: [ - { - title: "Policy Model Type", field: "policyModelType", - cellStyle: standardCellStyle, - headerStyle: headerStyle - }, - { - title: "Policy Acronym", field: "policyAcronym", - cellStyle: standardCellStyle, - headerStyle: headerStyle - }, - { - title: "Version", field: "version", - cellStyle: standardCellStyle, - headerStyle: headerStyle - }, - { - title: "Uploaded By", field: "updatedBy", - cellStyle: standardCellStyle, - headerStyle: headerStyle - }, - { - title: "Uploaded Date", field: "updatedDate", editable: 'never', - cellStyle: standardCellStyle, - headerStyle: headerStyle - } - ], - tableIcons: { - Add: forwardRef((props, ref) => ), - Check: forwardRef((props, ref) => ), - Clear: forwardRef((props, ref) => ), - Delete: forwardRef((props, ref) => ), - DetailPanel: forwardRef((props, ref) => ), - Edit: forwardRef((props, ref) => ), - Export: forwardRef((props, ref) => ), - Filter: forwardRef((props, ref) => ), - FirstPage: forwardRef((props, ref) => ), - LastPage: forwardRef((props, ref) => ), - NextPage: forwardRef((props, ref) => ), - PreviousPage: forwardRef((props, ref) => ), - ResetSearch: forwardRef((props, ref) => ), - Search: forwardRef((props, ref) => ), - SortArrow: forwardRef((props, ref) => ), - ThirdStateCheck: forwardRef((props, ref) => ), - ViewColumn: forwardRef((props, ref) => ) - } - }; - - constructor(props, context) { - super(props, context); - this.handleClose = this.handleClose.bind(this); - this.handleDeletePolicy = this.handleDeletePolicy.bind(this); - this.disableAlert = this.disableAlert.bind(this); - this.getAllPolicies = this.getAllPolicies.bind(this); - this.getAllToscaModels = this.getAllToscaModels.bind(this); - this.generateAdditionalPolicyColumns = this.generateAdditionalPolicyColumns.bind(this); - this.filterPolicies = this.filterPolicies.bind(this); - this.filterTosca = this.filterTosca.bind(this); - this.showFileSelector = this.showFileSelector.bind(this); - this.disableFileSelector = this.disableFileSelector.bind(this); - this.getAllPolicies(); - this.getAllToscaModels(); - } - - generateAdditionalPolicyColumns(policiesData) { - console.log('generateAdditionalPolicyColumns called'); - - policiesData.forEach(policy => { - let supportedPdpGroupsString = ""; - if (typeof policy.supportedPdpGroups !== "undefined") { - for (const pdpGroup of policy["supportedPdpGroups"]) { - for (const pdpSubGroup of Object.values(pdpGroup)[0]) { - supportedPdpGroupsString += (Object.keys(pdpGroup)[0] + "/" + pdpSubGroup + "\r\n"); - } - } - policy["supportedPdpGroupsString"] = supportedPdpGroupsString; - } - - let infoPdpGroup = ""; - if (typeof policy.pdpGroupInfo !== "undefined") { - policy["pdpGroupInfo"].forEach(pdpGroupElem => { - let groupName = Object.keys(pdpGroupElem)[0]; - pdpGroupElem[groupName]["pdpSubgroups"].forEach(pdpSubGroupElem => { - infoPdpGroup += (groupName + "/" + pdpSubGroupElem["pdpType"] + " (" - + pdpGroupElem[groupName]["pdpGroupState"] + ")" + "\r\n"); - }); - policy["pdpGroupInfoString"] = infoPdpGroup; - }); - } - }); - } - - getAllToscaModels() { - PolicyToscaService.getToscaPolicyModels().then(toscaModelsList => { - this.setState({ - toscaModelsListData: toscaModelsList, - toscaModelsListDataFiltered: toscaModelsList - }); - }); - } - - getAllPolicies() { - PolicyService.getPoliciesList().then(allPolicies => { - this.generateAdditionalPolicyColumns(allPolicies["policies"]) - this.setState({ - policiesListData: allPolicies["policies"], - policiesListDataFiltered: allPolicies["policies"], - }) - }); - - } - - handleClose() { - console.log("handleClose called"); - this.setState({ show: false }); - this.props.history.push('/') - } - - handleDeletePolicy(event, rowData) { - PolicyService.deletePolicy(rowData["type"], rowData["type_version"], rowData["name"], rowData["version"]).then( - respPolicyDeletion => { - if (typeof (respPolicyDeletion) === "undefined") { - //it indicates a failure - this.setState({ - showFailAlert: true, - showMessage: 'Policy Deletion Failure' - }); - } else { - this.setState({ - showSuccessAlert: true, - showMessage: 'Policy successfully Deleted' - }); - this.getAllPolicies(); - } - } - ) - } - - disableAlert() { - this.setState({ showSuccessAlert: false, showFailAlert: false }); - } - - filterPolicies(prefixForFiltering) { - this.setState({ policiesListDataFiltered: this.state.policiesListData.filter(element => element.name.startsWith(prefixForFiltering)) }); - } - - filterTosca(prefixForFiltering) { - this.setState({ toscaModelsListDataFiltered: this.state.toscaModelsListData.filter(element => element.policyModelType.startsWith(prefixForFiltering)) }); - } - - showFileSelector() { - this.setState({ showFileSelector: true }); - } - - disableFileSelector() { - this.setState({ showFileSelector: false }); - } - - renderPoliciesTab() { - return ( - - -
- - - - - togglePanel() } - options={ { - grouping: true, - exportButton: true, - headerStyle: rowHeaderStyle, - actionsColumnIndex: -1 - } } - detailPanel={ [ - { - icon: ArrowForwardIosIcon, - tooltip: 'Show Configuration', - render: rowData => { - return ( - - - - ) - }, - }, - { - icon: DehazeIcon, - openIcon: DehazeIcon, - tooltip: 'Show Raw Data', - render: rowData => { - return ( - -
{ JSON.stringify(rowData, null, 2) }
-
- ) - }, - }, - { - icon: PublishIcon, - openIcon: PublishIcon, - tooltip: 'PDP Group Deployment', - render: rowData => { - return ( - - - - ) - }, - } - ] } - actions={ [ - { - icon: DeleteRoundedIcon, - tooltip: 'Delete Policy', - onClick: (event, rowData) => this.handleDeletePolicy(event, rowData) - } - ] } - /> -
-
-
-
- ); - } - - renderToscaTab() { - return ( - - -
- - - - - togglePanel() } - options={ { - grouping: true, - exportButton: true, - headerStyle: rowHeaderStyle, - actionsColumnIndex: -1 - } } - actions={ [ - { - icon: AddIcon, - tooltip: 'Add New Tosca Model', - isFreeAction: true, - onClick: () => this.showFileSelector() - } - ] } - detailPanel={ [ - { - icon: ArrowForwardIosIcon, - tooltip: 'Show Tosca', - render: rowData => { - return ( - - - - ) - }, - }, - { - icon: DehazeIcon, - openIcon: DehazeIcon, - tooltip: 'Show Raw Data', - render: rowData => { - return ( - -
{ JSON.stringify(rowData, null, 2) }
-
- ) - }, - }, - { - icon: AddIcon, - openIcon: AddIcon, - tooltip: 'Create a policy from this model', - render: rowData => { - return ( - - - - ) - }, - }, - ] } - /> -
-
-
-
- ); - } - - render() { - return ( - - - - - this.setState({ key, selectedRowData: {} }) }> - { this.renderPoliciesTab() } - { this.renderToscaTab() } - - - - { this.state.showMessage } - - - - - { this.state.showMessage } - - - - - - - - - ); - } -} diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/ViewAllPolicies.test.js b/gui-clamp/ui-react/src/components/dialogs/Policy/ViewAllPolicies.test.js deleted file mode 100644 index c2ce731..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/ViewAllPolicies.test.js +++ /dev/null @@ -1,164 +0,0 @@ -/* - * ============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========================================================= - */ - -import {shallow} from "enzyme"; -import React from "react"; -import ViewAllPolicies from "./ViewAllPolicies"; -import fs from "fs"; -import PolicyToscaService from "../../../api/PolicyToscaService"; -import PolicyService from "../../../api/PolicyService"; -import toJson from "enzyme-to-json"; - -describe('Verify ViewAllPolicies', () => { - let toscaPolicyModels = fs.readFileSync('src/components/dialogs/Policy/toscaData.test.json', { - encoding: 'utf8', - flag: 'r' - }); - let toscaPoliciesList = fs.readFileSync('src/components/dialogs/Policy/toscaPoliciesList.test.json', { - encoding: 'utf8', - flag: 'r' - }); - - const toscaPolicyModelsArray = JSON.parse(toscaPolicyModels); - - const toscaPoliciesListArray = JSON.parse(toscaPoliciesList); - - const logSpy = jest.spyOn(console, 'log'); - - it("renders correctly", () => { - const component = shallow(); - expect(toJson(component)).toMatchSnapshot(); - }); - - it('Test handleClose', () => { - const historyMock = {push: jest.fn()}; - const handleClose = jest.spyOn(ViewAllPolicies.prototype, 'handleClose'); - const component = shallow(); - - component.find('[variant="secondary"]').prop('onClick')(); - - expect(handleClose).toHaveBeenCalledTimes(1); - expect(component.state('show')).toEqual(false); - expect(historyMock.push.mock.calls[0]).toEqual(['/']); - - handleClose.mockClear(); - }); - - it('handleClose called when top-right button clicked', () => { - const historyMock = {push: jest.fn()}; - const handleClose = jest.spyOn(ViewAllPolicies.prototype, 'handleClose'); - const component = shallow(); - - component.find('[size="xl"]').get(0).props.onHide(); - - expect(handleClose).toHaveBeenCalledTimes(1); - expect(component.state('show')).toEqual(false); - expect(historyMock.push.mock.calls[0]).toEqual(['/']); - - handleClose.mockClear(); - }); - - it('Test getAllToscaModels', () => { - PolicyToscaService.getToscaPolicyModels = jest.fn().mockImplementation(() => { - return Promise.resolve(toscaPolicyModels); - }); - - const getAllToscaModels = jest.spyOn(ViewAllPolicies.prototype, 'getAllToscaModels'); - shallow(); - - expect(getAllToscaModels).toHaveBeenCalledTimes(1); - }); - - it('Test setToscaModelsListData', async () => { - PolicyToscaService.getToscaPolicyModel = jest.fn().mockImplementation(() => { - return Promise.resolve(toscaPolicyModels); - }); - - const component = shallow(); - component.setState({toscaModelsListData: toscaPolicyModels}) - expect(component.state('toscaModelsListData')).toEqual(toscaPolicyModels); - }); - - it('Test getAllPolicies', () => { - PolicyService.getPoliciesList = jest.fn().mockImplementation(() => { - return Promise.resolve(toscaPoliciesList); - }); - - const getAllPolicies = jest.spyOn(ViewAllPolicies.prototype, 'getAllPolicies'); - shallow(); - - expect(getAllPolicies).toHaveBeenCalledTimes(1); - }); - - it('Test setPoliciesListData', async () => { - PolicyService.getPoliciesList = jest.fn().mockImplementation(() => { - return Promise.resolve(toscaPoliciesList); - }); - - const component = shallow(); - component.setState({policiesListData: toscaPoliciesList}); - component.setState({policiesListDataFiltered: toscaPoliciesList}); - - expect(component.state('policiesListData')).toEqual(toscaPoliciesList); - expect(component.state('policiesListDataFiltered')).toEqual(toscaPoliciesList); - }); - - it('Test handleDeletePolicy event rowdata', async () => { - const rowData = { - type: 'onap.policies.monitoring.tcagen2', - type_version: '1.0.0', - name: 'MICROSERVICE_vLoadBalancerMS_v1_0_tcagen2_1_0_0_AV0', - version: '1.0.0' - } - - PolicyService.deletePolicy = await jest.fn().mockImplementation(() => { - return Promise.resolve({}); - }); - - const event = { target: {value: 'event'}} - const renderPoliciesTab = jest.spyOn(ViewAllPolicies.prototype, 'renderPoliciesTab'); - - const component = shallow(); - - component.setState({showSuccessAlert: true}); - component.setState({showMessage: 'Policy successfully Deleted'}); - component.setState({policiesListDataFiltered: toscaPolicyModelsArray}); - - component.update(); - - const instance = component.instance(); - - instance.handleDeletePolicy(event, rowData); - - expect(renderPoliciesTab).toHaveBeenCalledTimes(4); - expect(component.state('showSuccessAlert')).toEqual(true); - expect(component.state('showMessage')).toEqual('Policy successfully Deleted'); - }); - - it('Test generateAdditionalPolicyColumns policiesData', async () => { - const component = shallow(); - - const instance = component.instance(); - instance.generateAdditionalPolicyColumns(toscaPoliciesListArray.policies); - - component.update(); - - expect(logSpy).toHaveBeenCalledWith('generateAdditionalPolicyColumns called'); - }); -}); diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/PoliciesTreeViewer.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/PoliciesTreeViewer.test.js.snap deleted file mode 100644 index 8d14fa4..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/PoliciesTreeViewer.test.js.snap +++ /dev/null @@ -1,23 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify PoliciesTreeViewer renders correctly 1`] = ` -} - defaultEndIcon={} - defaultExpandIcon={} - defaultExpanded={ - Array [ - "root", - ] - } - multiSelect={true} - onNodeSelect={[Function]} -> - - -`; diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/PolicyDeploymentEditor.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/PolicyDeploymentEditor.test.js.snap deleted file mode 100644 index 7bf297a..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/PolicyDeploymentEditor.test.js.snap +++ /dev/null @@ -1,71 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify PolicyDeploymentEditor renders correctly 1`] = ` - - - - - - - - - - - } - label="monitoring/xacml" - /> - - -`; diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/PolicyEditor.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/PolicyEditor.test.js.snap deleted file mode 100644 index ea435fc..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/PolicyEditor.test.js.snap +++ /dev/null @@ -1,788 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify PolicyEditor Test the render method 1`] = ` - - -
- - - - - - - - - - - - - - -
- - - - - - - - - - - Required -  * - - } - multiline={false} - onChange={[Function]} - > - - Required -  * - - } - multiline={false} - onChange={[Function]} - > - - -
- - - Required -  * - - } - labelWidth={0} - notched={true} - > - - Required -  * - - } - labelWidth={0} - notched={true} - > -
- - - Required -  * - - -
-
-
-
-
-
-
-
-
-
-
-
-
- - - - -
- - - - - - - - - - - Required -  * - - } - multiline={false} - onChange={[Function]} - > - - Required -  * - - } - multiline={false} - onChange={[Function]} - > - - -
- - - Required -  * - - } - labelWidth={0} - notched={true} - > - - Required -  * - - } - labelWidth={0} - notched={true} - > -
- - - Required -  * - - -
-
-
-
-
-
-
-
-
-
-
-
-
- - - -
- -
-
- -`; diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/PolicyModal.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/PolicyModal.test.js.snap deleted file mode 100644 index 8b1261b..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/PolicyModal.test.js.snap +++ /dev/null @@ -1,159 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify PolicyModal Test the render method 1`] = ` - - - - Edit the policy - - - - - - - - - -
- - - Pdp Group Info - - - - - - - - - - - - - - - -`; diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/PolicyToscaFileSelector.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/PolicyToscaFileSelector.test.js.snap deleted file mode 100644 index 10a5559..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/PolicyToscaFileSelector.test.js.snap +++ /dev/null @@ -1,80 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify PolicyToscaFileSelector renders correctly 1`] = ` - - - - Create New Policy Tosca Model - - - - - - - - - - - - - - Close - - - -`; diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/ToscaViewer.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/ToscaViewer.test.js.snap deleted file mode 100644 index 61fb485..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/ToscaViewer.test.js.snap +++ /dev/null @@ -1,30 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify ToscaViewer Test the render method 1`] = ` - -
-    tosca_definitions_version: tosca_simple_yaml_1_1_0
-policy_types:
-  onap.policies.controlloop.Guard:
-    properties: {
-    }
-    name: onap.policies.controlloop.Guard
-    version: 1.0.0
-    derived_from: tosca.policies.Root
-    metadata: {
-    }
-    description: Guard Policies for Control Loop Operational Policies
-name: ToscaServiceTemplateSimple
-version: 1.0.0
-
-  
- -
-`; diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/ViewAllPolicies.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/ViewAllPolicies.test.js.snap deleted file mode 100644 index 24b631b..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/__snapshots__/ViewAllPolicies.test.js.snap +++ /dev/null @@ -1,598 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify ViewAllPolicies renders correctly 1`] = ` - - - - - - -
- - - - - - -
-
-
- - -
- - - - - - -
-
-
-
- - - - - - - - - -
- -
-`; diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/toscaData.test.json b/gui-clamp/ui-react/src/components/dialogs/Policy/toscaData.test.json deleted file mode 100644 index 3b001b3..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/toscaData.test.json +++ /dev/null @@ -1,179 +0,0 @@ -{ - "title": "onap.policies.monitoring.tcagen2", - "type": "object", - "required": [ - "tca.policy" - ], - "properties": { - "tca.policy": { - "title": "onap.datatypes.monitoring.tca_policy", - "type": "object", - "required": [ - "domain", - "metricsPerEventName" - ], - "properties": { - "domain": { - "type": "string", - "description": "Domain name to which TCA needs to be applied", - "default": "measurementsForVfScaling", - "const": "measurementsForVfScaling" - }, - "metricsPerEventName": { - "type": "array", - "description": "Contains eventName and threshold details that need to be applied to given eventName", - "items": { - "title": "onap.datatypes.monitoring.metricsPerEventName", - "type": "object", - "required": [ - "controlLoopSchemaType", - "eventName", - "policyName", - "policyScope", - "policyVersion", - "thresholds" - ], - "properties": { - "controlLoopSchemaType": { - "type": "string", - "description": "Specifies Control Loop Schema Type for the event Name e.g. VNF, VM", - "enum": [ - "VM", - "VNF" - ] - }, - "eventName": { - "type": "string", - "description": "Event name to which thresholds need to be applied" - }, - "policyName": { - "type": "string", - "description": "TCA Policy Scope Name" - }, - "policyScope": { - "type": "string", - "description": "TCA Policy Scope" - }, - "policyVersion": { - "type": "string", - "description": "TCA Policy Scope Version" - }, - "thresholds": { - "type": "array", - "description": "Thresholds associated with eventName", - "items": { - "title": "onap.datatypes.monitoring.thresholds", - "type": "object", - "required": [ - "closedLoopControlName", - "closedLoopEventStatus", - "direction", - "fieldPath", - "severity", - "thresholdValue", - "version" - ], - "properties": { - "closedLoopControlName": { - "type": "string", - "description": "Closed Loop Control Name associated with the threshold" - }, - "closedLoopEventStatus": { - "type": "string", - "description": "Closed Loop Event Status of the threshold", - "enum": [ - "ONSET", - "ABATED" - ] - }, - "direction": { - "type": "string", - "description": "Direction of the threshold", - "enum": [ - "LESS", - "LESS_OR_EQUAL", - "GREATER", - "GREATER_OR_EQUAL", - "EQUAL" - ] - }, - "fieldPath": { - "type": "string", - "description": "Json field Path as per CEF message which needs to be analyzed for TCA", - "enum": [ - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta", - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta", - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta", - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta", - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta", - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta", - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta", - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated", - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated", - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated", - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated", - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated", - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated", - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated", - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta", - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta", - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta", - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta", - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta", - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta", - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta", - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated", - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated", - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated", - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated", - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated", - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated", - "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated", - "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle", - "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt", - "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice", - "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq", - "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal", - "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem", - "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait", - "$.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage", - "$.event.measurementsForVfScalingFields.meanRequestLatency", - "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered", - "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached", - "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured", - "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree", - "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed", - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value" - ] - }, - "severity": { - "type": "string", - "description": "Threshold Event Severity", - "enum": [ - "CRITICAL", - "MAJOR", - "MINOR", - "WARNING", - "NORMAL" - ] - }, - "thresholdValue": { - "type": "integer", - "description": "Threshold value for the field Path inside CEF message" - }, - "version": { - "type": "string", - "description": "Version number associated with the threshold" - } - } - }, - "format": "tabs-top" - } - } - }, - "format": "tabs-top" - } - } - } - } -} diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/toscaData.test.yaml b/gui-clamp/ui-react/src/components/dialogs/Policy/toscaData.test.yaml deleted file mode 100644 index 15a3cec..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/toscaData.test.yaml +++ /dev/null @@ -1,13 +0,0 @@ -tosca_definitions_version: tosca_simple_yaml_1_1_0 -policy_types: - onap.policies.controlloop.Guard: - properties: { - } - name: onap.policies.controlloop.Guard - version: 1.0.0 - derived_from: tosca.policies.Root - metadata: { - } - description: Guard Policies for Control Loop Operational Policies -name: ToscaServiceTemplateSimple -version: 1.0.0 diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/toscaInstantiationData.test.json b/gui-clamp/ui-react/src/components/dialogs/Policy/toscaInstantiationData.test.json deleted file mode 100644 index 176d921..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/toscaInstantiationData.test.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "acmList": [ - { - "name": "PMSHInstance0", - "version": "1.0.1", - "definition": { - "name": "org.onap.domain.pmsh.PMSHControlLoopDefinition", - "version": "1.2.3" - }, - "state": "UNINITIALISED", - "orderedState": "UNINITIALISED", - "description": "PMSH control loop instance 0", - "elements": { - "709c62b3-8918-41b9-a747-d21eb79c6c20": { - "id": "709c62b3-8918-41b9-a747-d21eb79c6c20", - "definition": { - "name": "org.onap.domain.pmsh.PMSH_DCAEMicroservice", - "version": "1.2.3" - }, - "participantType": { - "name": "org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant", - "version": "2.3.4" - }, - "state": "UNINITIALISED", - "orderedState": "UNINITIALISED", - "description": "DCAE Control Loop Element for the PMSH instance 0 control loop" - }, - "709c62b3-8918-41b9-a747-d21eb79c6c21": { - "id": "709c62b3-8918-41b9-a747-d21eb79c6c21", - "definition": { - "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement", - "version": "1.2.3" - }, - "participantType": { - "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant", - "version": "2.3.1" - }, - "state": "UNINITIALISED", - "orderedState": "UNINITIALISED", - "description": "Monitoring Policy Control Loop Element for the PMSH instance 0 control loop" - }, - "709c62b3-8918-41b9-a747-d21eb79c6c22": { - "id": "709c62b3-8918-41b9-a747-d21eb79c6c22", - "definition": { - "name": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement", - "version": "1.2.3" - }, - "participantType": { - "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant", - "version": "2.3.1" - }, - "state": "UNINITIALISED", - "orderedState": "UNINITIALISED", - "description": "Operational Policy Control Loop Element for the PMSH instance 0 control loop" - } - } - } - ] -} diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/toscaModels.test.json b/gui-clamp/ui-react/src/components/dialogs/Policy/toscaModels.test.json deleted file mode 100644 index aa757a8..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/toscaModels.test.json +++ /dev/null @@ -1,23 +0,0 @@ -[ - { - "policyModelType": "onap.policies.controlloop.guard.common.Blacklist", - "version": "1.0.0", - "policyAcronym": "Blacklist", - "policyPdpGroup": { - "supportedPdpGroups": [ - { - "controlloop": [ - "xacml" - ] - } - ] - }, - "createdDate": "2021-06-17T15:15:11.250177Z", - "updatedDate": "2021-06-17T15:15:11.450816Z", - "updatedBy": "Not found", - "createdBy": "Not found", - "tableData": { - "id": 0 - } - } -] \ No newline at end of file diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/toscaPoliciesData.test.json b/gui-clamp/ui-react/src/components/dialogs/Policy/toscaPoliciesData.test.json deleted file mode 100644 index a852daf..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/toscaPoliciesData.test.json +++ /dev/null @@ -1,336 +0,0 @@ -[ - { - "type": "onap.policies.monitoring.tcagen2", - "type_version": "1.0.0", - "properties": { - "tca.policy": { - "domain": "measurementsForVfScaling", - "metricsPerEventName": [ - { - "policyScope": "DCAE", - "thresholds": [ - { - "version": "1.0.2", - "severity": "MAJOR", - "thresholdValue": 200, - "closedLoopEventStatus": "ONSET", - "closedLoopControlName": "LOOP_test", - "direction": "LESS_OR_EQUAL", - "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta" - } - ], - "eventName": "vLoadBalancer", - "policyVersion": "v0.0.1", - "controlLoopSchemaType": "VM", - "policyName": "DCAE.Config_tca-hi-lo" - } - ] - } - }, - "name": "MICROSERVICE_vLoadBalancerMS_v1_0_tcagen2_1_0_0_AV0", - "version": "1.0.0", - "metadata": { - "policy-id": "MICROSERVICE_vLoadBalancerMS_v1_0_tcagen2_1_0_0_AV0", - "policy-version": "1.0.0" - }, - "pdpGroupInfo": [ - { - "monitoring": { - "name": "monitoring", - "description": "This group should be used for managing all monitoring related policies and pdps", - "pdpGroupState": "ACTIVE", - "properties": {}, - "pdpSubgroups": [ - { - "pdpType": "xacml", - "supportedPolicyTypes": [ - { - "name": "onap.policies.monitoring.*", - "version": "1.0.0" - }, - { - "name": "onap.policies.Naming", - "version": "1.0.0" - } - ], - "policies": [ - { - "name": "MICROSERVICE_vLoadBalancerMS_v1_0_tcagen2_1_0_0_AV0", - "version": "1.0.0" - } - ], - "currentInstanceCount": 0, - "desiredInstanceCount": 1, - "properties": {}, - "pdpInstances": [ - { - "instanceId": "monitoring-f8287777-5f3e-4f0f-b21b-d8829c93f57b", - "pdpState": "ACTIVE", - "healthy": "HEALTHY", - "message": "Pdp Heartbeat", - "lastUpdate": "2021-09-29T02:51:21Z" - } - ] - } - ] - } - } - ], - "supportedPdpGroups": [ - { - "monitoring": [ - "xacml" - ] - } - ], - "supportedPdpGroupsString": "monitoring/xacml\r\n", - "pdpGroupInfoString": "monitoring/xacml (ACTIVE)\r\n", - "tableData": { - "id": 0 - } - }, - { - "type": "onap.policies.controlloop.operational.common.Drools", - "type_version": "1.0.0", - "properties": { - "abatement": false, - "operations": [ - { - "failure_retries": "final_failure_retries", - "id": "test1", - "failure_timeout": "final_failure_timeout", - "failure": "final_failure", - "operation": { - "payload": { - "artifact_name": "baseconfiguration", - "artifact_version": "1.0.0", - "mode": "async", - "data": "{\"resource-assignment-properties\":{\"request-id\":\"\",\"service-instance-id\":\"\",\"hostname\":\"\",\"request-info\":{\"prop1\":\"\",\"prop2\":\"\"}}}" - }, - "target": { - "entityIds": { - "resourceID": "Vloadbalancerms..vdns..module-3", - "modelInvariantId": "4c10ba9b-f88f-415e-9de3-5d33336047fa", - "modelVersionId": "4fa73b49-8a6c-493e-816b-eb401567b720", - "modelName": "Vloadbalancerms..vdns..module-3", - "modelVersion": "1", - "modelCustomizationId": "bafcdab0-801d-4d81-9ead-f464640a38b1" - }, - "targetType": "VNF" - }, - "actor": "SDNR", - "operation": "BandwidthOnDemand" - }, - "failure_guard": "final_failure_guard", - "retries": 0, - "timeout": 0, - "failure_exception": "final_failure_exception", - "description": "test", - "success": "final_success" - } - ], - "trigger": "test1", - "timeout": 0, - "id": "LOOP_test" - }, - "name": "OPERATIONAL_vLoadBalancerMS_v1_0_Drools_1_0_0_7xd", - "version": "1.0.0", - "metadata": { - "policy-id": "OPERATIONAL_vLoadBalancerMS_v1_0_Drools_1_0_0_7xd", - "policy-version": "1.0.0" - }, - "pdpGroupInfo": [ - { - "controlloop": { - "name": "controlloop", - "description": "This group should be used for managing all control loop related policies and pdps", - "pdpGroupState": "ACTIVE", - "properties": {}, - "pdpSubgroups": [ - { - "pdpType": "apex", - "supportedPolicyTypes": [ - { - "name": "onap.policies.controlloop.Operational", - "version": "1.0.0" - }, - { - "name": "onap.policies.controlloop.operational.common.*", - "version": "1.0.0" - } - ], - "policies": [ - { - "name": "OPERATIONAL_vLoadBalancerMS_v1_0_Drools_1_0_0_7xd", - "version": "1.0.0" - } - ], - "currentInstanceCount": 0, - "desiredInstanceCount": 1, - "properties": {}, - "pdpInstances": [ - { - "instanceId": "controlloop-f8287777-5f3e-4f0f-b21b-d8829c93f57b", - "pdpState": "ACTIVE", - "healthy": "HEALTHY", - "message": "Pdp Heartbeat", - "lastUpdate": "2021-09-29T02:51:21Z" - } - ] - }, - { - "pdpType": "drools", - "supportedPolicyTypes": [ - { - "name": "onap.policies.controlloop.operational.common.*", - "version": "1.0.0" - }, - { - "name": "onap.policies.controlloop.Operational", - "version": "1.0.0" - } - ], - "policies": [ - { - "name": "OPERATIONAL_vLoadBalancerMS_v1_0_Drools_1_0_0_7xd", - "version": "1.0.0" - } - ], - "currentInstanceCount": 0, - "desiredInstanceCount": 1, - "properties": {}, - "pdpInstances": [ - { - "instanceId": "drools-f8287777-5f3e-4f0f-b21b-d8829c93f57b", - "pdpState": "ACTIVE", - "healthy": "HEALTHY", - "message": "Pdp Heartbeat", - "lastUpdate": "2021-09-29T02:51:21Z" - } - ] - } - ] - } - } - ], - "supportedPdpGroups": [ - { - "controlloop": [ - "apex", - "drools" - ] - } - ], - "supportedPdpGroupsString": "controlloop/apex\r\ncontrolloop/drools\r\n", - "pdpGroupInfoString": "controlloop/apex (ACTIVE)\r\ncontrolloop/drools (ACTIVE)\r\n", - "tableData": { - "id": 1 - } - }, - { - "type": "onap.policies.Naming", - "type_version": "1.0.0", - "properties": { - "naming-models": [ - { - "naming-type": "VNF", - "naming-recipe": "AIC_CLOUD_REGION|DELIMITER|CONSTANT|DELIMITER|TIMESTAMP", - "name-operation": "to_lower_case()", - "naming-properties": [ - { - "property-name": "AIC_CLOUD_REGION" - }, - { - "property-name": "CONSTANT", - "property-value": "onap-nf" - }, - { - "property-name": "TIMESTAMP" - }, - { - "property-value": "-", - "property-name": "DELIMITER" - } - ] - }, - { - "naming-type": "VNFC", - "naming-recipe": "VNF_NAME|DELIMITER|NFC_NAMING_CODE|DELIMITER|SEQUENCE", - "name-operation": "to_lower_case()", - "naming-properties": [ - { - "property-name": "VNF_NAME" - }, - { - "property-name": "SEQUENCE", - "increment-sequence": { - "max": "zzz", - "scope": "ENTIRETY", - "start-value": "1", - "length": "3", - "increment": "1", - "sequence-type": "alpha-numeric" - } - }, - { - "property-name": "NFC_NAMING_CODE" - }, - { - "property-value": "-", - "property-name": "DELIMITER" - } - ] - }, - { - "naming-type": "VF-MODULE", - "naming-recipe": "VNF_NAME|DELIMITER|VF_MODULE_LABEL|DELIMITER|VF_MODULE_TYPE|DELIMITER|SEQUENCE", - "name-operation": "to_lower_case()", - "naming-properties": [ - { - "property-name": "VNF_NAME" - }, - { - "property-value": "-", - "property-name": "DELIMITER" - }, - { - "property-name": "VF_MODULE_LABEL" - }, - { - "property-name": "VF_MODULE_TYPE" - }, - { - "property-name": "SEQUENCE", - "increment-sequence": { - "max": "zzz", - "scope": "PRECEEDING", - "start-value": "1", - "length": "3", - "increment": "1", - "sequence-type": "alpha-numeric" - } - } - ] - } - ], - "policy-instance-name": "ONAP_NF_NAMING_TIMESTAMP" - }, - "name": "SDNC_Policy.ONAP_NF_NAMING_TIMESTAMP", - "version": "1.0.0", - "metadata": { - "policy-id": "SDNC_Policy.ONAP_NF_NAMING_TIMESTAMP", - "policy-version": "1.0.0" - }, - "supportedPdpGroups": [ - { - "monitoring": [ - "xacml" - ] - } - ], - "supportedPdpGroupsString": "monitoring/xacml\r\n", - "tableData": { - "id": 2 - } - } -] \ No newline at end of file diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/toscaPoliciesList.test.json b/gui-clamp/ui-react/src/components/dialogs/Policy/toscaPoliciesList.test.json deleted file mode 100644 index 0da8beb..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/toscaPoliciesList.test.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "policies": [ - { - "type": "onap.policies.monitoring.tcagen2", - "type_version": "1.0.0", - "properties": { - "tca.policy": { - "domain": "measurementsForVfScaling", - "metricsPerEventName": [ - { - "policyScope": "DCAE", - "thresholds": [ - { - "version": "1.0.2", - "severity": "MAJOR", - "thresholdValue": 200, - "closedLoopEventStatus": "ONSET", - "closedLoopControlName": "LOOP_test", - "direction": "LESS_OR_EQUAL", - "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta" - } - ], - "eventName": "vLoadBalancer", - "policyVersion": "v0.0.1", - "controlLoopSchemaType": "VM", - "policyName": "DCAE.Config_tca-hi-lo" - } - ] - } - }, - "name": "MICROSERVICE_vLoadBalancerMS_v1_0_tcagen2_1_0_0_AV0", - "version": "1.0.0", - "metadata": { - "policy-id": "MICROSERVICE_vLoadBalancerMS_v1_0_tcagen2_1_0_0_AV0", - "policy-version": "1.0.0" - }, - "pdpGroupInfo": [ - { - "monitoring": { - "name": "monitoring", - "description": "This group should be used for managing all monitoring related policies and pdps", - "pdpGroupState": "ACTIVE", - "properties": {}, - "pdpSubgroups": [ - { - "pdpType": "xacml", - "supportedPolicyTypes": [ - { - "name": "onap.policies.monitoring.*", - "version": "1.0.0" - }, - { - "name": "onap.policies.Naming", - "version": "1.0.0" - } - ], - "policies": [ - { - "name": "MICROSERVICE_vLoadBalancerMS_v1_0_tcagen2_1_0_0_AV0", - "version": "1.0.0" - } - ], - "currentInstanceCount": 0, - "desiredInstanceCount": 1, - "properties": {}, - "pdpInstances": [ - { - "instanceId": "monitoring-f8287777-5f3e-4f0f-b21b-d8829c93f57b", - "pdpState": "ACTIVE", - "healthy": "HEALTHY", - "message": "Pdp Heartbeat", - "lastUpdate": "2021-09-29T02:51:21Z" - } - ] - } - ] - } - } - ], - "supportedPdpGroups": [ - { - "monitoring": [ - "xacml" - ] - } - ], - "supportedPdpGroupsString": "monitoring/xacml\r\n", - "pdpGroupInfoString": "monitoring/xacml (ACTIVE)\r\n", - "tableData": { - "id": 0 - } - } - ] -} \ No newline at end of file diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/toscaPolicyDeploymentEditor.test.json b/gui-clamp/ui-react/src/components/dialogs/Policy/toscaPolicyDeploymentEditor.test.json deleted file mode 100644 index f6907e5..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/toscaPolicyDeploymentEditor.test.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "type": "onap.policies.monitoring.tcagen2", - "type_version": "1.0.0", - "properties": { - "tca.policy": { - "domain": "measurementsForVfScaling", - "metricsPerEventName": [ - { - "policyScope": "DCAE", - "thresholds": [ - { - "version": "1.0.2", - "severity": "MAJOR", - "thresholdValue": 200, - "closedLoopEventStatus": "ONSET", - "closedLoopControlName": "LOOP_test", - "direction": "LESS_OR_EQUAL", - "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta" - } - ], - "eventName": "vLoadBalancer", - "policyVersion": "v0.0.1", - "controlLoopSchemaType": "VM", - "policyName": "DCAE.Config_tca-hi-lo" - } - ] - } - }, - "name": "MICROSERVICE_vLoadBalancerMS_v1_0_tcagen2_1_0_0_AV0", - "version": "1.0.0", - "metadata": { - "policy-id": "MICROSERVICE_vLoadBalancerMS_v1_0_tcagen2_1_0_0_AV0", - "policy-version": "1.0.0" - }, - "pdpGroupInfo": [ - { - "monitoring": { - "name": "monitoring", - "description": "This group should be used for managing all monitoring related policies and pdps", - "pdpGroupState": "ACTIVE", - "properties": {}, - "pdpSubgroups": [ - { - "pdpType": "xacml", - "supportedPolicyTypes": [ - { - "name": "onap.policies.monitoring.*", - "version": "1.0.0" - }, - { - "name": "onap.policies.Naming", - "version": "1.0.0" - } - ], - "policies": [ - { - "name": "MICROSERVICE_vLoadBalancerMS_v1_0_tcagen2_1_0_0_AV0", - "version": "1.0.0" - } - ], - "currentInstanceCount": 0, - "desiredInstanceCount": 1, - "properties": {}, - "pdpInstances": [ - { - "instanceId": "monitoring-f8287777-5f3e-4f0f-b21b-d8829c93f57b", - "pdpState": "ACTIVE", - "healthy": "HEALTHY", - "message": "Pdp Heartbeat", - "lastUpdate": "2021-09-29T02:51:21Z" - } - ] - } - ] - } - } - ], - "supportedPdpGroups": [ - { - "monitoring": [ - "xacml" - ] - } - ], - "supportedPdpGroupsString": "monitoring/xacml\r\n", - "pdpGroupInfoString": "monitoring/xacml (ACTIVE)\r\n", - "tableData": { - "id": 0 - } -} \ No newline at end of file diff --git a/gui-clamp/ui-react/src/components/dialogs/RefreshStatus.js b/gui-clamp/ui-react/src/components/dialogs/RefreshStatus.js deleted file mode 100644 index e23ab3f..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/RefreshStatus.js +++ /dev/null @@ -1,65 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 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============================================ - * =================================================================== - * - */ -import React from 'react'; -import LoopActionService from '../../api/LoopActionService'; -import Spinner from 'react-bootstrap/Spinner'; -import styled from 'styled-components'; - -const StyledSpinnerDiv = styled.div` - justify-content: center !important; - display: flex !important; -`; - -export default class RefreshStatus extends React.Component { - state = { - loopName: this.props.loopCache.getLoopName() - }; - - componentWillReceiveProps(newProps) { - this.setState({ - loopName: newProps.loopCache.getLoopName() - }); - } - - componentDidMount() { - // refresh status and update loop logs - LoopActionService.refreshStatus(this.state.loopName).then(data => { - this.props.showSucAlert("Status successfully refreshed"); - this.props.updateLoopFunction(data); - this.props.history.push('/'); - }) - .catch(error => { - this.props.showFailAlert("Status refreshing failed"); - this.props.history.push('/'); - }); - } - - render() { - return ( - - - - - ); - } -} diff --git a/gui-clamp/ui-react/src/components/dialogs/RefreshStatus.test.js b/gui-clamp/ui-react/src/components/dialogs/RefreshStatus.test.js deleted file mode 100644 index 7736ffd..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/RefreshStatus.test.js +++ /dev/null @@ -1,72 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 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============================================ - * =================================================================== - * - */ -import React from 'react'; -import { shallow } from 'enzyme'; -import RefreshStatus from './RefreshStatus'; -import LoopCache from '../../api/LoopCache'; -import LoopActionService from '../../api/LoopActionService'; - -describe('Verify RefreshStatus', () => { - - const loopCache = new LoopCache({ - "name": "LOOP_Jbv1z_v1_0_ResourceInstanceName1_tca" - }); - - it('Test refresh status failed', async () => { - const flushPromises = () => new Promise(setImmediate); - const historyMock = { push: jest.fn() }; - const showSucAlert = jest.fn(); - const showFailAlert = jest.fn(); - - const component = shallow() - await flushPromises(); - component.update(); - - expect(historyMock.push.mock.calls[0]).toEqual(['/']); - }); - - it('Test refresh status successful', async () => { - const flushPromises = () => new Promise(setImmediate); - const historyMock = { push: jest.fn() }; - const updateLoopFunction = jest.fn(); - const showSucAlert = jest.fn(); - const showFailAlert = jest.fn(); - - LoopActionService.refreshStatus = jest.fn().mockImplementation(() => { - return Promise.resolve({ - ok: true, - status: 200, - json: () => { - } - }); - }); - - const component = shallow() - await flushPromises(); - component.update(); - - expect(historyMock.push.mock.calls[0]).toEqual(['/']); - }); - -}); diff --git a/gui-clamp/ui-react/src/components/dialogs/Tosca/ViewLoopTemplatesModal.js b/gui-clamp/ui-react/src/components/dialogs/Tosca/ViewLoopTemplatesModal.js deleted file mode 100644 index e7be984..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Tosca/ViewLoopTemplatesModal.js +++ /dev/null @@ -1,173 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP POLICY-CLAMP - * ================================================================================ - * Copyright (C) 2019, 2021 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============================================ - * =================================================================== - * - */ - -import React, { forwardRef } from 'react' -import Button from 'react-bootstrap/Button'; -import Modal from 'react-bootstrap/Modal'; -import styled from 'styled-components'; -import TemplateService from '../../../api/TemplateService'; -import ArrowUpward from '@material-ui/icons/ArrowUpward'; -import ChevronLeft from '@material-ui/icons/ChevronLeft'; -import ChevronRight from '@material-ui/icons/ChevronRight'; -import Clear from '@material-ui/icons/Clear'; -import FirstPage from '@material-ui/icons/FirstPage'; -import LastPage from '@material-ui/icons/LastPage'; -import Search from '@material-ui/icons/Search'; -import MaterialTable from "material-table"; -import LoopCache from '../../../api/LoopCache'; -import SvgGenerator from '../../loop_viewer/svg/SvgGenerator'; - -const ModalStyled = styled(Modal)` - background-color: transparent; -` - -const cellStyle = { border: '1px solid black' }; -const headerStyle = { backgroundColor: '#ddd', border: '2px solid black' }; -const rowHeaderStyle = { backgroundColor: '#ddd', fontSize: '15pt', text: 'bold', border: '1px solid black' }; - -export default class ViewLoopTemplatesModal extends React.Component { - state = { - show: true, - content: 'Please select a loop template to display it', - selectedRow: -1, - loopTemplatesData: [], - fakeLoopCacheWithTemplate: new LoopCache({}), - loopTemplateColumnsDefinition: [ - { - title: "#", field: "index", render: rowData => rowData.tableData.id + 1, - cellStyle: cellStyle, - headerStyle: headerStyle - }, - { - title: "Template Name", field: "name", - cellStyle: cellStyle, - headerStyle: headerStyle - }, - { - title: "Service Model Name", field: "modelService.serviceDetails.name", - cellStyle: cellStyle, - headerStyle: headerStyle - }, - { - title: "Loop Type Allowed", field: "allowedLoopType", - cellStyle: cellStyle, - headerStyle: headerStyle - }, - { - title: "# Instances Allowed", field: "maximumInstancesAllowed", - cellStyle: cellStyle, - headerStyle: headerStyle - }, - { - title: "Modified Date", field: "updatedDate", editable: 'never', - cellStyle: cellStyle, - headerStyle: headerStyle - } - ], - tableIcons: { - FirstPage: forwardRef((props, ref) => ), - LastPage: forwardRef((props, ref) => ), - NextPage: forwardRef((props, ref) => ), - PreviousPage: forwardRef((props, ref) => ), - ResetSearch: forwardRef((props, ref) => ), - Search: forwardRef((props, ref) => ), - SortArrow: forwardRef((props, ref) => ) - } - }; - - constructor(props, context) { - super(props, context); - this.handleClose = this.handleClose.bind(this); - this.renderSvg = this.renderSvg.bind(this); - this.getLoopTemplate = this.getLoopTemplate.bind(this); - this.getAllLoopTemplates(); - } - - getAllLoopTemplates() { - TemplateService.getAllLoopTemplates().then(templatesData => { - // replace -1 in maximumInstancesAllowed with more meaningful 'No Limit' - for (let item in templatesData) { - if (templatesData[item].maximumInstancesAllowed === -1) { - templatesData[item].maximumInstancesAllowed = 'No Limit'; - } - } - this.setState({ loopTemplatesData: templatesData }) - }); - } - - getLoopTemplate(templateIdInDataArray) { - if (typeof templateIdInDataArray !== "undefined") { - this.setState({ - fakeLoopCacheWithTemplate: - new LoopCache({ - "loopTemplate": this.state.loopTemplatesData[templateIdInDataArray], - "name": "fakeLoop" - }) - }) - } else { - this.setState({ fakeLoopCacheWithTemplate: new LoopCache({}) }) - } - } - - handleClose() { - this.setState({ show: false }); - this.props.history.push('/') - } - - renderSvg() { - return ( - - ) - } - - render() { - return ( - - - - - { - this.getLoopTemplate(rowData.tableData.id); - this.setState({ selectedRow: rowData.tableData.id }) - } } - options={ { - headerStyle: rowHeaderStyle, - rowStyle: rowData => ({ - backgroundColor: (this.state.selectedRow !== -1 && this.state.selectedRow === rowData.tableData.id) ? '#EEE' : '#FFF' - }) - } } - /> - { this.renderSvg() } - - - - - - ); - } -} diff --git a/gui-clamp/ui-react/src/components/dialogs/Tosca/ViewLoopTemplatesModal.test.js b/gui-clamp/ui-react/src/components/dialogs/Tosca/ViewLoopTemplatesModal.test.js deleted file mode 100644 index fd52761..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Tosca/ViewLoopTemplatesModal.test.js +++ /dev/null @@ -1,163 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * Modifications 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. - * ============LICENSE_END============================================ - * =================================================================== - * - */ -import React from 'react'; -import { shallow } from 'enzyme'; -import ViewLoopTemplatesModal from './ViewLoopTemplatesModal'; -import { mount } from 'enzyme'; -import { BrowserRouter as Router } from 'react-router-dom'; - -describe('Verify ViewLoopTemplatesModal', () => { - beforeEach(() => { - fetch.resetMocks(); - }); - - it('Test API Successful', () => { - fetch.mockImplementationOnce(() => { - return Promise.resolve({ - ok: true, - status: 200, - json: () => { - return Promise.resolve({ - "index": "1", - "name": "MTCA version 1", - "modelService.serviceDetails.name": "MTCA", - "allowedLoopType": "CLOSED", - "maximumInstancesAllowed": 1, - "updatedDate": "2019-09-06 19:09:42" - }); - } - }); - }); - const component = shallow(); - }); - - it('Test API Exception', () => { - fetch.mockImplementationOnce(() => { - return Promise.resolve({ - ok: false, - status: 500, - json: () => { - return Promise.resolve({ - "index": "1", - "name": "MTCA version 1", - "modelService.serviceDetails.name": "MTCA", - "allowedLoopType": "CLOSED", - "maximumInstancesAllowed": 1, - "updatedDate": "2019-09-06 19:09:42" - }); - } - }); - }); - shallow(); - }); - - it('Test API Rejection', () => { - const myMockFunc = fetch.mockImplementationOnce(() => Promise.reject('error')); - setTimeout(() => myMockFunc().catch(e => { - console.info(e); - }), - 100 - ); - shallow(); - expect(myMockFunc.mock.calls.length).toBe(1); - }); - - it('Test the tosca model view render method', () => { - fetch.mockImplementationOnce(() => { - return Promise.resolve({ - ok: true, - status: 200, - json: () => { - return Promise.resolve({ - "index": "1", - "name": "MTCA version 1", - "modelService.serviceDetails.name": "MTCA", - "allowedLoopType": "CLOSED", - "maximumInstancesAllowed": 1, - "updatedDate": "2019-09-06 19:09:42" - }); - } - }); - }); - const component = shallow(); - component.setState({ - loopTemplateData: { - "index": "1", - "name": "MTCA version 1", - "modelService.serviceDetails.name": "MTCA", - "allowedLoopType": "CLOSED", - "maximumInstancesAllowed": 1, - "updatedDate": "2019-09-06 19:09:42" - } - }); - expect(component).toMatchSnapshot(); - }); - - it('Test Table icons', () => { - fetch.mockImplementationOnce(() => { - return Promise.resolve({ - ok: true, - status: 200, - json: () => { - return Promise.resolve({ - "index": "1", - "name": "MTCA version 1", - "modelService.serviceDetails.name": "MTCA", - "allowedLoopType": "CLOSED", - "maximumInstancesAllowed": 1, - "updatedDate": "2019-09-06 19:09:42" - }); - } - }); - }); - const component = mount(); - expect(component.find('[className="MuiSelect-icon MuiTablePagination-selectIcon"]')).toBeTruthy(); - }); - - it('Test handleClose', () => { - fetch.mockImplementationOnce(() => { - return Promise.resolve({ - ok: true, - status: 200, - json: () => { - return Promise.resolve({ - "index": "1", - "name": "MTCA version 1", - "modelService.serviceDetails.name": "MTCA", - "allowedLoopType": "CLOSED", - "maximumInstancesAllowed": 1, - "updatedDate": "2019-09-06 19:09:42" - }); - } - }); - }); - const historyMock = { push: jest.fn() }; - const handleClose = jest.spyOn(ViewLoopTemplatesModal.prototype, 'handleClose'); - const component = shallow() - component.find('[variant="secondary"]').prop('onClick')(); - expect(handleClose).toHaveBeenCalledTimes(1); - expect(component.state('show')).toEqual(false); - expect(historyMock.push.mock.calls[0]).toEqual(['/']); - handleClose.mockClear(); - }); -}); diff --git a/gui-clamp/ui-react/src/components/dialogs/Tosca/__snapshots__/ViewLoopTemplatesModal.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/Tosca/__snapshots__/ViewLoopTemplatesModal.test.js.snap deleted file mode 100644 index 73f6596..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/Tosca/__snapshots__/ViewLoopTemplatesModal.test.js.snap +++ /dev/null @@ -1,157 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify ViewLoopTemplatesModal Test the tosca model view render method 1`] = ` - - - - - - - - - - -`; diff --git a/gui-clamp/ui-react/src/components/dialogs/UserInfoModal.js b/gui-clamp/ui-react/src/components/dialogs/UserInfoModal.js deleted file mode 100644 index d452f6d..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/UserInfoModal.js +++ /dev/null @@ -1,115 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 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============================================ - * =================================================================== - * - */ - -import React from 'react' -import Button from 'react-bootstrap/Button'; -import Modal from 'react-bootstrap/Modal'; -import Form from 'react-bootstrap/Form'; -import Row from 'react-bootstrap/Row'; -import Col from 'react-bootstrap/Col'; -import styled from 'styled-components'; -import UserService from '../../api/UserService'; - -const ModalStyled = styled(Modal)` - background-color: transparent; -` - -export default class UserInfoModal extends React.Component { - - constructor(props, context) { - super(props, context); - - this.handleClose = this.handleClose.bind(this); - this.renderPermissions = this.renderPermissions.bind(this); - this.renderUserName = this.renderUserName.bind(this); - this.state = { - show: true, - userInfo: {} - }; - } - - componentWillMount() { - UserService.getUserInfo().then(userInfo => { - this.setState({ userInfo: userInfo }) - }); - } - - handleClose() { - this.props.history.push('/'); - } - - renderPermissions() { - if (this.state.userInfo["allPermissions"]) { - var listOfPermissions = this.state.userInfo["allPermissions"].map(function (perm) { - return ; - }) - return listOfPermissions; - } else { - return; - } - } - - renderUserName() { - if (this.state.userInfo["userName"]) { - return - } else { - return; - } - } - - renderVersion() { - if (this.state.userInfo["cldsVersion"]) { - return - } else { - return; - } - } - - render() { - return ( - - - User Info - - - - Current User: - { this.renderUserName() } - - - CLDS Version: - { this.renderVersion() } - - - User Permissions: - - { this.renderPermissions() } - - - - - - - - ); - } -} diff --git a/gui-clamp/ui-react/src/components/dialogs/UserInfoModal.test.js b/gui-clamp/ui-react/src/components/dialogs/UserInfoModal.test.js deleted file mode 100644 index 7168792..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/UserInfoModal.test.js +++ /dev/null @@ -1,84 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 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============================================ - * =================================================================== - * - */ -import React from 'react'; -import { shallow } from 'enzyme'; -import UserInfoModal from './UserInfoModal'; - -describe('Verify UserInfoModal', () => { - - beforeEach(() => { - fetch.resetMocks(); - fetch.mockImplementation(() => { - return Promise.resolve({ - ok: true, - status: 200, - json: () => { - return Promise.resolve({ - "userName": "test", - "cldsVersion": "1.0.0" - }); - } - }); - }); - }) - - it('Test the render method full permission', () => { - const component = shallow() - component.setState({ - userInfo: { - "userName": "test", - "cldsVersion": "1.0.0", - "allPermissions": ["permission1", "permission2"] - } - }); - expect(component).toMatchSnapshot(); - }); - - it('Test the render method no permission', () => { - const component = shallow() - component.setState({ - userInfo: {} - }); - - expect(component.find('FormControl').length).toEqual(0); - }); - - it('Test the render method read permission', () => { - const component = shallow() - component.setState({ - userInfo: { - "userName": "test", - "cldsVersion": "1.0.0", - "allPermissions": ["permission1", "permission2"] - } - }); - - expect(component.find('FormControl').length).toEqual(4); - - const forms = component.find('FormControl'); - expect(forms.get(0).props.defaultValue).toEqual("test"); - expect(forms.get(1).props.defaultValue).toEqual("1.0.0"); - expect(forms.get(2).props.defaultValue).toEqual("permission1"); - expect(forms.get(3).props.defaultValue).toEqual("permission2"); - }); -}); diff --git a/gui-clamp/ui-react/src/components/dialogs/__snapshots__/UserInfoModal.test.js.snap b/gui-clamp/ui-react/src/components/dialogs/__snapshots__/UserInfoModal.test.js.snap deleted file mode 100644 index 548a2d9..0000000 --- a/gui-clamp/ui-react/src/components/dialogs/__snapshots__/UserInfoModal.test.js.snap +++ /dev/null @@ -1,119 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Verify UserInfoModal Test the render method full permission 1`] = ` - - - - User Info - - - - - - Current User: - - - - - - - - CLDS Version: - - - - - - - - User Permissions: - - - - - - - - - - - -`; -- cgit 1.2.3-korg