switched capability request source 77/105477/1
authorMichael Dürre <michael.duerre@highstreet-technologies.com>
Wed, 8 Apr 2020 06:41:16 +0000 (08:41 +0200)
committerMichael Dürre <michael.duerre@highstreet-technologies.com>
Wed, 8 Apr 2020 06:41:33 +0000 (08:41 +0200)
switched from data-provider to restconf

Issue-ID: SDNC-1151
Signed-off-by: Michael Dürre <michael.duerre@highstreet-technologies.com>
Change-Id: I1d1c6d396100ccfb96a87cf02a1c1edd94c842a4

sdnr/wt/odlux/apps/configurationApp/src/actions/deviceActions.ts
sdnr/wt/odlux/apps/configurationApp/src/services/restServices.ts

index 5b4498d..45cdfe6 100644 (file)
@@ -40,23 +40,19 @@ export class UpdatViewDescription extends Action {
 }
 
 export const updateNodeIdAsyncActionCreator = (nodeId: string) => async (dispatch: Dispatch, getState: () => IApplicationStoreState ) => {
-  const { configuration: { connectedNetworkElements : { rows }} } = getState();
-  dispatch(new SetCollectingSelectionData(true));
-  const networkElement = rows.find(r => r.nodeId === nodeId) || await restService.getMountedNetworkElementByMountId(nodeId);
-  if (!networkElement) {
-    console.error(new Error(`NetworkElement : [${nodeId}] does not exist.`));
-    return dispatch(new UpdateDeviceDescription("", { }, [ ]));
-  }
 
-  if (!networkElement.nodeDetails || !networkElement.nodeDetails.availableCapabilities) {
+  const availableCapabilities = await restService.getCapabilitiesByMoutId(nodeId);
+
+  if (!availableCapabilities || availableCapabilities.length <= 0) {
     throw new Error(`NetworkElement : [${nodeId}] has no capabilities.`);
   }
+
   const parser = new YangParser();
 
   const capParser = /^\(.*\?revision=(\d{4}-\d{2}-\d{2})\)(\S+)$/i;
-  for (let i = 0; i < networkElement.nodeDetails.availableCapabilities.length; ++i){
-    const capRaw = networkElement.nodeDetails.availableCapabilities[i];
-    const capMatch = capRaw && capParser.exec(capRaw);
+  for (let i = 0; i < availableCapabilities.length; ++i){
+    const capRaw = availableCapabilities[i];
+    const capMatch = capRaw && capParser.exec(capRaw.capability);
     try {
       capMatch && await parser.addCapability(capMatch[2], capMatch[1]);
     } catch (err) {
index d0ed03a..0d28e66 100644 (file)
@@ -22,6 +22,13 @@ import { convertPropertyNames, replaceHyphen } from "../../../../framework/src/u
 import { NetworkElementConnection } from "../models/networkElementConnection";
 
 class RestService {
+  public async getCapabilitiesByMoutId(nodeId: string): Promise<{ "capabilityOrigin": string, "capability": string }[] | null> {
+    const path = `/restconf/operational/network-topology:network-topology/topology/topology-netconf/node/${nodeId}`;
+    const capabilitiesResult = await requestRest<{ node: { "node-id": string, "netconf-node-topology:available-capabilities": { "available-capability": { "capabilityOrigin": string, "capability": string }[] }}[] }>(path, { method: "GET" });
+    return capabilitiesResult && capabilitiesResult.node && capabilitiesResult.node.length > 0 &&
+      capabilitiesResult.node[0]["netconf-node-topology:available-capabilities"]["available-capability"].map(obj => convertPropertyNames(obj, replaceHyphen)) || null;
+  }
+
   public async getMountedNetworkElementByMountId(nodeId: string): Promise<NetworkElementConnection | null> {
     // const path = 'restconf/operational/network-topology:network-topology/topology/topology-netconf/node/' + nodeId;
     // const connectedNetworkElement = await requestRest<NetworkElementConnection>(path, { method: "GET" });