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 { actionTypes as modalActionTypes } from 'nfvo-components/modal/GlobalModalConstants.js';
54 function setCurrentScreen(dispatch, screen, props = {}) {
56 type: actionTypes.SET_CURRENT_SCREEN,
60 forceBreadCrumbsUpdate: true
65 export function updateCurrentScreenProps(dispatch, props = {}) {
67 type: actionTypes.UPDATE_CURRENT_SCREEN_PROPS,
72 const OnboardingActionHelper = {
73 loadItemsLists(dispatch) {
74 LicenseModelActionHelper.fetchLicenseModels(dispatch);
75 LicenseModelActionHelper.fetchFinalizedLicenseModels(dispatch);
76 LicenseModelActionHelper.fetchArchivedLicenseModels(dispatch);
77 SoftwareProductActionHelper.fetchSoftwareProductList(dispatch);
78 SoftwareProductActionHelper.fetchFinalizedSoftwareProductList(dispatch);
79 SoftwareProductActionHelper.fetchArchivedSoftwareProductList(dispatch);
82 async navigateToOnboardingCatalog(dispatch) {
83 await FeaturesActionHelper.getFeaturesList(dispatch);
84 UsersActionHelper.fetchUsersList(dispatch);
85 this.loadItemsLists(dispatch);
86 setCurrentScreen(dispatch, enums.SCREEN.ONBOARDING_CATALOG);
88 type: filterActionTypes.FILTER_DATA_CHANGED,
93 saveIsValidationDisabled(dispatch, { isValidationDisabled }) {
94 SoftwareProductValidationActionHelper.setIsVspValidationDisabled(
96 { isValidationDisabled }
100 autoSaveBeforeNavigate(
102 { softwareProductId, version, vspComponentId, dataToSave }
104 if (softwareProductId) {
105 if (vspComponentId) {
106 return SoftwareProductComponentsActionHelper.updateSoftwareProductComponent(
112 componentData: dataToSave.componentData,
113 qdata: dataToSave.qdata
117 return SoftwareProductActionHelper.updateSoftwareProduct(dispatch, {
118 softwareProduct: dataToSave.softwareProduct,
120 qdata: dataToSave.qdata
123 return Promise.resolve();
126 navigateToLicenseModelOverview(
128 { licenseModelId, version, status }
131 * TODO change to specific rest
134 LicenseModelActionHelper.fetchLicenseModelById(dispatch, {
138 LicenseModelActionHelper.fetchLicenseModelItems(dispatch, {
144 enums.SCREEN.LICENSE_MODEL_OVERVIEW,
145 { licenseModelId, version, status }
148 licenseModelOverviewActionHelper.selectVLMListView(dispatch, {
153 navigateToLicenseAgreements(dispatch, { licenseModelId, version, status }) {
154 LicenseAgreementActionHelper.fetchLicenseAgreementList(dispatch, {
158 LicenseModelActionHelper.fetchLicenseModelById(dispatch, {
162 setCurrentScreen(dispatch, enums.SCREEN.LICENSE_AGREEMENTS, {
170 navigateToFeatureGroups(dispatch, { licenseModelId, version, status }) {
171 FeatureGroupsActionHelper.fetchFeatureGroupsList(dispatch, {
175 setCurrentScreen(dispatch, enums.SCREEN.FEATURE_GROUPS, {
182 navigateToEntitlementPools(dispatch, { licenseModelId, version, status }) {
183 EntitlementPoolsActionHelper.fetchEntitlementPoolsList(dispatch, {
187 setCurrentScreen(dispatch, enums.SCREEN.ENTITLEMENT_POOLS, {
194 navigateToLicenseKeyGroups(dispatch, { licenseModelId, version, status }) {
195 LicenseKeyGroupsActionHelper.fetchLicenseKeyGroupsList(dispatch, {
199 setCurrentScreen(dispatch, enums.SCREEN.LICENSE_KEY_GROUPS, {
206 navigateToLicenseModelActivityLog(
208 { licenseModelId, version, status }
210 ActivityLogActionHelper.fetchActivityLog(dispatch, {
211 itemId: licenseModelId,
212 versionId: version.id
214 setCurrentScreen(dispatch, enums.SCREEN.ACTIVITY_LOG, {
220 async getUpdatedSoftwareProduct(dispatch, { softwareProductId, version }) {
221 const response = await SoftwareProductActionHelper.fetchSoftwareProduct(
228 let newResponse = false;
229 let newVersion = false;
230 // checking if there was healing and a new version should be open
231 if (response[0].version !== version.id) {
232 newResponse = await SoftwareProductActionHelper.fetchSoftwareProduct(
236 version: { ...version, id: response[0].version }
239 newVersion = await ItemsHelper.fetchVersion({
240 itemId: softwareProductId,
241 versionId: response[0].version
245 notificationActions.showInfo({
247 'This is the current version of the VSP, as a result of healing'
252 return Promise.resolve(
254 ? { softwareProduct: newResponse[0], newVersion }
255 : { softwareProduct: response[0], newVersion: version }
258 async navigateToSoftwareProductLandingPage(
260 { softwareProductId, version, status }
262 SoftwareProductComponentsActionHelper.clearComponentsStore(dispatch);
264 * TODO remove when Filter toggle will be removed
266 LicenseModelActionHelper.fetchFinalizedLicenseModels(dispatch);
271 } = await this.getUpdatedSoftwareProduct(dispatch, {
276 let { vendorId: licenseModelId, licensingVersion } = softwareProduct;
277 SoftwareProductActionHelper.loadSoftwareProductDetailsData(dispatch, {
281 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponents(
283 { softwareProductId, version: newVersion }
285 if (softwareProduct.onboardingOrigin === onboardingOriginTypes.ZIP) {
286 SoftwareProductActionHelper.loadSoftwareProductHeatCandidate(
288 { softwareProductId, version: newVersion }
291 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_LANDING_PAGE, {
299 navigateToSoftwareProductDetails(
301 { softwareProductId, version, status }
303 SoftwareProductActionHelper.fetchSoftwareProduct(dispatch, {
306 }).then(response => {
307 let { vendorId: licenseModelId, licensingVersion } = response[0];
308 SoftwareProductActionHelper.loadLicensingVersionsList(dispatch, {
311 SoftwareProductActionHelper.loadSoftwareProductDetailsData(
313 { licenseModelId, licensingVersion }
315 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_DETAILS, {
323 navigateToSoftwareProductAttachmentsSetupTab(
325 { softwareProductId, version, status }
327 SoftwareProductActionHelper.loadSoftwareProductHeatCandidate(dispatch, {
331 SoftwareProductAttachmentsActionHelper.setActiveTab(dispatch, {
332 activeTab: attachmentsTabsMapping.SETUP
334 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS, {
340 navigateToSoftwareProductAttachmentsValidationTab(
342 { softwareProductId, version, status }
344 SoftwareProductActionHelper.processAndValidateHeatCandidate(dispatch, {
348 SoftwareProductAttachmentsActionHelper.setActiveTab(dispatch, {
349 activeTab: attachmentsTabsMapping.VALIDATION
353 enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS,
354 { softwareProductId, version, status }
359 navigateToSoftwareProductProcesses(
361 { softwareProductId, version, status }
363 if (softwareProductId) {
364 SoftwareProductProcessesActionHelper.fetchProcessesList(dispatch, {
369 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_PROCESSES, {
376 navigateToSoftwareProductNetworks(
378 { softwareProductId, version, status }
380 if (softwareProductId) {
381 SoftwareProductNetworksActionHelper.fetchNetworksList(dispatch, {
386 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_NETWORKS, {
393 navigateToSoftwareProductValidation(
395 { softwareProductId, version, status }
397 SoftwareProductValidationActionHelper.fetchVspChecks(dispatch)
399 SoftwareProductValidationActionHelper.setCertificationChecked(
403 SoftwareProductValidationActionHelper.setComplianceChecked(
409 enums.SCREEN.SOFTWARE_PRODUCT_VALIDATION,
419 type: modalActionTypes.GLOBAL_MODAL_ERROR,
422 msg: error.responseJSON.message,
423 cancelButtonText: i18n('OK')
429 navigateToSoftwareProductValidationResults(
431 { softwareProductId, version, status }
435 enums.SCREEN.SOFTWARE_PRODUCT_VALIDATION_RESULTS,
436 { softwareProductId, version, status }
440 navigateToSoftwareProductDependencies(
442 { softwareProductId, version, status }
444 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponents(
446 { softwareProductId, version }
448 if (result.listCount >= 2) {
449 SoftwareProductDependenciesActionHelper.fetchDependencies(
451 { softwareProductId, version }
455 enums.SCREEN.SOFTWARE_PRODUCT_DEPENDENCIES,
456 { softwareProductId, version, status }
459 this.navigateToSoftwareProductLandingPage(dispatch, {
468 navigateToSoftwareProductComponents(
470 { softwareProductId, version, status }
472 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponents(
474 { softwareProductId, version }
476 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS, {
482 navigateToSoftwareProductDeployment(
484 { softwareProductId, version, status }
486 SoftwareProductDeploymentActionHelper.fetchDeploymentFlavorsList(
488 { softwareProductId, version }
490 ComputeFlavorActionHelper.fetchComputesListForVSP(dispatch, {
494 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_DEPLOYMENT, {
500 navigateToSoftwareProductActivityLog(
502 { softwareProductId, version, status }
504 ActivityLogActionHelper.fetchActivityLog(dispatch, {
505 itemId: softwareProductId,
506 versionId: version.id
508 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_ACTIVITY_LOG, {
515 navigateToSoftwareProductComponentProcesses(
517 { softwareProductId, componentId, version, status }
519 if (componentId && softwareProductId) {
520 SoftwareProductComponentProcessesActionHelper.fetchProcessesList(
522 { componentId, softwareProductId, version }
527 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_PROCESSES,
528 { softwareProductId, componentId, version, status }
532 navigateToSoftwareProductComponentMonitoring(
534 { softwareProductId, version, componentId, status }
536 if (componentId && softwareProductId && version) {
537 SoftwareProductComponentsMonitoringAction.fetchExistingFiles(
539 { componentId, softwareProductId, version }
544 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_MONITORING,
545 { softwareProductId, componentId, version, status }
549 navigateToComponentStorage(
551 { softwareProductId, componentId, version, status }
553 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponent(
555 { softwareProductId, vspComponentId: componentId, version }
559 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_STORAGE,
560 { softwareProductId, version, componentId, status }
564 navigateToComponentCompute(
566 { softwareProductId, componentId, version, status }
568 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponent(
570 { softwareProductId, vspComponentId: componentId, version }
572 if (componentId && softwareProductId) {
573 ComputeFlavorActionHelper.fetchComputesList(dispatch, {
581 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_COMPUTE,
582 { softwareProductId, version, componentId, status }
586 navigateToComponentNetwork(
588 { softwareProductId, componentId, version, status }
590 SoftwareProductComponentsNetworkActionHelper.fetchNICsList(dispatch, {
597 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_NETWORK,
598 { softwareProductId, version, componentId, status }
602 navigateToSoftwareProductComponentGeneral(
604 { softwareProductId, componentId, version, status }
606 if (componentId && softwareProductId) {
607 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponent(
609 { softwareProductId, vspComponentId: componentId, version }
614 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_GENERAL,
615 { softwareProductId, version, componentId, status }
619 navigateToSoftwareProductComponentGeneralAndUpdateLeftPanel(
621 { softwareProductId, componentId, version, status }
623 this.navigateToSoftwareProductComponentGeneral(dispatch, {
630 type: SoftwareProductActionTypes.TOGGLE_NAVIGATION_ITEM,
632 [enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS]: true,
633 [enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS +
640 navigateToComponentLoadBalancing(
642 { softwareProductId, componentId, version, status }
644 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponent(
646 { softwareProductId, vspComponentId: componentId, version }
650 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_LOAD_BALANCING,
651 { softwareProductId, version, componentId, status }
655 navigateToComponentImages(
657 { softwareProductId, componentId, version, status }
659 SoftwareProductComponentsImageActionHelper.fetchImagesList(dispatch, {
666 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_IMAGES,
667 { softwareProductId, version, componentId, status }
671 async navigateToVersionsPage(
673 { itemType, itemId, itemName, additionalProps, users }
675 PermissionsActionHelper.fetchItemUsers(dispatch, {
679 VersionsPageActionHelper.selectNone(dispatch);
680 await VersionsPageActionHelper.fetchVersions(dispatch, {
684 const items = await ItemsHelper.fetchItem(itemId);
685 setCurrentScreen(dispatch, enums.SCREEN.VERSIONS_PAGE, {
686 status: items.status,
690 vendorName: items.properties.vendorName,
691 vendorId: items.properties.vendorId,
696 checkMergeStatus(dispatch, { itemId, versionId, version }) {
697 return ItemsHelper.fetchVersion({ itemId, versionId }).then(
699 let state = (response && response.state) || {};
700 let { synchronizationState } = state;
701 // let inMerge = synchronizationState === SyncStates.MERGE;
702 MergeEditorActionHelper.fetchConflicts(dispatch, {
707 type: actionTypes.CHECK_MERGE_STATUS,
708 synchronizationState,
709 conflictInfoList: data.conflictInfoList
716 forceBreadCrumbsUpdate(dispatch) {
718 type: actionTypes.SET_CURRENT_SCREEN,
720 forceBreadCrumbsUpdate: true
725 updateCurrentScreenVersion(dispatch, version) {
727 type: actionTypes.SET_CURRENT_SCREEN_VERSION,
733 export default OnboardingActionHelper;