FNIN();  CRM_DEBUG2("Updating " XML_CIB_TAG_CONSTRAINT " (%s)...", id); res = findConstraint(cib, id); if (res == NULL) { CRM_DEBUG2("Update: " XML_CIB_TAG_CONSTRAINT " (%s) did not exist, adding.", id); addConstraint(cib, anXmlNode); } else { copy_in_properties(res, anXmlNode);  CRM_DEBUG2("Update: Copying in children for " XML_CIB_TAG_CONSTRAINT " (%s).", id);  handle_object_children(res, anXmlNode->children, XML_CIB_TAG_NVPAIR); } FNRET(0);
xmlNodePtr root = get_object_root(XML_CIB_TAG_CONSTRAINTS, cib); return update_cib_object(root, anXmlNode, FALSE);
updateConstraint(xmlNodePtr cib, cibConstraint *anXmlNode){	xmlNodePtr res = NULL;	const char *id = ID(anXmlNode);	FNIN();	CRM_DEBUG2("Updating " XML_CIB_TAG_CONSTRAINT " (%s)...",		   id);	res = findConstraint(cib, id);	if (res == NULL) {		CRM_DEBUG2("Update: " XML_CIB_TAG_CONSTRAINT			   " (%s) did not exist, adding.",			   id);		addConstraint(cib, anXmlNode);	} else {		copy_in_properties(res, anXmlNode);			CRM_DEBUG2("Update: Copying in children for "			   XML_CIB_TAG_CONSTRAINT " (%s).",			   id);				handle_object_children(res,				       anXmlNode->children,				       XML_CIB_TAG_NVPAIR);	}	FNRET(0);}