2 [columnNumbers]="{ md: 4 }">
3 <form name="storageClassForm"
5 [formGroup]="storageClassForm"
9 {{ action | titlecase }} {{ resource | upperFirst }}
13 All fields are required, except where marked optional.
16 <div class="form-item form-item-append"
21 label="Zone Group Name"
23 formControlName="zonegroup"
26 storageClassForm.controls.zonegroup.invalid && storageClassForm.controls.zonegroup.dirty
28 (change)="onZonegroupChange()"
29 [invalidText]="zonegroupError"
31 <option *ngFor="let zonegrp of zonegroupNames"
32 [value]="zonegrp.name"
33 [selected]="zonegrp.name === storageClassForm.getValue('zonegroup')"
38 <ng-template #zonegroupError>
40 class="invalid-feedback"
41 *ngIf="storageClassForm.showError('zonegroup', formDir, 'required')"
43 >This field is required.</span
48 <!-- Placement Target -->
50 label="Placement Target"
52 formControlName="placement_target"
55 storageClassForm.controls.placement_target.invalid &&
56 storageClassForm.controls.placement_target.dirty
58 [invalidText]="placementError"
61 i18n> --Select-- </option>
62 <option *ngFor="let placementTarget of placementTargets"
63 [value]="placementTarget"
64 [selected]="placementTarget === storageClassForm.getValue('placement_target')"
69 <ng-template #placementError>
71 class="invalid-feedback"
72 *ngIf="storageClassForm.showError('placement_target', formDir, 'required')"
74 >This field is required.</span
79 <!-- Storage Class -->
80 <div class="form-item">
82 labelInputID="storage_class"
85 storageClassForm.controls.storage_class.invalid &&
86 storageClassForm.controls.storage_class.dirty
88 [invalidText]="storageError"
94 formControlName="storage_class"
96 storageClassForm.controls.storage_class.invalid &&
97 storageClassForm.controls.storage_class.dirty
101 <ng-template #storageError>
103 class="invalid-feedback"
104 *ngIf="storageClassForm.showError('storage_class', formDir, 'required')"
106 >This field is required.</span
110 <div class="form-item form-item-append"
113 <!-- Target Region -->
115 labelInputID="region"
118 storageClassForm.controls.region.invalid && storageClassForm.controls.region.dirty
120 [invalidText]="regionError"
121 [helperText]="targetRegionText"
127 formControlName="region"
128 placeholder="e.g, us-east-1"
131 storageClassForm.controls.region.invalid && storageClassForm.controls.region.dirty
135 <ng-template #regionError>
137 class="invalid-feedback"
138 *ngIf="storageClassForm.showError('region', formDir, 'required')"
140 >This field is required.</span
145 <!-- Target Endpoint -->
147 labelInputID="endpoint"
150 storageClassForm.controls.endpoint.invalid && storageClassForm.controls.endpoint.dirty
152 [invalidText]="endpointError"
153 [helperText]="targetEndpointText"
158 placeholder="e.g, http://ceph-node-00.com:80"
161 formControlName="endpoint"
163 storageClassForm.controls.endpoint.invalid && storageClassForm.controls.endpoint.dirty
167 <ng-template #endpointError>
169 class="invalid-feedback"
170 *ngIf="storageClassForm.showError('endpoint', formDir, 'required')"
172 >This field is required.</span
179 <div class="form-item">
181 [columnNumbers]="{ md: 12 }"
184 labelInputID="access_key"
186 !storageClassForm.controls.access_key.valid &&
187 storageClassForm.controls.access_key.dirty
189 [invalidText]="accessError"
190 [helperText]="targetAccessKeyText"
197 formControlName="access_key"
199 !storageClassForm.controls.access_key.valid &&
200 storageClassForm.controls.access_key.dirty
203 </cds-password-label>
204 <cd-copy-2-clipboard-button class="clipboard"> </cd-copy-2-clipboard-button>
205 <ng-template #accessError>
207 class="invalid-feedback"
208 *ngIf="storageClassForm.showError('access_key', formDir, 'required')"
210 >This field is required.</span
217 <div class="form-item">
219 [columnNumbers]="{ md: 12 }"
222 labelInputID="secret_key"
223 [helperText]="targetSecretKeyText"
225 !storageClassForm.controls.secret_key.valid &&
226 storageClassForm.controls.secret_key.dirty
228 [invalidText]="secretError"
235 formControlName="secret_key"
237 !storageClassForm.controls.secret_key.valid &&
238 storageClassForm.controls.secret_key.dirty
241 </cds-password-label>
242 <cd-copy-2-clipboard-button class="clipboard"> </cd-copy-2-clipboard-button>
243 <ng-template #secretError>
245 class="invalid-feedback"
246 *ngIf="storageClassForm.showError('secret_key', formDir, 'required')"
248 >This field is required.</span
255 <div class="form-item">
257 labelInputID="target_path"
260 storageClassForm.controls.target_path.invalid &&
261 storageClassForm.controls.target_path.dirty
263 [invalidText]="targetError"
264 [helperText]="targetPathText"
270 formControlName="target_path"
272 storageClassForm.controls.target_path.invalid &&
273 storageClassForm.controls.target_path.dirty
277 <ng-template #targetError>
279 class="invalid-feedback"
280 *ngIf="storageClassForm.showError('target_path', formDir, 'required')"
282 >This field is required.</span
288 <cds-accordion size="lg"
292 id="advanced-fieldset"
293 (selected)="showAdvanced = !showAdvanced"
295 <!-- Multi Part Sync Threshold -->
296 <div class="form-item form-item-append"
300 labelInputID="multipart_sync_threshold"
302 [helperText]="multipartSyncThreholdText"
303 cdOptionalField="Multipart Sync Threshold"
304 >Multipart Sync Threshold
308 id="multipart_sync_threshold"
309 formControlName="multipart_sync_threshold"
315 labelInputID="multipart_min_part_size"
317 [helperText]="multipartMinPartText"
318 cdOptionalField="Multipart Minimum Part Size"
319 >Multipart Minimum Part Size
323 id="multipart_min_part_size"
324 formControlName="multipart_min_part_size"
329 <div class="form-item">
331 id="retain_head_object"
332 formControlName="retain_head_object"
333 cdOptionalField="Retain Head Object"
336 <cd-help-text>{{ retainHeadObjectText }}</cd-help-text>
339 </cds-accordion-item>
342 <h5 class="cds--accordion__title cd-header">Advanced</h5>
345 <cd-alert-panel type="warning"
347 <span i18n>RGW service would be restarted after creating the storage class.</span>
349 <cd-form-button-panel
350 (submitActionEvent)="submitAction()"
351 [form]="storageClassForm"
352 [submitText]="(action | titlecase) + ' ' + (resource | upperFirst)"
353 wrappingClass="text-right"
354 ></cd-form-button-panel>