| /*- |
| * ============LICENSE_START======================================================= |
| * SDC |
| * ================================================================================ |
| * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. |
| * ================================================================================ |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * ============LICENSE_END========================================================= |
| */ |
| |
| import RestAPIUtil from 'nfvo-utils/RestAPIUtil.js'; |
| import Configuration from 'sdc-app/config/Configuration.js'; |
| import {actionTypes as entitlementPoolsActionTypes } from './EntitlementPoolsConstants.js'; |
| import LicenseModelActionHelper from 'sdc-app/onboarding/licenseModel/LicenseModelActionHelper.js'; |
| |
| function baseUrl(licenseModelId) { |
| const restPrefix = Configuration.get('restPrefix'); |
| return `${restPrefix}/v1.0/vendor-license-models/${licenseModelId}/entitlement-pools`; |
| } |
| |
| function fetchEntitlementPoolsList(licenseModelId, version) { |
| let versionQuery = version ? `?version=${version}` : ''; |
| return RestAPIUtil.fetch(`${baseUrl(licenseModelId)}${versionQuery}`); |
| } |
| |
| function postEntitlementPool(licenseModelId, entitlementPool) { |
| return RestAPIUtil.create(baseUrl(licenseModelId), { |
| name: entitlementPool.name, |
| description: entitlementPool.description, |
| thresholdValue: entitlementPool.thresholdValue, |
| thresholdUnits: entitlementPool.thresholdUnits, |
| entitlementMetric: entitlementPool.entitlementMetric, |
| increments: entitlementPool.increments, |
| aggregationFunction: entitlementPool.aggregationFunction, |
| operationalScope: entitlementPool.operationalScope, |
| time: entitlementPool.time, |
| manufacturerReferenceNumber: entitlementPool.manufacturerReferenceNumber |
| }); |
| } |
| |
| |
| function putEntitlementPool(licenseModelId, previousEntitlementPool, entitlementPool) { |
| return RestAPIUtil.save(`${baseUrl(licenseModelId)}/${entitlementPool.id}`, { |
| name: entitlementPool.name, |
| description: entitlementPool.description, |
| thresholdValue: entitlementPool.thresholdValue, |
| thresholdUnits: entitlementPool.thresholdUnits, |
| entitlementMetric: entitlementPool.entitlementMetric, |
| increments: entitlementPool.increments, |
| aggregationFunction: entitlementPool.aggregationFunction, |
| operationalScope: entitlementPool.operationalScope, |
| time: entitlementPool.time, |
| manufacturerReferenceNumber: entitlementPool.manufacturerReferenceNumber |
| }); |
| } |
| |
| function deleteEntitlementPool(licenseModelId, entitlementPoolId) { |
| return RestAPIUtil.destroy(`${baseUrl(licenseModelId)}/${entitlementPoolId}`); |
| } |
| |
| |
| export default { |
| fetchEntitlementPoolsList(dispatch, {licenseModelId, version}) { |
| return fetchEntitlementPoolsList(licenseModelId, version).then(response => dispatch({ |
| type: entitlementPoolsActionTypes.ENTITLEMENT_POOLS_LIST_LOADED, |
| response |
| })); |
| }, |
| |
| openEntitlementPoolsEditor(dispatch, {entitlementPool} = {}) { |
| dispatch({ |
| type: entitlementPoolsActionTypes.entitlementPoolsEditor.OPEN, |
| entitlementPool |
| }); |
| }, |
| |
| deleteEntitlementPool(dispatch, {licenseModelId, entitlementPoolId}) { |
| return deleteEntitlementPool(licenseModelId, entitlementPoolId).then(() => { |
| dispatch({ |
| type: entitlementPoolsActionTypes.DELETE_ENTITLEMENT_POOL, |
| entitlementPoolId |
| }); |
| }); |
| }, |
| |
| entitlementPoolsEditorDataChanged(dispatch, {deltaData}) { |
| dispatch({ |
| type: entitlementPoolsActionTypes.entitlementPoolsEditor.DATA_CHANGED, |
| deltaData |
| }); |
| }, |
| |
| closeEntitlementPoolsEditor(dispatch) { |
| dispatch({ |
| type: entitlementPoolsActionTypes.entitlementPoolsEditor.CLOSE |
| }); |
| }, |
| |
| saveEntitlementPool(dispatch, {licenseModelId, previousEntitlementPool, entitlementPool}) { |
| if (previousEntitlementPool) { |
| return putEntitlementPool(licenseModelId, previousEntitlementPool, entitlementPool).then(() => { |
| dispatch({ |
| type: entitlementPoolsActionTypes.EDIT_ENTITLEMENT_POOL, |
| entitlementPool |
| }); |
| }); |
| } |
| else { |
| return postEntitlementPool(licenseModelId, entitlementPool).then(response => { |
| dispatch({ |
| type: entitlementPoolsActionTypes.ADD_ENTITLEMENT_POOL, |
| entitlementPool: { |
| ...entitlementPool, |
| id: response.value |
| } |
| }); |
| }); |
| } |
| }, |
| |
| hideDeleteConfirm(dispatch) { |
| dispatch({ |
| type: entitlementPoolsActionTypes.ENTITLEMENT_POOLS_DELETE_CONFIRM, |
| entitlementPoolToDelete: false |
| }); |
| }, |
| openDeleteEntitlementPoolConfirm(dispatch, {entitlementPool}) { |
| dispatch({ |
| type: entitlementPoolsActionTypes.ENTITLEMENT_POOLS_DELETE_CONFIRM, |
| entitlementPoolToDelete: entitlementPool |
| }); |
| }, |
| |
| switchVersion(dispatch, {licenseModelId, version}) { |
| LicenseModelActionHelper.fetchLicenseModelById(dispatch, {licenseModelId, version}).then(() => { |
| this.fetchEntitlementPoolsList(dispatch, {licenseModelId, version}); |
| }); |
| } |
| }; |