34 #ifndef _CL_AMS_UTILS_H_
35 #define _CL_AMS_UTILS_H_
52 #include <clAmsMgmtCommon.h>
58 extern char *clAmsFormatMsg(
char *fmt, ...);
59 extern void clAmsLogMsgClient(
const ClUint32T level,
char *buffer);
65 #define AMS_CLIENT_LOG(LEVEL, MSG) \
67 clAmsLogMsgClient( LEVEL, clAmsFormatMsg MSG ); \
71 #define AMS_LOG(LEVEL, MSG) AMS_CLIENT_LOG(LEVEL,MSG)
74 #define AMS_CHECK_BAD_CLNAME(name) \
76 if ( (name).length > CL_MAX_NAME_LENGTH ) \
78 AMS_CLIENT_LOG(CL_DEBUG_ERROR, \
79 ("ALERT [%s:%d] : Invalid ClNameT structure\n", \
80 __FUNCTION__, __LINE__)); \
81 rc = CL_ERR_BUFFER_OVERRUN; \
86 #define AMS_CHECK_ENTITY_TYPE(type) \
88 if ( (type) > CL_AMS_ENTITY_TYPE_MAX ) \
90 AMS_CLIENT_LOG(CL_DEBUG_ERROR, \
91 ("ERROR: Invalid entity type = %d\n", type)); \
92 return CL_AMS_RC(CL_AMS_ERR_INVALID_ENTITY); \
96 #define AMS_CHECK_ENTITY_TYPE_AND_EXIT(type) \
98 if ( (type) > CL_AMS_ENTITY_TYPE_MAX ) \
100 AMS_CLIENT_LOG(CL_DEBUG_ERROR, \
101 ("ERROR: Invalid entity type = %d\n", type)); \
102 rc = CL_AMS_RC (CL_AMS_ERR_INVALID_ENTITY); \
107 #define AMS_CHECK_RC_ERROR(fn) \
111 if ( (rc) != CL_OK ) \
117 #define AMS_CHECK_RC_UNLOCK(fn) do { \
119 if ( (rc) != CL_OK ) \
125 #define AMS_CHECKPTR_SILENT(x) \
127 if ( (x) != CL_FALSE ) \
129 return CL_AMS_RC(CL_ERR_NULL_POINTER); \
133 #define AMS_CHECK_NO_MEMORY(x) \
137 AMS_CLIENT_LOG(CL_DEBUG_ERROR, \
138 ("ALERT [%s:%d] : Expression (%s) is True. No Memory\n", \
139 __FUNCTION__, __LINE__, #x)); \
140 return CL_AMS_RC(CL_ERR_NO_MEMORY); \
144 #define AMS_CHECK_NO_MEMORY_AND_EXIT(x) \
148 AMS_CLIENT_LOG(CL_DEBUG_ERROR, \
149 ("ALERT [%s:%d] : Expression (%s) is True. No Memory\n", \
150 __FUNCTION__, __LINE__, #x)); \
151 rc = CL_ERR_NO_MEMORY; \
156 #define AMS_CHECKPTR_AND_EXIT(x) \
158 if ( (x) != CL_FALSE ) \
160 AMS_CLIENT_LOG(CL_DEBUG_ERROR, \
161 ("ALERT [%s:%d] : Expression (%s) is True. Null Pointer\n", \
162 __FUNCTION__, __LINE__, #x)); \
163 rc = CL_ERR_NULL_POINTER; \
168 #define AMS_CHECKPTR(x) \
170 if ( (x) != CL_FALSE ) \
172 AMS_CLIENT_LOG(CL_DEBUG_ERROR, \
173 ("ALERT [%s:%d] : Expression (%s) is True. Null Pointer\n", \
174 __FUNCTION__, __LINE__, #x)); \
175 return CL_AMS_RC(CL_ERR_NULL_POINTER); \
183 #define AMS_MIN(x,y) ( (x) < (y) ) ? (x) : (y);
184 #define AMS_MAX(x,y) ( (x) > (y) ) ? (x) : (y);
186 #define clAmsFreeMemory(mPtr) \
188 if ( (mPtr) !=NULL ) \
199 #define CL_AMS_COLUMN_1_WIDTH 45
200 #define CL_AMS_COLUMN_2_WIDTH 35
201 #define CL_AMS_COLUMN_1_DELIMITER "--------------------------------------"
202 #define CL_AMS_COLUMN_2_DELIMITER "---------------------------------"
203 #define CL_AMS_DELIMITER \
204 "==========================================================================="
206 #define CL_AMS_PRINT_TWO_COL(A,B,C) \
208 if ( debugPrintFP != NULL ) \
210 fprintf(debugPrintFP,"%-*s | ", CL_AMS_COLUMN_1_WIDTH, A); \
211 fprintf(debugPrintFP,B, C); \
212 fprintf(debugPrintFP,"\n"); \
216 #define CL_AMS_PRINT_DELIMITER() \
218 if ( debugPrintFP != NULL ) \
220 fprintf(debugPrintFP,"%s\n", CL_AMS_DELIMITER); \
224 #define CL_AMS_PRINT_EMPTY_LINE() \
226 if ( debugPrintFP != NULL ) \
228 fprintf(debugPrintFP,"\n\n"); \
233 #define CL_AMS_PRINT_SUMMARY 1
234 #define CL_AMS_PRINT_DETAILS 2
236 #define CL_AMS_PRINT_HEADER(TITLE,FORMAT,STRING) \
238 CL_AMS_PRINT_DELIMITER(); \
239 CL_AMS_PRINT_TWO_COL(TITLE, FORMAT, STRING); \
240 CL_AMS_PRINT_DELIMITER(); \
243 #define CL_AMS_PRINT_OPEN_TAG(tag) \
245 fprintf(debugPrintFP, "<%s>\n", tag); \
248 #define CL_AMS_PRINT_CLOSE_TAG(tag) \
250 fprintf(debugPrintFP, "</%s>\n", tag); \
253 #define CL_AMS_PRINT_TAG_ATTR(tag, s, value) \
255 fprintf(debugPrintFP, "<%s value=\""s"\"/>\n", tag, value); \
258 #define CL_AMS_PRINT_TAG_VALUE(tag, s, value) \
260 fprintf(debugPrintFP, "<%s>"s"</%s>\n", tag, value, tag); \
263 #define CL_AMS_PRINT_OPEN_TAG_ATTR(tag, s, value) \
265 fprintf(debugPrintFP, "<%s value=\""s"\">\n", tag, value); \
272 #define CL_AMS_STRING_BOOLEAN(S) ( (S) ? "True" : "False" )
274 #define CL_AMS_STRING_SERVICE_STATE(S) \
275 ( ((S) == CL_AMS_SERVICE_STATE_RUNNING ) ? "Running" : \
276 ((S) == CL_AMS_SERVICE_STATE_STOPPED) ? "Stopped" : \
277 ((S) == CL_AMS_SERVICE_STATE_STARTINGUP) ? "Starting Up" : \
278 ((S) == CL_AMS_SERVICE_STATE_SHUTTINGDOWN) ? "Shutting Down" : \
279 ((S) == CL_AMS_SERVICE_STATE_UNAVAILABLE) ? "Unavailable" : \
280 ((S) == CL_AMS_SERVICE_STATE_HOT_STANDBY) ? "Hot standby" : \
281 ((S) == CL_AMS_SERVICE_STATE_NONE) ? "None" : \
284 #define CL_AMS_STRING_INSTANTIATE_MODE(S) \
285 ( ((S)&CL_AMS_INSTANTIATE_MODE_ACTIVE) ? "Active Mode" : \
286 ((S)&CL_AMS_INSTANTIATE_MODE_STANDBY) ? "Standby Mode": \
289 #define CL_AMS_STRING_A_STATE(S) \
290 ( ((S) == CL_AMS_ADMIN_STATE_UNLOCKED) ? "Unlocked" : \
291 ((S) == CL_AMS_ADMIN_STATE_LOCKED_A) ? "Locked Assignment" : \
292 ((S) == CL_AMS_ADMIN_STATE_LOCKED_I) ? "Locked Instantiation" : \
293 ((S) == CL_AMS_ADMIN_STATE_SHUTTINGDOWN) ? "Shutting Down" : \
294 ((S) == CL_AMS_ADMIN_STATE_NONE) ? "None" : \
297 #define CL_AMS_STRING_O_STATE(S) \
298 ( ((S) == CL_AMS_OPER_STATE_ENABLED) ? "Enabled" : \
299 ((S) == CL_AMS_OPER_STATE_DISABLED) ? "Disabled" : \
300 ((S) == CL_AMS_OPER_STATE_NONE) ? "None" : \
303 #define CL_AMS_STRING_P_STATE(S) \
304 ( ((S) == CL_AMS_PRESENCE_STATE_UNINSTANTIATED) ? "Uninstantiated" : \
305 ((S) == CL_AMS_PRESENCE_STATE_INSTANTIATING) ? "Instantiating" : \
306 ((S) == CL_AMS_PRESENCE_STATE_INSTANTIATED) ? "Instantiated" : \
307 ((S) == CL_AMS_PRESENCE_STATE_TERMINATING) ? "Terminating" : \
308 ((S) == CL_AMS_PRESENCE_STATE_RESTARTING) ? "Restarting" : \
309 ((S) == CL_AMS_PRESENCE_STATE_INSTANTIATION_FAILED) ? "Instantiation Failed" : \
310 ((S) == CL_AMS_PRESENCE_STATE_TERMINATION_FAILED) ? "Termination Failed" : \
311 ((S) == CL_AMS_PRESENCE_STATE_FAULT) ? "Fault" : \
312 ((S) == CL_AMS_PRESENCE_STATE_FAULT_WTR) ? "Fault WTR" : \
313 ((S) == CL_AMS_PRESENCE_STATE_FAULT_WTC) ? "Fault WTC" : \
314 ((S) == CL_AMS_PRESENCE_STATE_NONE) ? "None" : \
317 #define CL_AMS_STRING_R_STATE(S) \
318 ( ((S) == CL_AMS_READINESS_STATE_INSERVICE) ? "In Service" : \
319 ((S) == CL_AMS_READINESS_STATE_STOPPING) ? "Stopping" : \
320 ((S) == CL_AMS_READINESS_STATE_OUTOFSERVICE)? "Out of Service" : \
321 ((S) == CL_AMS_READINESS_STATE_NONE) ? "None" : \
324 #define CL_AMS_STRING_H_STATE(S) \
325 ( ((ClAmsHAStateT)(S) == CL_AMS_HA_STATE_ACTIVE) ? "Active" : \
326 ((ClAmsHAStateT)(S) == CL_AMS_HA_STATE_STANDBY) ? "Standby" : \
327 ((ClAmsHAStateT)(S) == CL_AMS_HA_STATE_QUIESCED) ? "Quiesced" : \
328 ((ClAmsHAStateT)(S) == CL_AMS_HA_STATE_QUIESCING) ? "Quiescing" : \
329 ((ClAmsHAStateT)(S) == CL_AMS_HA_STATE_NONE) ? "None" : \
332 #define CL_AMS_STRING_TIMER(S) \
333 ( ((S) == CL_AMS_NODE_TIMER_SUFAILOVER) ? "Node-SUFailover" : \
334 ((S) == CL_AMS_SG_TIMER_INSTANTIATE) ? "SG-Instantiate" : \
335 ((S) == CL_AMS_SG_TIMER_ADJUST) ? "SG-Adjust" : \
336 ((S) == CL_AMS_SG_TIMER_ADJUST_PROBATION) ? "SG-Adjust-Probation" : \
337 ((S) == CL_AMS_SU_TIMER_SURESTART) ? "SU-SURestart" : \
338 ((S) == CL_AMS_SU_TIMER_PROBATION) ? "SU-SUProbation" : \
339 ((S) == CL_AMS_SU_TIMER_COMPRESTART) ? "SU-CompRestart" : \
340 ((S) == CL_AMS_SU_TIMER_ASSIGNMENT) ? "SU-Assignment-Delay" : \
341 ((S) == CL_AMS_COMP_TIMER_INSTANTIATE) ? "Comp-Instantiate" : \
342 ((S) == CL_AMS_COMP_TIMER_INSTANTIATEDELAY) ? "Comp-InstantiateDelay" : \
343 ((S) == CL_AMS_COMP_TIMER_TERMINATE) ? "Comp-Terminate" : \
344 ((S) == CL_AMS_COMP_TIMER_CLEANUP) ? "Comp-Cleanup" : \
345 ((S) == CL_AMS_COMP_TIMER_AMSTART) ? "Comp-AMStart" : \
346 ((S) == CL_AMS_COMP_TIMER_AMSTOP) ? "Comp-AMStop" : \
347 ((S) == CL_AMS_COMP_TIMER_QUIESCINGCOMPLETE) ? "Comp-QuiescingComplete" : \
348 ((S) == CL_AMS_COMP_TIMER_CSISET) ? "Comp-CSISet" : \
349 ((S) == CL_AMS_COMP_TIMER_CSIREMOVE) ? "Comp-CSIRemove" : \
350 ((S) == CL_AMS_COMP_TIMER_PROXIEDCOMPINSTANTIATE)? "Comp-ProxiedCompInstantiate": \
351 ((S) == CL_AMS_COMP_TIMER_PROXIEDCOMPCLEANUP) ? "Comp-ProxiedCompCleanup": \
354 #define CL_AMS_STRING_NODE_CLASSTYPE(S) \
355 ( ((S) == CL_AMS_NODE_CLASS_A) ? "Class A" : \
356 ((S) == CL_AMS_NODE_CLASS_B) ? "Class B" : \
357 ((S) == CL_AMS_NODE_CLASS_C) ? "Class C" : \
358 ((S) == CL_AMS_NODE_CLASS_D) ? "Class D" : \
359 ((S) == CL_AMS_NODE_CLASS_NONE) ? "None" : \
362 #define CL_AMS_STRING_NODE_ISCLUSTERMEMBER(S) \
363 ( ((S) == CL_AMS_NODE_IS_CLUSTER_MEMBER) ? "True" : \
364 ((S) == CL_AMS_NODE_IS_LEAVING_CLUSTER) ? "Leaving" : \
367 #define CL_AMS_STRING_SG_REDUNDANCY_MODEL(S) \
368 ( ((S) == CL_AMS_SG_REDUNDANCY_MODEL_NO_REDUNDANCY) ? "No Redundancy" : \
369 ((S) == CL_AMS_SG_REDUNDANCY_MODEL_TWO_N) ? "2N (1+1)" : \
370 ((S) == CL_AMS_SG_REDUNDANCY_MODEL_M_PLUS_N) ? "M + N" : \
371 ((S) == CL_AMS_SG_REDUNDANCY_MODEL_N_WAY) ? "N-Way" : \
372 ((S) == CL_AMS_SG_REDUNDANCY_MODEL_N_WAY_ACTIVE) ? "N-Way-Active" : \
373 ((S) == CL_AMS_SG_REDUNDANCY_MODEL_CUSTOM) ? "CUSTOM" : \
376 #define CL_AMS_STRING_SG_LOADING_STRATEGY(S) \
377 ( ((S) == CL_AMS_SG_LOADING_STRATEGY_LEAST_SI_PER_SU) ? "Least SI per SU" : \
378 ((S) == CL_AMS_SG_LOADING_STRATEGY_LEAST_SU_ASSIGNED) ? "Least SU Assigned" : \
379 ((S) == CL_AMS_SG_LOADING_STRATEGY_LEAST_LOAD_PER_SU) ? "Least Load per SU" : \
380 ((S) == CL_AMS_SG_LOADING_STRATEGY_BY_SI_PREFERENCE) ? "By SI Perference" : \
381 ((S) == CL_AMS_SG_LOADING_STRATEGY_USER_DEFINED) ? "User Defined" : \
384 #define CL_AMS_STRING_RECOVERY(S) \
385 ( ((S) == CL_AMS_RECOVERY_NO_RECOMMENDATION) ? "No Recommendation" : \
386 ((S) == CL_AMS_RECOVERY_COMP_RESTART) ? "Component Restart" : \
387 ((S) == CL_AMS_RECOVERY_COMP_FAILOVER) ? "Component Failover" : \
388 ((S) == CL_AMS_RECOVERY_NODE_SWITCHOVER) ? "Node Switchover" : \
389 ((S) == CL_AMS_RECOVERY_NODE_FAILOVER) ? "Node Failover" : \
390 ((S) == CL_AMS_RECOVERY_NODE_FAILFAST) ? "Node Failfast" : \
391 ((S) == CL_AMS_RECOVERY_APP_RESTART) ? "Application Restart" : \
392 ((S) == CL_AMS_RECOVERY_CLUSTER_RESET) ? "Cluster Restart" : \
393 ((S) == CL_AMS_RECOVERY_INTERNALLY_RECOVERED) ? "Internally Recovered" : \
394 ((S) == CL_AMS_RECOVERY_SU_RESTART) ? "SU Restart" : \
395 ((S) == CL_AMS_RECOVERY_NONE) ? "None" : \
396 ((S) == CL_AMS_EXTERNAL_RECOVERY_RESET) ? "External Component Reset" : \
397 ((S) == CL_AMS_EXTERNAL_RECOVERY_REBOOT) ? "External Component Reboot" : \
398 ((S) == CL_AMS_EXTERNAL_RECOVERY_POWER_ON) ? "External Component PowerOn" : \
399 ((S) == CL_AMS_EXTERNAL_RECOVERY_POWER_OFF) ? "External Component PowerOff" : \
400 ((S) == CL_AMS_RECOVERY_NODE_HALT) ? "Node halt" : \
403 #define CL_AMS_STRING_COMP_PROPERTY(S) \
404 ( ((S) == CL_AMS_COMP_PROPERTY_SA_AWARE) ? \
406 ((S) == CL_AMS_COMP_PROPERTY_PROXIED_PREINSTANTIABLE) ? \
407 "Proxied Preinstantiable": \
408 ((S) == CL_AMS_COMP_PROPERTY_PROXIED_NON_PREINSTANTIABLE) ? \
409 "Proxied Non Preinstantiable": \
410 ((S) == CL_AMS_COMP_PROPERTY_NON_PROXIED_NON_PREINSTANTIABLE) ? \
411 "Non Proxied Non Preinstantiable": \
414 #define CL_AMS_STRING_COMP_CAP(S) \
415 ( ((S) == CL_AMS_COMP_CAP_X_ACTIVE_AND_Y_STANDBY) ? "X-Active AND Y-Standby" : \
416 ((S) == CL_AMS_COMP_CAP_X_ACTIVE_OR_Y_STANDBY) ? "X-Active OR Y-Standby" : \
417 ((S) == CL_AMS_COMP_CAP_ONE_ACTIVE_OR_X_STANDBY) ? "1-Active OR Y-Standby" : \
418 ((S) == CL_AMS_COMP_CAP_ONE_ACTIVE_OR_ONE_STANDBY) ? "1-Active OR 1-Standby" : \
419 ((S) == CL_AMS_COMP_CAP_X_ACTIVE) ? "X-Active" : \
420 ((S) == CL_AMS_COMP_CAP_ONE_ACTIVE) ? "1-Active" : \
421 ((S) == CL_AMS_COMP_CAP_NON_PREINSTANTIABLE) ? "Non Preinstantiable" : \
424 #define CL_AMS_STRING_CSI_FLAGS(S) \
425 ( ((S) & CL_AMS_CSI_FLAG_ADD_ONE) ? "ADD_ONE" : \
426 ((S) & CL_AMS_CSI_FLAG_TARGET_ONE) ? "TARGET_ONE" : \
427 ((S) & CL_AMS_CSI_FLAG_TARGET_ALL) ? "TARGET_ALL" : \
430 #define CL_AMS_STRING_CSI_TRAN_DESCR(S) \
431 ( ((S) == CL_AMS_CSI_NEW_ASSIGN) ? "NEW_ASSIGN" : \
432 ((S) == CL_AMS_CSI_QUIESCED) ? "CSI_QUIESCED" : \
433 ((S) == CL_AMS_CSI_NOT_QUIESCED) ? "CSI_NOT_QUIESCED" : \
434 ((S) == CL_AMS_CSI_STILL_ACTIVE) ? "CSI_STILL_ACTIVE" : \
437 #define CL_AMS_STRING_ENTITY_TYPE(S) \
438 ( ((S) == CL_AMS_ENTITY_TYPE_ENTITY ) ? "entity" : \
439 ((S) == CL_AMS_ENTITY_TYPE_NODE) ? "node" : \
440 ((S) == CL_AMS_ENTITY_TYPE_SG) ? "sg" : \
441 ((S) == CL_AMS_ENTITY_TYPE_SU) ? "su" : \
442 ((S) == CL_AMS_ENTITY_TYPE_SI) ? "si" : \
443 ((S) == CL_AMS_ENTITY_TYPE_COMP) ? "comp" : \
444 ((S) == CL_AMS_ENTITY_TYPE_CSI) ? "csi" : \
445 ((S) == CL_AMS_ENTITY_TYPE_CLUSTER) ? "cluster" : \
Typical defines found in any software project.
Header file of error Messages that are AMS specific.
Header file of Debug Service Related APIs.
Operating System Abstraction Layer API.