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 clOsalPrintf("%-*s | ", CL_AMS_COLUMN_1_WIDTH, A); \
209 clOsalPrintf(B, C); \
210 clOsalPrintf("\n"); \
211 if ( debugPrintFP != NULL ) \
213 fprintf(debugPrintFP,"%-*s | ", CL_AMS_COLUMN_1_WIDTH, A); \
214 fprintf(debugPrintFP,B, C); \
215 fprintf(debugPrintFP,"\n"); \
219 #define CL_AMS_PRINT_DELIMITER() \
221 clOsalPrintf("%s\n", CL_AMS_DELIMITER); \
222 if ( debugPrintFP != NULL ) \
224 fprintf(debugPrintFP,"%s\n", CL_AMS_DELIMITER); \
228 #define CL_AMS_PRINT_EMPTY_LINE() \
230 clOsalPrintf("\n\n"); \
231 if ( debugPrintFP != NULL ) \
233 fprintf(debugPrintFP,"\n\n"); \
238 #define CL_AMS_PRINT_SUMMARY 1
239 #define CL_AMS_PRINT_DETAILS 2
241 #define CL_AMS_PRINT_HEADER(TITLE,FORMAT,STRING) \
243 CL_AMS_PRINT_DELIMITER(); \
244 CL_AMS_PRINT_TWO_COL(TITLE, FORMAT, STRING); \
245 CL_AMS_PRINT_DELIMITER(); \
248 #define CL_AMS_PRINT_OPEN_TAG(tag) \
250 fprintf(debugPrintFP, "<%s>\n", tag); \
253 #define CL_AMS_PRINT_CLOSE_TAG(tag) \
255 fprintf(debugPrintFP, "</%s>\n", tag); \
258 #define CL_AMS_PRINT_TAG_ATTR(tag, s, value) \
260 fprintf(debugPrintFP, "<%s value=\""s"\"/>\n", tag, value); \
263 #define CL_AMS_PRINT_TAG_VALUE(tag, s, value) \
265 fprintf(debugPrintFP, "<%s>"s"</%s>\n", tag, value, tag); \
268 #define CL_AMS_PRINT_OPEN_TAG_ATTR(tag, s, value) \
270 fprintf(debugPrintFP, "<%s value=\""s"\">\n", tag, value); \
277 #define CL_AMS_STRING_BOOLEAN(S) ( (S) ? "True" : "False" )
279 #define CL_AMS_STRING_SERVICE_STATE(S) \
280 ( ((S) == CL_AMS_SERVICE_STATE_RUNNING ) ? "Running" : \
281 ((S) == CL_AMS_SERVICE_STATE_STOPPED) ? "Stopped" : \
282 ((S) == CL_AMS_SERVICE_STATE_STARTINGUP) ? "Starting Up" : \
283 ((S) == CL_AMS_SERVICE_STATE_SHUTTINGDOWN) ? "Shutting Down" : \
284 ((S) == CL_AMS_SERVICE_STATE_UNAVAILABLE) ? "Unavailable" : \
285 ((S) == CL_AMS_SERVICE_STATE_HOT_STANDBY) ? "Hot standby" : \
286 ((S) == CL_AMS_SERVICE_STATE_NONE) ? "None" : \
289 #define CL_AMS_STRING_INSTANTIATE_MODE(S) \
290 ( ((S)&CL_AMS_INSTANTIATE_MODE_ACTIVE) ? "Active Mode" : \
291 ((S)&CL_AMS_INSTANTIATE_MODE_STANDBY) ? "Standby Mode": \
294 #define CL_AMS_STRING_A_STATE(S) \
295 ( ((S) == CL_AMS_ADMIN_STATE_UNLOCKED) ? "Unlocked" : \
296 ((S) == CL_AMS_ADMIN_STATE_LOCKED_A) ? "Locked Assignment" : \
297 ((S) == CL_AMS_ADMIN_STATE_LOCKED_I) ? "Locked Instantiation" : \
298 ((S) == CL_AMS_ADMIN_STATE_SHUTTINGDOWN) ? "Shutting Down" : \
299 ((S) == CL_AMS_ADMIN_STATE_NONE) ? "None" : \
302 #define CL_AMS_STRING_O_STATE(S) \
303 ( ((S) == CL_AMS_OPER_STATE_ENABLED) ? "Enabled" : \
304 ((S) == CL_AMS_OPER_STATE_DISABLED) ? "Disabled" : \
305 ((S) == CL_AMS_OPER_STATE_NONE) ? "None" : \
308 #define CL_AMS_STRING_P_STATE(S) \
309 ( ((S) == CL_AMS_PRESENCE_STATE_UNINSTANTIATED) ? "Uninstantiated" : \
310 ((S) == CL_AMS_PRESENCE_STATE_INSTANTIATING) ? "Instantiating" : \
311 ((S) == CL_AMS_PRESENCE_STATE_INSTANTIATED) ? "Instantiated" : \
312 ((S) == CL_AMS_PRESENCE_STATE_TERMINATING) ? "Terminating" : \
313 ((S) == CL_AMS_PRESENCE_STATE_RESTARTING) ? "Restarting" : \
314 ((S) == CL_AMS_PRESENCE_STATE_INSTANTIATION_FAILED) ? "Instantiation Failed" : \
315 ((S) == CL_AMS_PRESENCE_STATE_TERMINATION_FAILED) ? "Termination Failed" : \
316 ((S) == CL_AMS_PRESENCE_STATE_FAULT) ? "Fault" : \
317 ((S) == CL_AMS_PRESENCE_STATE_FAULT_WTR) ? "Fault WTR" : \
318 ((S) == CL_AMS_PRESENCE_STATE_FAULT_WTC) ? "Fault WTC" : \
319 ((S) == CL_AMS_PRESENCE_STATE_NONE) ? "None" : \
322 #define CL_AMS_STRING_R_STATE(S) \
323 ( ((S) == CL_AMS_READINESS_STATE_INSERVICE) ? "In Service" : \
324 ((S) == CL_AMS_READINESS_STATE_STOPPING) ? "Stopping" : \
325 ((S) == CL_AMS_READINESS_STATE_OUTOFSERVICE)? "Out of Service" : \
326 ((S) == CL_AMS_READINESS_STATE_NONE) ? "None" : \
329 #define CL_AMS_STRING_H_STATE(S) \
330 ( ((ClAmsHAStateT)(S) == CL_AMS_HA_STATE_ACTIVE) ? "Active" : \
331 ((ClAmsHAStateT)(S) == CL_AMS_HA_STATE_STANDBY) ? "Standby" : \
332 ((ClAmsHAStateT)(S) == CL_AMS_HA_STATE_QUIESCED) ? "Quiesced" : \
333 ((ClAmsHAStateT)(S) == CL_AMS_HA_STATE_QUIESCING) ? "Quiescing" : \
334 ((ClAmsHAStateT)(S) == CL_AMS_HA_STATE_NONE) ? "None" : \
337 #define CL_AMS_STRING_TIMER(S) \
338 ( ((S) == CL_AMS_NODE_TIMER_SUFAILOVER) ? "Node-SUFailover" : \
339 ((S) == CL_AMS_SG_TIMER_INSTANTIATE) ? "SG-Instantiate" : \
340 ((S) == CL_AMS_SG_TIMER_ADJUST) ? "SG-Adjust" : \
341 ((S) == CL_AMS_SG_TIMER_ADJUST_PROBATION) ? "SG-Adjust-Probation" : \
342 ((S) == CL_AMS_SU_TIMER_SURESTART) ? "SU-SURestart" : \
343 ((S) == CL_AMS_SU_TIMER_PROBATION) ? "SU-SUProbation" : \
344 ((S) == CL_AMS_SU_TIMER_COMPRESTART) ? "SU-CompRestart" : \
345 ((S) == CL_AMS_SU_TIMER_ASSIGNMENT) ? "SU-Assignment-Delay" : \
346 ((S) == CL_AMS_COMP_TIMER_INSTANTIATE) ? "Comp-Instantiate" : \
347 ((S) == CL_AMS_COMP_TIMER_INSTANTIATEDELAY) ? "Comp-InstantiateDelay" : \
348 ((S) == CL_AMS_COMP_TIMER_TERMINATE) ? "Comp-Terminate" : \
349 ((S) == CL_AMS_COMP_TIMER_CLEANUP) ? "Comp-Cleanup" : \
350 ((S) == CL_AMS_COMP_TIMER_AMSTART) ? "Comp-AMStart" : \
351 ((S) == CL_AMS_COMP_TIMER_AMSTOP) ? "Comp-AMStop" : \
352 ((S) == CL_AMS_COMP_TIMER_QUIESCINGCOMPLETE) ? "Comp-QuiescingComplete" : \
353 ((S) == CL_AMS_COMP_TIMER_CSISET) ? "Comp-CSISet" : \
354 ((S) == CL_AMS_COMP_TIMER_CSIREMOVE) ? "Comp-CSIRemove" : \
355 ((S) == CL_AMS_COMP_TIMER_PROXIEDCOMPINSTANTIATE)? "Comp-ProxiedCompInstantiate": \
356 ((S) == CL_AMS_COMP_TIMER_PROXIEDCOMPCLEANUP) ? "Comp-ProxiedCompCleanup": \
359 #define CL_AMS_STRING_NODE_CLASSTYPE(S) \
360 ( ((S) == CL_AMS_NODE_CLASS_A) ? "Class A" : \
361 ((S) == CL_AMS_NODE_CLASS_B) ? "Class B" : \
362 ((S) == CL_AMS_NODE_CLASS_C) ? "Class C" : \
363 ((S) == CL_AMS_NODE_CLASS_D) ? "Class D" : \
364 ((S) == CL_AMS_NODE_CLASS_NONE) ? "None" : \
367 #define CL_AMS_STRING_NODE_ISCLUSTERMEMBER(S) \
368 ( ((S) == CL_AMS_NODE_IS_CLUSTER_MEMBER) ? "True" : \
369 ((S) == CL_AMS_NODE_IS_LEAVING_CLUSTER) ? "Leaving" : \
372 #define CL_AMS_STRING_SG_REDUNDANCY_MODEL(S) \
373 ( ((S) == CL_AMS_SG_REDUNDANCY_MODEL_NO_REDUNDANCY) ? "No Redundancy" : \
374 ((S) == CL_AMS_SG_REDUNDANCY_MODEL_TWO_N) ? "2N (1+1)" : \
375 ((S) == CL_AMS_SG_REDUNDANCY_MODEL_M_PLUS_N) ? "M + N" : \
376 ((S) == CL_AMS_SG_REDUNDANCY_MODEL_N_WAY) ? "N-Way" : \
377 ((S) == CL_AMS_SG_REDUNDANCY_MODEL_N_WAY_ACTIVE) ? "N-Way-Active" : \
378 ((S) == CL_AMS_SG_REDUNDANCY_MODEL_CUSTOM) ? "CUSTOM" : \
381 #define CL_AMS_STRING_SG_LOADING_STRATEGY(S) \
382 ( ((S) == CL_AMS_SG_LOADING_STRATEGY_LEAST_SI_PER_SU) ? "Least SI per SU" : \
383 ((S) == CL_AMS_SG_LOADING_STRATEGY_LEAST_SU_ASSIGNED) ? "Least SU Assigned" : \
384 ((S) == CL_AMS_SG_LOADING_STRATEGY_LEAST_LOAD_PER_SU) ? "Least Load per SU" : \
385 ((S) == CL_AMS_SG_LOADING_STRATEGY_BY_SI_PREFERENCE) ? "By SI Perference" : \
386 ((S) == CL_AMS_SG_LOADING_STRATEGY_USER_DEFINED) ? "User Defined" : \
389 #define CL_AMS_STRING_RECOVERY(S) \
390 ( ((S) == CL_AMS_RECOVERY_NO_RECOMMENDATION) ? "No Recommendation" : \
391 ((S) == CL_AMS_RECOVERY_COMP_RESTART) ? "Component Restart" : \
392 ((S) == CL_AMS_RECOVERY_COMP_FAILOVER) ? "Component Failover" : \
393 ((S) == CL_AMS_RECOVERY_NODE_SWITCHOVER) ? "Node Switchover" : \
394 ((S) == CL_AMS_RECOVERY_NODE_FAILOVER) ? "Node Failover" : \
395 ((S) == CL_AMS_RECOVERY_NODE_FAILFAST) ? "Node Failfast" : \
396 ((S) == CL_AMS_RECOVERY_APP_RESTART) ? "Application Restart" : \
397 ((S) == CL_AMS_RECOVERY_CLUSTER_RESET) ? "Cluster Restart" : \
398 ((S) == CL_AMS_RECOVERY_INTERNALLY_RECOVERED) ? "Internally Recovered" : \
399 ((S) == CL_AMS_RECOVERY_SU_RESTART) ? "SU Restart" : \
400 ((S) == CL_AMS_RECOVERY_NONE) ? "None" : \
401 ((S) == CL_AMS_EXTERNAL_RECOVERY_RESET) ? "External Component Reset" : \
402 ((S) == CL_AMS_EXTERNAL_RECOVERY_REBOOT) ? "External Component Reboot" : \
403 ((S) == CL_AMS_EXTERNAL_RECOVERY_POWER_ON) ? "External Component PowerOn" : \
404 ((S) == CL_AMS_EXTERNAL_RECOVERY_POWER_OFF) ? "External Component PowerOff" : \
405 ((S) == CL_AMS_RECOVERY_NODE_HALT) ? "Node halt" : \
408 #define CL_AMS_STRING_COMP_PROPERTY(S) \
409 ( ((S) == CL_AMS_COMP_PROPERTY_SA_AWARE) ? \
411 ((S) == CL_AMS_COMP_PROPERTY_PROXIED_PREINSTANTIABLE) ? \
412 "Proxied Preinstantiable": \
413 ((S) == CL_AMS_COMP_PROPERTY_PROXIED_NON_PREINSTANTIABLE) ? \
414 "Proxied Non Preinstantiable": \
415 ((S) == CL_AMS_COMP_PROPERTY_NON_PROXIED_NON_PREINSTANTIABLE) ? \
416 "Non Proxied Non Preinstantiable": \
419 #define CL_AMS_STRING_COMP_CAP(S) \
420 ( ((S) == CL_AMS_COMP_CAP_X_ACTIVE_AND_Y_STANDBY) ? "X-Active AND Y-Standby" : \
421 ((S) == CL_AMS_COMP_CAP_X_ACTIVE_OR_Y_STANDBY) ? "X-Active OR Y-Standby" : \
422 ((S) == CL_AMS_COMP_CAP_ONE_ACTIVE_OR_X_STANDBY) ? "1-Active OR Y-Standby" : \
423 ((S) == CL_AMS_COMP_CAP_ONE_ACTIVE_OR_ONE_STANDBY) ? "1-Active OR 1-Standby" : \
424 ((S) == CL_AMS_COMP_CAP_X_ACTIVE) ? "X-Active" : \
425 ((S) == CL_AMS_COMP_CAP_ONE_ACTIVE) ? "1-Active" : \
426 ((S) == CL_AMS_COMP_CAP_NON_PREINSTANTIABLE) ? "Non Preinstantiable" : \
429 #define CL_AMS_STRING_CSI_FLAGS(S) \
430 ( ((S) & CL_AMS_CSI_FLAG_ADD_ONE) ? "ADD_ONE" : \
431 ((S) & CL_AMS_CSI_FLAG_TARGET_ONE) ? "TARGET_ONE" : \
432 ((S) & CL_AMS_CSI_FLAG_TARGET_ALL) ? "TARGET_ALL" : \
435 #define CL_AMS_STRING_CSI_TRAN_DESCR(S) \
436 ( ((S) == CL_AMS_CSI_NEW_ASSIGN) ? "NEW_ASSIGN" : \
437 ((S) == CL_AMS_CSI_QUIESCED) ? "CSI_QUIESCED" : \
438 ((S) == CL_AMS_CSI_NOT_QUIESCED) ? "CSI_NOT_QUIESCED" : \
439 ((S) == CL_AMS_CSI_STILL_ACTIVE) ? "CSI_STILL_ACTIVE" : \
442 #define CL_AMS_STRING_ENTITY_TYPE(S) \
443 ( ((S) == CL_AMS_ENTITY_TYPE_ENTITY ) ? "entity" : \
444 ((S) == CL_AMS_ENTITY_TYPE_NODE) ? "node" : \
445 ((S) == CL_AMS_ENTITY_TYPE_SG) ? "sg" : \
446 ((S) == CL_AMS_ENTITY_TYPE_SU) ? "su" : \
447 ((S) == CL_AMS_ENTITY_TYPE_SI) ? "si" : \
448 ((S) == CL_AMS_ENTITY_TYPE_COMP) ? "comp" : \
449 ((S) == CL_AMS_ENTITY_TYPE_CSI) ? "csi" : \
450 ((S) == CL_AMS_ENTITY_TYPE_CLUSTER) ? "cluster" : \
Generated on Tue Jan 10 10:29:15 PST 2012 for OpenClovis SDK using Doxygen