All files / src/app/ceph/block/rbd-trash-purge-modal rbd-trash-purge-modal.component.ts

100% Statements 34/34
72% Branches 18/25
100% Functions 9/9
100% Lines 30/30

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 735x   5x   5x 5x 5x   5x   5x 5x             5x           5x 5x 5x 5x 5x 5x   5x     5x 5x         5x   1x 1x 2x 1x       5x     5x 2x 2x                   1x     1x       5x  
import { Component, OnInit } from '@angular/core';
 
import { BsModalRef } from 'ngx-bootstrap/modal';
 
import { PoolService } from '../../../shared/api/pool.service';
import { RbdService } from '../../../shared/api/rbd.service';
import { CdFormBuilder } from '../../../shared/forms/cd-form-builder';
import { CdFormGroup } from '../../../shared/forms/cd-form-group';
import { FinishedTask } from '../../../shared/models/finished-task';
import { Permission } from '../../../shared/models/permissions';
import { AuthStorageService } from '../../../shared/services/auth-storage.service';
import { TaskWrapperService } from '../../../shared/services/task-wrapper.service';
 
@Component({
  selector: 'cd-rbd-trash-purge-modal',
  template: require('./rbd-trash-purge-modal.component.html'),
  styles: []
})
export class RbdTrashPurgeModalComponent implements OnInit {
  poolPermission: Permission;
  purgeForm: CdFormGroup;
  pools: any[];
 
  constructor(
    private authStorageService: AuthStorageService,
    private rbdService: RbdService,
    public modalRef: BsModalRef,
    private fb: CdFormBuilder,
    private poolService: PoolService,
    private taskWrapper: TaskWrapperService
  ) {
    this.poolPermission = this.authStorageService.getPermissions().pool;
  }
 
  createForm() {
    this.purgeForm = this.fb.group({
      poolName: ''
    });
  }
 
  ngOnInit() {
    if (this.poolPermission.read) {
      this.poolService.list(['pool_name', 'application_metadata']).then((resp) => {
        this.pools = resp
          .filter((pool) => pool.application_metadata.includes('rbd'))
          .map((pool) => pool.pool_name);
      });
    }
 
    this.createForm();
  }
 
  purge() {
    const poolName = this.purgeForm.getValue('poolName') || '';
    this.taskWrapper
      .wrapTaskAroundCall({
        task: new FinishedTask('rbd/trash/purge', {
          pool_name: poolName
        }),
        call: this.rbdService.purgeTrash(poolName)
      })
      .subscribe(
        undefined,
        () => {
          this.purgeForm.setErrors({ cdSubmitButton: true });
        },
        () => {
          this.modalRef.hide();
        }
      );
  }
}