summaryrefslogtreecommitdiffstats
path: root/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsActionHelper.js
blob: f1e2f2d956c05c22d1953d4ef9cba79f63c40047 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13

@media only all and (prefers-color-scheme: dark) {
.highlight .hll { background-color: #49483e }
.highlight .c { color: #75715e } /* Comment */
.highlight .err { color: #960050; background-color: #1e0010 } /* Error */
.highlight .k { color: #66d9ef } /* Keyword */
.highlight .l { color: #ae81ff } /* Literal */
.highlight .n { color: #f8f8f2 } /* Name */
.highlight .o { color: #f92672 } /* Operator */
.highlight .p { color: #f8f8f2 } /* Punctuation */
.highlight .ch { color: #75715e } /* Comment.Hashbang */
.highlight .cm { color: #75715e } /* Comment.Multiline */
.highlight .cp { color: #75715e } /* Comment.Preproc */
.highlight .cpf { color: #75715e } /* Comment.PreprocFile */
.highlight .c1 { color: #75715e } /* Comment.Single */
.highlight .cs { color: #75715e } /* Comment.Special */
.highlight .gd { color: #f92672 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gi { color: #a6e22e } /* Generic.Inserted */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #75715e } /* Generic.Subheading */
.highlight .kc { color: #66d9ef } /* Keyword.Constant */
.highlight .kd { color: #66d9ef } /* Keyword.Declaration */
.highlight .kn { color: #f92672 } /* Keyword.Namespace */
.highlight .kp { color: #66d9ef } /* Keyword.Pseudo */
.highlight .kr { color: #66d9ef } /* Keyword.Reserved */
.highlight .kt { color: #66d9ef } /* Keyword.Type */
.highlight .ld { color: #e6db74 } /* Literal.Date */
.highlight .m { color: #ae81ff } /* Literal.Number */
.highlight .s { color: #e6db74 } /* Literal.String */
.highlight .na { color: #a6e22e } /* Name.Attribute */
.highlight .nb { color: #f8f8f2 } /* Name.Builtin */
.highlight .nc { color: #a6e22e } /* Name.Class */
.highlight .no { color: #66d9ef } /* Name.Constant */
.highlight .nd { color: #a6e22e } /* Name.Decorator */
.highlight .ni { color: #f8f8f2 } /* Name.Entity */
.highlight .ne { color: #a6e22e } /* Name.Exception */
.highlight .nf { color: #a6e22e } /* Name.Function */
.highlight .nl { color: #f8f8f2 } /* Name.Label */
.highlight .nn { color: #f8f8f2 } /* Name.Namespace */
.highlight .nx { color: #a6e22e } /* Name.Other */
.highlight .py { color: #f8f8f2 } /* Name.Property */
.highlight .nt { color: #f92672 } /* Name.Tag */
.highlight .nv { color: #f8f8f2 } /* Name.Variable */
.highlight .ow { color: #f92672 } /* Operator.Word */
.highlight .w { color: #f8f8f2 } /* Text.Whitespace */
.highlight .mb { color: #ae81ff } /* Literal.Number.Bin */
.highlight .mf { color: #ae81ff } /* Literal.Number.Float */
.highlight .mh { color: #ae81ff } /* Literal.Number.Hex */
.highlight .mi { color: #ae81ff } /* Literal.Number.Integer */
.highlight .mo { color: #ae81ff } /* Literal.Number.Oct */
.highlight .sa { color: #e6db74 } /* Literal.String.Affix */
.highlight .sb { color: #e6db74 } /* Literal.String.Backtick */
.highlight .sc { color: #e6db74 } /* Literal.String.Char */
.highlight .dl { color: #e6db74 } /* Literal.String.Delimiter */
.highlight .sd { color: #e6db74 } /* Literal.String.Doc */
.highlight .s2 { color: #e6db74 } /* Literal.String.Double */
.highlight .se { color: #ae81ff } /* Literal.String.Escape */
.highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */
.highlight .si { color: #e6db74 } /* Literal.String.Interpol */
.highlight .sx { color: #e6db74 } /* Literal.String.Other */
.highlight .sr { color: #e6db74 } /* Literal.String.Regex */
.highlight .s1 { color: #e6db74 } /* Literal.String.Single */
.highlight .ss { color: #e6db74 } /* Literal.String.Symbol */
.highlight .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #a6e22e } /* Name.Function.Magic */
.highlight .vc { color: #f8f8f2 } /* Name.Variable.Class */
.highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */
.highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */
.highlight .vm { color: #f8f8f2 } /* Name.Variable.Magic */
.highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */
}
@media (prefers-color-scheme: light) {
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
}
# Copyright © 2017 Amdocs, Bell Canada
# Modifications Copyright © 2018 AT&T,VMware
#
# 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.

1. Get the application URL by running these commands:
{{- if .Values.ingress.enabled }}
{{- range .Values.ingress.hosts }}
  http://{{ . }}
{{- end }}
{{- else if contains "NodePort&qu
/*!
 * Copyright © 2016-2018 European Support Limited
 *
 * 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.
 */

import RestAPIUtil from 'nfvo-utils/RestAPIUtil.js';
import Configuration from 'sdc-app/config/Configuration.js';
import { actionTypes as entitlementPoolsActionTypes } from './EntitlementPoolsConstants.js';
import { actionTypes as limitEditorActions } from 'sdc-app/onboarding/licenseModel/limits/LimitEditorConstants.js';
import { default as getValue, getStrValue } from 'nfvo-utils/getValue.js';
import ItemsHelper from 'sdc-app/common/helpers/ItemsHelper.js';
import i18n from 'nfvo-utils/i18n/i18n.js';
import {
    actionTypes as modalActionTypes,
    modalSizes
} from 'nfvo-components/modal/GlobalModalConstants.js';
import { modalContentMapper } from 'sdc-app/common/modal/ModalContentMapper.js';

function baseUrl(licenseModelId, version) {
    const restPrefix = Configuration.get('restPrefix');
    const { id: versionId } = version;
    return `${restPrefix}/v1.0/vendor-license-models/${licenseModelId}/versions/${versionId}/entitlement-pools`;
}

function fetchEntitlementPoolsList(licenseModelId, version) {
    return RestAPIUtil.fetch(`${baseUrl(licenseModelId, version)}`);
}

function postEntitlementPool(licenseModelId, entitlementPool, version) {
    return RestAPIUtil.post(baseUrl(licenseModelId, version), {
        name: entitlementPool.name,
        description: entitlementPool.description,
        type: entitlementPool.type,
        thresholdValue: entitlementPool.thresholdValue,
        thresholdUnits: getValue(entitlementPool.thresholdUnits),
        increments: entitlementPool.increments,
        time: entitlementPool.time,
        startDate: entitlementPool.startDate,
        expiryDate: entitlementPool.expiryDate,
        manufacturerReferenceNumber: entitlementPool.manufacturerReferenceNumber
    });
}

function putEntitlementPool(
    licenseModelId,
    previousEntitlementPool,
    entitlementPool,
    version
) {
    return RestAPIUtil.put(
        `${baseUrl(licenseModelId, version)}/${entitlementPool.id}`,
        {
            name: entitlementPool.name,
            description: entitlementPool.description,
            type: entitlementPool.type,
            thresholdValue: entitlementPool.thresholdValue,
            thresholdUnits: getValue(entitlementPool.thresholdUnits),
            increments: entitlementPool.increments,
            time: entitlementPool.time,
            startDate: entitlementPool.startDate,
            expiryDate: entitlementPool.expiryDate,
            manufacturerReferenceNumber:
                entitlementPool.manufacturerReferenceNumber
        }
    );
}

function deleteEntitlementPool(licenseModelId, entitlementPoolId, version) {
    return RestAPIUtil.destroy(
        `${baseUrl(licenseModelId, version)}/${entitlementPoolId}`
    );
}

function fetchLimitsList(licenseModelId, entitlementPoolId, version) {
    return RestAPIUtil.fetch(
        `${baseUrl(licenseModelId, version)}/${entitlementPoolId}/limits`
    );
}

function deleteLimit(licenseModelId, entitlementPoolId, version, limitId) {
    return RestAPIUtil.destroy(
        `${baseUrl(
            licenseModelId,
            version
        )}/${entitlementPoolId}/limits/${limitId}`
    );
}

function postLimit(licenseModelId, entitlementPoolId, version, limit) {
    return RestAPIUtil.post(
        `${baseUrl(licenseModelId, version)}/${entitlementPoolId}/limits`,
        {
            name: limit.name,
            type: limit.type,
            description: limit.description,
            metric: getStrValue(limit.metric),
            value: limit.value,
            unit: getStrValue(limit.unit),
            aggregationFunction: getValue(limit.aggregationFunction),
            time: getValue(limit.time)
        }
    );
}

function putLimit(licenseModelId, entitlementPoolId, version, limit) {
    return RestAPIUtil.put(
        `${baseUrl(licenseModelId, version)}/${entitlementPoolId}/limits/${
            limit.id
        }`,
        {
            name: limit.name,
            type: limit.type,
            description: limit.description,
            metric: getStrValue(limit.metric),
            value: limit.value,
            unit: getStrValue(limit.unit),
            aggregationFunction: getValue(limit.aggregationFunction),
            time: getValue(limit.time)
        }
    );
}

const EntitlementPoolsActionHelper = {
    fetchEntitlementPoolsList(dispatch, { licenseModelId, version }) {
        return fetchEntitlementPoolsList(licenseModelId, version).then(
            response =>
                dispatch({
                    type:
                        entitlementPoolsActionTypes.ENTITLEMENT_POOLS_LIST_LOADED,
                    response
                })
        );
    },

    openEntitlementPoolsEditor(
        dispatch,
        { entitlementPool, licenseModelId, version, isReadOnlyMode } = {}
    ) {
        if (licenseModelId && version && entitlementPool) {
            this.fetchLimits(dispatch, {
                licenseModelId,
                version,
                entitlementPool
            });
        }
        dispatch({
            type: entitlementPoolsActionTypes.entitlementPoolsEditor.OPEN,
            entitlementPool
        });
        dispatch({
            type: modalActionTypes.GLOBAL_MODAL_SHOW,
            data: {
                modalComponentName: modalContentMapper.EP_EDITOR,
                modalComponentProps: {
                    version,
                    licenseModelId,
                    isReadOnlyMode,
                    size: modalSizes.LARGE
                },
                title:
                    licenseModelId && version && entitlementPool
                        ? i18n('Edit Entitlement Pool')
                        : i18n('Create New Entitlement Pool')
            }
        });
    },

    async deleteEntitlementPool(
        dispatch,
        { licenseModelId, entitlementPoolId, version }
    ) {
        await deleteEntitlementPool(licenseModelId, entitlementPoolId, version);

        await ItemsHelper.checkItemStatus(dispatch, {
            itemId: licenseModelId,
            versionId: version.id
        });

        await EntitlementPoolsActionHelper.fetchEntitlementPoolsList(dispatch, {
            licenseModelId,
            version
        });
    },

    entitlementPoolsEditorDataChanged(dispatch, { deltaData }) {
        dispatch({
            type:
                entitlementPoolsActionTypes.entitlementPoolsEditor.DATA_CHANGED,
            deltaData
        });
    },

    closeEntitlementPoolsEditor(dispatch) {
        dispatch({
            type: entitlementPoolsActionTypes.entitlementPoolsEditor.CLOSE
        });
        dispatch({
            type: modalActionTypes.GLOBAL_MODAL_CLOSE
        });
    },

    async saveEntitlementPool(
        dispatch,
        { licenseModelId, previousEntitlementPool, entitlementPool, version }
    ) {
        if (previousEntitlementPool) {
            await putEntitlementPool(
                licenseModelId,
                previousEntitlementPool,
                entitlementPool,
                version
            );
        } else {
            await postEntitlementPool(licenseModelId, entitlementPool, version);
        }
        await ItemsHelper.checkItemStatus(dispatch, {
            itemId: licenseModelId,
            versionId: version.id
        });
        await EntitlementPoolsActionHelper.fetchEntitlementPoolsList(dispatch, {
            licenseModelId,
            version
        });
    },

    hideDeleteConfirm(dispatch) {
        dispatch({
            type: entitlementPoolsActionTypes.ENTITLEMENT_POOLS_DELETE_CONFIRM,
            entitlementPoolToDelete: false
        });
    },
    openDeleteEntitlementPoolConfirm(dispatch, { entitlementPool }) {
        dispatch({
            type: entitlementPoolsActionTypes.ENTITLEMENT_POOLS_DELETE_CONFIRM,
            entitlementPoolToDelete: entitlementPool
        });
    },

    fetchLimits(dispatch, { licenseModelId, version, entitlementPool }) {
        return fetchLimitsList(
            licenseModelId,
            entitlementPool.id,
            version
        ).then(response => {
            dispatch({
                type:
                    entitlementPoolsActionTypes.entitlementPoolsEditor
                        .LIMITS_LIST_LOADED,
                response
            });
        });
    },

    submitLimit(dispatch, { licenseModelId, version, entitlementPool, limit }) {
        const propmise = limit.id
            ? putLimit(licenseModelId, entitlementPool.id, version, limit)
            : postLimit(licenseModelId, entitlementPool.id, version, limit);
        return propmise.then(() => {
            dispatch({
                type: limitEditorActions.CLOSE
            });
            this.fetchLimits(dispatch, {
                licenseModelId,
                version,
                entitlementPool
            });
            return ItemsHelper.checkItemStatus(dispatch, {
                itemId: licenseModelId,
                versionId: version.id
            });
        });
    },

    deleteLimit(dispatch, { licenseModelId, version, entitlementPool, limit }) {
        return deleteLimit(
            licenseModelId,
            entitlementPool.id,
            version,
            limit.id
        ).then(() => {
            this.fetchLimits(dispatch, {
                licenseModelId,
                version,
                entitlementPool
            });
            return ItemsHelper.checkItemStatus(dispatch, {
                itemId: licenseModelId,
                versionId: version.id
            });
        });
    }
};

export default EntitlementPoolsActionHelper;