case should: if(constraint->rsc_rh->provisional == FALSE) {
case pecs_should: if(constraint->variant != same_node) { break;  } else if(constraint->rsc_rh->provisional == FALSE && constraint->rsc_lh->provisional) { add_color(lh_resource, other_color); local_color = find_color( lh_resource->candidate_colors, other_color);  if(local_color == NULL) { crm_err("Couldnt add color %d to %s", other_color?other_color->id:NULL, lh_resource->id); break; }
strict_preproc(rsc_to_rsc_t *constraint,	       color_t *local_color, color_t *other_color,	       GListPtr *colors, GListPtr resources){	resource_t * lh_resource = constraint->rsc_lh;	switch(constraint->strength) {		case must:			if(constraint->rsc_rh->runnable == FALSE) {				crm_warn("Resource %s must run on the same"					 " node as %s (cons %s), but %s is not"					 " runnable.",					 constraint->rsc_lh->id,					 constraint->rsc_rh->id,					 constraint->id,					 constraint->rsc_rh->id);				constraint->rsc_lh->runnable = FALSE;			}			break;						// x * should * should_not = x		case should:			if(constraint->rsc_rh->provisional == FALSE) {				local_color->local_weight = 					local_color->local_weight * 2.0;			}				break;		case should_not:			if(constraint->rsc_rh->provisional == FALSE) {				local_color->local_weight = 					local_color->local_weight * 0.5;			}//			if(g_list_length(lh_resource->candidate_colors)==1)			create_color(				colors, lh_resource, resources);									break;		case must_not:			if(constraint->rsc_rh->provisional == FALSE				&& local_color->id != no_color->id) {				lh_resource->candidate_colors =					g_list_remove(						lh_resource->candidate_colors,						local_color);				crm_debug_action(					print_color(						"Removed",local_color,FALSE));				// surely this is required... but mtrace says no...//				crm_free(local_color);			}			break;		default:			// error			break;	}	return TRUE;}