| 98 | }; |
| 99 | |
| 100 | static gboolean |
| 101 | check_rsc_parameters(resource_t * rsc, node_t * node, xmlNode * rsc_entry, |
| 102 | pe_working_set_t * data_set) |
| 103 | { |
| 104 | int attr_lpc = 0; |
| 105 | gboolean force_restart = FALSE; |
| 106 | gboolean delete_resource = FALSE; |
| 107 | |
| 108 | const char *value = NULL; |
| 109 | const char *old_value = NULL; |
| 110 | |
| 111 | const char *attr_list[] = { |
| 112 | XML_ATTR_TYPE, |
| 113 | XML_AGENT_ATTR_CLASS, |
| 114 | XML_AGENT_ATTR_PROVIDER |
| 115 | }; |
| 116 | |
| 117 | for (; attr_lpc < DIMOF(attr_list); attr_lpc++) { |
| 118 | value = crm_element_value(rsc->xml, attr_list[attr_lpc]); |
| 119 | old_value = crm_element_value(rsc_entry, attr_list[attr_lpc]); |
| 120 | if (value == old_value /* ie. NULL */ |
| 121 | || crm_str_eq(value, old_value, TRUE)) { |
| 122 | continue; |
| 123 | } |
| 124 | |
| 125 | force_restart = TRUE; |
| 126 | crm_notice("Forcing restart of %s on %s, %s changed: %s -> %s", |
| 127 | rsc->id, node->details->uname, attr_list[attr_lpc], |
| 128 | crm_str(old_value), crm_str(value)); |
| 129 | } |
| 130 | if (force_restart) { |
| 131 | /* make sure the restart happens */ |
| 132 | stop_action(rsc, node, FALSE); |
| 133 | set_bit(rsc->flags, pe_rsc_start_pending); |
| 134 | delete_resource = TRUE; |
| 135 | } |
| 136 | return delete_resource; |
| 137 | } |
| 138 | |
| 139 | static void |
| 140 | CancelXmlOp(resource_t * rsc, xmlNode * xml_op, node_t * active_node, |
no test coverage detected