const services = [
{
- container_image_id: 'e70344c77bcbf3ee389b9bf5128f635cf95f3d59e005c5d8e67fc19bcc74ed23',
- container_image_name: 'docker.io/ceph/daemon-base:latest-master-devel',
+ service_type: 'osd',
service_name: 'osd',
- size: 3,
- running: 3,
- last_refresh: '2020-02-25T04:33:26.465699'
+ status: {
+ container_image_id: 'e70344c77bcbf3ee389b9bf5128f635cf95f3d59e005c5d8e67fc19bcc74ed23',
+ container_image_name: 'docker.io/ceph/daemon-base:latest-master-devel',
+ size: 3,
+ running: 3,
+ last_refresh: '2020-02-25T04:33:26.465699'
+ }
},
{
- container_image_id: 'e70344c77bcbf3ee389b9bf5128f635cf95f3d59e005c5d8e67fc19bcc74ed23',
- container_image_name: 'docker.io/ceph/daemon-base:latest-master-devel',
+ service_type: 'crash',
service_name: 'crash',
- size: 1,
- running: 1,
- last_refresh: '2020-02-25T04:33:26.465766'
+ status: {
+ container_image_id: 'e70344c77bcbf3ee389b9bf5128f635cf95f3d59e005c5d8e67fc19bcc74ed23',
+ container_image_name: 'docker.io/ceph/daemon-base:latest-master-devel',
+ size: 1,
+ running: 1,
+ last_refresh: '2020-02-25T04:33:26.465766'
+ }
}
];
import { CdTableFetchDataContext } from '../../../shared/models/cd-table-fetch-data-context';
import { CdTableSelection } from '../../../shared/models/cd-table-selection';
import { Permissions } from '../../../shared/models/permissions';
-import { CephService } from '../../../shared/models/service.interface';
+import { CephServiceSpec } from '../../../shared/models/service.interface';
import { AuthStorageService } from '../../../shared/services/auth-storage.service';
@Component({
docsUrl: string;
columns: Array<CdTableColumn> = [];
- services: Array<CephService> = [];
+ services: Array<CephServiceSpec> = [];
isLoadingServices = false;
selection = new CdTableSelection();
},
{
name: this.i18n('Container image name'),
- prop: 'container_image_name',
+ prop: 'status.container_image_name',
flexGrow: 3
},
{
name: this.i18n('Container image ID'),
- prop: 'container_image_id',
+ prop: 'status.container_image_id',
flexGrow: 3
},
{
name: this.i18n('Running'),
- prop: 'running',
+ prop: 'status.running',
flexGrow: 1
},
{
name: this.i18n('Size'),
- prop: 'size',
+ prop: 'status.size',
flexGrow: 1
},
{
name: this.i18n('Last Refreshed'),
- prop: 'last_refresh',
+ prop: 'status.last_refresh',
flexGrow: 1
}
];
}
this.isLoadingServices = true;
this.cephServiceService.list().subscribe(
- (services: CephService[]) => {
+ (services: CephServiceSpec[]) => {
this.services = services;
this.isLoadingServices = false;
},
import { Observable } from 'rxjs';
import { Daemon } from '../models/daemon.interface';
-import { CephService } from '../models/service.interface';
+import { CephServiceSpec } from '../models/service.interface';
import { ApiModule } from './api.module';
@Injectable({
constructor(private http: HttpClient) {}
- list(serviceName?: string): Observable<CephService[]> {
+ list(serviceName?: string): Observable<CephServiceSpec[]> {
const options = serviceName
? { params: new HttpParams().set('service_name', serviceName) }
: {};
- return this.http.get<CephService[]>(this.url, options);
+ return this.http.get<CephServiceSpec[]>(this.url, options);
}
getDaemons(serviceName?: string): Observable<Daemon[]> {
-export interface CephService {
+export interface CephServiceStatus {
container_image_id: string;
container_image_name: string;
- service_name: string;
size: number;
running: number;
last_refresh: Date;
+ created: Date;
+}
+
+// This will become handy when creating arbitrary services
+export interface CephServiceSpec {
+ service_name: string;
+ service_type: string;
+ service_id: string;
+ unmanaged: boolean;
+ status: CephServiceStatus;
}