diff options
Diffstat (limited to 'src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-scrub-modal/osd-scrub-modal.component.ts')
-rw-r--r-- | src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-scrub-modal/osd-scrub-modal.component.ts | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-scrub-modal/osd-scrub-modal.component.ts b/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-scrub-modal/osd-scrub-modal.component.ts new file mode 100644 index 000000000..b2f636708 --- /dev/null +++ b/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-scrub-modal/osd-scrub-modal.component.ts @@ -0,0 +1,52 @@ +import { Component, OnInit } from '@angular/core'; +import { FormGroup } from '@angular/forms'; + +import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; +import { forkJoin } from 'rxjs'; + +import { OsdService } from '~/app/shared/api/osd.service'; +import { ActionLabelsI18n } from '~/app/shared/constants/app.constants'; +import { NotificationType } from '~/app/shared/enum/notification-type.enum'; +import { JoinPipe } from '~/app/shared/pipes/join.pipe'; +import { NotificationService } from '~/app/shared/services/notification.service'; + +@Component({ + selector: 'cd-osd-scrub-modal', + templateUrl: './osd-scrub-modal.component.html', + styleUrls: ['./osd-scrub-modal.component.scss'] +}) +export class OsdScrubModalComponent implements OnInit { + deep: boolean; + scrubForm: FormGroup; + selected: any[] = []; + + constructor( + public activeModal: NgbActiveModal, + public actionLabels: ActionLabelsI18n, + private osdService: OsdService, + private notificationService: NotificationService, + private joinPipe: JoinPipe + ) {} + + ngOnInit() { + this.scrubForm = new FormGroup({}); + } + + scrub() { + forkJoin(this.selected.map((id: any) => this.osdService.scrub(id, this.deep))).subscribe( + () => { + const operation = this.deep ? 'Deep scrub' : 'Scrub'; + + this.notificationService.show( + NotificationType.success, + $localize`${operation} was initialized in the following OSD(s): ${this.joinPipe.transform( + this.selected + )}` + ); + + this.activeModal.close(); + }, + () => this.activeModal.close() + ); + } +} |