[SDC] Onboarding 1710 rebase.
[sdc.git] / openecomp-ui / src / sdc-app / onboarding / softwareProduct / deployment / SoftwareProductDeploymentActionHelper.js
1 import {actionTypes} from './SoftwareProductDeploymentConstants.js';
2 import {actionTypes as GlobalModalActions} from 'nfvo-components/modal/GlobalModalConstants.js';
3 import {modalContentMapper} from 'sdc-app/common/modal/ModalContentMapper.js';
4 import RestAPIUtil from 'nfvo-utils/RestAPIUtil.js';
5 import Configuration from 'sdc-app/config/Configuration.js';
6 import pickBy from 'lodash/pickBy';
7
8 function baseUrl(vspId, version) {
9         const versionId = version.id;
10         const restPrefix = Configuration.get('restPrefix');
11         return `${restPrefix}/v1.0/vendor-software-products/${vspId}/versions/${versionId}/deployment-flavors`;
12 }
13
14 function fetchDeploymentFlavorsList({softwareProductId, version}) {
15         return RestAPIUtil.fetch(`${baseUrl(softwareProductId, version)}`);
16 }
17
18 function fetchDeploymentFlavor({softwareProductId, deploymentFlavorId, version}) {
19         return RestAPIUtil.fetch(`${baseUrl(softwareProductId, version)}/${deploymentFlavorId}`);
20 }
21
22 function deleteDeploymentFlavor({softwareProductId, deploymentFlavorId, version}) {
23         return RestAPIUtil.destroy(`${baseUrl(softwareProductId, version)}/${deploymentFlavorId}`);
24 }
25
26 function createDeploymentFlavor({softwareProductId, data, version}) {
27         return RestAPIUtil.post(`${baseUrl(softwareProductId, version)}`, data);
28 }
29
30 function editDeploymentFlavor({softwareProductId, deploymentFlavorId, data, version}) {
31         return RestAPIUtil.put(`${baseUrl(softwareProductId, version)}/${deploymentFlavorId}`, data);
32 }
33
34 const SoftwareProductDeploymentActionHelper = {
35         fetchDeploymentFlavorsList(dispatch, {softwareProductId, version}) {
36                 return fetchDeploymentFlavorsList({softwareProductId, version}).then(response => {
37                         dispatch({
38                                 type: actionTypes.FETCH_SOFTWARE_PRODUCT_DEPLOYMENT_FLAVORS,
39                                 deploymentFlavors: response.results
40                         });
41                 });
42         },
43
44         fetchDeploymentFlavor({softwareProductId, deploymentFlavorId, version}) {
45                 return fetchDeploymentFlavor({softwareProductId, deploymentFlavorId, version});
46         },
47
48         deleteDeploymentFlavor(dispatch, {softwareProductId, deploymentFlavorId, version}) {
49                 return deleteDeploymentFlavor({softwareProductId, deploymentFlavorId, version}).then(() => {
50                         return SoftwareProductDeploymentActionHelper.fetchDeploymentFlavorsList(dispatch, {softwareProductId, version});
51                 });
52         },
53
54         createDeploymentFlavor(dispatch, {softwareProductId, data, version}) {
55                 return createDeploymentFlavor({softwareProductId, data, version}).then(() => {
56                         return SoftwareProductDeploymentActionHelper.fetchDeploymentFlavorsList(dispatch, {softwareProductId, version});
57                 });
58         },
59
60         editDeploymentFlavor(dispatch, {softwareProductId, deploymentFlavorId, data, version}) {
61                 let dataWithoutId = pickBy(data, (val, key) => key !== 'id');
62                 return editDeploymentFlavor({softwareProductId, deploymentFlavorId, data: dataWithoutId, version}).then(() => {
63                         return SoftwareProductDeploymentActionHelper.fetchDeploymentFlavorsList(dispatch, {softwareProductId, version});
64                 });
65         },
66
67         closeDeploymentFlavorEditor(dispatch) {
68                 dispatch({
69                         type: actionTypes.deploymentFlavorEditor.SOFTWARE_PRODUCT_DEPLOYMENT_CLEAR_DATA
70                 });
71                 dispatch({
72                         type: GlobalModalActions.GLOBAL_MODAL_CLOSE
73                 });
74         },
75
76         openDeploymentFlavorEditor(dispatch, {softwareProductId, modalClassName, deploymentFlavor = {}, componentsList, isEdit = false, version}) {
77                 let alteredDeploymentFlavor = {...deploymentFlavor};
78                 if (componentsList.length) {
79                         alteredDeploymentFlavor = {...alteredDeploymentFlavor, componentComputeAssociations: deploymentFlavor.componentComputeAssociations ?
80                                 [{...deploymentFlavor.componentComputeAssociations[0], componentId: componentsList[0].id}]
81                                 :
82                                 [{componentId: componentsList[0].id, computeFlavorId: null}]
83                         };
84                 }
85                 dispatch({
86                         type: actionTypes.deploymentFlavorEditor.SOFTWARE_PRODUCT_DEPLOYMENT_FILL_DATA,
87                         deploymentFlavor: alteredDeploymentFlavor
88                 });
89                 dispatch({
90                         type: GlobalModalActions.GLOBAL_MODAL_SHOW,
91                         data: {
92                                 modalComponentName: modalContentMapper.DEPLOYMENT_FLAVOR_EDITOR,
93                                 modalComponentProps: {softwareProductId, version},
94                                 modalClassName,
95                                 title: isEdit ? 'Edit Deployment Flavor' : 'Create a New Deployment Flavor'
96                         }
97                 });
98         },
99 };
100
101 export  default SoftwareProductDeploymentActionHelper;