Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix: crmadmin: return error if DC is not elected #2902 #3606 #3716

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions cts/cli/regression.error_codes.exp
Original file line number Diff line number Diff line change
Expand Up @@ -404,6 +404,7 @@ CRM_EX_ERROR - Error occurred
111: Requested item is not yet in effect
112: Could not determine status
113: Not applicable under current conditions
114: DC is not yet elected
124: Timeout occurred
190: Service is active but might fail soon
191: Service is promoted but might fail soon
Expand Down Expand Up @@ -451,6 +452,7 @@ CRM_EX_ERROR - Error occurred
<result-code code="111" description="Requested item is not yet in effect"/>
<result-code code="112" description="Could not determine status"/>
<result-code code="113" description="Not applicable under current conditions"/>
<result-code code="114" description="DC is not yet elected"/>
<result-code code="124" description="Timeout occurred"/>
<result-code code="190" description="Service is active but might fail soon"/>
<result-code code="191" description="Service is promoted but might fail soon"/>
Expand Down Expand Up @@ -499,6 +501,7 @@ CRM_EX_ERROR - Error occurred
111: CRM_EX_NOT_YET_IN_EFFECT Requested item is not yet in effect
112: CRM_EX_INDETERMINATE Could not determine status
113: CRM_EX_UNSATISFIED Not applicable under current conditions
114: CRM_EX_NO_DC DC is not yet elected
124: CRM_EX_TIMEOUT Timeout occurred
190: CRM_EX_DEGRADED Service is active but might fail soon
191: CRM_EX_DEGRADED_PROMOTED Service is promoted but might fail soon
Expand Down Expand Up @@ -546,6 +549,7 @@ CRM_EX_ERROR - Error occurred
<result-code code="111" name="CRM_EX_NOT_YET_IN_EFFECT" description="Requested item is not yet in effect"/>
<result-code code="112" name="CRM_EX_INDETERMINATE" description="Could not determine status"/>
<result-code code="113" name="CRM_EX_UNSATISFIED" description="Not applicable under current conditions"/>
<result-code code="114" name="CRM_EX_NO_DC" description="DC is not yet elected"/>
<result-code code="124" name="CRM_EX_TIMEOUT" description="Timeout occurred"/>
<result-code code="190" name="CRM_EX_DEGRADED" description="Service is active but might fail soon"/>
<result-code code="191" name="CRM_EX_DEGRADED_PROMOTED" description="Service is promoted but might fail soon"/>
Expand Down
2 changes: 2 additions & 0 deletions include/crm/common/results.h
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ enum pcmk_rc_e {
/* When adding new values, use consecutively lower numbers, update the array
* in lib/common/results.c, and test with crm_error.
*/
pcmk_rc_no_dc = -1040,
pcmk_rc_compression = -1039,
pcmk_rc_ns_resolution = -1038,
pcmk_rc_no_transaction = -1037,
Expand Down Expand Up @@ -273,6 +274,7 @@ typedef enum crm_exit_e {
CRM_EX_NOT_YET_IN_EFFECT = 111, //!< Requested item is not in effect
CRM_EX_INDETERMINATE = 112, //!< Could not determine status
CRM_EX_UNSATISFIED = 113, //!< Requested item does not satisfy constraints
CRM_EX_NO_DC = 114, //!< DC is not yet elected, e.g. right after cluster restart
aleksei-burlakov marked this conversation as resolved.
Show resolved Hide resolved

// Other
CRM_EX_TIMEOUT = 124, //!< Convention from timeout(1)
Expand Down
5 changes: 5 additions & 0 deletions lib/common/results.c
Original file line number Diff line number Diff line change
Expand Up @@ -734,6 +734,7 @@ crm_exit_name(crm_exit_t exit_code)
case CRM_EX_NOT_YET_IN_EFFECT: return "CRM_EX_NOT_YET_IN_EFFECT";
case CRM_EX_INDETERMINATE: return "CRM_EX_INDETERMINATE";
case CRM_EX_UNSATISFIED: return "CRM_EX_UNSATISFIED";
case CRM_EX_NO_DC: return "CRM_EX_NO_DC";
case CRM_EX_OLD: return "CRM_EX_OLD";
case CRM_EX_TIMEOUT: return "CRM_EX_TIMEOUT";
case CRM_EX_DEGRADED: return "CRM_EX_DEGRADED";
Expand Down Expand Up @@ -786,6 +787,7 @@ crm_exit_str(crm_exit_t exit_code)
case CRM_EX_NOT_YET_IN_EFFECT: return "Requested item is not yet in effect";
case CRM_EX_INDETERMINATE: return "Could not determine status";
case CRM_EX_UNSATISFIED: return "Not applicable under current conditions";
case CRM_EX_NO_DC: return "DC is not yet elected";
case CRM_EX_OLD: return "Update was older than existing configuration";
case CRM_EX_TIMEOUT: return "Timeout occurred";
case CRM_EX_DEGRADED: return "Service is active but might fail soon";
Expand Down Expand Up @@ -922,6 +924,9 @@ pcmk_rc2exitc(int rc)
case pcmk_rc_bad_xml_patch:
return CRM_EX_DATAERR;

case pcmk_rc_no_dc:
return CRM_EX_NO_DC;

default:
return CRM_EX_ERROR;
}
Expand Down
2 changes: 1 addition & 1 deletion lib/pacemaker/pcmk_cluster_queries.c
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ designated_controller_event_cb(pcmk_ipc_api_t *controld_api,

reply = (const pcmk_controld_api_reply_t *) event_data;
out->message(out, "dc", reply->host_from);
data->rc = pcmk_rc_ok;
data->rc = reply->host_from ? pcmk_rc_ok : pcmk_rc_no_dc;
}

/*!
Expand Down