class="form-item">
<div cdsCol>
<cds-checkbox id="enableCds"
- formControlName="enableEncryption"
+ formControlName="enable_auth"
i18n>Enable encryption
</cds-checkbox>
</div>
cdValidate
#encryptionConfigRef="cdValidate"
[invalid]="encryptionConfigRef.isInvalid"
- formControlName="encryptionConfig"
+ formControlName="encryptionKey"
cols="100"
rows="4"></textarea>
</cds-textarea-label>
<span
class="invalid-feedback"
- *ngIf="groupForm.showError('encryptionConfig', formDir, 'required')"
+ *ngIf="groupForm.showError('encryptionKey', formDir, 'required')"
i18n>This field is required.</span>
</div>
</div>
SelectModule
],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
- }).compileComponents();
+ })
+ .overrideTemplate(NvmeofGroupFormComponent, '')
+ .compileComponents();
fixture = TestBed.createComponent(NvmeofGroupFormComponent);
component = fixture.componentInstance;
component.groupForm.get('groupName').setValue('encrypted-group');
component.groupForm.get('enableEncryption').setValue(true);
- component.groupForm.get('encryptionConfig').setValue('encryption-key-123');
+ component.groupForm.get('encryptionKey').setValue('encryption-key-123');
component.onSubmit();
expect(cephServiceService.create).toHaveBeenCalledWith(
this.groupForm.setErrors({ cdSubmitButton: true });
return;
}
- let taskUrl = `service/${URLVerbs.CREATE}`;
- const serviceName = `${formValues.groupName}`;
+ const taskUrl = `service/${URLVerbs.CREATE}`;
+ const serviceId = `${formValues.groupName}`;
const serviceSpec: Record<string, any> = {
service_type: 'nvmeof',
- service_id: serviceName,
+ service_id: serviceId,
group: formValues.groupName,
placement: {
hosts: selectedHostnames
if (formValues.pool) {
serviceSpec['pool'] = formValues.pool;
- serviceSpec['service_id'] = `${formValues.pool}.${serviceName}`;
+ serviceSpec['service_id'] = `${formValues.pool}.${formValues.groupName}`;
}
if (
this.taskWrapperService
.wrapTaskAroundCall({
task: new FinishedTask(taskUrl, {
- service_name: `nvmeof.${serviceName}`
+ service_name: `nvmeof.${serviceId}`
}),
call: this.cephServiceService.create(serviceSpec)
})
expect(component.subsystem.namespace_count).toBe(3);
expect(component.subsystem.max_namespaces).toBe(256);
expect(component.subsystem.gw_group).toBe('gateway-prod');
+ expect(component.subsystem.subtype).toBe('NVMe');
}));
it('should not fetch when subsystemNQN is missing', fakeAsync(async () => {
expect(labelTexts).toContain('Serial number');
expect(labelTexts).toContain('Model Number');
expect(labelTexts).toContain('Gateway group');
+ expect(labelTexts).toContain('Subsystem Type');
expect(labelTexts).toContain('Host access');
expect(labelTexts).toContain('Authentication');
expect(labelTexts).toContain('Listeners');
type: 'text',
row: 1
},
+ {
+ label: $localize`Subsystem Type`,
+ value: this.subsystem.subtype,
+ type: 'text',
+ row: 2
+ },
{
label: $localize`Host access`,
value: this.subsystem.allow_any_host ?? false,
component.onSubmit();
expect(cephServiceService.create).toHaveBeenCalledWith({
service_type: 'nvmeof',
- service_id: 'default',
+ service_id: 'rbd.default',
placement: {},
unmanaged: false,
group: 'default',
enable_auth: true,
ssl: true,
+ pool: 'rbd',
certificate_source: 'inline',
root_ca_cert: 'root_ca_cert',
client_cert: 'client_cert',
this.getDefaultPlacementCount(selectedServiceType);
+ if (selectedServiceType === 'nvmeof' && this.rbdPools?.length > 0) {
+ this.serviceForm.get('pool').setValue(this.rbdPools[0].pool_name);
+ }
+
if (selectedServiceType === 'rgw') {
this.setRgwFields();
}
serviceSpec['ssl'] = true;
serviceSpec['certificate_source'] =
values['certificateType'] === CertificateType.internal ? 'cephadm-signed' : 'inline';
- if (
- values['certificateType'] === CertificateType.internal &&
- values['custom_sans']?.length > 0
- ) {
- serviceSpec['custom_sans'] = values['custom_sans'];
+ if (values['certificateType'] === CertificateType.internal) {
+ if (values['custom_sans']?.length > 0) {
+ serviceSpec['custom_sans'] = values['custom_sans'];
+ }
}
if (values['certificateType'] === CertificateType.external) {
+ serviceSpec['pool'] = values['pool'];
+ serviceSpec['service_id'] = `${values['pool']}.${values['group']}`;
serviceSpec['root_ca_cert'] = values['root_ca_cert'];
serviceSpec['client_cert'] = values['client_cert'];
serviceSpec['client_key'] = values['client_key'];
}}
@if (customFilter) {
@for (filter of stagedCustomFilters; track filter.id; let i = $index) {
- @if (isCustomFilterLabel()) {
+ @if (isCustomFilterString) {
<div cdsRow
class="cds-mt-4 cds--type-body-02">
Filter {{ customFilter }}:
*/
@Input()
customFilter: boolean | string = false;
+ get isCustomFilterString(): boolean {
+ return typeof this.customFilter === 'string';
+ }
isCustomFilterLabel(): boolean {
return typeof this.customFilter === 'string';