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

100% Statements 35/35
75% Branches 21/28
100% Functions 10/10
100% Lines 31/31

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 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();
        }
      );
  }
}