Skip to content

Commit 0432800

Browse files
committed
EH: CS-1185: give more details in error message '<user> must be manager for this operation'
1 parent 4c8e168 commit 0432800

File tree

2 files changed

+16
-11
lines changed

2 files changed

+16
-11
lines changed

source/common/msg_common.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,9 +157,15 @@
157157
#define MSG_ANSWER_ERRORREADINGFROMSTDIN _MESSAGE(23043, _("error reading from stdin"))
158158
#define MSG_ANSWER_NOINPUT _MESSAGE(23044, _("no input read from stdin"))
159159

160+
#define MSG_SGETEXT_MUSTBEMANAGERFORTAR_SS _MESSAGE(23045, _("denied: " SFQ " must be manager to initiate operation for target " SFN))
161+
#define MSG_SGETEXT_MUSTBEOPERATORFORTAR_SS _MESSAGE(23046, _("denied: " SFQ " must be operator to initiate operation for target " SFN))
162+
160163
#define MSG_USER_INVALIDNAMEX_S _MESSAGE(23048, _("invalid user name " SFQ))
161164
#define MSG_USER_NOHOMEDIRFORUSERX_S _MESSAGE(23049, _("missing home directory for user " SFQ))
162165

166+
#define MSG_SGETEXT_MUSTBEMANAGERFOROP_SS _MESSAGE(23050, _("denied: " SFQ " must be manager to initiate " SFN " operation"))
167+
#define MSG_SGETEXT_MUSTBEOPERATORFOROP_SS _MESSAGE(23051, _("denied: " SFQ " must be operator to initiate " SFN " operation"))
168+
163169
#define MSG_OBJ_USER _MESSAGE(23052, _("user"))
164170
#define MSG_OBJ_GROUP _MESSAGE(23053, _("group"))
165171
#define MSG_OBJ_USERPRJ _MESSAGE(23054, _("user/project"))

source/daemons/qmaster/sge_c_gdi.cc

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ static void
140140
trigger_scheduler_monitoring(ocs::gdi::Packet *packet, ocs::gdi::Task *task, monitoring_t *monitor);
141141

142142
static bool
143-
sge_chck_mod_perm_user(const ocs::gdi::Packet *packet, lList **alpp, u_long32 target);
143+
sge_chck_mod_perm_user(const ocs::gdi::Packet *packet, lList **alpp, u_long32 tar);
144144

145145
static bool
146146
sge_task_check_get_perm_host(ocs::gdi::Packet *packet, ocs::gdi::Task *task);
@@ -258,8 +258,8 @@ sge_c_gdi_process_in_listener(ocs::gdi::Packet *packet, ocs::gdi::Task *task,
258258
bool
259259
sge_c_gdi_check_execution_permission(ocs::gdi::Packet *packet, ocs::gdi::Task *task) {
260260
DENTER(TOP_LAYER);
261-
int operation = task->command;
262-
switch (operation) {
261+
262+
switch (const ocs::gdi::Command::Cmd cmd = task->command) {
263263
case ocs::gdi::Command::SGE_GDI_GET:
264264
DRETURN(sge_task_check_get_perm_host(packet, task));
265265
case ocs::gdi::Command::SGE_GDI_ADD:
@@ -284,13 +284,13 @@ sge_c_gdi_check_execution_permission(ocs::gdi::Packet *packet, ocs::gdi::Task *t
284284
// other trigger requests must have been initiated by a manager
285285
if (task->target == ocs::gdi::Target::SGE_CQ_LIST) {
286286
if (!manop_is_operator(packet, master_manager_list, master_operator_list)) {
287-
ERROR(MSG_SGETEXT_MUSTBEOPERATOR_S, packet->user);
287+
ERROR(MSG_SGETEXT_MUSTBEOPERATORFOROP_SS, packet->user, ocs::gdi::Command::toString(cmd).c_str());
288288
answer_list_add(&(task->answer_list), SGE_EVENT, STATUS_ENOMGR, ANSWER_QUALITY_ERROR);
289289
DRETURN(false);
290290
}
291291
} else {
292292
if (!manop_is_manager(packet, master_manager_list)) {
293-
ERROR(MSG_SGETEXT_MUSTBEMANAGER_S, packet->user);
293+
ERROR(MSG_SGETEXT_MUSTBEMANAGERFOROP_SS, packet->user, ocs::gdi::Command::toString(cmd).c_str());
294294
answer_list_add(&(task->answer_list), SGE_EVENT, STATUS_ENOMGR, ANSWER_QUALITY_ERROR);
295295
DRETURN(false);
296296
}
@@ -1302,14 +1302,13 @@ static void sge_c_gdi_mod(gdi_object_t *ao, ocs::gdi::Packet *packet, ocs::gdi::
13021302

13031303
static bool
13041304
sge_chck_mod_perm_user(const ocs::gdi::Packet *packet, lList **alpp, u_long32 target) {
1305+
DENTER(TOP_LAYER);
1306+
13051307
const lList *master_manager_list = *ocs::DataStore::get_master_list(SGE_TYPE_MANAGER);
13061308
const lList *master_operator_list = *ocs::DataStore::get_master_list(SGE_TYPE_OPERATOR);
13071309

1308-
DENTER(TOP_LAYER);
1309-
13101310
/* check permissions of user */
1311-
switch (target) {
1312-
1311+
switch (const auto tar = static_cast<ocs::gdi::Target::TargetValue>(target)) {
13131312
case ocs::gdi::Target::SGE_ORDER_LIST:
13141313
case ocs::gdi::Target::SGE_AH_LIST:
13151314
case ocs::gdi::Target::SGE_SH_LIST:
@@ -1332,7 +1331,7 @@ sge_chck_mod_perm_user(const ocs::gdi::Packet *packet, lList **alpp, u_long32 ta
13321331
case ocs::gdi::Target::SGE_MASTER_EVENT:
13331332
/* user must be a manager */
13341333
if (!manop_is_manager(packet, master_manager_list)) {
1335-
ERROR(MSG_SGETEXT_MUSTBEMANAGER_S, packet->user);
1334+
ERROR(MSG_SGETEXT_MUSTBEMANAGERFORTAR_SS, packet->user, ocs::gdi::Target::targetToString(tar).c_str());
13361335
answer_list_add(alpp, SGE_EVENT, STATUS_ENOMGR, ANSWER_QUALITY_ERROR);
13371336
DRETURN(false);
13381337
}
@@ -1341,7 +1340,7 @@ sge_chck_mod_perm_user(const ocs::gdi::Packet *packet, lList **alpp, u_long32 ta
13411340
case ocs::gdi::Target::SGE_US_LIST:
13421341
/* user must be a operator */
13431342
if (!manop_is_operator(packet, master_manager_list, master_operator_list)) {
1344-
ERROR(MSG_SGETEXT_MUSTBEOPERATOR_S, packet->user);
1343+
ERROR(MSG_SGETEXT_MUSTBEOPERATORFORTAR_SS, packet->user, ocs::gdi::Target::targetToString(tar).c_str());
13451344
answer_list_add(alpp, SGE_EVENT, STATUS_ENOMGR, ANSWER_QUALITY_ERROR);
13461345
DRETURN(false);
13471346
}

0 commit comments

Comments
 (0)