# All files / src/app/ceph/block/iscsi-target-discovery-modal iscsi-target-discovery-modal.component.ts

92.31% Statements 36/39
80.95% Branches 17/21
80% Functions 8/10
91.43% Lines 32/35

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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    1134x
    4x

    4x
    4x

    4x
    4x
    4x
    4x
    4x

    4x

    4x
    4x

    4x
    4x
    4x
    4x
    4x

    4x

    4x

    16x

    4x

    16x

    4x

    16x

    4x

    16x

    4x
    4x
    1x

    4x
    1x

    4x
     import { Component, OnInit } from '@angular/core';
    import { FormControl, Validators } from '@angular/forms';

    import { I18n } from '@ngx-translate/i18n-polyfill';
    import { BsModalRef } from 'ngx-bootstrap/modal';

    import { IscsiService } from '../../../shared/api/iscsi.service';
    import { NotificationType } from '../../../shared/enum/notification-type.enum';
    import { CdFormGroup } from '../../../shared/forms/cd-form-group';
    import { CdValidators } from '../../../shared/forms/cd-validators';
    import { NotificationService } from '../../../shared/services/notification.service';

    @Component({
      selector: 'cd-iscsi-target-discovery-modal',
      template: require('./iscsi-target-discovery-modal.component.html'),
      styles: []
    })
    export class IscsiTargetDiscoveryModalComponent implements OnInit {
      discoveryForm: CdFormGroup;

      USER_REGEX = /[\w\.:@_-]{8,64}/;
      PASSWORD_REGEX = /[\w@\-_\/]{12,16}/;

      constructor(
        public bsModalRef: BsModalRef,
        private iscsiService: IscsiService,
        private notificationService: NotificationService,
        private i18n: I18n
      ) {
        this.discoveryForm = new CdFormGroup({
          user: new FormControl(''),
          password: new FormControl(''),
          mutual_user: new FormControl(''),
          mutual_password: new FormControl('')
        });

        CdValidators.validateIf(
          this.discoveryForm.get('user'),
          () =>
            this.discoveryForm.getValue('password') ||
            this.discoveryForm.getValue('mutual_user') ||
            this.discoveryForm.getValue('mutual_password'),
          [Validators.required],
          [Validators.pattern(this.USER_REGEX)],
          [
            this.discoveryForm.get('password'),
            this.discoveryForm.get('mutual_user'),
            this.discoveryForm.get('mutual_password')
          ]
        );

        CdValidators.validateIf(
          this.discoveryForm.get('password'),
          () =>
            this.discoveryForm.getValue('user') ||
            this.discoveryForm.getValue('mutual_user') ||
            this.discoveryForm.getValue('mutual_password'),
          [Validators.required],
          [Validators.pattern(this.PASSWORD_REGEX)],
          [
            this.discoveryForm.get('user'),
            this.discoveryForm.get('mutual_user'),
            this.discoveryForm.get('mutual_password')
          ]
        );

        CdValidators.validateIf(
          this.discoveryForm.get('mutual_user'),
          () => this.discoveryForm.getValue('mutual_password'),
          [Validators.required],
          [Validators.pattern(this.USER_REGEX)],
          [
            this.discoveryForm.get('user'),
            this.discoveryForm.get('password'),
            this.discoveryForm.get('mutual_password')
          ]
        );

        CdValidators.validateIf(
          this.discoveryForm.get('mutual_password'),
          () => this.discoveryForm.getValue('mutual_user'),
          [Validators.required],
          [Validators.pattern(this.PASSWORD_REGEX)],
          [
            this.discoveryForm.get('user'),
            this.discoveryForm.get('password'),
            this.discoveryForm.get('mutual_user')
          ]
        );
      }

      ngOnInit() {
        this.iscsiService.getDiscovery().subscribe((auth) => {
          this.discoveryForm.patchValue(auth);
        });
      }

      submitAction() {
        this.iscsiService.updateDiscovery(this.discoveryForm.value).subscribe(
          () => {
            this.notificationService.show(
              NotificationType.success,
              this.i18n('Updated discovery authentication')
            );
            this.bsModalRef.hide();
          },
          () => {
            this.bsModalRef.hide();
          }
        );
      }
    }