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';
52 function setCurrentScreen(dispatch, screen, props = {}) {
54 type: actionTypes.SET_CURRENT_SCREEN,
58 forceBreadCrumbsUpdate: true
63 export function updateCurrentScreenProps(dispatch, props = {}) {
65 type: actionTypes.UPDATE_CURRENT_SCREEN_PROPS,
70 const OnboardingActionHelper = {
71 loadItemsLists(dispatch) {
72 LicenseModelActionHelper.fetchLicenseModels(dispatch);
73 LicenseModelActionHelper.fetchFinalizedLicenseModels(dispatch);
74 LicenseModelActionHelper.fetchArchivedLicenseModels(dispatch);
75 SoftwareProductActionHelper.fetchSoftwareProductList(dispatch);
76 SoftwareProductActionHelper.fetchFinalizedSoftwareProductList(dispatch);
77 SoftwareProductActionHelper.fetchArchivedSoftwareProductList(dispatch);
80 async navigateToOnboardingCatalog(dispatch) {
81 await FeaturesActionHelper.getFeaturesList(dispatch);
82 UsersActionHelper.fetchUsersList(dispatch);
83 this.loadItemsLists(dispatch);
84 setCurrentScreen(dispatch, enums.SCREEN.ONBOARDING_CATALOG);
86 type: filterActionTypes.FILTER_DATA_CHANGED,
91 autoSaveBeforeNavigate(
93 { softwareProductId, version, vspComponentId, dataToSave }
95 if (softwareProductId) {
97 return SoftwareProductComponentsActionHelper.updateSoftwareProductComponent(
103 componentData: dataToSave.componentData,
104 qdata: dataToSave.qdata
108 return SoftwareProductActionHelper.updateSoftwareProduct(dispatch, {
109 softwareProduct: dataToSave.softwareProduct,
111 qdata: dataToSave.qdata
114 return Promise.resolve();
117 navigateToLicenseModelOverview(
119 { licenseModelId, version, status }
122 * TODO change to specific rest
125 LicenseModelActionHelper.fetchLicenseModelById(dispatch, {
129 LicenseModelActionHelper.fetchLicenseModelItems(dispatch, {
135 enums.SCREEN.LICENSE_MODEL_OVERVIEW,
136 { licenseModelId, version, status }
139 licenseModelOverviewActionHelper.selectVLMListView(dispatch, {
144 navigateToLicenseAgreements(dispatch, { licenseModelId, version, status }) {
145 LicenseAgreementActionHelper.fetchLicenseAgreementList(dispatch, {
149 LicenseModelActionHelper.fetchLicenseModelById(dispatch, {
153 setCurrentScreen(dispatch, enums.SCREEN.LICENSE_AGREEMENTS, {
161 navigateToFeatureGroups(dispatch, { licenseModelId, version, status }) {
162 FeatureGroupsActionHelper.fetchFeatureGroupsList(dispatch, {
166 setCurrentScreen(dispatch, enums.SCREEN.FEATURE_GROUPS, {
173 navigateToEntitlementPools(dispatch, { licenseModelId, version, status }) {
174 EntitlementPoolsActionHelper.fetchEntitlementPoolsList(dispatch, {
178 setCurrentScreen(dispatch, enums.SCREEN.ENTITLEMENT_POOLS, {
185 navigateToLicenseKeyGroups(dispatch, { licenseModelId, version, status }) {
186 LicenseKeyGroupsActionHelper.fetchLicenseKeyGroupsList(dispatch, {
190 setCurrentScreen(dispatch, enums.SCREEN.LICENSE_KEY_GROUPS, {
197 navigateToLicenseModelActivityLog(
199 { licenseModelId, version, status }
201 ActivityLogActionHelper.fetchActivityLog(dispatch, {
202 itemId: licenseModelId,
203 versionId: version.id
205 setCurrentScreen(dispatch, enums.SCREEN.ACTIVITY_LOG, {
211 async getUpdatedSoftwareProduct(dispatch, { softwareProductId, version }) {
212 const response = await SoftwareProductActionHelper.fetchSoftwareProduct(
219 let newResponse = false;
220 let newVersion = false;
221 // checking if there was healing and a new version should be open
222 if (response[0].version !== version.id) {
223 newResponse = await SoftwareProductActionHelper.fetchSoftwareProduct(
227 version: { ...version, id: response[0].version }
230 newVersion = await ItemsHelper.fetchVersion({
231 itemId: softwareProductId,
232 versionId: response[0].version
236 notificationActions.showInfo({
238 'This is the current version of the VSP, as a result of healing'
243 return Promise.resolve(
245 ? { softwareProduct: newResponse[0], newVersion }
246 : { softwareProduct: response[0], newVersion: version }
249 async navigateToSoftwareProductLandingPage(
251 { softwareProductId, version, status }
253 SoftwareProductComponentsActionHelper.clearComponentsStore(dispatch);
255 * TODO remove when Filter toggle will be removed
257 LicenseModelActionHelper.fetchFinalizedLicenseModels(dispatch);
262 } = await this.getUpdatedSoftwareProduct(dispatch, {
267 let { vendorId: licenseModelId, licensingVersion } = softwareProduct;
268 SoftwareProductActionHelper.loadSoftwareProductDetailsData(dispatch, {
272 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponents(
274 { softwareProductId, version: newVersion }
276 if (softwareProduct.onboardingOrigin === onboardingOriginTypes.ZIP) {
277 SoftwareProductActionHelper.loadSoftwareProductHeatCandidate(
279 { softwareProductId, version: newVersion }
282 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_LANDING_PAGE, {
290 navigateToSoftwareProductDetails(
292 { softwareProductId, version, status }
294 SoftwareProductActionHelper.fetchSoftwareProduct(dispatch, {
297 }).then(response => {
298 let { vendorId: licenseModelId, licensingVersion } = response[0];
299 SoftwareProductActionHelper.loadLicensingVersionsList(dispatch, {
302 SoftwareProductActionHelper.loadSoftwareProductDetailsData(
304 { licenseModelId, licensingVersion }
306 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_DETAILS, {
314 navigateToSoftwareProductAttachmentsSetupTab(
316 { softwareProductId, version, status }
318 SoftwareProductActionHelper.loadSoftwareProductHeatCandidate(dispatch, {
322 SoftwareProductAttachmentsActionHelper.setActiveTab(dispatch, {
323 activeTab: attachmentsTabsMapping.SETUP
325 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS, {
331 navigateToSoftwareProductAttachmentsValidationTab(
333 { softwareProductId, version, status }
335 SoftwareProductActionHelper.processAndValidateHeatCandidate(dispatch, {
339 SoftwareProductAttachmentsActionHelper.setActiveTab(dispatch, {
340 activeTab: attachmentsTabsMapping.VALIDATION
344 enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS,
345 { softwareProductId, version, status }
350 navigateToSoftwareProductProcesses(
352 { softwareProductId, version, status }
354 if (softwareProductId) {
355 SoftwareProductProcessesActionHelper.fetchProcessesList(dispatch, {
360 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_PROCESSES, {
367 navigateToSoftwareProductNetworks(
369 { softwareProductId, version, status }
371 if (softwareProductId) {
372 SoftwareProductNetworksActionHelper.fetchNetworksList(dispatch, {
377 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_NETWORKS, {
384 navigateToSoftwareProductDependencies(
386 { softwareProductId, version, status }
388 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponents(
390 { softwareProductId, version }
392 if (result.listCount >= 2) {
393 SoftwareProductDependenciesActionHelper.fetchDependencies(
395 { softwareProductId, version }
399 enums.SCREEN.SOFTWARE_PRODUCT_DEPENDENCIES,
400 { softwareProductId, version, status }
403 this.navigateToSoftwareProductLandingPage(dispatch, {
412 navigateToSoftwareProductComponents(
414 { softwareProductId, version, status }
416 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponents(
418 { softwareProductId, version }
420 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS, {
426 navigateToSoftwareProductDeployment(
428 { softwareProductId, version, status }
430 SoftwareProductDeploymentActionHelper.fetchDeploymentFlavorsList(
432 { softwareProductId, version }
434 ComputeFlavorActionHelper.fetchComputesListForVSP(dispatch, {
438 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_DEPLOYMENT, {
444 navigateToSoftwareProductActivityLog(
446 { softwareProductId, version, status }
448 ActivityLogActionHelper.fetchActivityLog(dispatch, {
449 itemId: softwareProductId,
450 versionId: version.id
452 setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_ACTIVITY_LOG, {
459 navigateToSoftwareProductComponentProcesses(
461 { softwareProductId, componentId, version, status }
463 if (componentId && softwareProductId) {
464 SoftwareProductComponentProcessesActionHelper.fetchProcessesList(
466 { componentId, softwareProductId, version }
471 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_PROCESSES,
472 { softwareProductId, componentId, version, status }
476 navigateToSoftwareProductComponentMonitoring(
478 { softwareProductId, version, componentId, status }
480 if (componentId && softwareProductId && version) {
481 SoftwareProductComponentsMonitoringAction.fetchExistingFiles(
483 { componentId, softwareProductId, version }
488 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_MONITORING,
489 { softwareProductId, componentId, version, status }
493 navigateToComponentStorage(
495 { softwareProductId, componentId, version, status }
497 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponent(
499 { softwareProductId, vspComponentId: componentId, version }
503 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_STORAGE,
504 { softwareProductId, version, componentId, status }
508 navigateToComponentCompute(
510 { softwareProductId, componentId, version, status }
512 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponent(
514 { softwareProductId, vspComponentId: componentId, version }
516 if (componentId && softwareProductId) {
517 ComputeFlavorActionHelper.fetchComputesList(dispatch, {
525 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_COMPUTE,
526 { softwareProductId, version, componentId, status }
530 navigateToComponentNetwork(
532 { softwareProductId, componentId, version, status }
534 SoftwareProductComponentsNetworkActionHelper.fetchNICsList(dispatch, {
541 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_NETWORK,
542 { softwareProductId, version, componentId, status }
546 navigateToSoftwareProductComponentGeneral(
548 { softwareProductId, componentId, version, status }
550 if (componentId && softwareProductId) {
551 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponent(
553 { softwareProductId, vspComponentId: componentId, version }
558 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_GENERAL,
559 { softwareProductId, version, componentId, status }
563 navigateToSoftwareProductComponentGeneralAndUpdateLeftPanel(
565 { softwareProductId, componentId, version, status }
567 this.navigateToSoftwareProductComponentGeneral(dispatch, {
574 type: SoftwareProductActionTypes.TOGGLE_NAVIGATION_ITEM,
576 [enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS]: true,
577 [enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS +
584 navigateToComponentLoadBalancing(
586 { softwareProductId, componentId, version, status }
588 SoftwareProductComponentsActionHelper.fetchSoftwareProductComponent(
590 { softwareProductId, vspComponentId: componentId, version }
594 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_LOAD_BALANCING,
595 { softwareProductId, version, componentId, status }
599 navigateToComponentImages(
601 { softwareProductId, componentId, version, status }
603 SoftwareProductComponentsImageActionHelper.fetchImagesList(dispatch, {
610 enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_IMAGES,
611 { softwareProductId, version, componentId, status }
615 async navigateToVersionsPage(
617 { itemType, itemId, itemName, additionalProps, users }
619 PermissionsActionHelper.fetchItemUsers(dispatch, {
623 VersionsPageActionHelper.selectNone(dispatch);
624 await VersionsPageActionHelper.fetchVersions(dispatch, {
628 const items = await ItemsHelper.fetchItem(itemId);
629 setCurrentScreen(dispatch, enums.SCREEN.VERSIONS_PAGE, {
630 status: items.status,
634 vendorName: items.properties.vendorName,
635 vendorId: items.properties.vendorId,
640 checkMergeStatus(dispatch, { itemId, versionId, version }) {
641 return ItemsHelper.fetchVersion({ itemId, versionId }).then(
643 let state = (response && response.state) || {};
644 let { synchronizationState } = state;
645 // let inMerge = synchronizationState === SyncStates.MERGE;
646 MergeEditorActionHelper.fetchConflicts(dispatch, {
651 type: actionTypes.CHECK_MERGE_STATUS,
652 synchronizationState,
653 conflictInfoList: data.conflictInfoList
660 forceBreadCrumbsUpdate(dispatch) {
662 type: actionTypes.SET_CURRENT_SCREEN,
664 forceBreadCrumbsUpdate: true
669 updateCurrentScreenVersion(dispatch, version) {
671 type: actionTypes.SET_CURRENT_SCREEN_VERSION,
677 export default OnboardingActionHelper;