Add feature resilient to missing instance data 87/387/2
authorjh245g <jh245g@att.com>
Wed, 19 Jun 2019 19:13:24 +0000 (15:13 -0400)
committerChris Lott <cl778h@att.com>
Wed, 19 Jun 2019 19:48:38 +0000 (19:48 +0000)
Change-Id: If2393623616ad44bf3f9438f9a7c02d45e717340
Signed-off-by: Jun (Nicolas) Hu <jh245g@att.com>
Issue-ID: RICPLT-1513

docs/release-notes.rst
webapp-frontend/src/app/control/control.component.html
webapp-frontend/src/app/control/control.datasource.ts

index 458a4ec..b263846 100644 (file)
@@ -20,7 +20,7 @@
 RIC Dashboard Release Notes
 ===========================
 
-Version 1.0.4, 17 June 2019
+Version 1.0.4, 19 June 2019
 ---------------------------
 * Add AC xApp neighbor control screen
 * Add ANR xApp neighbor cell relation table
@@ -33,6 +33,7 @@ Version 1.0.4, 17 June 2019
 * Revise config property keys to use URL (not basepath)
 * Left menu overlap main content fix
 * Extend back-end controllers to return error details
+* Add feature resilient to malformed instance data
 
 Version 1.0.3, 28 May 2019
 --------------------------
index 5ae35aa..700efd9 100644 (file)
           <div>
             txMessages:
           </div>
-          <li *ngFor="let rxmessage of element.instance.rxMessage">
+          <li *ngFor="let rxmessage of element.instance.rxMessages">
             <span>{{rxmessage}}</span>
           </li>
           <div>
             rxMessages:
           </div>
-          <li *ngFor="let txmessage of element.instance.txMessage">
+          <li *ngFor="let txmessage of element.instance.txMessages">
             <span>{{txmessage}}</span>
           </li>
         </div>
index 30752ef..60f8563 100644 (file)
@@ -25,7 +25,7 @@ import { BehaviorSubject } from 'rxjs/BehaviorSubject';
 import { Observable } from 'rxjs/Observable';
 import { of } from 'rxjs/observable/of';
 import { catchError, finalize, map } from 'rxjs/operators';
-import { XappControlRow, XMXapp } from '../interfaces/xapp-mgr.types';
+import { XappControlRow, XMXapp, XMXappInstance } from '../interfaces/xapp-mgr.types';
 import { XappMgrService } from '../services/xapp-mgr/xapp-mgr.service';
 
 export class ControlDataSource extends DataSource<XappControlRow> {
@@ -36,6 +36,15 @@ export class ControlDataSource extends DataSource<XappControlRow> {
 
   public loading$ = this.loadingSubject.asObservable();
 
+  emptyInstances: XMXappInstance =
+    { ip: null,
+      name: null,
+      port: null,
+      status: null,
+      rxMessages: [],
+      txMessages: [],
+    };
+
   constructor(private xappMgrSvc: XappMgrService, private sort: MatSort) {
     super();
   };
@@ -47,7 +56,7 @@ export class ControlDataSource extends DataSource<XappControlRow> {
         catchError(() => of([])),
         finalize(() => this.loadingSubject.next(false))
       )
-      .subscribe(xApps => this.xAppInstancesSubject.next(this.getInstance(xApps)) )
+      .subscribe(xApps => this.xAppInstancesSubject.next(this.getInstance(xApps)))
   }
 
   connect(collectionViewer: CollectionViewer): Observable<XappControlRow[]> {
@@ -66,16 +75,25 @@ export class ControlDataSource extends DataSource<XappControlRow> {
   }
 
   getInstance(allxappdata: XMXapp[]) {
-    const xAppInstances: XappControlRow[]= [];
+    const xAppInstances: XappControlRow[] = [];
     for (const xappindex in allxappdata) {
       const instancelist = allxappdata[xappindex].instances;
-      for (const instanceindex in instancelist) {
+      if (!instancelist) {
         var instance: XappControlRow = {
           xapp: allxappdata[xappindex].name,
-          instance: instancelist[instanceindex]
+          instance: this.emptyInstances
         }
         xAppInstances.push(instance);
       }
+      else {
+        for (const instanceindex in instancelist) {
+          var instance: XappControlRow = {
+            xapp: allxappdata[xappindex].name,
+            instance: instancelist[instanceindex]
+          }
+          xAppInstances.push(instance);
+        }
+      }
     }
     return xAppInstances;
   }