blob: a7c95f608d98139aca4255bd0c180fc11ef6f9d8 [file] [log] [blame]
AviZi280f8012017-06-09 02:39:56 +03001/*!
Michael Landoefa037d2017-02-19 12:57:33 +02002 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
AviZi280f8012017-06-09 02:39:56 +03003 *
Michael Landoefa037d2017-02-19 12:57:33 +02004 * 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
AviZi280f8012017-06-09 02:39:56 +03007 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
Michael Landoefa037d2017-02-19 12:57:33 +020010 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
AviZi280f8012017-06-09 02:39:56 +030012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
13 * or implied. See the License for the specific language governing
14 * permissions and limitations under the License.
Michael Landoefa037d2017-02-19 12:57:33 +020015 */
Michael Landoefa037d2017-02-19 12:57:33 +020016import RestAPIUtil from 'nfvo-utils/RestAPIUtil.js';
17import Configuration from 'sdc-app/config/Configuration.js';
18import {actionTypes as entitlementPoolsActionTypes } from './EntitlementPoolsConstants.js';
19import LicenseModelActionHelper from 'sdc-app/onboarding/licenseModel/LicenseModelActionHelper.js';
20
AviZi280f8012017-06-09 02:39:56 +030021function baseUrl(licenseModelId, version) {
Michael Landoefa037d2017-02-19 12:57:33 +020022 const restPrefix = Configuration.get('restPrefix');
AviZi280f8012017-06-09 02:39:56 +030023 const {id: versionId} = version;
24 return `${restPrefix}/v1.0/vendor-license-models/${licenseModelId}/versions/${versionId}/entitlement-pools`;
Michael Landoefa037d2017-02-19 12:57:33 +020025}
26
AviZi280f8012017-06-09 02:39:56 +030027function fetchEntitlementPoolsList(licenseModelId, version) {
28 return RestAPIUtil.fetch(`${baseUrl(licenseModelId, version)}`);
Michael Landoefa037d2017-02-19 12:57:33 +020029}
30
AviZi280f8012017-06-09 02:39:56 +030031function postEntitlementPool(licenseModelId, entitlementPool, version) {
32 return RestAPIUtil.post(baseUrl(licenseModelId, version), {
Michael Landoefa037d2017-02-19 12:57:33 +020033 name: entitlementPool.name,
34 description: entitlementPool.description,
35 thresholdValue: entitlementPool.thresholdValue,
36 thresholdUnits: entitlementPool.thresholdUnits,
37 entitlementMetric: entitlementPool.entitlementMetric,
38 increments: entitlementPool.increments,
39 aggregationFunction: entitlementPool.aggregationFunction,
40 operationalScope: entitlementPool.operationalScope,
41 time: entitlementPool.time,
Avi Zivb8e2faf2017-07-18 19:45:38 +030042 manufacturerReferenceNumber: entitlementPool.manufacturerReferenceNumber,
43 startDate: entitlementPool.startDate,
44 expiryDate: entitlementPool.expiryDate
Michael Landoefa037d2017-02-19 12:57:33 +020045 });
46}
47
48
AviZi280f8012017-06-09 02:39:56 +030049function putEntitlementPool(licenseModelId, previousEntitlementPool, entitlementPool, version) {
50 return RestAPIUtil.put(`${baseUrl(licenseModelId, version)}/${entitlementPool.id}`, {
Michael Landoefa037d2017-02-19 12:57:33 +020051 name: entitlementPool.name,
52 description: entitlementPool.description,
53 thresholdValue: entitlementPool.thresholdValue,
54 thresholdUnits: entitlementPool.thresholdUnits,
55 entitlementMetric: entitlementPool.entitlementMetric,
56 increments: entitlementPool.increments,
57 aggregationFunction: entitlementPool.aggregationFunction,
58 operationalScope: entitlementPool.operationalScope,
59 time: entitlementPool.time,
Avi Zivb8e2faf2017-07-18 19:45:38 +030060 manufacturerReferenceNumber: entitlementPool.manufacturerReferenceNumber,
61 startDate: entitlementPool.startDate,
62 expiryDate: entitlementPool.expiryDate
Michael Landoefa037d2017-02-19 12:57:33 +020063 });
64}
65
AviZi280f8012017-06-09 02:39:56 +030066function deleteEntitlementPool(licenseModelId, entitlementPoolId, version) {
67 return RestAPIUtil.destroy(`${baseUrl(licenseModelId, version)}/${entitlementPoolId}`);
Michael Landoefa037d2017-02-19 12:57:33 +020068}
69
70
71export default {
72 fetchEntitlementPoolsList(dispatch, {licenseModelId, version}) {
73 return fetchEntitlementPoolsList(licenseModelId, version).then(response => dispatch({
74 type: entitlementPoolsActionTypes.ENTITLEMENT_POOLS_LIST_LOADED,
75 response
76 }));
77 },
78
79 openEntitlementPoolsEditor(dispatch, {entitlementPool} = {}) {
80 dispatch({
81 type: entitlementPoolsActionTypes.entitlementPoolsEditor.OPEN,
82 entitlementPool
83 });
84 },
85
AviZi280f8012017-06-09 02:39:56 +030086 deleteEntitlementPool(dispatch, {licenseModelId, entitlementPoolId, version}) {
87 return deleteEntitlementPool(licenseModelId, entitlementPoolId, version).then(() => {
Michael Landoefa037d2017-02-19 12:57:33 +020088 dispatch({
89 type: entitlementPoolsActionTypes.DELETE_ENTITLEMENT_POOL,
90 entitlementPoolId
91 });
92 });
93 },
94
95 entitlementPoolsEditorDataChanged(dispatch, {deltaData}) {
96 dispatch({
97 type: entitlementPoolsActionTypes.entitlementPoolsEditor.DATA_CHANGED,
98 deltaData
99 });
100 },
101
102 closeEntitlementPoolsEditor(dispatch) {
103 dispatch({
104 type: entitlementPoolsActionTypes.entitlementPoolsEditor.CLOSE
105 });
106 },
107
AviZi280f8012017-06-09 02:39:56 +0300108 saveEntitlementPool(dispatch, {licenseModelId, previousEntitlementPool, entitlementPool, version}) {
Michael Landoefa037d2017-02-19 12:57:33 +0200109 if (previousEntitlementPool) {
AviZi280f8012017-06-09 02:39:56 +0300110 return putEntitlementPool(licenseModelId, previousEntitlementPool, entitlementPool, version).then(() => {
Michael Landoefa037d2017-02-19 12:57:33 +0200111 dispatch({
112 type: entitlementPoolsActionTypes.EDIT_ENTITLEMENT_POOL,
113 entitlementPool
114 });
115 });
116 }
117 else {
AviZi280f8012017-06-09 02:39:56 +0300118 return postEntitlementPool(licenseModelId, entitlementPool, version).then(response => {
Michael Landoefa037d2017-02-19 12:57:33 +0200119 dispatch({
120 type: entitlementPoolsActionTypes.ADD_ENTITLEMENT_POOL,
121 entitlementPool: {
122 ...entitlementPool,
AviZi280f8012017-06-09 02:39:56 +0300123 referencingFeatureGroups: [],
Michael Landoefa037d2017-02-19 12:57:33 +0200124 id: response.value
125 }
126 });
127 });
128 }
129 },
130
131 hideDeleteConfirm(dispatch) {
132 dispatch({
133 type: entitlementPoolsActionTypes.ENTITLEMENT_POOLS_DELETE_CONFIRM,
134 entitlementPoolToDelete: false
135 });
136 },
137 openDeleteEntitlementPoolConfirm(dispatch, {entitlementPool}) {
138 dispatch({
139 type: entitlementPoolsActionTypes.ENTITLEMENT_POOLS_DELETE_CONFIRM,
140 entitlementPoolToDelete: entitlementPool
141 });
142 },
143
144 switchVersion(dispatch, {licenseModelId, version}) {
145 LicenseModelActionHelper.fetchLicenseModelById(dispatch, {licenseModelId, version}).then(() => {
146 this.fetchEntitlementPoolsList(dispatch, {licenseModelId, version});
147 });
148 }
149};