From 6ad41e3ccd398a2721f41ad61c80b7bb03f7d127 Mon Sep 17 00:00:00 2001 From: Ittay Stern Date: Mon, 31 Dec 2018 17:21:27 +0200 Subject: Merge from ECOMP's repository Main Features -------------- - Async-Instantiation jobs mechanism major update; still WIP (package `org.onap.vid.job`) - New features in View/Edit: Activate fabric configuration; show related networks; soft delete - Support AAI service-tree traversal (`AAIServiceTree`) - In-memory cache for SDC models and certain A&AI queries (`CacheProviderWithLoadingCache`) - Upgrade TOSCA Parser and add parsing options; fix malformed TOSCA models - Resolve Cloud-Owner values for MSO - Pass X-ONAP headers to MSO Infrastructure -------------- - Remove codehaus' jackson mapper; use soley fasterxml 2.9.7 - Surefire invokes both TestNG and JUnit tests - Support Kotlin source files - AaiController2 which handles errors in a "Spring manner" - Inline generated-sources and remove jsonschema2pojo Quality -------- - Cumulative bug fixes (A&AI API, UI timeouts, and many more) - Many Sonar issues cleaned-up - Some unused classes removed - Minor changes in vid-automation project, allowing some API verification to run Hard Merges ------------ - HTTP Clients (MSO, A&AI, WebConfig, OutgoingRequestHeadersTest) - Moved `package org.onap.vid.controllers` to `controller`, without plural -- just to keep semantic sync with ECOMP. Reference commit in ECOMP: 3d1141625 Issue-ID: VID-378 Change-Id: I9c8d1e74caa41815891d441fc0760bb5f29c5788 Signed-off-by: Ittay Stern --- .../new-change-management.controller.js | 16 ++- .../vf-module-homing-data-action.controller.js | 138 +++++++++++++++++++++ .../vf-module-homing-data-action.css | 62 +++++++++ .../vf-module-homing-data-action.html | 78 ++++++++++++ 4 files changed, 288 insertions(+), 6 deletions(-) create mode 100644 vid-app-common/src/main/webapp/app/vid/scripts/modals/vf-module-homing-data-action/vf-module-homing-data-action.controller.js create mode 100644 vid-app-common/src/main/webapp/app/vid/scripts/modals/vf-module-homing-data-action/vf-module-homing-data-action.css create mode 100644 vid-app-common/src/main/webapp/app/vid/scripts/modals/vf-module-homing-data-action/vf-module-homing-data-action.html (limited to 'vid-app-common/src/main/webapp/app/vid/scripts/modals') diff --git a/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.controller.js b/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.controller.js index c6c9edf6e..9a758cc73 100644 --- a/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.controller.js +++ b/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.controller.js @@ -121,13 +121,19 @@ }; var extractVNFModel = function (csarVNF, sdcService, selectionVNF) { + /** + @param selectionVNF A vnf *instance* selected in "available VNF" drop-down box + @param csarVNF A VNF *MODEL* that has an invariantUuid same as selectionVNF (might be + a different version; i.e. selectionVNF.modelVersionId <> csarVNF.uuid) + @param sdcService The Service *MODEL* which has the related VNF `csarVNF`. + */ var versionCsarData = { vnfInstanceId: "", vnfName: csarVNF.name, modelInfo: { modelType: "vnf", modelInvariantId: csarVNF.invariantUuid, - modelVersionId: selectionVNF.modelVersionId, + modelVersionId: csarVNF.uuid, modelName: csarVNF.name, modelVersion: csarVNF.version, modelCustomizationName: csarVNF.modelCustomizationName, @@ -145,12 +151,10 @@ instanceId: selectionVNF["service-instance-node"]["0"].properties['service-instance-id'], modelInfo: { modelType: "service", - modelInvariantId: selectionVNF["service-instance-node"]["0"].properties['model-invariant-id'], - modelVersionId: selectionVNF.modelVersionId, + modelInvariantId: sdcService.invariantUuid, + modelVersionId: sdcService.uuid, modelName: sdcService.name, - modelVersion: sdcService.version, - modelCustomizationName: selectionVNF["service-instance-node"]["0"].properties['model-customization-name'], //TODO: Missing - modelCustomizationId: selectionVNF["service-instance-node"]["0"].properties['model-customization-id'] + modelVersion: sdcService.version } } } diff --git a/vid-app-common/src/main/webapp/app/vid/scripts/modals/vf-module-homing-data-action/vf-module-homing-data-action.controller.js b/vid-app-common/src/main/webapp/app/vid/scripts/modals/vf-module-homing-data-action/vf-module-homing-data-action.controller.js new file mode 100644 index 000000000..00f175e08 --- /dev/null +++ b/vid-app-common/src/main/webapp/app/vid/scripts/modals/vf-module-homing-data-action/vf-module-homing-data-action.controller.js @@ -0,0 +1,138 @@ +/*- + * ============LICENSE_START======================================================= + * VID + * ================================================================================ + * Copyright (C) 2017 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========================================================= + */ + +"use strict"; + +var vfModuleActionModalController = function(COMPONENT, $scope, $uibModal, CreationService, + MsoService, AaiService, DeleteResumeService, DataService, $uibModalInstance, action, vfModule, featureFlags) { + + + var _this = this; + + $scope.action = action; + $scope.vfModuleName = vfModule.name; + $scope.lcpAndTenant = null; + $scope.regionSelection = {lcpRegion: null, legacyRegion: null, tenant: null}; + $scope.lcpRegionList = null; + $scope.isHomingData = false; + $scope.megaRegion = ['AAIAIC25', 'rdm3', 'rdm5a']; + $scope.isSoftDeleteEnabled = vfModule.nodeStatus.toLowerCase() !== 'assigned' && action === COMPONENT.DELETE; + + $scope.isResumeEnabled = action === COMPONENT.RESUME; + if ($scope.isResumeEnabled) { + $scope.action = 'Instantiate'; + } + + initHomingData(); + + function getLcpCloudRegionTenantList() { + AaiService.getLcpCloudRegionTenantList(DataService + .getGlobalCustomerId(), DataService.getServiceType(), function( + response) { + $scope.lcpAndTenant = response; + $scope.isFeatureFlagCloudOwner = featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST); + $scope.lcpRegionList = _.uniqBy(response, 'cloudRegionId'); + }); + } + + function initHomingData() { + AaiService.getHomingData(DataService.getVnfInstanceId(), DataService.getVfModuleInstanceId()) + .then(function (res) { + if (res && res.data) { + $scope.regionSelection = { + lcpRegion: (res.data[COMPONENT.CLOUD_REGION_ID]) ? res.data[COMPONENT.CLOUD_REGION_ID] : null, + legacyRegion: null, + tenant: (res.data[COMPONENT.TENANT_ID]) ? res.data[COMPONENT.TENANT_ID] : null + }; + $scope.isHomingData = $scope.regionSelection.lcpRegion !== null && res.data.tenant !== null; + $scope.isHomingData = $scope.isHomingData && (($scope.megaRegion).indexOf($scope.regionSelection.lcpRegion) === -1); + } + + if (!$scope.isHomingData) { + getLcpCloudRegionTenantList(); + } + }) + .catch(function (error) { + getLcpCloudRegionTenantList(); + }); + }; + + function getLcpRegionId() { + if(_.isEmpty($scope.regionSelection.legacyRegion)) { + return $scope.regionSelection.lcpRegion + } + return $scope.regionSelection.legacyRegion; + } + + $scope.deleteOrResume = function() { + + var regionSelectionList = [({id: "lcpRegion", value: getLcpRegionId()})]; + regionSelectionList.push({id: "tenant", value: $scope.regionSelection.tenant}); + + var requestParams = {}; + var requestDetails; + var msoType; + if ($scope.isResumeEnabled) { + CreationService.initializeComponent(COMPONENT.VF_MODULE); + CreationService.setInventoryInfo(); + + requestDetails = CreationService.getMsoRequestDetails(regionSelectionList); + requestParams.url = CreationService.getMsoUrl(); + msoType = COMPONENT.MSO_CREATE_REQ; + } + else { + DeleteResumeService.initializeComponent(COMPONENT.VF_MODULE); + + requestDetails = DeleteResumeService.getMsoRequestDetails(regionSelectionList); + if(DeleteResumeService.isMacro === true) { + requestDetails.requestParameters.aLaCarte = false; + } + requestParams.url = DeleteResumeService.getMsoUrl(); + msoType = COMPONENT.MSO_DELETE_REQ; + } + + requestParams.requestDetails = requestDetails; + requestParams.userId = DataService.getLoggedInUserId(); + $uibModalInstance.close({requestParams: requestParams, msoType: msoType}); + }; + + $scope.softDelete = function() { + + var requestParams = { + tenantId: $scope.regionSelection.tenant, + lcpCloudRegionId: getLcpRegionId(), + serviceInstanceId: DataService.getServiceInstanceId(), + vnfInstanceId: DataService.getVnfInstanceId(), + vfModuleInstanceId: DataService.getVfModuleInstanceId() + }; + + requestParams.userId = DataService.getLoggedInUserId(); + $uibModalInstance.close({requestParams : requestParams, msoType: COMPONENT.MSO_DEACTIVATE_AND_CLOUD_DELETE}); + }; + + $scope.cancel = function() { + $uibModalInstance.dismiss('cancel'); + }; + +}; + +appDS2.controller("vfModuleActionModalController", [ "COMPONENT", "$scope", "$uibModal", "CreationService", + "MsoService", "AaiService", "DeleteResumeService", "DataService", "$uibModalInstance", "action", "vfModule", "featureFlags", + vfModuleActionModalController ]); diff --git a/vid-app-common/src/main/webapp/app/vid/scripts/modals/vf-module-homing-data-action/vf-module-homing-data-action.css b/vid-app-common/src/main/webapp/app/vid/scripts/modals/vf-module-homing-data-action/vf-module-homing-data-action.css new file mode 100644 index 000000000..8193bd355 --- /dev/null +++ b/vid-app-common/src/main/webapp/app/vid/scripts/modals/vf-module-homing-data-action/vf-module-homing-data-action.css @@ -0,0 +1,62 @@ +.modal-dialog * { + font-family: OpenSans-Regular, sans-serif; +} +.modal-dialog { + width: 540px; +} +.modal-body { + width: 95%; + margin: auto; +} +.modal-body label:after{ + color: red; + content: "*"; + padding-left: 5px; +} +.modal-dialog .modal-x { + float: right; + margin-top: 10px; + height: 15px; + cursor:pointer; +} +.modal-body .user-explanation span { + line-height: 25px; +} +.modal-body .user-explanation h4{ + line-height: 30px; +} +.region-section .field{ + margin-top: 15px; + display: flex; +} +.region-section .field label{ + width: 30%; + line-height: 35px; +} +.region-section .field select{ + height: auto; +} +.region-section span{ + margin-top: 20px; +} +.spinner{ + display: none; +} +.region-section.is-loading .spinner{ + display: block; + margin: 20px; + text-align: center; +} +.region-section.is-loading .region-user-selection{ + display: none; +} +.modal-footer button{ + width: 110px; +} +.modal-footer .cancel-btn{ + margin-right: 15px; + margin-left: 15px; +} +.modal-footer .soft-delete-btn { + margin-right: 15px; +} \ No newline at end of file diff --git a/vid-app-common/src/main/webapp/app/vid/scripts/modals/vf-module-homing-data-action/vf-module-homing-data-action.html b/vid-app-common/src/main/webapp/app/vid/scripts/modals/vf-module-homing-data-action/vf-module-homing-data-action.html new file mode 100644 index 000000000..bb90ce1f6 --- /dev/null +++ b/vid-app-common/src/main/webapp/app/vid/scripts/modals/vf-module-homing-data-action/vf-module-homing-data-action.html @@ -0,0 +1,78 @@ + + + + + + + +
+ + + +
-- cgit 1.2.3-korg