1 <cd-modal [modalRef]="activeModal">
2 <ng-container i18n="form title"
3 class="modal-title">{{ action | titlecase }} {{ resource | upperFirst }}</ng-container>
5 <ng-container class="modal-content">
6 <form name="multisiteZonegroupForm"
8 [formGroup]="multisiteZonegroupForm"
10 <div class="modal-body">
11 <div class="form-group row">
12 <label class="cd-col-form-label"
14 i18n>Select Realm</label>
15 <div class="cd-col-form-input">
16 <select class="form-select"
18 formControlName="selectedRealm"
21 i18n>-- Select a realm --</option>
22 <option *ngFor="let realmName of realmList"
23 [value]="realmName.name"
24 [selected]="realmName.name === multisiteZonegroupForm.getValue('selectedRealm')">
30 <div class="form-group row">
31 <label class="cd-col-form-label required"
33 i18n>Zonegroup Name</label>
34 <div class="cd-col-form-input">
35 <input class="form-control"
37 placeholder="Zonegroup name..."
40 formControlName="zonegroupName">
41 <span class="invalid-feedback"
42 *ngIf="multisiteZonegroupForm.showError('zonegroupName', formDir, 'required')"
43 i18n>This field is required.</span>
44 <span class="invalid-feedback"
45 *ngIf="multisiteZonegroupForm.showError('zonegroupName', formDir, 'uniqueName')"
46 i18n>The chosen zonegroup name is already in use.</span>
47 <div class="custom-control custom-checkbox">
48 <input class="form-check-input"
49 id="default_zonegroup"
50 name="default_zonegroup"
51 formControlName="default_zonegroup"
53 <label class="form-check-label"
54 for="default_zonegroup"
56 <span *ngIf="disableDefault">
57 <cd-helper i18n>Zonegroup doesn't belong to the default realm.</cd-helper>
59 <input class="form-check-input"
61 name="master_zonegroup"
62 formControlName="master_zonegroup"
64 <label class="form-check-label"
65 for="master_zonegroup"
67 <span *ngIf="!isMaster">
68 <cd-helper i18n>RGW multi-site configuration must have a master zonegroup. Setting
69 the first zonegroup created as master, to avoid any errors on udating the period.
70 Can be modified later by editing a zonegroup.
73 <span *ngIf="disableMaster">
74 <cd-helper i18n>Multiple master zonegroups can't be configured. If you want to create a new zonegroup and make it the master zonegroup, you must delete the default zonegroup.</cd-helper>
79 <div class="form-group row">
80 <label class="cd-col-form-label required"
81 for="zonegroup_endpoints"
82 i18n>Endpoints</label>
83 <div class="cd-col-form-input">
84 <input class="form-control"
86 placeholder="e.g, http://ceph-node-00.com:80"
87 id="zonegroup_endpoints"
88 name="zonegroup_endpoints"
89 formControlName="zonegroup_endpoints">
90 <span class="invalid-feedback"
91 *ngIf="multisiteZonegroupForm.showError('zonegroup_endpoints', formDir, 'required')"
92 i18n>This field is required.</span>
93 <span class="invalid-feedback"
94 *ngIf="multisiteZonegroupForm.showError('zonegroup_endpoints', formDir, 'endpoint')"
95 i18n>Please enter a valid IP address.</span>
98 <div class="form-group row"
99 *ngIf="action === 'edit'">
102 class="cd-col-form-label">Zones</label>
103 <div class="cd-col-form-input">
104 <cd-select-badges id="zones"
105 [data]="zonegroupZoneNames"
106 [options]="labelsOption"
107 [customBadges]="true">
108 </cd-select-badges><br>
109 <span class="invalid-feedback"
110 *ngIf="isRemoveMasterZone"
111 i18n>Cannot remove master zone.</span>
114 <div *ngIf="action === 'edit'">
115 <legend>Placement targets</legend>
116 <ng-container formArrayName="placementTargets">
117 <div *ngFor="let item of placementTargets.controls; let index = index; trackBy: trackByFn">
120 <div class="card-header">
121 {{ (index + 1) | ordinal }}
122 <span class="float-end clickable"
123 name="remove_placement_target"
124 (click)="removePlacementTarget(index)"
125 ngbTooltip="Remove">×</span>
128 <div class="card-body">
129 <!-- Placement Id -->
130 <div class="form-group row">
132 class="cd-col-form-label required"
133 for="placement_id">Placement Id</label>
134 <div class="cd-col-form-input">
139 formControlName="placement_id"
140 placeholder="eg. default-placement">
141 <span class="invalid-feedback">
142 <span *ngIf="showError(index, 'placement_id', formDir, 'required')"
143 i18n>This field is required.</span>
149 <div class="form-group row">
151 class="cd-col-form-label"
152 for="tags">Tags</label>
153 <div class="cd-col-form-input">
158 formControlName="tags"
159 placeholder="comma separated tags, eg. default-placement, ssd">
163 <!-- Storage Class -->
164 <div class="form-group row">
166 class="cd-col-form-label"
167 for="storage_class">Storage Class</label>
168 <div class="cd-col-form-input">
173 formControlName="storage_class"
174 placeholder="eg. Standard-tier">
181 <button type="button"
183 class="btn btn-light float-end my-3"
184 (click)="addPlacementTarget()">
185 <i [ngClass]="[icons.add]"></i>
186 <ng-container i18n>Add placement target</ng-container>
190 <div class="modal-footer">
191 <cd-form-button-panel (submitActionEvent)="submit()"
192 [form]="multisiteZonegroupForm"
193 [submitText]="(action | titlecase) + ' ' + (resource | upperFirst)"></cd-form-button-panel>