crm_debug_action(print_node("Added", new_node, FALSE));
crm_devel_action(print_node("Added", new_node, FALSE));
unpack_nodes(crm_data_t * xml_nodes, GListPtr *nodes){	node_t *new_node   = NULL;	crm_data_t * attrs   = NULL;	const char *id     = NULL;	const char *uname  = NULL;	const char *type   = NULL;	crm_verbose("Begining unpack...");	xml_child_iter(		xml_nodes, xml_obj, XML_CIB_TAG_NODE,		id     = crm_element_value(xml_obj, XML_ATTR_ID);		uname  = crm_element_value(xml_obj, XML_ATTR_UNAME);		type   = crm_element_value(xml_obj, XML_ATTR_TYPE);		crm_verbose("Processing node %s/%s", uname, id);		attrs = find_xml_node(xml_obj, "attributes", FALSE);				if(id == NULL) {			crm_err("Must specify id tag in <node>");			continue;		}		if(type == NULL) {			crm_err("Must specify type tag in <node>");			continue;		}		crm_malloc(new_node, sizeof(node_t));		if(new_node == NULL) {			return FALSE;		}				new_node->weight = 1.0;		new_node->fixed  = FALSE;		crm_malloc(new_node->details,			   sizeof(struct node_shared_s));		if(new_node->details == NULL) {			crm_free(new_node);			return FALSE;		}		crm_verbose("Creaing node for entry %s/%s", uname, id);		new_node->details->id		= id;		new_node->details->uname	= uname;		new_node->details->type		= node_ping;		new_node->details->online	= FALSE;		new_node->details->unclean	= TRUE; /* all nodes are unclean until we've seen their status entry */		new_node->details->shutdown	= FALSE;		new_node->details->running_rsc	= NULL;		new_node->details->agents	= NULL;		new_node->details->attrs        = g_hash_table_new(			g_str_hash, g_str_equal);				if(safe_str_eq(type, "member")) {			new_node->details->type = node_member;		}		add_node_attrs(attrs, new_node);		*nodes = g_list_append(*nodes, new_node);    		crm_verbose("Done with node %s",			    crm_element_value(xml_obj, XML_ATTR_UNAME));		crm_debug_action(print_node("Added", new_node, FALSE));		);  	*nodes = g_list_sort(*nodes, sort_node_weight);	return TRUE;}