2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
6 * Copyright © 2017-2018 Amdocs
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
23 VNF_FILTER_AGGREGATION_URL,
29 VNF_FILTER_EMPTY_RESULT
30 } from 'app/vnfSearch/VnfSearchConstants.js';
35 } from 'app/networking/NetworkConstants.js';
37 getSetGlobalMessageEvent,
38 getClearGlobalMessageEvent
39 } from 'app/globalInlineMessageBar/GlobalInlineMessageBarActions.js';
40 import {MESSAGE_LEVEL_WARNING} from 'utils/GlobalConstants.js';
42 let fetch = require('node-fetch');
43 fetch.Promise = require('es6-promise').Promise;
45 const itemKeyWord = 'key';
46 const countKeyWord = 'doc_count';
48 function getInvalidQueryEvent() {
50 type: vnfActionTypes.VNF_NETWORK_ERROR,
51 data: {errorMsg: ERROR_RETRIEVING_DATA}
55 function processProvData(provDataList) {
57 let newProvStatusChartData = CHART_PROV_STATUS.emptyData;
58 for (let provData of provDataList) {
61 'x': provData[itemKeyWord],
62 'y': provData[countKeyWord]
67 if (dataPoints.length > 0) {
68 newProvStatusChartData = {
73 return newProvStatusChartData;
76 function processOrchData(orchDataList) {
78 let newOrchStatusChartData = CHART_ORCH_STATUS.emptyData;
79 for (let orchData of orchDataList) {
82 'x': orchData[itemKeyWord],
83 'y': orchData[countKeyWord]
88 if (dataPoints.length > 0) {
89 newOrchStatusChartData = {
94 return newOrchStatusChartData;
97 function processNfTypeData(nfDataList) {
99 let newNfTypeChartData = CHART_NF_TYPE.emptyData;
100 for (let nfData of nfDataList) {
103 'x': nfData[itemKeyWord],
104 'y': nfData[countKeyWord]
109 if (dataPoints.length > 0) {
110 newNfTypeChartData = {
115 return newNfTypeChartData;
118 function processNfRoleData(nfDataList) {
120 let newNfRoleChartData = CHART_NF_ROLE.emptyData;
121 for (let nfData of nfDataList) {
124 'x': nfData[itemKeyWord],
125 'y': nfData[countKeyWord]
130 if (dataPoints.length > 0) {
131 newNfRoleChartData = {
136 return newNfRoleChartData;
139 function getVnfFilterAggregationQueryString(filterValueMap) {
142 for (let filter in filterValueMap) {
143 if (filterValueMap[filter] !== '') {
147 'filterValue': filterValueMap[filter]
160 'filters': filterList
164 function getVnfVisualizationsResultsEvent(results) {
165 let count = TOTAL_VNF_COUNT.emptyData;
166 let provData = CHART_PROV_STATUS.emptyData;
167 let orchData = CHART_ORCH_STATUS.emptyData;
168 let netFuncTypeData = CHART_NF_TYPE.emptyData;
169 let netFuncRoleData = CHART_NF_ROLE.emptyData;
172 count = results.total;
175 if (results['aggregations'] && results['aggregations']['prov-status']) {
176 provData = processProvData(results['aggregations']['prov-status']);
179 if (results['aggregations'] &&
180 results['aggregations']['orchestration-status']) {
181 orchData = processOrchData(results['aggregations']['orchestration-status']);
184 if (results['aggregations'] &&
185 results['aggregations']['nf-type']) {
186 netFuncTypeData = processNfTypeData(results['aggregations']['nf-type']);
189 if (results['aggregations'] &&
190 results['aggregations']['nf-role']) {
191 netFuncRoleData = processNfRoleData(results['aggregations']['nf-role']);
195 type: vnfActionTypes.VNF_SEARCH_RESULTS_RECEIVED,
198 provStatusData: provData,
199 orchStatusData: orchData,
200 nfTypeData: netFuncTypeData,
201 nfRoleData: netFuncRoleData
206 function setBusyFeedback(){
208 type: vnfActionTypes.VNF_ACTIVATE_BUSY_FEEDBACK
212 function disableBusyFeedback(){
214 type: vnfActionTypes.VNF_DISABLE_BUSY_FEEDBACK
218 export function processVnfVisualizationsOnFilterChange(filterValueMap) {
220 dispatch(setBusyFeedback());
221 return fetch(VNF_FILTER_AGGREGATION_URL, {
223 headers: POST_HEADER,
224 body: JSON.stringify(getVnfFilterAggregationQueryString(filterValueMap))
226 (response) => response.json()
229 if(responseJson.total === 0) {
230 dispatch(getSetGlobalMessageEvent(VNF_FILTER_EMPTY_RESULT, MESSAGE_LEVEL_WARNING));
232 dispatch(getClearGlobalMessageEvent());
234 dispatch(getVnfVisualizationsResultsEvent(responseJson));
238 dispatch(disableBusyFeedback());
242 dispatch(disableBusyFeedback());
243 dispatch(getInvalidQueryEvent());
249 export function processVnfFilterPanelCollapse(isOpen) {
250 let vnfVisualizationPanelClass = 'collapsible-panel-main-panel';
253 vnfVisualizationPanelClass += ' vertical-filter-panel-is-open';
257 type: vnfActionTypes.VNF_FILTER_PANEL_TOGGLED,
259 vnfVisualizationPanelClass: vnfVisualizationPanelClass
264 export function setNotificationText(msgText, msgSeverity) {
265 if (msgText.length > 0) {
268 getSetGlobalMessageEvent(msgText, msgSeverity));
272 dispatch(getClearGlobalMessageEvent());
277 export function clearVnfSearchData() {
279 type: vnfActionTypes.VNF_SEARCH_RESULTS_RECEIVED,
282 provStatusData: CHART_PROV_STATUS.emptyData,
283 orchStatusData: CHART_ORCH_STATUS.emptyData,
284 nfTypeData: CHART_NF_TYPE.emptyData,
285 nfRoleData: CHART_NF_ROLE.emptyData