Adapt ODLUX to ODL Scandium version 87/15187/1
authorRavi Pendurty <ravi.pendurty@highstreet-technologies.com>
Wed, 5 Nov 2025 10:38:44 +0000 (16:08 +0530)
committerRavi Pendurty <ravi.pendurty@highstreet-technologies.com>
Wed, 5 Nov 2025 10:39:01 +0000 (16:09 +0530)
new version of netconf-topology needs to be used

Issue-ID: OAM-528
Change-Id: I218240f0d185e27778bd5cfffa2c8c5c640b1086
Signed-off-by: Ravi Pendurty <ravi.pendurty@highstreet-technologies.com>
features/sdnr/odlux/odlux/apps/configurationApp/src/services/restServices.ts
features/sdnr/odlux/odlux/apps/connectApp/src/components/infoNetworkElementDialog.tsx
features/sdnr/odlux/odlux/apps/connectApp/src/handlers/infoNetworkElementHandler.ts
features/sdnr/odlux/odlux/apps/connectApp/src/models/topologyNetconf.ts
features/sdnr/odlux/odlux/apps/connectApp/src/services/connectService.ts
features/sdnr/odlux/odlux/framework/pom.xml
features/sdnr/odlux/odlux/odlux.properties

index 0fcd945..56eb38b 100644 (file)
@@ -36,17 +36,19 @@ type ImportOnlyResponse = {
 type CapabilityResponse = {
   'network-topology:node': {
     'node-id': string;
-    'netconf-node-topology:available-capabilities': {
-      'available-capability': {
-        'capability-origin': string;
-        'capability': string;
-      }[];
-    };
-    'netconf-node-topology:unavailable-capabilities': {
-      'unavailable-capability': {
-        'capability': string;
-        'failure-reason': string;
-      }[];
+    'netconf-node-topology:netconf-node':{
+      'available-capabilities': {
+        'available-capability': {
+          'capability-origin': string;
+          'capability': string;
+        }[];
+      };
+      'unavailable-capabilities': {
+        'unavailable-capability': {
+          'capability': string;
+          'failure-reason': string;
+        }[];
+      };
     };
   }[];
 };
@@ -86,9 +88,9 @@ class RestService {
     const path = this.getNetworkElementUri(nodeId);
     const capabilitiesResult = await requestRest<CapabilityResponse>(path, { method: 'GET' });
     const availableCapabilities = capabilitiesResult && capabilitiesResult['network-topology:node'] && capabilitiesResult['network-topology:node'].length > 0 &&
-      (capabilitiesResult['network-topology:node'][0]['netconf-node-topology:available-capabilities'] &&
-        capabilitiesResult['network-topology:node'][0]['netconf-node-topology:available-capabilities']['available-capability'] &&
-        capabilitiesResult['network-topology:node'][0]['netconf-node-topology:available-capabilities']['available-capability'].map<any>(obj => convertPropertyNames(obj, replaceHyphen)) || [])
+      (capabilitiesResult['network-topology:node'][0]['netconf-node-topology:netconf-node']['available-capabilities'] &&
+        capabilitiesResult['network-topology:node'][0]['netconf-node-topology:netconf-node']['available-capabilities']['available-capability'] &&
+        capabilitiesResult['network-topology:node'][0]['netconf-node-topology:netconf-node']['available-capabilities']['available-capability'].map<any>(obj => convertPropertyNames(obj, replaceHyphen)) || [])
         .map(cap => {
           const capMatch = cap && capParser.exec(cap.capability);
           return capMatch ? {
@@ -99,9 +101,9 @@ class RestService {
         }).filter((cap) => cap != null) || [] as any;
 
     const unavailableCapabilities = capabilitiesResult && capabilitiesResult['network-topology:node'] && capabilitiesResult['network-topology:node'].length > 0 &&
-      (capabilitiesResult['network-topology:node'][0]['netconf-node-topology:unavailable-capabilities'] &&
-      capabilitiesResult['network-topology:node'][0]['netconf-node-topology:unavailable-capabilities']['unavailable-capability'] &&
-      capabilitiesResult['network-topology:node'][0]['netconf-node-topology:unavailable-capabilities']['unavailable-capability'].map<any>(obj => convertPropertyNames(obj, replaceHyphen)) || [])
+      (capabilitiesResult['network-topology:node'][0]['netconf-node-topology:netconf-node']['unavailable-capabilities'] &&
+      capabilitiesResult['network-topology:node'][0]['netconf-node-topology:netconf-node']['unavailable-capabilities']['unavailable-capability'] &&
+      capabilitiesResult['network-topology:node'][0]['netconf-node-topology:netconf-node']['unavailable-capabilities']['unavailable-capability'].map<any>(obj => convertPropertyNames(obj, replaceHyphen)) || [])
         .map(cap => {
           const capMatch = cap && capParser.exec(cap.capability);
           return capMatch ? {
index 4841b93..5a33a28 100644 (file)
@@ -79,7 +79,7 @@ class InfoNetworkElementDialogComponent extends React.Component<InfoNetworkEleme
 
   render(): JSX.Element {
     const setting = settings[this.props.mode];
-    const availableCapabilities = this.props.state.connect.elementInfo.elementInfo['netconf-node-topology:available-capabilities']['available-capability'];
+    const availableCapabilities = this.props.state.connect.elementInfo.elementInfo['netconf-node-topology:netconf-node']['available-capabilities']['available-capability'];
     let yangFeatures = this.props.state.connect.elementFeatureInfo.elementFeatureInfo;
     let yangCapabilities: AvailableCapabilities[] = [];
 
index 692e63a..3cae320 100644 (file)
@@ -33,8 +33,10 @@ export interface IInfoNetworkElementFeaturesState {
 const infoNetworkElementsStateInit: IInfoNetworkElementsState = {
   elementInfo: {
     'node-id': '',
-    'netconf-node-topology:available-capabilities': {
+    'netconf-node-topology:netconf-node':{
+      'available-capabilities': {
       'available-capability': [],
+      },
     },
   },
   busy: false,
index 85a1a71..5a806df 100644 (file)
@@ -27,7 +27,9 @@ export interface NetconfNodeTopologyAvailableCapabilities {
 
 export interface TopologyNode {
   'node-id': string;
-  'netconf-node-topology:available-capabilities': NetconfNodeTopologyAvailableCapabilities;
+  'netconf-node-topology:netconf-node':{
+    'available-capabilities': NetconfNodeTopologyAvailableCapabilities;
+  };
 }
 
 export interface Topology {
index 6330aa0..10f8567 100644 (file)
@@ -83,17 +83,16 @@ class ConnectService {
       `<host xmlns="urn:opendaylight:netconf-node-topology">${networkElement.host}</host>`,
       `<port xmlns="urn:opendaylight:netconf-node-topology">${networkElement.port}</port>`,
       `<login-password-unencrypted xmlns="urn:opendaylight:netconf-node-topology">`,
-        `<username xmlns="urn:opendaylight:netconf-node-topology">${networkElement.username}</username>`,
-        `<password xmlns="urn:opendaylight:netconf-node-topology">${networkElement.password}</password>`,
+      `<username xmlns="urn:opendaylight:netconf-node-topology">${networkElement.username}</username>`,
+      `<password xmlns="urn:opendaylight:netconf-node-topology">${networkElement.password}</password>`,
       `</login-password-unencrypted>`,
       '  <tcp-only xmlns="urn:opendaylight:netconf-node-topology">false</tcp-only>',
-
       '  <!-- non-mandatory fields with default values, you can safely remove these if you do not wish to override any of these values-->',
       '  <reconnect-on-changed-schema xmlns="urn:opendaylight:netconf-node-topology">false</reconnect-on-changed-schema>',
       '  <connection-timeout-millis xmlns="urn:opendaylight:netconf-node-topology">20000</connection-timeout-millis>',
       '  <max-connection-attempts xmlns="urn:opendaylight:netconf-node-topology">100</max-connection-attempts>',
+      '  <min-backoff-millis xmlns="urn:opendaylight:netconf-node-topology">2000</min-backoff-millis>',
       '  <backoff-multiplier xmlns="urn:opendaylight:netconf-node-topology">1.5</backoff-multiplier>',
-      
       '  <!-- keepalive-delay set to 0 turns off keepalives-->',
       '  <keepalive-delay xmlns="urn:opendaylight:netconf-node-topology">120</keepalive-delay>',
       '</netconf-node>',
@@ -102,19 +101,19 @@ class ConnectService {
     const tlsXml = [
       '<node xmlns="urn:TBD:params:xml:ns:yang:network-topology">',
       `<node-id>${networkElement.nodeId}</node-id>`,
-      '<netconf-node xmlns="urn:opendaylight:netconf-node-topology">',
-      '<key-based xmlns="urn:opendaylight:netconf-node-topology">',
+      `<netconf-node xmlns="urn:opendaylight:netconf-node-topology">`,
+      `<key-based xmlns="urn:opendaylight:netconf-node-topology">`,
       `<key-id xmlns="urn:opendaylight:netconf-node-topology">${networkElement.tlsKey}</key-id>`,
       `<username xmlns="urn:opendaylight:netconf-node-topology">${networkElement.username}</username>`,
-      '</key-based>',
+      `</key-based>`,
       `<host xmlns="urn:opendaylight:netconf-node-topology">${networkElement.host}</host>`,
       `<port xmlns="urn:opendaylight:netconf-node-topology">${networkElement.port}</port>`,
-      '<tcp-only xmlns="urn:opendaylight:netconf-node-topology">false</tcp-only>',
-      '<protocol xmlns="urn:opendaylight:netconf-node-topology">',
-      '<name xmlns="urn:opendaylight:netconf-node-topology">TLS</name>',
-      ' </protocol>',
-      '<max-connection-attempts xmlns="urn:opendaylight:netconf-node-topology">2</max-connection-attempts>',
-      '</netconf-node>',
+      `<tcp-only xmlns="urn:opendaylight:netconf-node-topology">false</tcp-only>`,
+      `<protocol xmlns="urn:opendaylight:netconf-node-topology">`,
+      `<name xmlns="urn:opendaylight:netconf-node-topology">TLS</name>`,
+      ` </protocol>`,
+      `<max-connection-attempts xmlns="urn:opendaylight:netconf-node-topology">2</max-connection-attempts>`,
+      `</netconf-node>`,
       '</node>'].join('');
     let bodyXml;
     if (networkElement.password) {
index ab96e77..bfb263d 100644 (file)
@@ -45,7 +45,7 @@
     <properties>
         <buildtime>${maven.build.timestamp}</buildtime>
         <distversion>ONAP Frankfurt (Neon, mdsal ${odl.mdsal.version})</distversion>
-        <buildno>179.f46d0ef0(25/03/03)</buildno>
+        <buildno>181.11d19876(25/11/03)</buildno>
         <odlux.version>ONAP SDN-R | ONF Wireless for ${distversion} - Build: ${buildtime} ${buildno} ${project.version}</odlux.version>
     </properties>
 
index 07f6949..7b890d0 100644 (file)
@@ -1,6 +1,6 @@
 odlux.framework.buildno=177.c57a218f(24/03/14)
-odlux.apps.configurationApp.buildno=179.f46d0ef0(25/03/03)
-odlux.apps.connectApp.buildno=173.1f72e324(23/12/14)
+odlux.apps.configurationApp.buildno=181.11d19876(25/11/03)
+odlux.apps.connectApp.buildno=181.11d19876(25/11/03)
 odlux.apps.eventLogApp.buildno=179.f46d0ef0(25/03/03)
 odlux.apps.faultApp.buildno=179.f46d0ef0(25/03/03)
 odlux.apps.helpApp.buildno=172.b89e2c2b(23/10/04)