Skip to content

Commit e1f2fd3

Browse files
authored
Make Domain field optional when using application credentials for Openstack provider (#7044)
1 parent 43d85fa commit e1f2fd3

File tree

3 files changed

+18
-4
lines changed

3 files changed

+18
-4
lines changed

modules/web/src/app/settings/admin/presets/dialog/steps/settings/provider/openstack/component.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ export class OpenstackSettingsComponent extends BaseFormValidator implements OnI
115115
private _update(): void {
116116
this._presetDialogService.preset.spec.openstack = {
117117
...this._presetDialogService.preset.spec.openstack,
118-
domain: this.form.get(Controls.Domain).value,
118+
domain: this.form.get(Controls.Domain).value || null,
119119
network: this.form.get(Controls.Network).value,
120120
securityGroups: this.form.get(Controls.SecurityGroups).value,
121121
floatingIPPool: this.form.get(Controls.FloatingIPPool).value,

modules/web/src/app/wizard/step/provider-settings/provider/basic/openstack/component.ts

+16-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@ import {
2222
ViewChild,
2323
} from '@angular/core';
2424
import {FormBuilder, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validators} from '@angular/forms';
25-
import {OpenstackCredentialsTypeService} from '@app/wizard/step/provider-settings/provider/extended/openstack/service';
25+
import {
26+
CredentialsType,
27+
OpenstackCredentialsTypeService,
28+
} from '@app/wizard/step/provider-settings/provider/extended/openstack/service';
2629
import {ClusterSpecService} from '@core/services/cluster-spec';
2730
import {DatacenterService} from '@core/services/datacenter';
2831
import {PresetsService} from '@core/services/wizard/presets';
@@ -91,7 +94,7 @@ export class OpenstackProviderBasicComponent extends BaseFormValidator implement
9194

9295
ngOnInit(): void {
9396
this.form = this._builder.group({
94-
[Controls.Domain]: this._builder.control('', Validators.required),
97+
[Controls.Domain]: this._builder.control(''),
9598
[Controls.Credentials]: this._builder.control(''),
9699
[Controls.FloatingIPPool]: this._builder.control('', Validators.required),
97100
});
@@ -139,6 +142,15 @@ export class OpenstackProviderBasicComponent extends BaseFormValidator implement
139142
.pipe(filter(_ => this._clusterSpecService.provider === NodeProvider.OPENSTACK))
140143
.pipe(switchMap(_ => this._datacenterService.getDatacenter(this._clusterSpecService.datacenter).pipe(take(1))))
141144
.pipe(tap(dc => (this._isFloatingPoolIPEnforced = dc?.spec.openstack.enforceFloatingIP)))
145+
.pipe(
146+
tap(_ => {
147+
if (this._credentialsTypeService.credentialsType === CredentialsType.Default) {
148+
this.form.get(Controls.Domain).setValidators(Validators.required);
149+
} else {
150+
this.form.get(Controls.Domain).clearValidators();
151+
}
152+
})
153+
)
142154
.pipe(takeUntil(this._unsubscribe))
143155
.subscribe(_ => this.form.reset());
144156
}
@@ -150,6 +162,8 @@ export class OpenstackProviderBasicComponent extends BaseFormValidator implement
150162

151163
isRequired(control: Controls): boolean {
152164
switch (control) {
165+
case Controls.Domain:
166+
return this.form.get(Controls.Domain).hasValidator(Validators.required);
153167
case Controls.FloatingIPPool:
154168
return this._isFloatingPoolIPEnforced;
155169
default:

modules/web/src/app/wizard/step/provider-settings/provider/basic/openstack/template.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
[formControlName]="Controls.Domain"
2424
[name]="Controls.Domain"
2525
[matAutocomplete]="autoDomain"
26-
required>
26+
[required]="isRequired(Controls.Domain)">
2727
<mat-autocomplete #autoDomain="matAutocomplete">
2828
<mat-option *ngFor="let domain of domains"
2929
[value]="domain.name">

0 commit comments

Comments
 (0)