<!-- Service id -->
<div class="form-group row"
*ngIf="serviceForm.controls.service_type.value !== 'snmp-gateway'">
- <label i18n
- class="cd-col-form-label"
+ <label class="cd-col-form-label"
[ngClass]="{'required': ['mds', 'rgw', 'nfs', 'iscsi', 'ingress'].includes(serviceForm.controls.service_type.value)}"
- for="service_id">Id</label>
+ for="service_id">
+ <span i18n>Id</span>
+ <cd-helper i18n>Used in the service name which is <service_type.service_id></cd-helper>
+ </label>
<div class="cd-col-form-input">
<input id="service_id"
class="form-control"
<span class="invalid-feedback"
*ngIf="serviceForm.showError('service_id', frm, 'rgwPattern')"
i18n>The value does not match the pattern <strong><service_id>[.<realm_name>.<zone_name>]</strong>.</span>
+ <span class="invalid-feedback"
+ *ngIf="serviceForm.showError('service_id', frm, 'mdsPattern')"
+ i18n>MDS service id must start with a letter and contain alphanumeric characters or '.', '-', and '_'</span>
</div>
</div>
})
export class ServiceFormComponent extends CdForm implements OnInit {
readonly RGW_SVC_ID_PATTERN = /^([^.]+)(\.([^.]+)\.([^.]+))?$/;
+ readonly MDS_SVC_ID_PATTERN = /^[a-zA-Z_.-][a-zA-Z0-9_.-]*$/;
readonly SNMP_DESTINATION_PATTERN = /^[^\:]+:[0-9]/;
readonly SNMP_ENGINE_ID_PATTERN = /^[0-9A-Fa-f]{10,64}/g;
readonly INGRESS_SUPPORTED_SERVICE_TYPES = ['rgw', 'nfs'];
service_id: [
null,
[
- CdValidators.requiredIf({
- service_type: 'mds'
- }),
+ CdValidators.composeIf(
+ {
+ service_type: 'mds'
+ },
+ [
+ Validators.required,
+ CdValidators.custom('mdsPattern', (value: string) => {
+ if (_.isEmpty(value)) {
+ return false;
+ }
+ return !this.MDS_SVC_ID_PATTERN.test(value);
+ })
+ ]
+ ),
CdValidators.requiredIf({
service_type: 'nfs'
}),