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({softwareProductId, deploymentFlavorId, version}) {
19 return RestAPIUtil.fetch(`${baseUrl(softwareProductId, version)}/${deploymentFlavorId}`);
22 function deleteDeploymentFlavor({softwareProductId, deploymentFlavorId, version}) {
23 return RestAPIUtil.destroy(`${baseUrl(softwareProductId, version)}/${deploymentFlavorId}`);
26 function createDeploymentFlavor({softwareProductId, data, version}) {
27 return RestAPIUtil.post(`${baseUrl(softwareProductId, version)}`, data);
30 function editDeploymentFlavor({softwareProductId, deploymentFlavorId, data, version}) {
31 return RestAPIUtil.put(`${baseUrl(softwareProductId, version)}/${deploymentFlavorId}`, data);
34 const SoftwareProductDeploymentActionHelper = {
35 fetchDeploymentFlavorsList(dispatch, {softwareProductId, version}) {
36 return fetchDeploymentFlavorsList({softwareProductId, version}).then(response => {
38 type: actionTypes.FETCH_SOFTWARE_PRODUCT_DEPLOYMENT_FLAVORS,
39 deploymentFlavors: response.results
44 fetchDeploymentFlavor({softwareProductId, deploymentFlavorId, version}) {
45 return fetchDeploymentFlavor({softwareProductId, deploymentFlavorId, version});
48 deleteDeploymentFlavor(dispatch, {softwareProductId, deploymentFlavorId, version}) {
49 return deleteDeploymentFlavor({softwareProductId, deploymentFlavorId, version}).then(() => {
50 return SoftwareProductDeploymentActionHelper.fetchDeploymentFlavorsList(dispatch, {softwareProductId, version});
54 createDeploymentFlavor(dispatch, {softwareProductId, data, version}) {
55 return createDeploymentFlavor({softwareProductId, data, version}).then(() => {
56 return SoftwareProductDeploymentActionHelper.fetchDeploymentFlavorsList(dispatch, {softwareProductId, version});
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});
67 closeDeploymentFlavorEditor(dispatch) {
69 type: actionTypes.deploymentFlavorEditor.SOFTWARE_PRODUCT_DEPLOYMENT_CLEAR_DATA
72 type: GlobalModalActions.GLOBAL_MODAL_CLOSE
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}]
82 [{componentId: componentsList[0].id, computeFlavorId: null}]
86 type: actionTypes.deploymentFlavorEditor.SOFTWARE_PRODUCT_DEPLOYMENT_FILL_DATA,
87 deploymentFlavor: alteredDeploymentFlavor
90 type: GlobalModalActions.GLOBAL_MODAL_SHOW,
92 modalComponentName: modalContentMapper.DEPLOYMENT_FLAVOR_EDITOR,
93 modalComponentProps: {softwareProductId, version},
95 title: isEdit ? 'Edit Deployment Flavor' : 'Create a New Deployment Flavor'
101 export default SoftwareProductDeploymentActionHelper;