Skip to content

Commit d304ee1

Browse files
authored
Merge pull request ceph#50706 from rhcs-dashboard/dashboard-import-export-multisite
mgr/dashboard: import export functionality for RGW multisite Reviewed-by: Nizamudeen A <[email protected]>
2 parents add6bf9 + 5415a26 commit d304ee1

File tree

42 files changed

+2419
-1514
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+2419
-1514
lines changed

src/pybind/mgr/dashboard/controllers/rgw.py

Lines changed: 128 additions & 175 deletions
Large diffs are not rendered by default.

src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/service-form/service-form.component.html

Lines changed: 68 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,14 @@
77
[formGroup]="serviceForm"
88
novalidate>
99
<div class="modal-body">
10-
10+
<cd-alert-panel *ngIf="serviceForm.controls.service_type.value === 'rgw' && showRealmCreationForm"
11+
type="info"
12+
spacingClass="mb-3"
13+
i18n>
14+
<a class="text-decoration-underline"
15+
(click)="createMultisiteSetup()">
16+
Click here</a> to create a new realm/zonegroup/zone
17+
</cd-alert-panel>
1118
<!-- Service type -->
1219
<div class="form-group row">
1320
<label class="cd-col-form-label required"
@@ -83,15 +90,72 @@
8390
<span class="invalid-feedback"
8491
*ngIf="serviceForm.showError('service_id', frm, 'uniqueName')"
8592
i18n>This service id is already in use.</span>
86-
<span class="invalid-feedback"
87-
*ngIf="serviceForm.showError('service_id', frm, 'rgwPattern')"
88-
i18n>The value does not match the pattern <strong>&lt;service_id&gt;[.&lt;realm_name&gt;.&lt;zone_name&gt;]</strong>.</span>
8993
<span class="invalid-feedback"
9094
*ngIf="serviceForm.showError('service_id', frm, 'mdsPattern')"
9195
i18n>MDS service id must start with a letter and contain alphanumeric characters or '.', '-', and '_'</span>
9296
</div>
9397
</div>
9498

99+
<div class="form-group row"
100+
*ngIf="serviceForm.controls.service_type.value === 'rgw'">
101+
<label class="cd-col-form-label"
102+
for="realm_name"
103+
i18n>Realm</label>
104+
<div class="cd-col-form-input">
105+
<select class="form-select"
106+
id="realm_name"
107+
formControlName="realm_name"
108+
name="realm_name"
109+
[attr.disabled]="realmList.length === 0 || editing ? true : null">
110+
<option *ngIf="realmList.length === 0"
111+
i18n
112+
selected>-- No realm available --</option>
113+
<option *ngFor="let realm of realmList"
114+
[value]="realm.name">
115+
{{ realm.name }}
116+
</option>
117+
</select>
118+
</div>
119+
</div>
120+
121+
<div class="form-group row"
122+
*ngIf="serviceForm.controls.service_type.value === 'rgw'">
123+
<label class="cd-col-form-label"
124+
for="zonegroup_name"
125+
i18n>Zonegroup</label>
126+
<div class="cd-col-form-input">
127+
<select class="form-select"
128+
id="zonegroup_name"
129+
formControlName="zonegroup_name"
130+
name="zonegroup_name"
131+
[attr.disabled]="zonegroupList.length === 0 || editing ? true : null">
132+
<option *ngFor="let zonegroup of zonegroupList"
133+
[value]="zonegroup.name">
134+
{{ zonegroup.name }}
135+
</option>
136+
</select>
137+
</div>
138+
</div>
139+
140+
<div class="form-group row"
141+
*ngIf="serviceForm.controls.service_type.value === 'rgw'">
142+
<label class="cd-col-form-label"
143+
for="zone_name"
144+
i18n>Zone</label>
145+
<div class="cd-col-form-input">
146+
<select class="form-select"
147+
id="zone_name"
148+
formControlName="zone_name"
149+
name="zone_name"
150+
[attr.disabled]="zoneList.length === 0 || editing ? true : null">
151+
<option *ngFor="let zone of zoneList"
152+
[value]="zone.name">
153+
{{ zone.name }}
154+
</option>
155+
</select>
156+
</div>
157+
</div>
158+
95159
<!-- unmanaged -->
96160
<div class="form-group row">
97161
<div class="cd-col-form-offset">

src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/service-form/service-form.component.spec.ts

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -191,29 +191,18 @@ describe('ServiceFormComponent', () => {
191191
formHelper.expectValid('service_id');
192192
});
193193

194-
it('should test rgw invalid service id', () => {
195-
formHelper.setValue('service_id', '.');
196-
formHelper.expectError('service_id', 'rgwPattern');
197-
formHelper.setValue('service_id', 'svc.');
198-
formHelper.expectError('service_id', 'rgwPattern');
199-
formHelper.setValue('service_id', 'svc.realm');
200-
formHelper.expectError('service_id', 'rgwPattern');
201-
formHelper.setValue('service_id', 'svc.realm.');
202-
formHelper.expectError('service_id', 'rgwPattern');
203-
formHelper.setValue('service_id', '.svc.realm');
204-
formHelper.expectError('service_id', 'rgwPattern');
205-
formHelper.setValue('service_id', 'svc.realm.zone.');
206-
formHelper.expectError('service_id', 'rgwPattern');
207-
});
208-
209-
it('should submit rgw with realm and zone', () => {
210-
formHelper.setValue('service_id', 'svc.my-realm.my-zone');
194+
it('should submit rgw with realm, zonegroup and zone', () => {
195+
formHelper.setValue('service_id', 'svc');
196+
formHelper.setValue('realm_name', 'my-realm');
197+
formHelper.setValue('zone_name', 'my-zone');
198+
formHelper.setValue('zonegroup_name', 'my-zonegroup');
211199
component.onSubmit();
212200
expect(cephServiceService.create).toHaveBeenCalledWith({
213201
service_type: 'rgw',
214202
service_id: 'svc',
215203
rgw_realm: 'my-realm',
216204
rgw_zone: 'my-zone',
205+
rgw_zonegroup: 'my-zonegroup',
217206
placement: {},
218207
unmanaged: false,
219208
ssl: false
@@ -227,6 +216,9 @@ describe('ServiceFormComponent', () => {
227216
expect(cephServiceService.create).toHaveBeenCalledWith({
228217
service_type: 'rgw',
229218
service_id: 'svc',
219+
rgw_realm: null,
220+
rgw_zone: null,
221+
rgw_zonegroup: null,
230222
placement: {},
231223
unmanaged: false,
232224
rgw_frontend_port: 1234,
@@ -271,6 +263,9 @@ describe('ServiceFormComponent', () => {
271263
expect(cephServiceService.create).toHaveBeenCalledWith({
272264
service_type: 'rgw',
273265
service_id: 'svc',
266+
rgw_realm: null,
267+
rgw_zone: null,
268+
rgw_zonegroup: null,
274269
placement: {},
275270
unmanaged: false,
276271
ssl: false

0 commit comments

Comments
 (0)