From 7058ffa19dde75c14eb89270c1a57926c0bce4cc Mon Sep 17 00:00:00 2001 From: Aijana Schumann Date: Mon, 31 Aug 2020 13:24:43 +0200 Subject: Add networkMap Add NetworkMap to odlux Issue-ID: CCSDK-2560 Signed-off-by: Aijana Schumann Change-Id: I204bcace9d12f8a26edfa347ee9b7d292c52f030 --- .../networkMapApp/src/actions/detailsAction.ts | 164 +++++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 sdnr/wt/odlux/apps/networkMapApp/src/actions/detailsAction.ts (limited to 'sdnr/wt/odlux/apps/networkMapApp/src/actions/detailsAction.ts') diff --git a/sdnr/wt/odlux/apps/networkMapApp/src/actions/detailsAction.ts b/sdnr/wt/odlux/apps/networkMapApp/src/actions/detailsAction.ts new file mode 100644 index 000000000..8a005bcaf --- /dev/null +++ b/sdnr/wt/odlux/apps/networkMapApp/src/actions/detailsAction.ts @@ -0,0 +1,164 @@ +/** + * ============LICENSE_START======================================================================== + * ONAP : ccsdk feature sdnr wt odlux + * ================================================================================================= + * Copyright (C) 2020 highstreet technologies GmbH 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 { Action } from '../../../../framework/src/flux/action'; +import { requestRest } from '../../../../framework/src/services/restService'; + + +import { site, Device } from "../model/site"; +import { link } from '../model/link'; +import { HistoryEntry } from "../model/historyEntry"; +import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore'; +import { Dispatch } from '../../../../framework/src/flux/store'; + +export class SelectSiteAction extends Action { + constructor(public site: site){ + super() + } +} + +export class SelectLinkAction extends Action { + constructor(public link: link){ + super(); + } +} + +export class ClearDetailsAction extends Action{ + constructor(){ + super(); + } +} + +export class AddToHistoryAction extends Action { + constructor(public entry: HistoryEntry){ + super(); + } +} + +export class ClearHistoryAction extends Action { + constructor(){ + super(); + } +} + +export class IsBusyCheckingDeviceListAction extends Action{ + constructor(public isBusy: boolean){ + super(); + } +} + +export class FinishedLoadingDeviceListAction extends Action{ + constructor(public devices: Device[]){ + super(); + } +} + +export class ClearLoadedDevicesAction extends Action{ + constructor(){ + super(); + } +} + +let running=false; + +export const UpdateDetailsView = (nodeId: string) =>(dispatcher: Dispatch, getState: () => IApplicationStoreState) =>{ + const {network:{details:{checkedDevices}}} = getState(); + if(checkedDevices!==null){ + const index = checkedDevices.findIndex(item=>item.name===nodeId) + if(index!==-1) + requestRest("/rests/operational/network-topology:network-topology/topology/topology-netconf/node/"+nodeId, { method: "GET" }) + .then(result =>{ + if(result!==null){ + checkedDevices[index].status = result.node[0]["netconf-node-topology:connection-status"]; + + }else{ + checkedDevices[index].status = "Not connected"; + } + dispatcher(new FinishedLoadingDeviceListAction(checkedDevices)); + + }); + + } +} + +export const CheckDeviceList = (list: Device[]) => async (dispatcher: Dispatch, getState: () => IApplicationStoreState) =>{ +if(running) return; +running=true; + dispatcher(new IsBusyCheckingDeviceListAction(true)); + + const promises = list.map((device)=>{ + if(device.simulatorId){ + return requestRest("/rests/operational/network-topology:network-topology/topology/topology-netconf/node/"+device.simulatorId, { method: "GET" }) + + }else{ + return requestRest("/rests/operational/network-topology:network-topology/topology/topology-netconf/node/"+device.name, { method: "GET" }) + + } + + }) + + Promise.all(promises).then((result)=>{ + running=false; + + + result.forEach((res: any, index)=>{ + console.log("value") + console.log(res); + if(res !==null && res.node!==null){ + + list[index].status = res.node[0]["netconf-node-topology:connection-status"]; + }else{ + list[index].status = "Not connected"; + } + }); + + dispatcher(new FinishedLoadingDeviceListAction(list)); + dispatcher(new IsBusyCheckingDeviceListAction(false)); + + }) + .catch(err=>{ + console.error(err); + + dispatcher(new IsBusyCheckingDeviceListAction(false)); + + }); + + /* result.forEach((res: Promise, index)=>{ + console.log("value") + console.log(res); + console.log(res.value); + if(res.value!==null){ + list[index].status = res.value.node[0]["netconf-node-topology:connection-status"]; + }else{ + list[index].status = "Not connected"; + }*/ + + + + + + + //get devices + //wait on all to finish + //update array + + + + + +} \ No newline at end of file -- cgit 1.2.3-korg