Skip to content

Commit b658bb9

Browse files
Pegonzalnizamial09
authored andcommitted
mgr/dashboard: add system users to rgw user form
Fixes: https://tracker.ceph.com/issues/65074 Signed-off-by: Pedro Gonzalez Gomez <[email protected]>
1 parent ae777cc commit b658bb9

File tree

7 files changed

+46
-13
lines changed

7 files changed

+46
-13
lines changed

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -581,7 +581,7 @@ def get_emails(self, daemon_name=None):
581581

582582
@allow_empty_body
583583
def create(self, uid, display_name, email=None, max_buckets=None,
584-
suspended=None, generate_key=None, access_key=None,
584+
system=None, suspended=None, generate_key=None, access_key=None,
585585
secret_key=None, daemon_name=None):
586586
params = {'uid': uid}
587587
if display_name is not None:
@@ -590,6 +590,8 @@ def create(self, uid, display_name, email=None, max_buckets=None,
590590
params['email'] = email
591591
if max_buckets is not None:
592592
params['max-buckets'] = max_buckets
593+
if system is not None:
594+
params['system'] = system
593595
if suspended is not None:
594596
params['suspended'] = suspended
595597
if generate_key is not None:
@@ -604,14 +606,16 @@ def create(self, uid, display_name, email=None, max_buckets=None,
604606

605607
@allow_empty_body
606608
def set(self, uid, display_name=None, email=None, max_buckets=None,
607-
suspended=None, daemon_name=None):
609+
system=None, suspended=None, daemon_name=None):
608610
params = {'uid': uid}
609611
if display_name is not None:
610612
params['display-name'] = display_name
611613
if email is not None:
612614
params['email'] = email
613615
if max_buckets is not None:
614616
params['max-buckets'] = max_buckets
617+
if system is not None:
618+
params['system'] = system
615619
if suspended is not None:
616620
params['suspended'] = suspended
617621
result = self.proxy(daemon_name, 'POST', 'user', params)

src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-details/rgw-user-details.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@
6060
</tr>
6161
<tr>
6262
<td i18n
63-
class="bold">System</td>
64-
<td>{{ user.system === 'true' | booleanText }}</td>
63+
class="bold">System user</td>
64+
<td>{{ user.system | booleanText }}</td>
6565
</tr>
6666
<tr>
6767
<td i18n

src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-details/rgw-user-details.component.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,18 +29,18 @@ describe('RgwUserDetailsComponent', () => {
2929
});
3030

3131
it('should show correct "System" info', () => {
32-
component.selection = { uid: '', email: '', system: 'true', keys: [], swift_keys: [] };
32+
component.selection = { uid: '', email: '', system: true, keys: [], swift_keys: [] };
3333

3434
component.ngOnChanges();
3535
fixture.detectChanges();
3636

3737
const detailsTab = fixture.debugElement.nativeElement.querySelectorAll(
3838
'.table.table-striped.table-bordered tr td'
3939
);
40-
expect(detailsTab[10].textContent).toEqual('System');
40+
expect(detailsTab[10].textContent).toEqual('System user');
4141
expect(detailsTab[11].textContent).toEqual('Yes');
4242

43-
component.selection.system = 'false';
43+
component.selection.system = false;
4444
component.ngOnChanges();
4545
fixture.detectChanges();
4646

src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-form/rgw-user-form.component.html

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,22 @@
164164
</div>
165165
</div>
166166

167+
<!-- System User -->
168+
<div class="form-group row">
169+
<div class="cd-col-form-offset">
170+
<div class="custom-control custom-checkbox">
171+
<input class="custom-control-input"
172+
id="system"
173+
type="checkbox"
174+
formControlName="system">
175+
<label class="custom-control-label"
176+
for="system"
177+
i18n>System user</label>
178+
<cd-helper i18n>System users are distinct from regular users, they are used by the RGW service to perform administrative tasks, manage buckets and objects</cd-helper>
179+
</div>
180+
</div>
181+
</div>
182+
167183
<!-- S3 key -->
168184
<fieldset *ngIf="!editing">
169185
<legend i18n>S3 key</legend>

src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-form/rgw-user-form.component.spec.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,7 @@ describe('RgwUserFormComponent', () => {
187187
max_buckets: -1,
188188
secret_key: '',
189189
suspended: false,
190+
system: false,
190191
uid: null
191192
});
192193
});
@@ -200,7 +201,8 @@ describe('RgwUserFormComponent', () => {
200201
display_name: null,
201202
email: null,
202203
max_buckets: -1,
203-
suspended: false
204+
suspended: false,
205+
system: false
204206
});
205207
});
206208

@@ -216,6 +218,7 @@ describe('RgwUserFormComponent', () => {
216218
max_buckets: 0,
217219
secret_key: '',
218220
suspended: false,
221+
system: false,
219222
uid: null
220223
});
221224
});
@@ -229,7 +232,8 @@ describe('RgwUserFormComponent', () => {
229232
display_name: null,
230233
email: null,
231234
max_buckets: 0,
232-
suspended: false
235+
suspended: false,
236+
system: false
233237
});
234238
});
235239

@@ -246,6 +250,7 @@ describe('RgwUserFormComponent', () => {
246250
max_buckets: 100,
247251
secret_key: '',
248252
suspended: false,
253+
system: false,
249254
uid: null
250255
});
251256
});
@@ -260,7 +265,8 @@ describe('RgwUserFormComponent', () => {
260265
display_name: null,
261266
email: null,
262267
max_buckets: 100,
263-
suspended: false
268+
suspended: false,
269+
system: false
264270
});
265271
});
266272
});
@@ -283,7 +289,8 @@ describe('RgwUserFormComponent', () => {
283289
display_name: null,
284290
email: '',
285291
max_buckets: 1000,
286-
suspended: false
292+
suspended: false,
293+
system: false
287294
});
288295
});
289296

src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-form/rgw-user-form.component.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ export class RgwUserFormComponent extends CdForm implements OnInit {
109109
1000,
110110
[CdValidators.requiredIf({ max_buckets_mode: '1' }), CdValidators.number(false)]
111111
],
112+
system: [false],
112113
suspended: [false],
113114
// S3 key
114115
generate_key: [true],
@@ -577,7 +578,7 @@ export class RgwUserFormComponent extends CdForm implements OnInit {
577578
* @return {Boolean} Returns TRUE if the general user settings have been modified.
578579
*/
579580
private _isGeneralDirty(): boolean {
580-
return ['display_name', 'email', 'max_buckets_mode', 'max_buckets', 'suspended'].some(
581+
return ['display_name', 'email', 'max_buckets_mode', 'max_buckets', 'system', 'suspended'].some(
581582
(path) => {
582583
return this.userForm.get(path).dirty;
583584
}
@@ -624,6 +625,7 @@ export class RgwUserFormComponent extends CdForm implements OnInit {
624625
const result = {
625626
uid: this.getUID(),
626627
display_name: this.userForm.getValue('display_name'),
628+
system: this.userForm.getValue('system'),
627629
suspended: this.userForm.getValue('suspended'),
628630
email: '',
629631
max_buckets: this.userForm.getValue('max_buckets'),
@@ -658,7 +660,7 @@ export class RgwUserFormComponent extends CdForm implements OnInit {
658660
*/
659661
private _getUpdateArgs() {
660662
const result: Record<string, any> = {};
661-
const keys = ['display_name', 'email', 'max_buckets', 'suspended'];
663+
const keys = ['display_name', 'email', 'max_buckets', 'system', 'suspended'];
662664
for (const key of keys) {
663665
result[key] = this.userForm.getValue(key);
664666
}

src/pybind/mgr/dashboard/openapi.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11297,6 +11297,8 @@ paths:
1129711297
type: string
1129811298
suspended:
1129911299
type: string
11300+
system:
11301+
type: string
1130011302
uid:
1130111303
type: string
1130211304
required:
@@ -11449,6 +11451,8 @@ paths:
1144911451
type: string
1145011452
suspended:
1145111453
type: string
11454+
system:
11455+
type: string
1145211456
type: object
1145311457
responses:
1145411458
'200':

0 commit comments

Comments
 (0)