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">
18 for="storageClassType"
19 formControlName="storageClassType"
20 [helperText]="storageClassText"
22 [invalid]="storageClassForm.showError('storageClassType', formDir, 'required')"
23 [invalidText]="storageError"
26 i18n>-- Select Storage Class --</option>
29 <option value="cloud-s3"
30 i18n>Cloud S3</option>
32 <ng-template #storageError>
34 class="invalid-feedback"
35 *ngIf="storageClassForm.showError('storageClassType', formDir, 'required')"
37 >This field is required.</span
41 <div class="form-item form-item-append"
46 label="Zone Group Name"
48 formControlName="zonegroup"
50 [invalid]="storageClassForm.showError('zonegroup', formDir, 'required')"
51 (change)="onZonegroupChange()"
52 [invalidText]="zonegroupError"
55 *ngFor="let zonegrp of zonegroupNames"
56 [value]="zonegrp.name"
57 [selected]="zonegrp.name === storageClassForm.getValue('zonegroup')"
63 <ng-template #zonegroupError>
65 class="invalid-feedback"
66 *ngIf="storageClassForm.showError('zonegroup', formDir, 'required')"
68 >This field is required.</span
73 <!-- Placement Target -->
75 label="Placement Target"
77 formControlName="placement_target"
79 [invalid]="storageClassForm.showError('placement_target', formDir, 'required')"
80 [invalidText]="placementError"
83 i18n>--Select--</option>
85 *ngFor="let placementTarget of placementTargets"
86 [value]="placementTarget"
87 [selected]="placementTarget === storageClassForm.getValue('placement_target')"
93 <ng-template #placementError>
95 class="invalid-feedback"
96 *ngIf="storageClassForm.showError('placement_target', formDir, 'required')"
98 >This field is required.</span
103 <!-- Storage Class -->
104 <div class="form-item">
106 labelInputID="storage_class"
110 storageClassForm.controls.storage_class.invalid &&
111 storageClassForm.controls.storage_class.dirty
113 [invalidText]="storageClassError"
119 formControlName="storage_class"
120 [invalid]="storageClassForm.showError('storage_class', formDir, 'required')"
123 <ng-template #storageClassError>
125 class="invalid-feedback"
126 *ngIf="storageClassForm.showError('storage_class', formDir, 'required')"
128 >This field is required.</span
132 <div *ngIf="storageClassForm.getValue('storageClassType') === TIER_TYPE.CLOUD_TIER">
133 <div class="form-item form-item-append"
136 <!-- Target Region -->
138 labelInputID="region"
140 [invalid]="storageClassForm.showError('region', formDir, 'required')"
141 [invalidText]="regionError"
142 [helperText]="targetRegionText"
148 formControlName="region"
149 placeholder="e.g, us-east-1"
151 [invalid]="storageClassForm.showError('region', formDir, 'required')"
154 <ng-template #regionError>
156 class="invalid-feedback"
157 *ngIf="storageClassForm.showError('region', formDir, 'required')"
159 >This field is required.</span
164 <!-- Target Endpoint -->
166 labelInputID="endpoint"
168 [invalid]="storageClassForm.showError('endpoint', formDir, 'required')"
169 [invalidText]="endpointError"
170 [helperText]="targetEndpointText"
175 placeholder="e.g, http://ceph-node-00.com:80"
178 formControlName="endpoint"
179 [invalid]="storageClassForm.showError('endpoint', formDir, 'required')"
182 <ng-template #endpointError>
184 class="invalid-feedback"
185 *ngIf="storageClassForm.showError('endpoint', formDir, 'required')"
187 >This field is required.</span
194 <div class="form-item">
196 [columnNumbers]="{ md: 12 }"
199 labelInputID="access_key"
200 [invalid]="storageClassForm.showError('access_key', formDir, 'required')"
201 [invalidText]="accessError"
202 [helperText]="targetAccessKeyText"
209 formControlName="access_key"
210 [invalid]="storageClassForm.showError('access_key', formDir, 'required')"
212 </cds-password-label>
213 <cd-copy-2-clipboard-button class="clipboard"> </cd-copy-2-clipboard-button>
214 <ng-template #accessError>
216 class="invalid-feedback"
217 *ngIf="storageClassForm.showError('access_key', formDir, 'required')"
219 >This field is required.</span
226 <div class="form-item">
228 [columnNumbers]="{ md: 12 }"
231 labelInputID="secret_key"
232 [helperText]="targetSecretKeyText"
233 [invalid]="storageClassForm.showError('secret_key', formDir, 'required')"
234 [invalidText]="secretError"
241 formControlName="secret_key"
242 [invalid]="storageClassForm.showError('secret_key', formDir, 'required')"
244 </cds-password-label>
245 <cd-copy-2-clipboard-button class="clipboard"> </cd-copy-2-clipboard-button>
246 <ng-template #secretError>
248 class="invalid-feedback"
249 *ngIf="storageClassForm.showError('secret_key', formDir, 'required')"
251 >This field is required.</span
258 <div class="form-item">
260 labelInputID="target_path"
262 [invalid]="storageClassForm.showError('target_path', formDir, 'required')"
263 [invalidText]="targetError"
264 [helperText]="targetPathText"
270 formControlName="target_path"
271 [invalid]="storageClassForm.showError('target_path', formDir, 'required')"
274 <ng-template #targetError>
276 class="invalid-feedback"
277 *ngIf="storageClassForm.showError('target_path', formDir, 'required')"
279 >This field is required.</span
284 <div *ngIf="storageClassForm.getValue('storageClassType') === TIER_TYPE.CLOUD_TIER">
286 <h5 class="cds--accordion__title cd-header">Advanced</h5>
289 <cds-accordion size="lg"
293 id="advanced-fieldset"
294 (selected)="showAdvanced = !showAdvanced"
296 <!-- Multi Part Sync Threshold -->
297 <div class="form-item form-item-append"
301 labelInputID="multipart_sync_threshold"
303 [helperText]="multipartSyncThreholdText"
304 cdOptionalField="Multipart Sync Threshold"
305 >Multipart Sync Threshold
309 id="multipart_sync_threshold"
310 formControlName="multipart_sync_threshold"
316 labelInputID="multipart_min_part_size"
318 [helperText]="multipartMinPartText"
319 cdOptionalField="Multipart Minimum Part Size"
320 >Multipart Minimum Part Size
324 id="multipart_min_part_size"
325 formControlName="multipart_min_part_size"
330 <div class="form-item">
332 id="allow_read_through"
333 formControlName="allow_read_through"
334 cdOptionalField="Allow Read Through"
336 (change)="onAllowReadThroughChange($event)"
338 <cd-help-text>{{ allowReadThroughText }}</cd-help-text>
341 <div class="form-item">
343 id="retain_head_object"
344 formControlName="retain_head_object"
345 cdOptionalField="Head Object (Stub File)"
347 >Head Object (Stub File)
348 <cd-help-text>{{ retainHeadObjectText }}</cd-help-text>
351 </cds-accordion-item>
358 *ngIf="storageClassForm.getValue('storageClassType') === TIER_TYPE.CLOUD_TIER"
360 <span i18n>RGW service would be restarted after creating the storage class.</span>
362 <cd-form-button-panel
363 (submitActionEvent)="submitAction()"
364 [form]="storageClassForm"
365 [submitText]="(action | titlecase) + ' ' + (resource | upperFirst)"
366 wrappingClass="text-right"
367 ></cd-form-button-panel>