diff options
Diffstat (limited to 'src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-trash-restore-modal/rbd-trash-restore-modal.component.ts')
-rw-r--r-- | src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-trash-restore-modal/rbd-trash-restore-modal.component.ts | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-trash-restore-modal/rbd-trash-restore-modal.component.ts b/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-trash-restore-modal/rbd-trash-restore-modal.component.ts new file mode 100644 index 000000000..860d66cc0 --- /dev/null +++ b/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-trash-restore-modal/rbd-trash-restore-modal.component.ts @@ -0,0 +1,65 @@ +import { Component, OnInit } from '@angular/core'; + +import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; + +import { RbdService } from '~/app/shared/api/rbd.service'; +import { ActionLabelsI18n } from '~/app/shared/constants/app.constants'; +import { CdFormBuilder } from '~/app/shared/forms/cd-form-builder'; +import { CdFormGroup } from '~/app/shared/forms/cd-form-group'; +import { ExecutingTask } from '~/app/shared/models/executing-task'; +import { FinishedTask } from '~/app/shared/models/finished-task'; +import { ImageSpec } from '~/app/shared/models/image-spec'; +import { TaskWrapperService } from '~/app/shared/services/task-wrapper.service'; + +@Component({ + selector: 'cd-rbd-trash-restore-modal', + templateUrl: './rbd-trash-restore-modal.component.html', + styleUrls: ['./rbd-trash-restore-modal.component.scss'] +}) +export class RbdTrashRestoreModalComponent implements OnInit { + poolName: string; + namespace: string; + imageName: string; + imageSpec: string; + imageId: string; + executingTasks: ExecutingTask[]; + + restoreForm: CdFormGroup; + + constructor( + private rbdService: RbdService, + public activeModal: NgbActiveModal, + public actionLabels: ActionLabelsI18n, + private fb: CdFormBuilder, + private taskWrapper: TaskWrapperService + ) {} + + ngOnInit() { + this.imageSpec = new ImageSpec(this.poolName, this.namespace, this.imageName).toString(); + this.restoreForm = this.fb.group({ + name: this.imageName + }); + } + + restore() { + const name = this.restoreForm.getValue('name'); + const imageSpec = new ImageSpec(this.poolName, this.namespace, this.imageId); + + this.taskWrapper + .wrapTaskAroundCall({ + task: new FinishedTask('rbd/trash/restore', { + image_id_spec: imageSpec.toString(), + new_image_name: name + }), + call: this.rbdService.restoreTrash(imageSpec, name) + }) + .subscribe({ + error: () => { + this.restoreForm.setErrors({ cdSubmitButton: true }); + }, + complete: () => { + this.activeModal.close(); + } + }); + } +} |