PermissionHelper
} from '../../../../../testing/unit-test-helper';
import { CoreModule } from '../../../../core/core.module';
+import { OrchestratorService } from '../../../../shared/api/orchestrator.service';
import { OsdService } from '../../../../shared/api/osd.service';
import { ConfirmationModalComponent } from '../../../../shared/components/confirmation-modal/confirmation-modal.component';
import { CriticalConfirmationModalComponent } from '../../../../shared/components/critical-confirmation-modal/critical-confirmation-modal.component';
);
};
+ const mockOrchestratorStatus = () => {
+ spyOn(TestBed.get(OrchestratorService), 'status').and.callFake(() => of({ available: true }));
+ };
+
configureTestBed({
imports: [
HttpClientTestingModule,
expectOpensModal('Mark Lost', modalClass);
expectOpensModal('Purge', modalClass);
expectOpensModal('Destroy', modalClass);
+ mockOrchestratorStatus();
mockSafeToDelete();
expectOpensModal('Delete', modalClass);
});
expectOsdServiceMethodCalled('Mark Lost', 'markLost');
expectOsdServiceMethodCalled('Purge', 'purge');
expectOsdServiceMethodCalled('Destroy', 'destroy');
+ mockOrchestratorStatus();
mockSafeToDelete();
expectOsdServiceMethodCalled('Delete', 'delete');
});
import { Component, OnInit, TemplateRef, ViewChild } from '@angular/core';
+import { Router } from '@angular/router';
import { I18n } from '@ngx-translate/i18n-polyfill';
import * as _ from 'lodash';
import { Permissions } from '../../../../shared/models/permissions';
import { DimlessBinaryPipe } from '../../../../shared/pipes/dimless-binary.pipe';
import { AuthStorageService } from '../../../../shared/services/auth-storage.service';
+import { DepCheckerService } from '../../../../shared/services/dep-checker.service';
import { NotificationService } from '../../../../shared/services/notification.service';
import { URLBuilderService } from '../../../../shared/services/url-builder.service';
import { OsdFlagsModalComponent } from '../osd-flags-modal/osd-flags-modal.component';
private modalService: BsModalService,
private i18n: I18n,
private urlBuilder: URLBuilderService,
+ private router: Router,
+ private depCheckerService: DepCheckerService,
public actionLabels: ActionLabelsI18n,
public notificationService: NotificationService
) {
name: this.actionLabels.CREATE,
permission: 'create',
icon: Icons.add,
- routerLink: () => this.urlBuilder.getCreate(),
+ click: () => {
+ this.depCheckerService.checkOrchestratorOrModal(
+ this.actionLabels.CREATE,
+ this.i18n('OSD'),
+ () => {
+ this.router.navigate([this.urlBuilder.getCreate()]);
+ }
+ );
+ },
canBePrimary: (selection: CdTableSelection) => !selection.hasSelection
},
{
{
name: this.actionLabels.DELETE,
permission: 'delete',
- click: () =>
- this.showCriticalConfirmationModal(
- this.i18n('delete'),
+ click: () => {
+ this.depCheckerService.checkOrchestratorOrModal(
+ this.actionLabels.DELETE,
this.i18n('OSD'),
- this.i18n('deleted'),
- (ids: number[]) => {
- return this.osdService.safeToDelete(JSON.stringify(ids));
- },
- 'is_safe_to_delete',
- (id: number) => {
- this.selection = new CdTableSelection();
- return this.osdService.delete(id, true);
+ () => {
+ this.showCriticalConfirmationModal(
+ this.i18n('delete'),
+ this.i18n('OSD'),
+ this.i18n('deleted'),
+ (ids: number[]) => {
+ return this.osdService.safeToDelete(JSON.stringify(ids));
+ },
+ 'is_safe_to_delete',
+ (id: number) => {
+ this.selection = new CdTableSelection();
+ return this.osdService.delete(id, true);
+ }
+ );
}
- ),
+ );
+ },
disable: () => !this.hasOsdSelected,
icon: Icons.destroy
}