2 * Copyright © 2016-2018 European Support Limited
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 import UsersActionHelper from './users/UsersActionHelper.js';
18 import VersionsPageActionHelper from './versionsPage/VersionsPageActionHelper.js';
19 import PermissionsActionHelper from './permissions/PermissionsActionHelper.js';
20 import LicenseModelActionHelper from './licenseModel/LicenseModelActionHelper.js';
21 import LicenseAgreementActionHelper from './licenseModel/licenseAgreement/LicenseAgreementActionHelper.js';
22 import FeatureGroupsActionHelper from './licenseModel/featureGroups/FeatureGroupsActionHelper.js';
23 import LicenseKeyGroupsActionHelper from './licenseModel/licenseKeyGroups/LicenseKeyGroupsActionHelper.js';
24 import EntitlementPoolsActionHelper from './licenseModel/entitlementPools/EntitlementPoolsActionHelper.js';
25 import SoftwareProductActionHelper from './softwareProduct/SoftwareProductActionHelper.js';
26 import SoftwareProductProcessesActionHelper from './softwareProduct/processes/SoftwareProductProcessesActionHelper.js';
27 import SoftwareProductDeploymentActionHelper from './softwareProduct/deployment/SoftwareProductDeploymentActionHelper.js';
28 import SoftwareProductNetworksActionHelper from './softwareProduct/networks/SoftwareProductNetworksActionHelper.js';
29 import SoftwareProductComponentsActionHelper from './softwareProduct/components/SoftwareProductComponentsActionHelper.js';
30 import SoftwareProductComponentProcessesActionHelper from './softwareProduct/components/processes/SoftwareProductComponentProcessesActionHelper.js';
31 import SoftwareProductComponentsNetworkActionHelper from './softwareProduct/components/network/SoftwareProductComponentsNetworkActionHelper.js';
32 import SoftwareProductDependenciesActionHelper from './softwareProduct/dependencies/SoftwareProductDependenciesActionHelper.js';
33 import ComputeFlavorActionHelper from './softwareProduct/components/compute/ComputeFlavorActionHelper.js';
34 import MergeEditorActionHelper from 'sdc-app/common/merge/MergeEditorActionHelper.js';
35 import SoftwareProductComponentsMonitoringAction from './softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringActionHelper.js';
36 import { actionTypes, enums } from './OnboardingConstants.js';
38 actionTypes as SoftwareProductActionTypes,
40 } from 'sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js';
41 import ActivityLogActionHelper from 'sdc-app/common/activity-log/ActivityLogActionHelper.js';
42 import ItemsHelper from 'sdc-app/common/helpers/ItemsHelper.js';
43 import SoftwareProductComponentsImageActionHelper from './softwareProduct/components/images/SoftwareProductComponentsImageActionHelper.js';
44 import licenseModelOverviewActionHelper from 'sdc-app/onboarding/licenseModel/overview/licenseModelOverviewActionHelper.js';
45 import { tabsMapping as attachmentsTabsMapping } from 'sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsConstants.js';
46 import SoftwareProductAttachmentsActionHelper from 'sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsActionHelper.js';
47 import { actionTypes as filterActionTypes } from './onboard/filter/FilterConstants.js';
48 import FeaturesActionHelper from 'sdc-app/features/FeaturesActionHelper.js';
49 import { notificationActions } from 'nfvo-components/notification/NotificationsConstants.js';
50 import i18n from 'nfvo-utils/i18n/i18n.js';
51 import SoftwareProductValidationActionHelper from './softwareProduct/validation/SoftwareProductValidationActionHelper.js';
52 import SoftwareProductValidationResultsViewActionHelper from './softwareProduct/validationResults/SoftwareProductValidationResultsViewActionHelper.js';
54 import { actionTypes as modalActionTypes } from 'nfvo-components/modal/GlobalModalConstants.js';
56 function setCurrentScreen(dispatch, screen, props = {}) {
58 type: actionTypes.SET_CURRENT_SCREEN,
62 forceBreadCrumbsUpdate: true
67 export function updateCurrentScreenProps(dispatch, props = {}) {
69 type: actionTypes.UPDATE_CURRENT_SCREEN_PROPS,
74 const OnboardingActionHelper = {
75 loadItemsLists(dispatch) {
76 LicenseModelActionHelper.fetchLicenseModels(dispatch);
77 LicenseModelActionHelper.fetchFinalizedLicenseModels(dispatch);
78 LicenseModelActionHelper.fetchArchivedLicenseModels(dispatch);
79 SoftwareProductActionHelper.fetchSoftwareProductList(dispatch);
80 SoftwareProductActionHelper.fetchFinalizedSoftwareProductList(dispatch);
81 SoftwareProductActionHelper.fetchArchivedSoftwareProductList(dispatch);
84 async navigateToOnboardingCatalog(dispatch) {
85 await FeaturesActionHelper.getFeaturesList(dispatch);
86 UsersActionHelper.fetchUsersList(dispatch);
87 this.loadItemsLists(dispatch);
88 setCurrentScreen(dispatch, enums.SCREEN.ONBOARDING_CATALOG);
90 type: filterActionTypes.FILTER_DATA_CHANGED,
95 saveIsValidationDisabled(dispatch, { isValidationDisabled }) {
96 SoftwareProductValidationActionHelper.setIsVspValidationDisabled(
98 { isValidationDisabled }
102 autoSaveBeforeNavigate(
104 { softwareProductId, version, vspComponentId, dataToSave }
106 if (softwareProductId) {
107 if (vspComponentId) {
108 return SoftwareProductComponentsActionHelper.updateSoftwareProductComponent(
114 componentData: dataToSave.componentData,
115 qdata: dataToSave.qdata
119 return SoftwareProductActionHelper.updateSoftwareProduct(dispatch, {
120 softwareProduct: dataToSave.softwareProduct,
122 qdata: dataToSave.qdata
125 return Promise.resolve();
128 navigateToLicenseModelOverview(
130 { licenseModelId, version, status }
133 * TODO change to specific rest
136 LicenseModelActionHelper.fetchLicenseModelById(dispatch, {
140 LicenseModelActionHelper.fetchLicenseModelItems(dispatch, {
146 enums.SCREEN.LICENSE_MODEL_OVERVIEW,
147 { licenseModelId, version, status }
150 licenseModelOverviewActionHelper.selectVLMListView(dispatch, {
155 navigateToLicenseAgreements(dispatch, { licenseModelId, version, status }) {
156 LicenseAgreementActionHelper.fetchLicenseAgreementList(dispatch, {
160 LicenseModelActionHelper.fetchLicenseModelById(dispatch, {
164 setCurrentScreen(dispatch, enums.SCREEN.LICENSE_AGREEMENTS, {
172 navigateToFeatureGroups(dispatch, { licenseModelId, version, status }) {
173 FeatureGroupsActionHelper.fetchFeatureGroupsList(dispatch, {
177 setCurrentScreen(dispatch, enums.SCREEN.FEATURE_GROUPS, {
184 navigateToEntitlementPools(dispatch, { licenseModelId, version, status }) {
185 EntitlementPoolsActionHelper.fetchEntitlementPoolsList(dispatch, {
189 setCurrentScreen(dispatch, enums.SCREEN.ENTITLEMENT_POOLS, {
196 navigateToLicenseKeyGroups(dispatch, { licenseModelId, version, status }) {
197 LicenseKeyGroupsActionHelper.fetchLicenseKeyGroupsList(dispatch, {
201 setCurrentScreen(dispatch, enums.SCREEN.LICENSE_KEY_GROUPS, {
208 navigateToLicenseModelActivityLog(
210 { licenseModelId, version, status }
212 ActivityLogActionHelper.fetchActivityLog(dispatch, {
213 itemId: licenseModelId,
214 versionId: version.id
216 setCurrentScreen(dispatch, enums.SCREEN.ACTIVITY_LOG, {
222 async getUpdatedSoftwareProduct(dispatch, { softwareProductId, version }) {
223 const response = await SoftwareProductActionHelper.fetchSoftwareProduct(
230 let newResponse = false;
231 let newVersion = false;
232 // checking if there was healing and a new version should be open
233 if (response[0].version !== version.id) {
234 newResponse = await SoftwareProductActionHelper.fetchSoftwareProduct(
238 version: { ...version, id: response[0].version }
241 newVersion = await ItemsHelper.fetchVersion({
242 itemId: softwareProductId,
243 versionId: response[0].version
247 notificationActions.showInfo({
249 'This is the current version of the VSP, as a result of healing'
254 return Promise.resolve(
256 ? { softwareProduct: newResponse[0], newVersion }
257 : { softwareProduct: response[0], newVersion: version }
260 async navigateToSoftwareProductLandingPage(
262 { softwareProductId, version, status }
264 SoftwareProductComponentsActionHelper.clearComponentsStore(dispatch);
266 * TODO remove when Filter toggle will be removed
268 LicenseModelActionHelper.fetchFinalizedLicenseModels(dispatch);
273 } = await this.getUpdatedSoftwareProduct(dispatch, {
278 let { vendorId: licenseModelId, licensingVersion } = softwareProduct;
279 SoftwareProductActionHelper.loadSoftwareProductDetailsData(dispatch, {
283 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponents(
285 { softwareProductId, version: newVersion }
287 if (softwareProduct.onboardingOrigin === onboardingOriginTypes.ZIP) {
288 SoftwareProductActionHelper.loadSoftwareProductHeatCandidate(
290 { softwareProductId, version: newVersion }
293 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_LANDING_PAGE, {
301 navigateToSoftwareProductDetails(
303 { softwareProductId, version, status }
305 SoftwareProductActionHelper.fetchSoftwareProduct(dispatch, {
308 }).then(response => {
309 let { vendorId: licenseModelId, licensingVersion } = response[0];
310 SoftwareProductActionHelper.loadLicensingVersionsList(dispatch, {
313 SoftwareProductActionHelper.loadSoftwareProductDetailsData(
315 { licenseModelId, licensingVersion }
317 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_DETAILS, {
325 navigateToSoftwareProductAttachmentsSetupTab(
327 { softwareProductId, version, status }
329 SoftwareProductActionHelper.loadSoftwareProductHeatCandidate(dispatch, {
333 SoftwareProductAttachmentsActionHelper.setActiveTab(dispatch, {
334 activeTab: attachmentsTabsMapping.SETUP
336 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS, {
342 navigateToSoftwareProductAttachmentsValidationTab(
344 { softwareProductId, version, status }
346 SoftwareProductActionHelper.processAndValidateHeatCandidate(dispatch, {
350 SoftwareProductAttachmentsActionHelper.setActiveTab(dispatch, {
351 activeTab: attachmentsTabsMapping.VALIDATION
355 enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS,
356 { softwareProductId, version, status }
360 viewSoftwareProductAttachmentsValidationTab(
362 { softwareProductId, version, status }
364 SoftwareProductActionHelper.loadSoftwareProductHeatCandidate(dispatch, {
368 SoftwareProductAttachmentsActionHelper.setActiveTab(dispatch, {
369 activeTab: attachmentsTabsMapping.VALIDATION
371 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS, {
377 navigateToSoftwareProductProcesses(
379 { softwareProductId, version, status }
381 if (softwareProductId) {
382 SoftwareProductProcessesActionHelper.fetchProcessesList(dispatch, {
387 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_PROCESSES, {
394 navigateToSoftwareProductNetworks(
396 { softwareProductId, version, status }
398 if (softwareProductId) {
399 SoftwareProductNetworksActionHelper.fetchNetworksList(dispatch, {
404 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_NETWORKS, {
411 navigateToSoftwareProductValidation(
413 { softwareProductId, version, status }
415 SoftwareProductValidationActionHelper.fetchVspChecks(dispatch)
417 SoftwareProductValidationActionHelper.setCertificationChecked(
421 SoftwareProductValidationActionHelper.setComplianceChecked(
427 enums.SCREEN.SOFTWARE_PRODUCT_VALIDATION,
437 type: modalActionTypes.GLOBAL_MODAL_ERROR,
440 msg: error.responseJSON.message,
441 cancelButtonText: i18n('OK')
447 navigateToSoftwareProductValidationResults(
449 { softwareProductId, version, status }
451 SoftwareProductValidationResultsViewActionHelper.fetchVspChecks(
457 enums.SCREEN.SOFTWARE_PRODUCT_VALIDATION_RESULTS,
458 { softwareProductId, version, status }
463 type: modalActionTypes.GLOBAL_MODAL_ERROR,
466 msg: error.responseJSON.message,
467 cancelButtonText: i18n('OK')
473 navigateToSoftwareProductDependencies(
475 { softwareProductId, version, status }
477 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponents(
479 { softwareProductId, version }
481 if (result.listCount >= 2) {
482 SoftwareProductDependenciesActionHelper.fetchDependencies(
484 { softwareProductId, version }
488 enums.SCREEN.SOFTWARE_PRODUCT_DEPENDENCIES,
489 { softwareProductId, version, status }
492 this.navigateToSoftwareProductLandingPage(dispatch, {
501 navigateToSoftwareProductComponents(
503 { softwareProductId, version, status }
505 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponents(
507 { softwareProductId, version }
509 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS, {
515 navigateToSoftwareProductDeployment(
517 { softwareProductId, version, status }
519 SoftwareProductDeploymentActionHelper.fetchDeploymentFlavorsList(
521 { softwareProductId, version }
523 ComputeFlavorActionHelper.fetchComputesListForVSP(dispatch, {
527 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_DEPLOYMENT, {
533 navigateToSoftwareProductActivityLog(
535 { softwareProductId, version, status }
537 ActivityLogActionHelper.fetchActivityLog(dispatch, {
538 itemId: softwareProductId,
539 versionId: version.id
541 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_ACTIVITY_LOG, {
548 navigateToSoftwareProductComponentProcesses(
550 { softwareProductId, componentId, version, status }
552 if (componentId && softwareProductId) {
553 SoftwareProductComponentProcessesActionHelper.fetchProcessesList(
555 { componentId, softwareProductId, version }
560 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_PROCESSES,
561 { softwareProductId, componentId, version, status }
565 navigateToSoftwareProductComponentMonitoring(
567 { softwareProductId, version, componentId, status }
569 if (componentId && softwareProductId && version) {
570 SoftwareProductComponentsMonitoringAction.fetchExistingFiles(
572 { componentId, softwareProductId, version }
577 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_MONITORING,
578 { softwareProductId, componentId, version, status }
582 navigateToComponentStorage(
584 { softwareProductId, componentId, version, status }
586 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponent(
588 { softwareProductId, vspComponentId: componentId, version }
592 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_STORAGE,
593 { softwareProductId, version, componentId, status }
597 navigateToComponentCompute(
599 { softwareProductId, componentId, version, status }
601 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponent(
603 { softwareProductId, vspComponentId: componentId, version }
605 if (componentId && softwareProductId) {
606 ComputeFlavorActionHelper.fetchComputesList(dispatch, {
614 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_COMPUTE,
615 { softwareProductId, version, componentId, status }
619 navigateToComponentNetwork(
621 { softwareProductId, componentId, version, status }
623 SoftwareProductComponentsNetworkActionHelper.fetchNICsList(dispatch, {
630 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_NETWORK,
631 { softwareProductId, version, componentId, status }
635 navigateToSoftwareProductComponentGeneral(
637 { softwareProductId, componentId, version, status }
639 if (componentId && softwareProductId) {
640 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponent(
642 { softwareProductId, vspComponentId: componentId, version }
647 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_GENERAL,
648 { softwareProductId, version, componentId, status }
652 navigateToSoftwareProductComponentGeneralAndUpdateLeftPanel(
654 { softwareProductId, componentId, version, status }
656 this.navigateToSoftwareProductComponentGeneral(dispatch, {
663 type: SoftwareProductActionTypes.TOGGLE_NAVIGATION_ITEM,
665 [enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS]: true,
666 [enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS +
673 navigateToComponentLoadBalancing(
675 { softwareProductId, componentId, version, status }
677 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponent(
679 { softwareProductId, vspComponentId: componentId, version }
683 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_LOAD_BALANCING,
684 { softwareProductId, version, componentId, status }
688 navigateToComponentImages(
690 { softwareProductId, componentId, version, status }
692 SoftwareProductComponentsImageActionHelper.fetchImagesList(dispatch, {
699 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_IMAGES,
700 { softwareProductId, version, componentId, status }
704 async navigateToVersionsPage(
706 { itemType, itemId, itemName, additionalProps, users }
708 PermissionsActionHelper.fetchItemUsers(dispatch, {
712 VersionsPageActionHelper.selectNone(dispatch);
713 await VersionsPageActionHelper.fetchVersions(dispatch, {
717 const items = await ItemsHelper.fetchItem(itemId);
718 setCurrentScreen(dispatch, enums.SCREEN.VERSIONS_PAGE, {
719 status: items.status,
723 vendorName: items.properties.vendorName,
724 vendorId: items.properties.vendorId,
729 checkMergeStatus(dispatch, { itemId, versionId, version }) {
730 return ItemsHelper.fetchVersion({ itemId, versionId }).then(
732 let state = (response && response.state) || {};
733 let { synchronizationState } = state;
734 // let inMerge = synchronizationState === SyncStates.MERGE;
735 MergeEditorActionHelper.fetchConflicts(dispatch, {
740 type: actionTypes.CHECK_MERGE_STATUS,
741 synchronizationState,
742 conflictInfoList: data.conflictInfoList
749 forceBreadCrumbsUpdate(dispatch) {
751 type: actionTypes.SET_CURRENT_SCREEN,
753 forceBreadCrumbsUpdate: true
758 updateCurrentScreenVersion(dispatch, version) {
760 type: actionTypes.SET_CURRENT_SCREEN_VERSION,
766 export default OnboardingActionHelper;