2 [columnNumbers]="{ md: 4 }">
3 <ng-container *cdFormLoading="loading">
4 <form name="storageClassForm"
6 [formGroup]="storageClassForm"
10 {{ action | titlecase }} {{ resource | upperFirst }}
12 <cd-help-text [formAllFieldsRequired]="true"></cd-help-text>
14 <div class="form-item form-item-append"
19 label="Zone Group Name"
21 formControlName="zonegroup"
24 storageClassForm.showError('zonegroup', formDir, 'required')
26 (change)="onZonegroupChange()"
27 [invalidText]="zonegroupError"
29 <option *ngFor="let zonegrp of zonegroupNames"
30 [value]="zonegrp.name"
31 [selected]="zonegrp.name === storageClassForm.getValue('zonegroup')"
36 <ng-template #zonegroupError>
38 class="invalid-feedback"
39 *ngIf="storageClassForm.showError('zonegroup', formDir, 'required')"
41 >This field is required.</span
46 <!-- Placement Target -->
48 label="Placement Target"
50 formControlName="placement_target"
53 storageClassForm.showError('placement_target', formDir, 'required')
55 [invalidText]="placementError"
58 i18n> --Select-- </option>
59 <option *ngFor="let placementTarget of placementTargets"
60 [value]="placementTarget"
61 [selected]="placementTarget === storageClassForm.getValue('placement_target')"
66 <ng-template #placementError>
68 class="invalid-feedback"
69 *ngIf="storageClassForm.showError('placement_target', formDir, 'required')"
71 >This field is required.</span
76 <!-- Storage Class -->
77 <div class="form-item">
79 labelInputID="storage_class"
83 storageClassForm.controls.storage_class.invalid &&
84 storageClassForm.controls.storage_class.dirty
86 [invalidText]="storageError"
92 formControlName="storage_class"
94 storageClassForm.showError('storage_class', formDir, 'required')
98 <ng-template #storageError>
100 class="invalid-feedback"
101 *ngIf="storageClassForm.showError('storage_class', formDir, 'required')"
103 >This field is required.</span
107 <div class="form-item form-item-append"
110 <!-- Target Region -->
112 labelInputID="region"
115 storageClassForm.showError('region', formDir, 'required')
117 [invalidText]="regionError"
118 [helperText]="targetRegionText"
124 formControlName="region"
125 placeholder="e.g, us-east-1"
128 storageClassForm.showError('region', formDir, 'required')
132 <ng-template #regionError>
134 class="invalid-feedback"
135 *ngIf="storageClassForm.showError('region', formDir, 'required')"
137 >This field is required.</span
142 <!-- Target Endpoint -->
144 labelInputID="endpoint"
147 storageClassForm.showError('endpoint', formDir, 'required')
149 [invalidText]="endpointError"
150 [helperText]="targetEndpointText"
155 placeholder="e.g, http://ceph-node-00.com:80"
158 formControlName="endpoint"
160 storageClassForm.showError('endpoint', formDir, 'required')
164 <ng-template #endpointError>
166 class="invalid-feedback"
167 *ngIf="storageClassForm.showError('endpoint', formDir, 'required')"
169 >This field is required.</span
176 <div class="form-item">
178 [columnNumbers]="{ md: 12 }"
181 labelInputID="access_key"
183 storageClassForm.showError('access_key', formDir, 'required')
185 [invalidText]="accessError"
186 [helperText]="targetAccessKeyText"
193 formControlName="access_key"
195 storageClassForm.showError('access_key', formDir, 'required')
198 </cds-password-label>
199 <cd-copy-2-clipboard-button class="clipboard"> </cd-copy-2-clipboard-button>
200 <ng-template #accessError>
202 class="invalid-feedback"
203 *ngIf="storageClassForm.showError('access_key', formDir, 'required')"
205 >This field is required.</span
212 <div class="form-item">
214 [columnNumbers]="{ md: 12 }"
217 labelInputID="secret_key"
218 [helperText]="targetSecretKeyText"
220 storageClassForm.showError('secret_key', formDir, 'required')
222 [invalidText]="secretError"
229 formControlName="secret_key"
231 storageClassForm.showError('secret_key', formDir, 'required')
234 </cds-password-label>
235 <cd-copy-2-clipboard-button class="clipboard"> </cd-copy-2-clipboard-button>
236 <ng-template #secretError>
238 class="invalid-feedback"
239 *ngIf="storageClassForm.showError('secret_key', formDir, 'required')"
241 >This field is required.</span
248 <div class="form-item">
250 labelInputID="target_path"
253 storageClassForm.showError('target_path', formDir, 'required')
255 [invalidText]="targetError"
256 [helperText]="targetPathText"
262 formControlName="target_path"
264 storageClassForm.showError('target_path', formDir, 'required')
268 <ng-template #targetError>
270 class="invalid-feedback"
271 *ngIf="storageClassForm.showError('target_path', formDir, 'required')"
273 >This field is required.</span
279 <cds-accordion size="lg"
283 id="advanced-fieldset"
284 (selected)="showAdvanced = !showAdvanced"
286 <!-- Multi Part Sync Threshold -->
287 <div class="form-item form-item-append"
291 labelInputID="multipart_sync_threshold"
293 [helperText]="multipartSyncThreholdText"
294 cdOptionalField="Multipart Sync Threshold"
295 >Multipart Sync Threshold
299 id="multipart_sync_threshold"
300 formControlName="multipart_sync_threshold"
306 labelInputID="multipart_min_part_size"
308 [helperText]="multipartMinPartText"
309 cdOptionalField="Multipart Minimum Part Size"
310 >Multipart Minimum Part Size
314 id="multipart_min_part_size"
315 formControlName="multipart_min_part_size"
320 <div class="form-item">
322 id="retain_head_object"
323 formControlName="retain_head_object"
324 cdOptionalField="Retain Head Object"
327 <cd-help-text>{{ retainHeadObjectText }}</cd-help-text>
330 </cds-accordion-item>
333 <h5 class="cds--accordion__title cd-header">Advanced</h5>
336 <cd-alert-panel type="warning"
338 <span i18n>RGW service would be restarted after creating the storage class.</span>
340 <cd-form-button-panel
341 (submitActionEvent)="submitAction()"
342 [form]="storageClassForm"
343 [submitText]="(action | titlecase) + ' ' + (resource | upperFirst)"
344 wrappingClass="text-right"
345 ></cd-form-button-panel>