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 OnboardActionHelper from './onboard/OnboardActionHelper.js';
35 import MergeEditorActionHelper from 'sdc-app/common/merge/MergeEditorActionHelper.js';
36 import SoftwareProductComponentsMonitoringAction from './softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringActionHelper.js';
37 import { actionTypes, enums } from './OnboardingConstants.js';
39 actionTypes as SoftwareProductActionTypes,
41 } from 'sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js';
42 import ActivityLogActionHelper from 'sdc-app/common/activity-log/ActivityLogActionHelper.js';
43 import ItemsHelper from 'sdc-app/common/helpers/ItemsHelper.js';
44 import SoftwareProductComponentsImageActionHelper from './softwareProduct/components/images/SoftwareProductComponentsImageActionHelper.js';
45 import licenseModelOverviewActionHelper from 'sdc-app/onboarding/licenseModel/overview/licenseModelOverviewActionHelper.js';
46 import { tabsMapping as attachmentsTabsMapping } from 'sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsConstants.js';
47 import SoftwareProductAttachmentsActionHelper from 'sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsActionHelper.js';
48 import { actionTypes as filterActionTypes } from './onboard/filter/FilterConstants.js';
49 import FeaturesActionHelper from 'sdc-app/features/FeaturesActionHelper.js';
50 import { notificationActions } from 'nfvo-components/notification/NotificationsConstants.js';
51 import i18n from 'nfvo-utils/i18n/i18n.js';
53 function setCurrentScreen(dispatch, screen, props = {}) {
55 type: actionTypes.SET_CURRENT_SCREEN,
59 forceBreadCrumbsUpdate: true
64 export function updateCurrentScreenProps(dispatch, props = {}) {
66 type: actionTypes.UPDATE_CURRENT_SCREEN_PROPS,
71 const OnboardingActionHelper = {
72 loadItemsLists(dispatch) {
73 LicenseModelActionHelper.fetchLicenseModels(dispatch);
74 LicenseModelActionHelper.fetchFinalizedLicenseModels(dispatch);
75 LicenseModelActionHelper.fetchArchivedLicenseModels(dispatch);
76 SoftwareProductActionHelper.fetchSoftwareProductList(dispatch);
77 SoftwareProductActionHelper.fetchFinalizedSoftwareProductList(dispatch);
78 SoftwareProductActionHelper.fetchArchivedSoftwareProductList(dispatch);
81 async navigateToOnboardingCatalog(dispatch) {
82 await FeaturesActionHelper.getFeaturesList(dispatch);
83 UsersActionHelper.fetchUsersList(dispatch);
84 this.loadItemsLists(dispatch);
85 OnboardActionHelper.resetOnboardStore(dispatch);
86 setCurrentScreen(dispatch, enums.SCREEN.ONBOARDING_CATALOG);
88 type: filterActionTypes.FILTER_DATA_CHANGED,
93 autoSaveBeforeNavigate(
95 { softwareProductId, version, vspComponentId, dataToSave }
97 if (softwareProductId) {
99 return SoftwareProductComponentsActionHelper.updateSoftwareProductComponent(
105 componentData: dataToSave.componentData,
106 qdata: dataToSave.qdata
110 return SoftwareProductActionHelper.updateSoftwareProduct(dispatch, {
111 softwareProduct: dataToSave.softwareProduct,
113 qdata: dataToSave.qdata
116 return Promise.resolve();
119 navigateToLicenseModelOverview(
121 { licenseModelId, version, status }
124 * TODO change to specific rest
127 LicenseModelActionHelper.fetchLicenseModelById(dispatch, {
131 LicenseModelActionHelper.fetchLicenseModelItems(dispatch, {
137 enums.SCREEN.LICENSE_MODEL_OVERVIEW,
138 { licenseModelId, version, status }
141 licenseModelOverviewActionHelper.selectVLMListView(dispatch, {
146 navigateToLicenseAgreements(dispatch, { licenseModelId, version, status }) {
147 LicenseAgreementActionHelper.fetchLicenseAgreementList(dispatch, {
151 LicenseModelActionHelper.fetchLicenseModelById(dispatch, {
155 setCurrentScreen(dispatch, enums.SCREEN.LICENSE_AGREEMENTS, {
163 navigateToFeatureGroups(dispatch, { licenseModelId, version, status }) {
164 FeatureGroupsActionHelper.fetchFeatureGroupsList(dispatch, {
168 setCurrentScreen(dispatch, enums.SCREEN.FEATURE_GROUPS, {
175 navigateToEntitlementPools(dispatch, { licenseModelId, version, status }) {
176 EntitlementPoolsActionHelper.fetchEntitlementPoolsList(dispatch, {
180 setCurrentScreen(dispatch, enums.SCREEN.ENTITLEMENT_POOLS, {
187 navigateToLicenseKeyGroups(dispatch, { licenseModelId, version, status }) {
188 LicenseKeyGroupsActionHelper.fetchLicenseKeyGroupsList(dispatch, {
192 setCurrentScreen(dispatch, enums.SCREEN.LICENSE_KEY_GROUPS, {
199 navigateToLicenseModelActivityLog(
201 { licenseModelId, version, status }
203 ActivityLogActionHelper.fetchActivityLog(dispatch, {
204 itemId: licenseModelId,
205 versionId: version.id
207 setCurrentScreen(dispatch, enums.SCREEN.ACTIVITY_LOG, {
213 async getUpdatedSoftwareProduct(dispatch, { softwareProductId, version }) {
214 const response = await SoftwareProductActionHelper.fetchSoftwareProduct(
221 let newResponse = false;
222 let newVersion = false;
223 // checking if there was healing and a new version should be open
224 if (response[0].version !== version.id) {
225 newResponse = await SoftwareProductActionHelper.fetchSoftwareProduct(
229 version: { ...version, id: response[0].version }
232 newVersion = await ItemsHelper.fetchVersion({
233 itemId: softwareProductId,
234 versionId: response[0].version
238 notificationActions.showInfo({
240 'This is the current version of the VSP, as a result of healing'
245 return Promise.resolve(
247 ? { softwareProduct: newResponse[0], newVersion }
248 : { softwareProduct: response[0], newVersion: version }
251 async navigateToSoftwareProductLandingPage(
253 { softwareProductId, version, status }
255 SoftwareProductComponentsActionHelper.clearComponentsStore(dispatch);
257 * TODO remove when Filter toggle will be removed
259 LicenseModelActionHelper.fetchFinalizedLicenseModels(dispatch);
264 } = await this.getUpdatedSoftwareProduct(dispatch, {
269 let { vendorId: licenseModelId, licensingVersion } = softwareProduct;
270 SoftwareProductActionHelper.loadSoftwareProductDetailsData(dispatch, {
274 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponents(
276 { softwareProductId, version: newVersion }
278 if (softwareProduct.onboardingOrigin === onboardingOriginTypes.ZIP) {
279 SoftwareProductActionHelper.loadSoftwareProductHeatCandidate(
281 { softwareProductId, version: newVersion }
284 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_LANDING_PAGE, {
292 navigateToSoftwareProductDetails(
294 { softwareProductId, version, status }
296 SoftwareProductActionHelper.fetchSoftwareProduct(dispatch, {
299 }).then(response => {
300 let { vendorId: licenseModelId, licensingVersion } = response[0];
301 SoftwareProductActionHelper.loadLicensingVersionsList(dispatch, {
304 SoftwareProductActionHelper.loadSoftwareProductDetailsData(
306 { licenseModelId, licensingVersion }
308 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_DETAILS, {
316 navigateToSoftwareProductAttachmentsSetupTab(
318 { softwareProductId, version, status }
320 SoftwareProductActionHelper.loadSoftwareProductHeatCandidate(dispatch, {
324 SoftwareProductAttachmentsActionHelper.setActiveTab(dispatch, {
325 activeTab: attachmentsTabsMapping.SETUP
327 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS, {
333 navigateToSoftwareProductAttachmentsValidationTab(
335 { softwareProductId, version, status }
337 SoftwareProductActionHelper.processAndValidateHeatCandidate(dispatch, {
341 SoftwareProductAttachmentsActionHelper.setActiveTab(dispatch, {
342 activeTab: attachmentsTabsMapping.VALIDATION
346 enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS,
347 { softwareProductId, version, status }
352 navigateToSoftwareProductProcesses(
354 { softwareProductId, version, status }
356 if (softwareProductId) {
357 SoftwareProductProcessesActionHelper.fetchProcessesList(dispatch, {
362 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_PROCESSES, {
369 navigateToSoftwareProductNetworks(
371 { softwareProductId, version, status }
373 if (softwareProductId) {
374 SoftwareProductNetworksActionHelper.fetchNetworksList(dispatch, {
379 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_NETWORKS, {
386 navigateToSoftwareProductDependencies(
388 { softwareProductId, version, status }
390 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponents(
392 { softwareProductId, version }
394 if (result.listCount >= 2) {
395 SoftwareProductDependenciesActionHelper.fetchDependencies(
397 { softwareProductId, version }
401 enums.SCREEN.SOFTWARE_PRODUCT_DEPENDENCIES,
402 { softwareProductId, version, status }
405 this.navigateToSoftwareProductLandingPage(dispatch, {
414 navigateToSoftwareProductComponents(
416 { softwareProductId, version, status }
418 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponents(
420 { softwareProductId, version }
422 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS, {
428 navigateToSoftwareProductDeployment(
430 { softwareProductId, version, status }
432 SoftwareProductDeploymentActionHelper.fetchDeploymentFlavorsList(
434 { softwareProductId, version }
436 ComputeFlavorActionHelper.fetchComputesListForVSP(dispatch, {
440 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_DEPLOYMENT, {
446 navigateToSoftwareProductActivityLog(
448 { softwareProductId, version, status }
450 ActivityLogActionHelper.fetchActivityLog(dispatch, {
451 itemId: softwareProductId,
452 versionId: version.id
454 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_ACTIVITY_LOG, {
461 navigateToSoftwareProductComponentProcesses(
463 { softwareProductId, componentId, version, status }
465 if (componentId && softwareProductId) {
466 SoftwareProductComponentProcessesActionHelper.fetchProcessesList(
468 { componentId, softwareProductId, version }
473 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_PROCESSES,
474 { softwareProductId, componentId, version, status }
478 navigateToSoftwareProductComponentMonitoring(
480 { softwareProductId, version, componentId, status }
482 if (componentId && softwareProductId && version) {
483 SoftwareProductComponentsMonitoringAction.fetchExistingFiles(
485 { componentId, softwareProductId, version }
490 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_MONITORING,
491 { softwareProductId, componentId, version, status }
495 navigateToComponentStorage(
497 { softwareProductId, componentId, version, status }
499 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponent(
501 { softwareProductId, vspComponentId: componentId, version }
505 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_STORAGE,
506 { softwareProductId, version, componentId, status }
510 navigateToComponentCompute(
512 { softwareProductId, componentId, version, status }
514 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponent(
516 { softwareProductId, vspComponentId: componentId, version }
518 if (componentId && softwareProductId) {
519 ComputeFlavorActionHelper.fetchComputesList(dispatch, {
527 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_COMPUTE,
528 { softwareProductId, version, componentId, status }
532 navigateToComponentNetwork(
534 { softwareProductId, componentId, version, status }
536 SoftwareProductComponentsNetworkActionHelper.fetchNICsList(dispatch, {
543 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_NETWORK,
544 { softwareProductId, version, componentId, status }
548 navigateToSoftwareProductComponentGeneral(
550 { softwareProductId, componentId, version, status }
552 if (componentId && softwareProductId) {
553 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponent(
555 { softwareProductId, vspComponentId: componentId, version }
560 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_GENERAL,
561 { softwareProductId, version, componentId, status }
565 navigateToSoftwareProductComponentGeneralAndUpdateLeftPanel(
567 { softwareProductId, componentId, version, status }
569 this.navigateToSoftwareProductComponentGeneral(dispatch, {
576 type: SoftwareProductActionTypes.TOGGLE_NAVIGATION_ITEM,
578 [enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS]: true,
579 [enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS +
586 navigateToComponentLoadBalancing(
588 { softwareProductId, componentId, version, status }
590 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponent(
592 { softwareProductId, vspComponentId: componentId, version }
596 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_LOAD_BALANCING,
597 { softwareProductId, version, componentId, status }
601 navigateToComponentImages(
603 { softwareProductId, componentId, version, status }
605 SoftwareProductComponentsImageActionHelper.fetchImagesList(dispatch, {
612 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_IMAGES,
613 { softwareProductId, version, componentId, status }
617 async navigateToVersionsPage(
619 { itemType, itemId, itemName, additionalProps, users }
621 PermissionsActionHelper.fetchItemUsers(dispatch, {
625 VersionsPageActionHelper.selectNone(dispatch);
626 await VersionsPageActionHelper.fetchVersions(dispatch, {
630 const items = await ItemsHelper.fetchItem(itemId);
631 setCurrentScreen(dispatch, enums.SCREEN.VERSIONS_PAGE, {
632 status: items.status,
636 vendorName: items.properties.vendorName,
637 vendorId: items.properties.vendorId,
642 checkMergeStatus(dispatch, { itemId, versionId, version }) {
643 return ItemsHelper.fetchVersion({ itemId, versionId }).then(
645 let state = (response && response.state) || {};
646 let { synchronizationState } = state;
647 // let inMerge = synchronizationState === SyncStates.MERGE;
648 MergeEditorActionHelper.fetchConflicts(dispatch, {
653 type: actionTypes.CHECK_MERGE_STATUS,
654 synchronizationState,
655 conflictInfoList: data.conflictInfoList
662 forceBreadCrumbsUpdate(dispatch) {
664 type: actionTypes.SET_CURRENT_SCREEN,
666 forceBreadCrumbsUpdate: true
671 updateCurrentScreenVersion(dispatch, version) {
673 type: actionTypes.SET_CURRENT_SCREEN_VERSION,
679 export default OnboardingActionHelper;