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';
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`;
14 function fetchDeploymentFlavorsList({ softwareProductId, version }) {
15 return RestAPIUtil.fetch(`${baseUrl(softwareProductId, version)}`);
18 function fetchDeploymentFlavor({
23 return RestAPIUtil.fetch(
24 `${baseUrl(softwareProductId, version)}/${deploymentFlavorId}`
28 function deleteDeploymentFlavor({
33 return RestAPIUtil.destroy(
34 `${baseUrl(softwareProductId, version)}/${deploymentFlavorId}`
38 function createDeploymentFlavor({ softwareProductId, data, version }) {
39 return RestAPIUtil.post(`${baseUrl(softwareProductId, version)}`, data);
42 function editDeploymentFlavor({
48 return RestAPIUtil.put(
49 `${baseUrl(softwareProductId, version)}/${deploymentFlavorId}`,
54 const SoftwareProductDeploymentActionHelper = {
55 fetchDeploymentFlavorsList(dispatch, { softwareProductId, version }) {
56 return fetchDeploymentFlavorsList({ softwareProductId, version }).then(
59 type: actionTypes.FETCH_SOFTWARE_PRODUCT_DEPLOYMENT_FLAVORS,
60 deploymentFlavors: response.results
66 fetchDeploymentFlavor({ softwareProductId, deploymentFlavorId, version }) {
67 return fetchDeploymentFlavor({
74 deleteDeploymentFlavor(
76 { softwareProductId, deploymentFlavorId, version }
78 return deleteDeploymentFlavor({
83 return SoftwareProductDeploymentActionHelper.fetchDeploymentFlavorsList(
85 { softwareProductId, version }
90 createDeploymentFlavor(dispatch, { softwareProductId, data, version }) {
91 return createDeploymentFlavor({
96 return SoftwareProductDeploymentActionHelper.fetchDeploymentFlavorsList(
98 { softwareProductId, version }
103 editDeploymentFlavor(
105 { softwareProductId, deploymentFlavorId, data, version }
107 let dataWithoutId = pickBy(data, (val, key) => key !== 'id');
108 return editDeploymentFlavor({
114 return SoftwareProductDeploymentActionHelper.fetchDeploymentFlavorsList(
116 { softwareProductId, version }
121 closeDeploymentFlavorEditor(dispatch) {
124 actionTypes.deploymentFlavorEditor
125 .SOFTWARE_PRODUCT_DEPLOYMENT_CLEAR_DATA
128 type: GlobalModalActions.GLOBAL_MODAL_CLOSE
132 openDeploymentFlavorEditor(
137 deploymentFlavor = {},
143 let alteredDeploymentFlavor = { ...deploymentFlavor };
144 if (componentsList.length) {
145 alteredDeploymentFlavor = {
146 ...alteredDeploymentFlavor,
147 componentComputeAssociations: deploymentFlavor.componentComputeAssociations
151 .componentComputeAssociations[0],
152 componentId: componentsList[0].id
157 componentId: componentsList[0].id,
158 computeFlavorId: null
165 actionTypes.deploymentFlavorEditor
166 .SOFTWARE_PRODUCT_DEPLOYMENT_FILL_DATA,
167 deploymentFlavor: alteredDeploymentFlavor
170 type: GlobalModalActions.GLOBAL_MODAL_SHOW,
172 modalComponentName: modalContentMapper.DEPLOYMENT_FLAVOR_EDITOR,
173 modalComponentProps: { softwareProductId, version },
176 ? 'Edit Deployment Flavor'
177 : 'Create a New Deployment Flavor'
183 export default SoftwareProductDeploymentActionHelper;