1 import { Component, OnInit } from '@angular/core';
2 import { FormControl, Validators } from '@angular/forms';
3 import { Observable } from 'rxjs';
5 import { Icons } from '~/app/shared/enum/icons.enum';
6 import { Permission } from '~/app/shared/models/permissions';
7 import { ActionLabelsI18n } from '~/app/shared/constants/app.constants';
8 import { AuthStorageService } from '~/app/shared/services/auth-storage.service';
9 import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
10 import { UpgradeService } from '~/app/shared/api/upgrade.service';
11 import { UpgradeInfoInterface } from '~/app/shared/models/upgrade.interface';
12 import { NotificationType } from '~/app/shared/enum/notification-type.enum';
13 import { CdFormGroup } from '~/app/shared/forms/cd-form-group';
14 import { NotificationService } from '~/app/shared/services/notification.service';
17 selector: 'cd-upgrade-start-modal.component',
18 templateUrl: './upgrade-start-modal.component.html',
19 styleUrls: ['./upgrade-start-modal.component.scss']
21 export class UpgradeStartModalComponent implements OnInit {
22 permission: Permission;
23 upgradeInfoError$: Observable<any>;
24 upgradeInfo$: Observable<UpgradeInfoInterface>;
25 upgradeForm: CdFormGroup;
29 showImageField = false;
32 public actionLabels: ActionLabelsI18n,
33 private authStorageService: AuthStorageService,
34 public activeModal: NgbActiveModal,
35 private upgradeService: UpgradeService,
36 private notificationService: NotificationService
38 this.permission = this.authStorageService.getPermissions().configOpt;
42 this.upgradeForm = new CdFormGroup({
43 availableVersions: new FormControl(null, [Validators.required]),
44 useImage: new FormControl(false),
45 customImageName: new FormControl(null)
50 const version = this.upgradeForm.getValue('availableVersions');
51 const image = this.upgradeForm.getValue('customImageName');
52 this.upgradeService.start(version, image).subscribe({
54 this.notificationService.show(
55 NotificationType.success,
56 $localize`Started upgrading the cluster`
60 this.upgradeForm.setErrors({ cdSubmitButton: true });
61 this.notificationService.show(
62 NotificationType.error,
63 $localize`Failed to start the upgrade`,
68 this.activeModal.close();
74 this.showImageField = !this.showImageField;
75 const availableVersionsControl = this.upgradeForm.get('availableVersions');
76 const customImageNameControl = this.upgradeForm.get('customImageName');
78 if (this.showImageField) {
79 availableVersionsControl.disable();
80 availableVersionsControl.clearValidators();
82 customImageNameControl.setValidators(Validators.required);
83 customImageNameControl.updateValueAndValidity();
85 availableVersionsControl.enable();
86 availableVersionsControl.setValidators(Validators.required);
87 availableVersionsControl.updateValueAndValidity();
89 customImageNameControl.clearValidators();