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