]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: Add CephReleaseNamePipe
authorRicardo Marques <rimarques@suse.com>
Fri, 8 Jun 2018 10:44:47 +0000 (11:44 +0100)
committerRicardo Marques <rimarques@suse.com>
Tue, 12 Jun 2018 10:46:46 +0000 (11:46 +0100)
Signed-off-by: Ricardo Marques <rimarques@suse.com>
src/pybind/mgr/dashboard/frontend/src/app/shared/pipes/ceph-release-name.pipe.spec.ts [new file with mode: 0644]
src/pybind/mgr/dashboard/frontend/src/app/shared/pipes/ceph-release-name.pipe.ts [new file with mode: 0644]
src/pybind/mgr/dashboard/frontend/src/app/shared/pipes/pipes.module.ts

diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/pipes/ceph-release-name.pipe.spec.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/pipes/ceph-release-name.pipe.spec.ts
new file mode 100644 (file)
index 0000000..8973c2b
--- /dev/null
@@ -0,0 +1,21 @@
+import { CephReleaseNamePipe } from './ceph-release-name.pipe';
+
+describe('CephReleaseNamePipe', () => {
+  const pipe = new CephReleaseNamePipe();
+
+  it('create an instance', () => {
+    expect(pipe).toBeTruthy();
+  });
+
+  it('transforms with correct version format', () => {
+    const value =
+      'ceph version 13.1.0-534-g23d3751b89 \
+       (23d3751b897b31d2bda57aeaf01acb5ff3c4a9cd) nautilus (dev)';
+    expect(pipe.transform(value)).toBe('nautilus');
+  });
+
+  it('transforms with wrong version format', () => {
+    const value = 'foo';
+    expect(pipe.transform(value)).toBe('foo');
+  });
+});
diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/pipes/ceph-release-name.pipe.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/pipes/ceph-release-name.pipe.ts
new file mode 100644 (file)
index 0000000..4cfa2a7
--- /dev/null
@@ -0,0 +1,19 @@
+import { Pipe, PipeTransform } from '@angular/core';
+
+@Pipe({
+  name: 'cephReleaseName'
+})
+export class CephReleaseNamePipe implements PipeTransform {
+  transform(value: any, args?: any): any {
+    // Expect "ceph version 13.1.0-419-g251e2515b5
+    //         (251e2515b563856349498c6caf34e7a282f62937) nautilus (dev)"
+    const result = /ceph version\s+[^ ]+\s+\(.+\)\s+(.+)\s+/.exec(value);
+    if (result) {
+      // Return the "nautilus" part
+      return result[1];
+    } else {
+      // Unexpected format, pass it through
+      return value;
+    }
+  }
+}
index e5b1a24fa8cbbe12248f29ebb821581d65d4c240..1aba100b7629762ede33d1205fcb0ea0ed866a7d 100644 (file)
@@ -3,6 +3,7 @@ import { NgModule } from '@angular/core';
 
 import { EmptyPipe } from '../empty.pipe';
 import { CdDatePipe } from './cd-date.pipe';
+import { CephReleaseNamePipe } from './ceph-release-name.pipe';
 import { CephShortVersionPipe } from './ceph-short-version.pipe';
 import { DimlessBinaryPipe } from './dimless-binary.pipe';
 import { DimlessPipe } from './dimless.pipe';
@@ -18,6 +19,7 @@ import { RelativeDatePipe } from './relative-date.pipe';
     HealthColorPipe,
     DimlessPipe,
     CephShortVersionPipe,
+    CephReleaseNamePipe,
     RelativeDatePipe,
     ListPipe,
     FilterPipe,
@@ -29,6 +31,7 @@ import { RelativeDatePipe } from './relative-date.pipe';
     HealthColorPipe,
     DimlessPipe,
     CephShortVersionPipe,
+    CephReleaseNamePipe,
     RelativeDatePipe,
     ListPipe,
     FilterPipe,
@@ -38,6 +41,7 @@ import { RelativeDatePipe } from './relative-date.pipe';
   providers: [
     DatePipe,
     CephShortVersionPipe,
+    CephReleaseNamePipe,
     DimlessBinaryPipe,
     DimlessPipe,
     RelativeDatePipe,