]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: Fix ts error on iSCSI page 24715/head
authorRicardo Marques <rimarques@suse.com>
Tue, 23 Oct 2018 10:20:09 +0000 (11:20 +0100)
committerRicardo Marques <rimarques@suse.com>
Mon, 29 Oct 2018 15:08:56 +0000 (15:08 +0000)
This error only happens until initiator is connected to the target.

Fixes: https://tracker.ceph.com/issues/36564
Signed-off-by: Ricardo Marques <rimarques@suse.com>
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi/iscsi.component.spec.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi/iscsi.component.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/api/tcmu-iscsi.service.spec.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/api/tcmu-iscsi.service.ts

index 1e80d2e61dffb722610f1a01d1b68f2792131eca..983051e55621f1fb8304cff4ec15eafe0fd300db 100644 (file)
@@ -1,6 +1,8 @@
 import { NO_ERRORS_SCHEMA } from '@angular/core';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 
+import { of } from 'rxjs';
+
 import { configureTestBed } from '../../../../testing/unit-test-helper';
 import { TcmuIscsiService } from '../../../shared/api/tcmu-iscsi.service';
 import { CephShortVersionPipe } from '../../../shared/pipes/ceph-short-version.pipe';
@@ -13,6 +15,8 @@ import { IscsiComponent } from './iscsi.component';
 describe('IscsiComponent', () => {
   let component: IscsiComponent;
   let fixture: ComponentFixture<IscsiComponent>;
+  let tcmuIscsiService: TcmuIscsiService;
+  let tcmuiscsiData;
 
   const fakeService = {
     tcmuiscsi: () => {
@@ -39,10 +43,33 @@ describe('IscsiComponent', () => {
   beforeEach(() => {
     fixture = TestBed.createComponent(IscsiComponent);
     component = fixture.componentInstance;
+    tcmuIscsiService = TestBed.get(TcmuIscsiService);
     fixture.detectChanges();
+    tcmuiscsiData = {
+      images: []
+    };
+    spyOn(tcmuIscsiService, 'tcmuiscsi').and.callFake(() => of(tcmuiscsiData));
   });
 
   it('should create', () => {
     expect(component).toBeTruthy();
   });
+
+  it('should refresh without stats available', () => {
+    tcmuiscsiData.images.push({});
+    component.refresh();
+    expect(component.images[0].cdIsBinary).toBe(true);
+  });
+
+  it('should refresh with stats', () => {
+    tcmuiscsiData.images.push({
+      stats_history: {
+        rd_bytes: [[1540551220, 0.0], [1540551225, 0.0], [1540551230, 0.0]],
+        wr_bytes: [[1540551220, 0.0], [1540551225, 0.0], [1540551230, 0.0]]
+      }
+    });
+    component.refresh();
+    expect(component.images[0].stats_history).toEqual({ rd_bytes: [0, 0, 0], wr_bytes: [0, 0, 0] });
+    expect(component.images[0].cdIsBinary).toBe(true);
+  });
 });
index d26ac22412973428b07009756f6e39105673b456..b12c7974e5750113074192bad90d1eb3b44c9c62 100644 (file)
@@ -94,12 +94,14 @@ export class IscsiComponent {
   }
 
   refresh() {
-    this.tcmuIscsiService.tcmuiscsi().then((resp) => {
+    this.tcmuIscsiService.tcmuiscsi().subscribe((resp: any) => {
       this.daemons = resp.daemons;
       this.images = resp.images;
       this.images.map((image) => {
-        image.stats_history.rd_bytes = image.stats_history.rd_bytes.map((i) => i[1]);
-        image.stats_history.wr_bytes = image.stats_history.wr_bytes.map((i) => i[1]);
+        if (image.stats_history) {
+          image.stats_history.rd_bytes = image.stats_history.rd_bytes.map((i) => i[1]);
+          image.stats_history.wr_bytes = image.stats_history.wr_bytes.map((i) => i[1]);
+        }
         image.cdIsBinary = true;
         return image;
       });
index f7978b413804e7f7f310f3b566f72845d8ed8b2a..2792a801073954c4d2a829fb5e847bbcb4442d27 100644 (file)
@@ -30,7 +30,7 @@ describe('TcmuIscsiService', () => {
     'should call tcmuiscsi',
     fakeAsync(() => {
       let result;
-      service.tcmuiscsi().then((resp) => {
+      service.tcmuiscsi().subscribe((resp) => {
         result = resp;
       });
       const req = httpTesting.expectOne('api/tcmuiscsi');
index 87238717ed27145cffae56bdd08ca8b04f30ce51..24a8e87850962e26df98001eb3aeff4da68b3d82 100644 (file)
@@ -10,11 +10,6 @@ export class TcmuIscsiService {
   constructor(private http: HttpClient) {}
 
   tcmuiscsi() {
-    return this.http
-      .get('api/tcmuiscsi')
-      .toPromise()
-      .then((resp: any) => {
-        return resp;
-      });
+    return this.http.get('api/tcmuiscsi');
   }
 }