Blob Blame History Raw
From 82a1a82b1245e97cb1b2f66ab03ed1d0df08a63e Mon Sep 17 00:00:00 2001
From: Andrew Beekhof <andrew@beekhof.net>
Date: Tue, 21 Feb 2017 11:58:53 +1100
Subject: [PATCH] Combined commit for bundle feature

Includes upstream commits:

Remote: extract common functionality
PE: Correctly test for clone functionality
PE: Basic container parsing and expansion
xml: Correctly find the first child element
Core: Track the line number of callers of crm_(set|clear)_bit
PE: Basic allocation of containers
PE: Force node scores for containerized resources
PE: Allow the graph to assume container nodes will come up and schedule actions for it
PE: container: Parse network and mount options
PE: Containers: Move the storage and network blocks up
PE: Containers: Add support for nic and netmask parameters
PE: Containers: Correctly create IP resources
PE: Correctly expose peer ports within the replica set
PE: Containers: Force a sane hostname
PE: Containers: Allow specifiying the maximum number of peers per host
PE: Container: Add support for non-default docker networks and supplying external IPs to container resources
XML: Remove unnecessary container mount option
PE: Containers: Remove containers on termination by default
PE: Containers: Use an autoconf variable for the location of pacemaker remote
PE: Containers: Switch to comma separated directory lists
PE: Containers: Fix crash, climbing the parent tree should never reach the container
PE: Containers: Filter external IP from parameter digests
PE: Containers: Prevent invalid recovery graphs
PE: Containers: The clone placement functions require the parent to be set
PE: Preferred nodes are only accepted if their scores are equal to the otherwise best candidate
PE: Contaienrs: Better checks when assuming a container will start
PE: Clone: Simplified allocation function
PE: Update tests for simplified clone allocation function
PE: Extract common print functionality so that containers can re-use most of it
PE: Containers: Default to a short-form print output
PE: Containers: Correctly set globally unique based on replicas-per-host
PE: Containers: Correctly find the right anonymous child resource running in a container
PE: Containers: Default 'replicas' to the same number of 'masters'
---
 configure.ac                                       |   1 +
 crmd/lrm_state.c                                   | 229 ++----
 include/crm/common/xml.h                           |  26 +-
 include/crm/msg_xml.h                              |   1 +
 include/crm/pengine/complex.h                      |   5 +-
 include/crm/pengine/internal.h                     |  16 +-
 include/crm_internal.h                             |  44 +-
 lib/common/utils.c                                 |   1 +
 lib/lrmd/proxy_common.c                            | 201 +++++-
 lib/pengine/Makefile.am                            |   2 +-
 lib/pengine/complex.c                              |  26 +-
 lib/pengine/container.c                            | 800 +++++++++++++++++++++
 lib/pengine/native.c                               |  25 +-
 lib/pengine/unpack.c                               |  57 +-
 lib/pengine/utils.c                                |   3 +-
 lib/pengine/variant.h                              |  52 ++
 lrmd/remote_ctl.c                                  | 151 +---
 pengine/Makefile.am                                |   2 +-
 pengine/allocate.c                                 |  26 +-
 pengine/allocate.h                                 |  27 +-
 pengine/clone.c                                    | 309 ++++----
 pengine/constraints.c                              |   6 +-
 pengine/container.c                                | 345 +++++++++
 pengine/graph.c                                    |  23 +-
 pengine/master.c                                   |  20 +-
 pengine/native.c                                   |  53 +-
 pengine/notif.c                                    |  28 +-
 pengine/test10/1360.scores                         |   2 +
 pengine/test10/662.scores                          |   4 +-
 pengine/test10/696.scores                          |   4 +-
 pengine/test10/anti-colocation-slave.scores        |   4 +-
 pengine/test10/asymmetric.scores                   |   4 +-
 pengine/test10/bnc-515172.scores                   |   8 +-
 pengine/test10/bug-1685.scores                     |   4 +-
 pengine/test10/bug-1765.scores                     |   4 +-
 pengine/test10/bug-5143-ms-shuffle.scores          |  28 +-
 pengine/test10/bug-5186-partial-migrate.scores     |  12 +-
 pengine/test10/bug-cl-5168.scores                  |   3 +
 pengine/test10/bug-cl-5213.scores                  |   4 +-
 pengine/test10/bug-cl-5219.scores                  |  12 +-
 pengine/test10/bug-lf-2106.scores                  |   4 +-
 pengine/test10/bug-lf-2317.scores                  |   4 +-
 pengine/test10/bug-lf-2358.scores                  |   4 +-
 pengine/test10/bug-lf-2422.scores                  |  24 +-
 pengine/test10/bug-lf-2453.scores                  |   4 +-
 pengine/test10/bug-lf-2508.scores                  |  32 +-
 pengine/test10/bug-pm-11.scores                    |  16 +-
 pengine/test10/bug-pm-12.scores                    |  16 +-
 pengine/test10/bug-rh-1097457.scores               |   8 +-
 pengine/test10/clone-interleave-2.scores           |   8 +-
 pengine/test10/clone-interleave-3.scores           |  16 +-
 pengine/test10/clone-order-16instances.scores      |   4 +-
 pengine/test10/clone-require-all-1.scores          |   4 +-
 pengine/test10/clone-require-all-3.scores          |   4 +-
 pengine/test10/clone-require-all-5.scores          |   4 +-
 pengine/test10/clone-require-all-6.scores          |   8 +-
 .../clone-require-all-no-interleave-3.scores       |   4 +-
 .../test10/clone_min_interleave_stop_one.scores    |  12 +-
 .../test10/clone_min_interleave_stop_two.scores    |  16 +-
 pengine/test10/clone_min_stop_one.scores           |   4 +-
 pengine/test10/cloned_stop_one.scores              |   4 +-
 pengine/test10/colo_slave_w_native.scores          |   4 +-
 pengine/test10/coloc-clone-stays-active.scores     | 100 +--
 .../test10/colocate-primitive-with-clone.scores    |  16 +-
 pengine/test10/complex_enforce_colo.scores         |  68 +-
 pengine/test10/container-is-remote-node.scores     |   4 +-
 pengine/test10/group-dependents.scores             |   4 +-
 pengine/test10/group10.scores                      |  12 +-
 pengine/test10/history-1.scores                    |   4 +-
 pengine/test10/inc10.scores                        |   8 +-
 pengine/test10/interleave-restart.scores           |  12 +-
 pengine/test10/load-stopped-loop-2.scores          |   4 +-
 pengine/test10/load-stopped-loop.scores            | 120 ++--
 pengine/test10/master-12.scores                    |   4 +-
 pengine/test10/master-13.scores                    |   4 +-
 pengine/test10/master-4.scores                     |  58 +-
 pengine/test10/master-5.scores                     |  58 +-
 pengine/test10/master-6.scores                     |  58 +-
 pengine/test10/master-7.scores                     |  22 +-
 pengine/test10/master-8.scores                     |  16 +-
 pengine/test10/master-demote-2.scores              |  12 +-
 pengine/test10/master-demote.scores                |   4 +-
 pengine/test10/master-dependent-ban.scores         |   3 -
 pengine/test10/master-notify.scores                |  12 +-
 pengine/test10/master-role.scores                  |   4 +-
 pengine/test10/master-unmanaged-monitor.scores     |  16 +-
 pengine/test10/migrate-begin.scores                |   4 +-
 pengine/test10/migrate-both-vms.scores             |  12 +-
 pengine/test10/migrate-fail-2.scores               |   4 +-
 pengine/test10/migrate-fail-4.scores               |   4 +-
 pengine/test10/migrate-fail-5.scores               |   4 +-
 pengine/test10/migrate-fail-6.scores               |   4 +-
 pengine/test10/migrate-fail-8.scores               |   4 +-
 pengine/test10/migrate-fail-9.scores               |   4 +-
 pengine/test10/migrate-fencing.scores              |  20 +-
 pengine/test10/migrate-partial-2.scores            |   4 +-
 pengine/test10/migrate-partial-3.scores            |   4 +-
 .../test10/not-reschedule-unneeded-monitor.scores  |  20 +-
 pengine/test10/novell-251689.scores                |  20 +-
 .../one-or-more-unrunnnable-instances.scores       |  56 +-
 pengine/test10/params-6.scores                     |  84 +--
 pengine/test10/probe-0.scores                      |   8 +-
 pengine/test10/probe-3.scores                      |  16 +-
 pengine/test10/probe-4.scores                      |  16 +-
 pengine/test10/rec-node-13.scores                  |  18 +-
 pengine/test10/remote-orphaned.scores              |   8 +-
 pengine/test10/stonith-0.scores                    |  84 +--
 pengine/test10/stonith-1.scores                    |   4 +-
 pengine/test10/stonith-2.scores                    |  48 +-
 pengine/test10/ticket-clone-12.scores              |   4 +-
 pengine/test10/ticket-clone-24.scores              |   4 +-
 pengine/test10/ticket-master-11.scores             |   4 +-
 pengine/test10/ticket-master-12.scores             |   4 +-
 pengine/test10/ticket-master-16.scores             |   4 +-
 pengine/test10/ticket-master-17.scores             |   4 +-
 pengine/test10/ticket-master-18.scores             |   4 +-
 pengine/test10/ticket-master-19.scores             |   4 +-
 pengine/test10/ticket-master-20.scores             |   4 +-
 pengine/test10/ticket-master-22.scores             |   4 +-
 pengine/test10/ticket-master-23.scores             |   4 +-
 pengine/test10/ticket-master-24.scores             |   4 +-
 pengine/test10/ticket-master-5.scores              |   4 +-
 pengine/test10/ticket-master-6.scores              |   4 +-
 pengine/test10/ticket-master-8.scores              |   4 +-
 pengine/test10/ticket-rsc-sets-10.scores           |   4 +-
 pengine/test10/ticket-rsc-sets-11.scores           |   4 +-
 pengine/test10/ticket-rsc-sets-12.scores           |   4 +-
 pengine/test10/ticket-rsc-sets-13.scores           |   4 +-
 pengine/test10/ticket-rsc-sets-14.scores           |   4 +-
 pengine/test10/ticket-rsc-sets-2.scores            |   4 +-
 pengine/test10/ticket-rsc-sets-3.scores            |   4 +-
 pengine/test10/ticket-rsc-sets-5.scores            |   4 +-
 pengine/test10/ticket-rsc-sets-6.scores            |   4 +-
 pengine/test10/ticket-rsc-sets-7.scores            |   4 +-
 pengine/test10/ticket-rsc-sets-8.scores            |   4 +-
 pengine/test10/ticket-rsc-sets-9.scores            |   4 +-
 pengine/test10/unfence-definition.scores           |   4 +-
 pengine/test10/unfence-parameters.scores           |   4 +-
 pengine/test10/unfence-startup.scores              |   4 +-
 pengine/test10/unrunnable-2.scores                 |  68 +-
 pengine/test10/whitebox-fail1.scores               |  12 +-
 pengine/test10/whitebox-fail2.scores               |  12 +-
 pengine/test10/whitebox-move.scores                |  20 +-
 pengine/test10/whitebox-ms-ordering-move.scores    |  24 +-
 pengine/test10/whitebox-orphan-ms.scores           |  16 +-
 pengine/test10/whitebox-orphaned.scores            |  12 +-
 pengine/test10/whitebox-start.scores               |  20 +-
 pengine/test10/whitebox-stop.scores                |  12 +-
 pengine/utilization.c                              |   2 +-
 pengine/utils.c                                    |  31 +-
 tools/crm_resource_runtime.c                       |   4 +-
 xml/resources-2.8.rng                              | 300 ++++++++
 152 files changed, 3033 insertions(+), 1469 deletions(-)
 create mode 100644 lib/pengine/container.c
 create mode 100644 pengine/container.c
 create mode 100644 xml/resources-2.8.rng

diff --git a/configure.ac b/configure.ac
index b1465a3..db2e948 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1137,6 +1137,7 @@ AC_SUBST(OCF_RA_DIR)
 
 RH_STONITH_DIR="$sbindir"
 AC_DEFINE_UNQUOTED(RH_STONITH_DIR,"$RH_STONITH_DIR", Location for Red Hat Stonith agents)
+AC_DEFINE_UNQUOTED(SBIN_DIR,"$sbindir", Location for system binaries)
 
 RH_STONITH_PREFIX="fence_"
 AC_DEFINE_UNQUOTED(RH_STONITH_PREFIX,"$RH_STONITH_PREFIX", Prefix for Red Hat Stonith agents)
diff --git a/crmd/lrm_state.c b/crmd/lrm_state.c
index 7b4379b..9c22683 100644
--- a/crmd/lrm_state.c
+++ b/crmd/lrm_state.c
@@ -401,83 +401,18 @@ lrm_state_ipc_connect(lrm_state_t * lrm_state)
     return ret;
 }
 
-static int
-remote_proxy_dispatch_internal(const char *buffer, ssize_t length, gpointer userdata)
-{
-    /* Async responses from cib and friends back to clients via pacemaker_remoted */
-    xmlNode *xml = NULL;
-    remote_proxy_t *proxy = userdata;
-    lrm_state_t *lrm_state = lrm_state_find(proxy->node_name);
-    uint32_t flags;
-
-    if (lrm_state == NULL) {
-        return 0;
-    }
-
-    xml = string2xml(buffer);
-    if (xml == NULL) {
-        crm_warn("Received a NULL msg from IPC service.");
-        return 1;
-    }
-
-    flags = crm_ipc_buffer_flags(proxy->ipc);
-    if (flags & crm_ipc_proxied_relay_response) {
-        crm_trace("Passing response back to %.8s on %s: %.200s - request id: %d", proxy->session_id, proxy->node_name, buffer, proxy->last_request_id);
-        remote_proxy_relay_response(lrm_state->conn, proxy->session_id, xml, proxy->last_request_id);
-        proxy->last_request_id = 0;
-
-    } else {
-        crm_trace("Passing event back to %.8s on %s: %.200s", proxy->session_id, proxy->node_name, buffer);
-        remote_proxy_relay_event(lrm_state->conn, proxy->session_id, xml);
-    }
-    free_xml(xml);
-    return 1;
-}
-
-static void
-remote_proxy_disconnected(void *userdata)
-{
-    remote_proxy_t *proxy = userdata;
-    lrm_state_t *lrm_state = lrm_state_find(proxy->node_name);
-
-    crm_trace("Destroying %s (%p)", lrm_state->node_name, userdata);
-
-    proxy->source = NULL;
-    proxy->ipc = NULL;
-
-    if (lrm_state && lrm_state->conn) {
-        remote_proxy_notify_destroy(lrm_state->conn, proxy->session_id);
-    }
-    g_hash_table_remove(proxy_table, proxy->session_id);
-}
-
 static remote_proxy_t *
-remote_proxy_new(const char *node_name, const char *session_id, const char *channel)
+crmd_remote_proxy_new(lrmd_t *lrmd, const char *node_name, const char *session_id, const char *channel)
 {
     static struct ipc_client_callbacks proxy_callbacks = {
-        .dispatch = remote_proxy_dispatch_internal,
+        .dispatch = remote_proxy_dispatch,
         .destroy = remote_proxy_disconnected
     };
-    remote_proxy_t *proxy = calloc(1, sizeof(remote_proxy_t));
-
-    proxy->node_name = strdup(node_name);
-    proxy->session_id = strdup(session_id);
+    remote_proxy_t *proxy = remote_proxy_new(lrmd, proxy_callbacks, node_name, session_id, channel);
 
     if (safe_str_eq(channel, CRM_SYSTEM_CRMD)) {
         proxy->is_local = TRUE;
-    } else {
-        proxy->source = mainloop_add_ipc_client(channel, G_PRIORITY_LOW, 0, proxy, &proxy_callbacks);
-        proxy->ipc = mainloop_get_ipc_client(proxy->source);
-
-        if (proxy->source == NULL) {
-            remote_proxy_free(proxy);
-            return NULL;
-        }
     }
-
-    crm_trace("created proxy session ID %s", proxy->session_id);
-    g_hash_table_insert(proxy_table, proxy->session_id, proxy);
-
     return proxy;
 }
 
@@ -500,7 +435,7 @@ crmd_proxy_send(const char *session, xmlNode *msg)
     lrm_state = lrm_state_find(proxy->node_name);
     if (lrm_state) {
         crm_trace("Sending event to %.8s on %s", proxy->session_id, proxy->node_name);
-        remote_proxy_relay_event(lrm_state->conn, session, msg);
+        remote_proxy_relay_event(proxy, msg);
     }
 }
 
@@ -535,7 +470,7 @@ remote_config_check(xmlNode * msg, int call_id, int rc, xmlNode * output, void *
             crm_str_hash, g_str_equal, g_hash_destroy_str, g_hash_destroy_str);
 
         crm_debug("Call %d : Parsing CIB options", call_id);
-        
+
         unpack_instance_attributes(
             output, output, XML_CIB_TAG_PROPSET, NULL, config_hash, CIB_OPTIONS_FIRST, FALSE, now);
 
@@ -548,24 +483,25 @@ remote_config_check(xmlNode * msg, int call_id, int rc, xmlNode * output, void *
 }
 
 static void
-remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg)
+crmd_remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg)
 {
     lrm_state_t *lrm_state = userdata;
-    const char *op = crm_element_value(msg, F_LRMD_IPC_OP);
     const char *session = crm_element_value(msg, F_LRMD_IPC_SESSION);
-    int msg_id = 0;
-
-    /* sessions are raw ipc connections to IPC,
-     * all we do is proxy requests/responses exactly
-     * like they are given to us at the ipc level. */
+    remote_proxy_t *proxy = g_hash_table_lookup(proxy_table, session);
 
-    CRM_CHECK(op != NULL, return);
-    CRM_CHECK(session != NULL, return);
+    const char *op = crm_element_value(msg, F_LRMD_IPC_OP);
+    if (safe_str_eq(op, LRMD_IPC_OP_NEW)) {
+        const char *channel = crm_element_value(msg, F_LRMD_IPC_IPC_SERVER);
 
-    crm_element_value_int(msg, F_LRMD_IPC_MSG_ID, &msg_id);
-    /* This is msg from remote ipc client going to real ipc server */
+        proxy = crmd_remote_proxy_new(lrmd, lrm_state->node_name, session, channel);
+        if (proxy != NULL) {
+            /* Look up stonith-watchdog-timeout and send to the remote peer for validation */
+            int rc = fsa_cib_conn->cmds->query(fsa_cib_conn, XML_CIB_TAG_CRMCONFIG, NULL, cib_scope_local);
+            fsa_cib_conn->cmds->register_callback_full(fsa_cib_conn, rc, 10, FALSE, lrmd,
+                                                       "remote_config_check", remote_config_check, NULL);
+        }
 
-    if (safe_str_eq(op, LRMD_IPC_OP_SHUTDOWN_REQ)) {
+    } else if (safe_str_eq(op, LRMD_IPC_OP_SHUTDOWN_REQ)) {
         char *now_s = NULL;
         time_t now = time(NULL);
 
@@ -580,122 +516,37 @@ remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg)
 
         crm_warn("Reconnection attempts to %s may result in failures that must be cleared",
                  lrm_state->node_name);
-        return;
 
-    } else if (safe_str_eq(op, LRMD_IPC_OP_NEW)) {
-        int rc;
-        const char *channel = crm_element_value(msg, F_LRMD_IPC_IPC_SERVER);
+    } else if (safe_str_eq(op, LRMD_IPC_OP_REQUEST) && proxy->is_local) {
+        /* this is for the crmd, which we are, so don't try
+         * and connect/send to ourselves over ipc. instead
+         * do it directly.
+         */
+        int flags = 0;
+        xmlNode *request = get_message_xml(msg, F_LRMD_IPC_MSG);
 
-        CRM_CHECK(channel != NULL, return);
+        crmd_proxy_dispatch(session, request);
+        crm_element_value_int(msg, F_LRMD_IPC_MSG_FLAGS, &flags);
 
-        if (remote_proxy_new(lrm_state->node_name, session, channel) == NULL) {
-            remote_proxy_notify_destroy(lrmd, session);
-        }
-        crm_trace("new remote proxy client established to %s, session id %s", channel, session);
+        if (flags & crm_ipc_client_response) {
+            int msg_id = 0;
+            xmlNode *op_reply = create_xml_node(NULL, "ack");
 
-        /* Look up stonith-watchdog-timeout and send to the remote peer for validation */
-        rc = fsa_cib_conn->cmds->query(fsa_cib_conn, XML_CIB_TAG_CRMCONFIG, NULL, cib_scope_local);
-        fsa_cib_conn->cmds->register_callback_full(fsa_cib_conn, rc, 10, FALSE, lrmd, "remote_config_check", remote_config_check, NULL);
-        
-    } else if (safe_str_eq(op, LRMD_IPC_OP_DESTROY)) {
-        remote_proxy_end_session(session);
+            crm_xml_add(op_reply, "function", __FUNCTION__);
+            crm_xml_add_int(op_reply, "line", __LINE__);
 
-    } else if (safe_str_eq(op, LRMD_IPC_OP_REQUEST)) {
-        int flags = 0;
-        xmlNode *request = get_message_xml(msg, F_LRMD_IPC_MSG);
-        const char *name = crm_element_value(msg, F_LRMD_IPC_CLIENT);
-        remote_proxy_t *proxy = g_hash_table_lookup(proxy_table, session);
-
-        CRM_CHECK(request != NULL, return);
-
-        if (proxy == NULL) {
-            /* proxy connection no longer exists */
-            remote_proxy_notify_destroy(lrmd, session);
-            return;
-        } else if ((proxy->is_local == FALSE) && (crm_ipc_connected(proxy->ipc) == FALSE)) {
-            remote_proxy_end_session(session);
-            return;
-        }
-        proxy->last_request_id = 0;
-        crm_element_value_int(msg, F_LRMD_IPC_MSG_FLAGS, &flags);
-        crm_xml_add(request, XML_ACL_TAG_ROLE, "pacemaker-remote");
-
-#if ENABLE_ACL
-        CRM_ASSERT(lrm_state->node_name);
-        crm_acl_get_set_user(request, F_LRMD_IPC_USER, lrm_state->node_name);
-#endif
-
-        if (proxy->is_local) {
-            /* this is for the crmd, which we are, so don't try
-             * and connect/send to ourselves over ipc. instead
-             * do it directly. */
-            crmd_proxy_dispatch(session, request);
-            if (flags & crm_ipc_client_response) {
-                xmlNode *op_reply = create_xml_node(NULL, "ack");
-
-                crm_xml_add(op_reply, "function", __FUNCTION__);
-                crm_xml_add_int(op_reply, "line", __LINE__);
-                remote_proxy_relay_response(lrmd, session, op_reply, msg_id);
-                free_xml(op_reply);
-            }
-
-        } else if(is_set(flags, crm_ipc_proxied)) {
-            const char *type = crm_element_value(request, F_TYPE);
-            int rc = 0;
-
-            if (safe_str_eq(type, T_ATTRD)
-                && crm_element_value(request, F_ATTRD_HOST) == NULL) {
-                crm_xml_add(request, F_ATTRD_HOST, proxy->node_name);
-            }
-
-            rc = crm_ipc_send(proxy->ipc, request, flags, 5000, NULL);
-
-            if(rc < 0) {
-                xmlNode *op_reply = create_xml_node(NULL, "nack");
-
-                crm_err("Could not relay %s request %d from %s to %s for %s: %s (%d)",
-                         op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name, pcmk_strerror(rc), rc);
-
-                /* Send a n'ack so the caller doesn't block */
-                crm_xml_add(op_reply, "function", __FUNCTION__);
-                crm_xml_add_int(op_reply, "line", __LINE__);
-                crm_xml_add_int(op_reply, "rc", rc);
-                remote_proxy_relay_response(lrmd, session, op_reply, msg_id);
-                free_xml(op_reply);
-
-            } else {
-                crm_trace("Relayed %s request %d from %s to %s for %s",
-                          op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name);
-                proxy->last_request_id = msg_id;
-            }
-
-        } else {
-            int rc = pcmk_ok;
-            xmlNode *op_reply = NULL;
-            /* For backwards compatibility with pacemaker_remoted <= 1.1.10 */
-
-            crm_trace("Relaying %s request %d from %s to %s for %s",
-                      op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name);
-
-            rc = crm_ipc_send(proxy->ipc, request, flags, 10000, &op_reply);
-            if(rc < 0) {
-                crm_err("Could not relay %s request %d from %s to %s for %s: %s (%d)",
-                         op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name, pcmk_strerror(rc), rc);
-            } else {
-                crm_trace("Relayed %s request %d from %s to %s for %s",
-                          op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name);
-            }
-
-            if(op_reply) {
-                remote_proxy_relay_response(lrmd, session, op_reply, msg_id);
-                free_xml(op_reply);
-            }
+            crm_element_value_int(msg, F_LRMD_IPC_MSG_ID, &msg_id);
+            remote_proxy_relay_response(proxy, op_reply, msg_id);
+
+            free_xml(op_reply);
         }
+
     } else {
-        crm_err("Unknown proxy operation: %s", op);
+        remote_proxy_cb(lrmd, lrm_state->node_name, msg);
     }
 }
 
+
 int
 lrm_state_remote_connect_async(lrm_state_t * lrm_state, const char *server, int port,
                                int timeout_ms)
@@ -708,7 +559,7 @@ lrm_state_remote_connect_async(lrm_state_t * lrm_state, const char *server, int
             return -1;
         }
         ((lrmd_t *) lrm_state->conn)->cmds->set_callback(lrm_state->conn, remote_lrm_op_callback);
-        lrmd_internal_set_proxy_callback(lrm_state->conn, lrm_state, remote_proxy_cb);
+        lrmd_internal_set_proxy_callback(lrm_state->conn, lrm_state, crmd_remote_proxy_cb);
     }
 
     crm_trace("initiating remote connection to %s at %d with timeout %d", server, port, timeout_ms);
diff --git a/include/crm/common/xml.h b/include/crm/common/xml.h
index a948915..9d9118a 100644
--- a/include/crm/common/xml.h
+++ b/include/crm/common/xml.h
@@ -316,15 +316,33 @@ __xml_next(xmlNode * child)
 }
 
 static inline xmlNode *
+__xml_first_child_element(xmlNode * parent)
+{
+    xmlNode *child = NULL;
+
+    if (parent) {
+        child = parent->children;
+    }
+
+    while (child) {
+        if(child->type == XML_ELEMENT_NODE) {
+            return child;
+        }
+        child = child->next;
+    }
+    return NULL;
+}
+
+static inline xmlNode *
 __xml_next_element(xmlNode * child)
 {
-    if (child) {
+    while (child) {
         child = child->next;
-        while (child && child->type != XML_ELEMENT_NODE) {
-            child = child->next;
+        if(child && child->type == XML_ELEMENT_NODE) {
+            return child;
         }
     }
-    return child;
+    return NULL;
 }
 
 void free_xml(xmlNode * child);
diff --git a/include/crm/msg_xml.h b/include/crm/msg_xml.h
index 6ec796a..3c67a98 100644
--- a/include/crm/msg_xml.h
+++ b/include/crm/msg_xml.h
@@ -186,6 +186,7 @@
 #  define XML_CIB_TAG_GROUP	  	"group"
 #  define XML_CIB_TAG_INCARNATION	"clone"
 #  define XML_CIB_TAG_MASTER		"master"
+#  define XML_CIB_TAG_CONTAINER		"bucket"
 
 #  define XML_CIB_TAG_RSC_TEMPLATE	"template"
 
diff --git a/include/crm/pengine/complex.h b/include/crm/pengine/complex.h
index 69da80f..92829f9 100644
--- a/include/crm/pengine/complex.h
+++ b/include/crm/pengine/complex.h
@@ -31,8 +31,9 @@ enum pe_obj_types {
     pe_unknown = -1,
     pe_native = 0,
     pe_group = 1,
-    pe_clone = 2,
-    pe_master = 3
+    pe_container = 2,
+    pe_clone = 3,
+    pe_master = 4
 };
 
 enum pe_obj_types get_resource_type(const char *name);
diff --git a/include/crm/pengine/internal.h b/include/crm/pengine/internal.h
index 6b25da1..adafefd 100644
--- a/include/crm/pengine/internal.h
+++ b/include/crm/pengine/internal.h
@@ -28,8 +28,8 @@
 #  define pe_warn(fmt...) { was_processing_warning = TRUE; crm_config_warning = TRUE; crm_warn(fmt); }
 #  define pe_proc_err(fmt...) { was_processing_error = TRUE; crm_err(fmt); }
 #  define pe_proc_warn(fmt...) { was_processing_warning = TRUE; crm_warn(fmt); }
-#  define pe_set_action_bit(action, bit) action->flags = crm_set_bit(__FUNCTION__, action->uuid, action->flags, bit)
-#  define pe_clear_action_bit(action, bit) action->flags = crm_clear_bit(__FUNCTION__, action->uuid, action->flags, bit)
+#  define pe_set_action_bit(action, bit) action->flags = crm_set_bit(__FUNCTION__, __LINE__, action->uuid, action->flags, bit)
+#  define pe_clear_action_bit(action, bit) action->flags = crm_clear_bit(__FUNCTION__, __LINE__, action->uuid, action->flags, bit)
 
 typedef struct notify_data_s {
     GHashTable *keys;
@@ -74,6 +74,7 @@ gboolean native_unpack(resource_t * rsc, pe_working_set_t * data_set);
 gboolean group_unpack(resource_t * rsc, pe_working_set_t * data_set);
 gboolean clone_unpack(resource_t * rsc, pe_working_set_t * data_set);
 gboolean master_unpack(resource_t * rsc, pe_working_set_t * data_set);
+gboolean container_unpack(resource_t * rsc, pe_working_set_t * data_set);
 
 resource_t *native_find_rsc(resource_t * rsc, const char *id, node_t * node, int flags);
 
@@ -81,25 +82,28 @@ gboolean native_active(resource_t * rsc, gboolean all);
 gboolean group_active(resource_t * rsc, gboolean all);
 gboolean clone_active(resource_t * rsc, gboolean all);
 gboolean master_active(resource_t * rsc, gboolean all);
+gboolean container_active(resource_t * rsc, gboolean all);
 
 void native_print(resource_t * rsc, const char *pre_text, long options, void *print_data);
 void group_print(resource_t * rsc, const char *pre_text, long options, void *print_data);
 void clone_print(resource_t * rsc, const char *pre_text, long options, void *print_data);
 void master_print(resource_t * rsc, const char *pre_text, long options, void *print_data);
+void container_print(resource_t * rsc, const char *pre_text, long options, void *print_data);
 
 void native_free(resource_t * rsc);
 void group_free(resource_t * rsc);
 void clone_free(resource_t * rsc);
 void master_free(resource_t * rsc);
+void container_free(resource_t * rsc);
 
 enum rsc_role_e native_resource_state(const resource_t * rsc, gboolean current);
 enum rsc_role_e group_resource_state(const resource_t * rsc, gboolean current);
 enum rsc_role_e clone_resource_state(const resource_t * rsc, gboolean current);
 enum rsc_role_e master_resource_state(const resource_t * rsc, gboolean current);
+enum rsc_role_e container_resource_state(const resource_t * rsc, gboolean current);
 
 gboolean common_unpack(xmlNode * xml_obj, resource_t ** rsc, resource_t * parent,
                        pe_working_set_t * data_set);
-void common_print(resource_t * rsc, const char *pre_text, long options, void *print_data);
 void common_free(resource_t * rsc);
 
 extern pe_working_set_t *pe_dataset;
@@ -282,4 +286,10 @@ void print_rscs_brief(GListPtr rsc_list, const char * pre_text, long options,
                       void * print_data, gboolean print_all);
 void pe_fence_node(pe_working_set_t * data_set, node_t * node, const char *reason);
 
+node_t *create_node(const char *id, const char *uname, const char *type, const char *score, pe_working_set_t * data_set);
+bool remote_id_conflict(const char *remote_name, pe_working_set_t *data);
+void common_print(resource_t * rsc, const char *pre_text, const char *name, node_t *node, long options, void *print_data);
+resource_t *find_container_child(const char *stem, resource_t * rsc, node_t *node);
+
+
 #endif
diff --git a/include/crm_internal.h b/include/crm_internal.h
index a8fee47..46eef45 100644
--- a/include/crm_internal.h
+++ b/include/crm_internal.h
@@ -157,39 +157,47 @@ char *generate_transition_magic(const char *transition_key, int op_status, int o
 char *generate_transition_key(int action, int transition_id, int target_rc, const char *node);
 
 static inline long long
-crm_clear_bit(const char *function, const char *target, long long word, long long bit)
+crm_clear_bit(const char *function, int line, const char *target, long long word, long long bit)
 {
     long long rc = (word & ~bit);
 
+    /* if(bit == 0x00002) { */
+    /*     crm_err("Bit 0x%.8llx for %s cleared by %s:%d", bit, target, function, line); */
+    /* } */
+
     if (rc == word) {
         /* Unchanged */
     } else if (target) {
-        crm_trace("Bit 0x%.8llx for %s cleared by %s", bit, target, function);
+        crm_trace("Bit 0x%.8llx for %s cleared by %s:%d", bit, target, function, line);
     } else {
-        crm_trace("Bit 0x%.8llx cleared by %s", bit, function);
+        crm_trace("Bit 0x%.8llx cleared by %s:%d", bit, function, line);
     }
 
     return rc;
 }
 
 static inline long long
-crm_set_bit(const char *function, const char *target, long long word, long long bit)
+crm_set_bit(const char *function, int line, const char *target, long long word, long long bit)
 {
     long long rc = (word | bit);
 
+    /* if(bit == 0x00002) { */
+    /*     crm_err("Bit 0x%.8llx for %s set by %s:%d", bit, target, function, line); */
+    /* } */
+
     if (rc == word) {
         /* Unchanged */
     } else if (target) {
-        crm_trace("Bit 0x%.8llx for %s set by %s", bit, target, function);
+        crm_trace("Bit 0x%.8llx for %s set by %s:%d", bit, target, function, line);
     } else {
-        crm_trace("Bit 0x%.8llx set by %s", bit, function);
+        crm_trace("Bit 0x%.8llx set by %s:%d", bit, function, line);
     }
 
     return rc;
 }
 
-#  define set_bit(word, bit) word = crm_set_bit(__FUNCTION__, NULL, word, bit)
-#  define clear_bit(word, bit) word = crm_clear_bit(__FUNCTION__, NULL, word, bit)
+#  define set_bit(word, bit) word = crm_set_bit(__FUNCTION__, __LINE__, NULL, word, bit)
+#  define clear_bit(word, bit) word = crm_clear_bit(__FUNCTION__, __LINE__, NULL, word, bit)
 
 char *generate_hash_key(const char *crm_msg_reference, const char *sys);
 
@@ -361,14 +369,24 @@ typedef struct remote_proxy_s {
     crm_ipc_t *ipc;
     mainloop_io_t *source;
     uint32_t last_request_id;
+    lrmd_t *lrm;
 
 } remote_proxy_t;
-void remote_proxy_notify_destroy(lrmd_t *lrmd, const char *session_id);
+
+remote_proxy_t *remote_proxy_new(
+    lrmd_t *lrmd, struct ipc_client_callbacks proxy_callbacks,
+    const char *node_name, const char *session_id, const char *channel);
+
+int  remote_proxy_check(lrmd_t *lrmd, GHashTable *hash);
+void remote_proxy_cb(lrmd_t *lrmd, const char *node_name, xmlNode *msg);
 void remote_proxy_ack_shutdown(lrmd_t *lrmd);
-void remote_proxy_relay_event(lrmd_t *lrmd, const char *session_id, xmlNode *msg);
-void remote_proxy_relay_response(lrmd_t *lrmd, const char *session_id, xmlNode *msg, int msg_id);
-void remote_proxy_end_session(const char *session);
+
+int  remote_proxy_dispatch(const char *buffer, ssize_t length, gpointer userdata);
+void remote_proxy_disconnected(gpointer data);
 void remote_proxy_free(gpointer data);
-int  remote_proxy_check(lrmd_t * lrmd, GHashTable *hash);
+
+void remote_proxy_end_session(remote_proxy_t *proxy);
+void remote_proxy_relay_event(remote_proxy_t *proxy, xmlNode *msg);
+void remote_proxy_relay_response(remote_proxy_t *proxy, xmlNode *msg, int msg_id);
 
 #endif                          /* CRM_INTERNAL__H */
diff --git a/lib/common/utils.c b/lib/common/utils.c
index 83072c5..51ba77a 100644
--- a/lib/common/utils.c
+++ b/lib/common/utils.c
@@ -896,6 +896,7 @@ filter_action_parameters(xmlNode * param_set, const char *version)
         XML_LRM_ATTR_OP_DIGEST,
         XML_LRM_ATTR_TARGET,
         XML_LRM_ATTR_TARGET_UUID,
+        "pcmk_external_ip"
     };
 
     gboolean do_delete = FALSE;
diff --git a/lib/lrmd/proxy_common.c b/lib/lrmd/proxy_common.c
index eb17e4e..a250bae 100644
--- a/lib/lrmd/proxy_common.c
+++ b/lib/lrmd/proxy_common.c
@@ -34,7 +34,7 @@
 int lrmd_internal_proxy_send(lrmd_t * lrmd, xmlNode *msg);
 GHashTable *proxy_table = NULL;
 
-void
+static void
 remote_proxy_notify_destroy(lrmd_t *lrmd, const char *session_id)
 {
     /* sending to the remote node that an ipc connection has been destroyed */
@@ -60,36 +60,34 @@ remote_proxy_ack_shutdown(lrmd_t *lrmd)
 }
 
 void
-remote_proxy_relay_event(lrmd_t *lrmd, const char *session_id, xmlNode *msg)
+remote_proxy_relay_event(remote_proxy_t *proxy, xmlNode *msg)
 {
     /* sending to the remote node an event msg. */
     xmlNode *event = create_xml_node(NULL, T_LRMD_IPC_PROXY);
     crm_xml_add(event, F_LRMD_IPC_OP, LRMD_IPC_OP_EVENT);
-    crm_xml_add(event, F_LRMD_IPC_SESSION, session_id);
+    crm_xml_add(event, F_LRMD_IPC_SESSION, proxy->session_id);
     add_message_xml(event, F_LRMD_IPC_MSG, msg);
     crm_log_xml_explicit(event, "EventForProxy");
-    lrmd_internal_proxy_send(lrmd, event);
+    lrmd_internal_proxy_send(proxy->lrm, event);
     free_xml(event);
 }
 
 void
-remote_proxy_relay_response(lrmd_t *lrmd, const char *session_id, xmlNode *msg, int msg_id)
+remote_proxy_relay_response(remote_proxy_t *proxy, xmlNode *msg, int msg_id)
 {
     /* sending to the remote node a response msg. */
     xmlNode *response = create_xml_node(NULL, T_LRMD_IPC_PROXY);
     crm_xml_add(response, F_LRMD_IPC_OP, LRMD_IPC_OP_RESPONSE);
-    crm_xml_add(response, F_LRMD_IPC_SESSION, session_id);
+    crm_xml_add(response, F_LRMD_IPC_SESSION, proxy->session_id);
     crm_xml_add_int(response, F_LRMD_IPC_MSG_ID, msg_id);
     add_message_xml(response, F_LRMD_IPC_MSG, msg);
-    lrmd_internal_proxy_send(lrmd, response);
+    lrmd_internal_proxy_send(proxy->lrm, response);
     free_xml(response);
 }
 
-void
-remote_proxy_end_session(const char *session)
+void
+remote_proxy_end_session(remote_proxy_t *proxy)
 {
-    remote_proxy_t *proxy = g_hash_table_lookup(proxy_table, session);
-
     if (proxy == NULL) {
         return;
     }
@@ -111,4 +109,185 @@ remote_proxy_free(gpointer data)
     free(proxy);
 }
 
+int
+remote_proxy_dispatch(const char *buffer, ssize_t length, gpointer userdata)
+{
+    /* Async responses from cib and friends back to clients via pacemaker_remoted */
+    xmlNode *xml = NULL;
+    uint32_t flags = 0;
+    remote_proxy_t *proxy = userdata;
+
+    xml = string2xml(buffer);
+    if (xml == NULL) {
+        crm_warn("Received a NULL msg from IPC service.");
+        return 1;
+    }
+
+    flags = crm_ipc_buffer_flags(proxy->ipc);
+    if (flags & crm_ipc_proxied_relay_response) {
+        crm_trace("Passing response back to %.8s on %s: %.200s - request id: %d", proxy->session_id, proxy->node_name, buffer, proxy->last_request_id);
+        remote_proxy_relay_response(proxy, xml, proxy->last_request_id);
+        proxy->last_request_id = 0;
+
+    } else {
+        crm_trace("Passing event back to %.8s on %s: %.200s", proxy->session_id, proxy->node_name, buffer);
+        remote_proxy_relay_event(proxy, xml);
+    }
+    free_xml(xml);
+    return 1;
+}
+
+
+void
+remote_proxy_disconnected(gpointer userdata)
+{
+    remote_proxy_t *proxy = userdata;
 
+    crm_trace("destroying %p", proxy);
+
+    proxy->source = NULL;
+    proxy->ipc = NULL;
+
+    if(proxy->lrm) {
+        remote_proxy_notify_destroy(proxy->lrm, proxy->session_id);
+        proxy->lrm = NULL;
+    }
+
+    g_hash_table_remove(proxy_table, proxy->session_id);
+}
+
+remote_proxy_t *
+remote_proxy_new(lrmd_t *lrmd, struct ipc_client_callbacks proxy_callbacks,
+                 const char *node_name, const char *session_id, const char *channel)
+{
+    remote_proxy_t *proxy = NULL;
+
+    if(channel == NULL) {
+        crm_err("No channel specified to proxy");
+        remote_proxy_notify_destroy(lrmd, session_id);
+        return NULL;
+    }
+
+    proxy = calloc(1, sizeof(remote_proxy_t));
+
+    proxy->node_name = strdup(node_name);
+    proxy->session_id = strdup(session_id);
+
+    proxy->source = mainloop_add_ipc_client(channel, G_PRIORITY_LOW, 0, proxy, &proxy_callbacks);
+    proxy->ipc = mainloop_get_ipc_client(proxy->source);
+    proxy->lrm = lrmd;
+
+    if (proxy->source == NULL) {
+        remote_proxy_free(proxy);
+        remote_proxy_notify_destroy(lrmd, session_id);
+        return NULL;
+    }
+
+    crm_trace("new remote proxy client established to %s on %s, session id %s",
+              channel, node_name, session_id);
+    g_hash_table_insert(proxy_table, proxy->session_id, proxy);
+
+    return proxy;
+}
+
+void
+remote_proxy_cb(lrmd_t *lrmd, const char *node_name, xmlNode *msg)
+{
+    const char *op = crm_element_value(msg, F_LRMD_IPC_OP);
+    const char *session = crm_element_value(msg, F_LRMD_IPC_SESSION);
+    remote_proxy_t *proxy = g_hash_table_lookup(proxy_table, session);
+    int msg_id = 0;
+
+    /* sessions are raw ipc connections to IPC,
+     * all we do is proxy requests/responses exactly
+     * like they are given to us at the ipc level. */
+
+    CRM_CHECK(op != NULL, return);
+    CRM_CHECK(session != NULL, return);
+
+    crm_element_value_int(msg, F_LRMD_IPC_MSG_ID, &msg_id);
+    /* This is msg from remote ipc client going to real ipc server */
+
+    if (safe_str_eq(op, LRMD_IPC_OP_DESTROY)) {
+        remote_proxy_end_session(proxy);
+
+    } else if (safe_str_eq(op, LRMD_IPC_OP_REQUEST)) {
+        int flags = 0;
+        xmlNode *request = get_message_xml(msg, F_LRMD_IPC_MSG);
+        const char *name = crm_element_value(msg, F_LRMD_IPC_CLIENT);
+
+        CRM_CHECK(request != NULL, return);
+
+        if (proxy == NULL) {
+            /* proxy connection no longer exists */
+            remote_proxy_notify_destroy(lrmd, session);
+            return;
+        } else if ((proxy->is_local == FALSE) && (crm_ipc_connected(proxy->ipc) == FALSE)) {
+            remote_proxy_end_session(proxy);
+            return;
+        }
+        proxy->last_request_id = 0;
+        crm_element_value_int(msg, F_LRMD_IPC_MSG_FLAGS, &flags);
+        crm_xml_add(request, XML_ACL_TAG_ROLE, "pacemaker-remote");
+
+#if ENABLE_ACL
+        CRM_ASSERT(node_name);
+        crm_acl_get_set_user(request, F_LRMD_IPC_USER, node_name);
+#endif
+
+        if(is_set(flags, crm_ipc_proxied)) {
+            const char *type = crm_element_value(request, F_TYPE);
+            int rc = 0;
+
+            if (safe_str_eq(type, T_ATTRD)
+                && crm_element_value(request, F_ATTRD_HOST) == NULL) {
+                crm_xml_add(request, F_ATTRD_HOST, proxy->node_name);
+            }
+
+            rc = crm_ipc_send(proxy->ipc, request, flags, 5000, NULL);
+
+            if(rc < 0) {
+                xmlNode *op_reply = create_xml_node(NULL, "nack");
+
+                crm_err("Could not relay %s request %d from %s to %s for %s: %s (%d)",
+                         op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name, pcmk_strerror(rc), rc);
+
+                /* Send a n'ack so the caller doesn't block */
+                crm_xml_add(op_reply, "function", __FUNCTION__);
+                crm_xml_add_int(op_reply, "line", __LINE__);
+                crm_xml_add_int(op_reply, "rc", rc);
+                remote_proxy_relay_response(proxy, op_reply, msg_id);
+                free_xml(op_reply);
+
+            } else {
+                crm_trace("Relayed %s request %d from %s to %s for %s",
+                          op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name);
+                proxy->last_request_id = msg_id;
+            }
+
+        } else {
+            int rc = pcmk_ok;
+            xmlNode *op_reply = NULL;
+            /* For backwards compatibility with pacemaker_remoted <= 1.1.10 */
+
+            crm_trace("Relaying %s request %d from %s to %s for %s",
+                      op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name);
+
+            rc = crm_ipc_send(proxy->ipc, request, flags, 10000, &op_reply);
+            if(rc < 0) {
+                crm_err("Could not relay %s request %d from %s to %s for %s: %s (%d)",
+                         op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name, pcmk_strerror(rc), rc);
+            } else {
+                crm_trace("Relayed %s request %d from %s to %s for %s",
+                          op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name);
+            }
+
+            if(op_reply) {
+                remote_proxy_relay_response(proxy, op_reply, msg_id);
+                free_xml(op_reply);
+            }
+        }
+    } else {
+        crm_err("Unknown proxy operation: %s", op);
+    }
+}
diff --git a/lib/pengine/Makefile.am b/lib/pengine/Makefile.am
index 59aa383..40188f9 100644
--- a/lib/pengine/Makefile.am
+++ b/lib/pengine/Makefile.am
@@ -37,7 +37,7 @@ libpe_status_la_CFLAGS	= $(CFLAGS_HARDENED_LIB)
 libpe_status_la_LDFLAGS	+= $(LDFLAGS_HARDENED_LIB)
 
 libpe_status_la_LIBADD	= @CURSESLIBS@ $(top_builddir)/lib/common/libcrmcommon.la
-libpe_status_la_SOURCES	= status.c unpack.c utils.c complex.c native.c \
+libpe_status_la_SOURCES	= status.c unpack.c utils.c complex.c native.c container.c \
 			group.c clone.c rules.c common.c remote.c
 
 clean-generic:
diff --git a/lib/pengine/complex.c b/lib/pengine/complex.c
index 7fe622f..9fa8bf0 100644
--- a/lib/pengine/complex.c
+++ b/lib/pengine/complex.c
@@ -33,7 +33,8 @@ resource_object_functions_t resource_class_functions[] = {
      native_active,
      native_resource_state,
      native_location,
-     native_free},
+     native_free
+    },
     {
      group_unpack,
      native_find_rsc,
@@ -42,7 +43,18 @@ resource_object_functions_t resource_class_functions[] = {
      group_active,
      group_resource_state,
      native_location,
-     group_free},
+     group_free
+    },
+    {
+     container_unpack,
+     native_find_rsc,
+     native_parameter,
+     container_print,
+     container_active,
+     container_resource_state,
+     native_location,
+     container_free
+    },
     {
      clone_unpack,
      native_find_rsc,
@@ -51,7 +63,8 @@ resource_object_functions_t resource_class_functions[] = {
      clone_active,
      clone_resource_state,
      native_location,
-     clone_free},
+     clone_free
+    },
     {
      master_unpack,
      native_find_rsc,
@@ -77,6 +90,9 @@ get_resource_type(const char *name)
 
     } else if (safe_str_eq(name, XML_CIB_TAG_MASTER)) {
         return pe_master;
+
+    } else if (safe_str_eq(name, XML_CIB_TAG_CONTAINER)) {
+        return pe_container;
     }
 
     return pe_unknown;
@@ -94,6 +110,8 @@ get_resource_typename(enum pe_obj_types type)
             return XML_CIB_TAG_INCARNATION;
         case pe_master:
             return XML_CIB_TAG_MASTER;
+        case pe_container:
+            return XML_CIB_TAG_CONTAINER;
         case pe_unknown:
             return "unknown";
     }
@@ -816,7 +834,7 @@ uber_parent(resource_t * rsc)
     if (parent == NULL) {
         return NULL;
     }
-    while (parent->parent != NULL) {
+    while (parent->parent != NULL && parent->parent->variant != pe_container) {
         parent = parent->parent;
     }
     return parent;
diff --git a/lib/pengine/container.c b/lib/pengine/container.c
new file mode 100644
index 0000000..d7d47ad
--- /dev/null
+++ b/lib/pengine/container.c
@@ -0,0 +1,800 @@
+/*
+ * Copyright (C) 2004 Andrew Beekhof <andrew@beekhof.net>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#include <crm_internal.h>
+
+#include <crm/pengine/rules.h>
+#include <crm/pengine/status.h>
+#include <crm/pengine/internal.h>
+#include <unpack.h>
+#include <crm/msg_xml.h>
+
+#define VARIANT_CONTAINER 1
+#include "./variant.h"
+
+void tuple_free(container_grouping_t *tuple);
+
+static char *
+next_ip(const char *last_ip)
+{
+    int oct1 = 0;
+    int oct2 = 0;
+    int oct3 = 0;
+    int oct4 = 0;
+
+    int rc = sscanf(last_ip, "%d.%d.%d.%d", &oct1, &oct2, &oct3, &oct4);
+    if (rc != 4) {
+        return NULL;
+
+    } else if(oct4 > 255) {
+        return NULL;
+    }
+
+    return crm_strdup_printf("%d.%d.%d.%d", oct1, oct2, oct3, oct4+1);
+}
+
+static int
+allocate_ip(container_variant_data_t *data, container_grouping_t *tuple, char *buffer, int max) 
+{
+    if(data->ip_range_start == NULL) {
+        return 0;
+
+    } else if(data->ip_last) {
+        tuple->ipaddr = next_ip(data->ip_last);
+
+    } else {
+        tuple->ipaddr = strdup(data->ip_range_start);
+    }
+
+    data->ip_last = tuple->ipaddr;
+#if 0
+    return snprintf(buffer, max, " --add-host=%s-%d:%s --link %s-docker-%d:%s-link-%d",
+                    data->prefix, tuple->offset, tuple->ipaddr,
+                    data->prefix, tuple->offset, data->prefix, tuple->offset);
+#else
+    return snprintf(buffer, max, " --add-host=%s-%d:%s",
+                    data->prefix, tuple->offset, tuple->ipaddr);
+#endif
+}
+
+static xmlNode *
+create_resource(const char *name, const char *provider, const char *kind) 
+{
+    xmlNode *rsc = create_xml_node(NULL, XML_CIB_TAG_RESOURCE);
+
+    crm_xml_add(rsc, XML_ATTR_ID, name);
+    crm_xml_add(rsc, XML_AGENT_ATTR_CLASS, "ocf");
+    crm_xml_add(rsc, XML_AGENT_ATTR_PROVIDER, provider);
+    crm_xml_add(rsc, "type", kind);
+
+    return rsc;
+}
+
+static void
+create_nvp(xmlNode *parent, const char *name, const char *value) 
+{
+    char *id = crm_strdup_printf("%s-%s", ID(parent), name);
+    xmlNode *xml_nvp = create_xml_node(parent, XML_CIB_TAG_NVPAIR);
+
+    crm_xml_add(xml_nvp, XML_ATTR_ID, id); free(id);
+    crm_xml_add(xml_nvp, XML_NVPAIR_ATTR_NAME, name);
+    crm_xml_add(xml_nvp, XML_NVPAIR_ATTR_VALUE, value);
+}
+
+static void
+create_op(xmlNode *parent, const char *prefix, const char *task, const char *interval) 
+{
+    char *id = crm_strdup_printf("%s-%s-%s", prefix, task, interval);
+    xmlNode *xml_op = create_xml_node(parent, "op");
+
+    crm_xml_add(xml_op, XML_ATTR_ID, id); free(id);
+    crm_xml_add(xml_op, XML_LRM_ATTR_INTERVAL, interval);
+    crm_xml_add(xml_op, "name", task);
+}
+
+static bool
+create_ip_resource(
+    resource_t *parent, container_variant_data_t *data, container_grouping_t *tuple,
+    pe_working_set_t * data_set) 
+{
+    if(data->ip_range_start) {
+        char *id = crm_strdup_printf("%s-ip-%s", data->prefix, tuple->ipaddr);
+        xmlNode *xml_ip = create_resource(id, "heartbeat", "IPaddr2");
+        xmlNode *xml_obj = NULL;
+
+        id = crm_strdup_printf("%s-attributes-%d", data->prefix, tuple->offset);
+        xml_obj = create_xml_node(xml_ip, XML_TAG_ATTR_SETS);
+        crm_xml_add(xml_obj, XML_ATTR_ID, id); free(id);
+
+        create_nvp(xml_obj, "ip", tuple->ipaddr);
+        if(data->host_network) {
+            create_nvp(xml_obj, "nic", data->host_network);
+        }
+
+        if(data->host_netmask) {
+            create_nvp(xml_obj, "cidr_netmask", data->host_netmask);
+
+        } else {
+            create_nvp(xml_obj, "cidr_netmask", "32");
+        }
+
+        xml_obj = create_xml_node(xml_ip, "operations");
+        create_op(xml_obj, ID(xml_ip), "monitor", "60s");
+
+        // TODO: Other ops? Timeouts and intervals from underlying resource?
+
+        if (common_unpack(xml_ip, &tuple->ip, NULL, data_set) == false) {
+            return FALSE;
+        }
+
+        parent->children = g_list_append(parent->children, tuple->ip);
+    }
+    return TRUE;
+}
+
+static bool
+create_docker_resource(
+    resource_t *parent, container_variant_data_t *data, container_grouping_t *tuple,
+    pe_working_set_t * data_set) 
+{
+        int offset = 0, max = 4096;
+        char *buffer = calloc(1, max+1);
+
+        int doffset = 0, dmax = 1024;
+        char *dbuffer = calloc(1, dmax+1);
+
+        char *id = crm_strdup_printf("%s-docker-%d", data->prefix, tuple->offset);
+        xmlNode *xml_docker = create_resource(id, "heartbeat", "docker");
+        xmlNode *xml_obj = NULL;
+
+        id = crm_strdup_printf("%s-attributes-%d", data->prefix, tuple->offset);
+        xml_obj = create_xml_node(xml_docker, XML_TAG_ATTR_SETS);
+        crm_xml_add(xml_obj, XML_ATTR_ID, id); free(id);
+
+        create_nvp(xml_obj, "image", data->image);
+        create_nvp(xml_obj, "allow_pull", "true");
+        create_nvp(xml_obj, "force_kill", "false");
+        create_nvp(xml_obj, "reuse", "false");
+
+        offset += snprintf(buffer+offset, max-offset, "-h %s-%d --restart=no ",
+                           data->prefix, tuple->offset);
+
+        if(data->docker_network) {
+//        offset += snprintf(buffer+offset, max-offset, " --link-local-ip=%s", tuple->ipaddr);
+            offset += snprintf(buffer+offset, max-offset, " --net=%s", data->docker_network);
+        }
+
+        for(GListPtr pIter = data->mounts; pIter != NULL; pIter = pIter->next) {
+            container_mount_t *mount = pIter->data;
+
+            if(mount->flags) {
+                char *source = crm_strdup_printf(
+                    "%s/%s-%d", mount->source, data->prefix, tuple->offset);
+
+                if(doffset > 0) {
+                    doffset += snprintf(dbuffer+doffset, dmax-doffset, ",");
+                }
+                doffset += snprintf(dbuffer+doffset, dmax-doffset, "%s", source);
+                offset += snprintf(buffer+offset, max-offset, " -v %s:%s", source, mount->target);
+
+            } else {
+                offset += snprintf(buffer+offset, max-offset, " -v %s:%s", mount->source, mount->target);
+            }
+            if(mount->options) {
+                offset += snprintf(buffer+offset, max-offset, ":%s", mount->options);
+            }
+        }
+
+        for(GListPtr pIter = data->ports; pIter != NULL; pIter = pIter->next) {
+            char *port = pIter->data;
+
+            offset += snprintf(buffer+offset, max-offset, " -p %s:%s:%s",
+                               tuple->ipaddr, port, port);
+        }
+
+        if(data->docker_run_options) {
+            offset += snprintf(buffer+offset, max-offset, " %s", data->docker_run_options);
+        }
+
+        if(data->docker_host_options) {
+            offset += snprintf(buffer+offset, max-offset, " %s", data->docker_host_options);
+        }
+
+        create_nvp(xml_obj, "run_opts", buffer);
+        free(buffer);
+
+        create_nvp(xml_obj, "mount_points", dbuffer);
+        free(dbuffer);
+
+        if(tuple->child) {
+            create_nvp(xml_obj, "run_cmd", SBIN_DIR"/pacemaker_remoted");
+
+            /* TODO: Allow users to specify their own?
+             *
+             * We just want to know if the container is alive, we'll
+             * monitor the child independantly
+             */
+            create_nvp(xml_obj, "monitor_cmd", "/bin/true"); 
+        /* } else if(child && data->untrusted) {
+         * Support this use-case?
+         *
+         * The ability to have resources started/stopped by us, but
+         * unable to set attributes, etc.
+         *
+         * Arguably better to control API access this with ACLs like
+         * "normal" remote nodes
+         *
+         *     create_nvp(xml_obj, "run_cmd", "/usr/libexec/pacemaker/lrmd");
+         *     create_nvp(xml_obj, "monitor_cmd", "/usr/libexec/pacemaker/lrmd_internal_ctl -c poke");
+         */
+        } else {
+            /* TODO: Allow users to specify their own?
+             *
+             * We don't know what's in the container, so we just want
+             * to know if it is alive
+             */
+            create_nvp(xml_obj, "monitor_cmd", "/bin/true");
+        }
+
+
+        xml_obj = create_xml_node(xml_docker, "operations");
+        create_op(xml_obj, ID(xml_docker), "monitor", "60s");
+
+        // TODO: Other ops? Timeouts and intervals from underlying resource?
+
+        if (common_unpack(xml_docker, &tuple->docker, NULL, data_set) == FALSE) {
+            return FALSE;
+        }
+        parent->children = g_list_append(parent->children, tuple->docker);
+        tuple->docker->parent = parent;
+        return TRUE;
+}
+
+static bool
+create_remote_resource(
+    resource_t *parent, container_variant_data_t *data, container_grouping_t *tuple,
+    pe_working_set_t * data_set) 
+{
+    if(tuple->ip && tuple->child) {
+        node_t *node = NULL;
+        xmlNode *xml_obj = NULL;
+        xmlNode *xml_remote = NULL;
+        char *nodeid = crm_strdup_printf("%s-%d", data->prefix, tuple->offset);
+        char *id = strdup(nodeid);
+
+        if(remote_id_conflict(id, data_set)) {
+            // The biggest hammer we have
+            id = crm_strdup_printf("pcmk-internal-%s-remote-%d", tuple->child->id, tuple->offset);
+        }
+
+        CRM_ASSERT(remote_id_conflict(id, data_set) == FALSE);
+
+        xml_remote = create_resource(id, "pacemaker", "remote");
+        xml_obj = create_xml_node(xml_remote, "operations");
+        create_op(xml_obj, ID(xml_remote), "monitor", "60s");
+
+        id = crm_strdup_printf("%s-attributes-%d", data->prefix, tuple->offset);
+        xml_obj = create_xml_node(xml_remote, XML_TAG_ATTR_SETS);
+        crm_xml_add(xml_obj, XML_ATTR_ID, id); free(id);
+
+        create_nvp(xml_obj, "addr", tuple->ipaddr);
+        create_nvp(xml_obj, "port", crm_itoa(DEFAULT_REMOTE_PORT));
+
+        id = crm_strdup_printf("%s-meta-%d", data->prefix, tuple->offset);
+        xml_obj = create_xml_node(xml_remote, XML_TAG_META_SETS);
+        crm_xml_add(xml_obj, XML_ATTR_ID, id); free(id);
+
+        create_nvp(xml_obj, XML_OP_ATTR_ALLOW_MIGRATE, "false");
+
+        // Sets up node->details->remote_rsc->container == tuple->docker
+        create_nvp(xml_obj, XML_RSC_ATTR_CONTAINER, tuple->docker->id);
+
+        // TODO: Do this generically, eg with rsc->flags
+        // create_nvp(xml_obj, XML_RSC_ATTR_INTERNAL_RSC, "true"); // Suppress printing
+
+        // tuple->docker->fillers = g_list_append(tuple->docker->fillers, child);
+
+        // -INFINITY prevents anyone else from running here
+        node = create_node(strdup(nodeid), nodeid, "remote", "-INFINITY", data_set);
+        tuple->node = node_copy(node);
+        tuple->node->weight = 500;
+        nodeid = NULL;
+        id = NULL;
+
+        if (common_unpack(xml_remote, &tuple->remote, NULL, data_set) == FALSE) {
+            return FALSE;
+        }
+
+        tuple->node->details->remote_rsc = tuple->remote;
+        parent->children = g_list_append(parent->children, tuple->remote);
+    }
+    return TRUE;
+}
+
+static bool
+create_container(
+    resource_t *parent, container_variant_data_t *data, container_grouping_t *tuple,
+    pe_working_set_t * data_set)
+{
+
+    if(create_docker_resource(parent, data, tuple, data_set) == FALSE) {
+        return TRUE;
+    }
+    if(create_ip_resource(parent, data, tuple, data_set) == FALSE) {
+        return TRUE;
+    }
+    if(create_remote_resource(parent, data, tuple, data_set) == FALSE) {
+        return TRUE;
+    }
+    if(tuple->child && tuple->ipaddr) {
+        add_hash_param(tuple->child->meta, "external-ip", tuple->ipaddr);
+    }
+
+    return FALSE;
+}
+
+static void mount_free(container_mount_t *mount)
+{
+    free(mount->source);
+    free(mount->target);
+    free(mount->options);
+    free(mount);
+}
+
+gboolean
+container_unpack(resource_t * rsc, pe_working_set_t * data_set)
+{
+    const char *value = NULL;
+    xmlNode *xml_obj = NULL;
+    xmlNode *xml_resource = NULL;
+    container_variant_data_t *container_data = NULL;
+
+    pe_rsc_trace(rsc, "Processing resource %s...", rsc->id);
+
+    container_data = calloc(1, sizeof(container_variant_data_t));
+    rsc->variant_opaque = container_data;
+    container_data->prefix = strdup(rsc->id);
+
+    xml_obj = first_named_child(rsc->xml, "docker");
+    if(xml_obj == NULL) {
+        return FALSE;
+    }
+
+    value = crm_element_value(xml_obj, "replicas");
+    if(value == NULL) {
+        value = crm_element_value(xml_obj, "masters");
+    }
+    container_data->replicas = crm_parse_int(value, "1");
+
+    /*
+     * Communication between containers on the same host via the
+     * floating IPs only works if docker is started with:
+     *   --userland-proxy=false --ip-masq=false
+     */
+    value = crm_element_value(xml_obj, "replicas-per-host");
+    container_data->replicas_per_host = crm_parse_int(value, "1");
+
+    if(container_data->replicas_per_host == 1) {
+        clear_bit(rsc->flags, pe_rsc_unique);
+    }
+
+    value = crm_element_value(xml_obj, "masters");
+    container_data->masters = crm_parse_int(value, "1");
+
+    container_data->docker_run_options = crm_element_value_copy(xml_obj, "options");
+    container_data->image = crm_element_value_copy(xml_obj, "image");
+
+    xml_obj = first_named_child(rsc->xml, "network");
+    if(xml_obj) {
+
+        container_data->ip_range_start = crm_element_value_copy(xml_obj, "ip-range-start");
+        container_data->host_netmask = crm_element_value_copy(xml_obj, "host-netmask");
+        container_data->host_network = crm_element_value_copy(xml_obj, "host-network");
+        container_data->docker_network = crm_element_value_copy(xml_obj, "docker-network");
+
+        for (xmlNode *xml_child = __xml_first_child_element(xml_obj); xml_child != NULL;
+             xml_child = __xml_next_element(xml_child)) {
+
+            char *port = crm_element_value_copy(xml_child, "port");
+
+            if(port == NULL) {
+                port = crm_element_value_copy(xml_child, "range");
+            }
+
+            if(port != NULL) {
+                container_data->ports = g_list_append(container_data->ports, port);
+            } else {
+                pe_err("Invalid port directive %s", ID(xml_child));
+            }
+        }
+    }
+
+    xml_obj = first_named_child(rsc->xml, "storage");
+    for (xmlNode *xml_child = __xml_first_child_element(xml_obj); xml_child != NULL;
+         xml_child = __xml_next_element(xml_child)) {
+
+        container_mount_t *mount = calloc(1, sizeof(container_mount_t));
+        mount->source = crm_element_value_copy(xml_child, "source-dir");
+
+        if(mount->source == NULL) {
+            mount->source = crm_element_value_copy(xml_child, "source-dir-root");
+            mount->flags = 1;
+        }
+        mount->target = crm_element_value_copy(xml_child, "target-dir");
+        mount->options = crm_element_value_copy(xml_child, "options");
+
+        if(mount->source && mount->target) {
+            container_data->mounts = g_list_append(container_data->mounts, mount);
+        } else {
+            pe_err("Invalid mount directive %s", ID(xml_child));
+            mount_free(mount);
+        }
+    }
+
+    xml_obj = first_named_child(rsc->xml, "primitive");
+    if(xml_obj && container_data->ip_range_start && container_data->replicas > 0) {
+        char *value = NULL;
+        xmlNode *xml_set = NULL;
+
+        if(container_data->masters > 0) {
+            xml_resource = create_xml_node(NULL, XML_CIB_TAG_MASTER);
+
+        } else {
+            xml_resource = create_xml_node(NULL, XML_CIB_TAG_INCARNATION);
+        }
+
+        value = crm_strdup_printf("%s-%s", container_data->prefix, xml_resource->name);
+        crm_xml_add(xml_resource, XML_ATTR_ID, value);
+        free(value);
+
+        value = crm_strdup_printf("%s-%s-meta", container_data->prefix, xml_resource->name);
+        xml_set = create_xml_node(xml_resource, XML_TAG_META_SETS);
+        free(value);
+
+        create_nvp(xml_set, XML_RSC_ATTR_ORDERED, "true");
+
+        value = crm_itoa(container_data->replicas);
+        create_nvp(xml_set, XML_RSC_ATTR_INCARNATION_MAX, value);
+        free(value);
+
+        value = crm_itoa(container_data->replicas_per_host);
+        create_nvp(xml_set, XML_RSC_ATTR_INCARNATION_NODEMAX, value);
+        free(value);
+
+        if(container_data->replicas_per_host > 1) {
+            create_nvp(xml_set, XML_RSC_ATTR_UNIQUE, "true");
+        } else {
+            create_nvp(xml_set, XML_RSC_ATTR_UNIQUE, "false");
+        }
+
+        if(container_data->masters) {
+            value = crm_itoa(container_data->masters);
+            create_nvp(xml_set, XML_RSC_ATTR_MASTER_MAX, value);
+            free(value);
+        }
+
+        //crm_xml_add(xml_obj, XML_ATTR_ID, container_data->prefix);
+        add_node_copy(xml_resource, xml_obj);
+
+    /* } else if(xml_obj && container_data->ip_range_start) { */
+    /*     xml_resource = copy_xml(xml_resource); */
+
+    } else if(xml_obj) {
+        pe_err("Cannot control %s inside container %s without a value for ip-range-start",
+               rsc->id, ID(xml_obj));
+        return FALSE;
+    }
+
+    if(xml_resource) {
+        int lpc = 0;
+        GListPtr childIter = NULL;
+        resource_t *new_rsc = NULL;
+        container_mount_t *mount = NULL;
+
+        int offset = 0, max = 1024;
+        char *buffer = calloc(1, max+1);
+
+        mount = calloc(1, sizeof(container_mount_t));
+        mount->source = strdup(DEFAULT_REMOTE_KEY_LOCATION);
+        mount->target = strdup(DEFAULT_REMOTE_KEY_LOCATION);
+        mount->options = NULL;
+        mount->flags = 0;
+        container_data->mounts = g_list_append(container_data->mounts, mount);
+
+        mount = calloc(1, sizeof(container_mount_t));
+        mount->source = strdup("/var/log/containers");
+        mount->target = strdup("/var/log");
+        mount->options = NULL;
+        mount->flags = 1;
+        container_data->mounts = g_list_append(container_data->mounts, mount);
+
+        container_data->ports = g_list_append(container_data->ports, crm_itoa(DEFAULT_REMOTE_PORT));
+
+        if (common_unpack(xml_resource, &new_rsc, rsc, data_set) == FALSE) {
+            pe_err("Failed unpacking resource %s", crm_element_value(rsc->xml, XML_ATTR_ID));
+            if (new_rsc != NULL && new_rsc->fns != NULL) {
+                new_rsc->fns->free(new_rsc);
+            }
+            return FALSE;
+        }
+
+        container_data->child = new_rsc;
+        container_data->child->orig_xml = xml_obj; // Also the trigger for common_free()
+                                                   // to free xml_resource as container_data->child->xml
+
+        for(childIter = container_data->child->children; childIter != NULL; childIter = childIter->next) {
+            container_grouping_t *tuple = calloc(1, sizeof(container_grouping_t));
+            tuple->child = childIter->data;
+            tuple->offset = lpc++;
+
+            offset += allocate_ip(container_data, tuple, buffer+offset, max-offset);
+            container_data->tuples = g_list_append(container_data->tuples, tuple);
+        }
+        container_data->docker_host_options = buffer;
+
+    } else {
+        // Just a naked container, no pacemaker-remote
+        int offset = 0, max = 1024;
+        char *buffer = calloc(1, max+1);
+
+        for(int lpc = 0; lpc < container_data->replicas; lpc++) {
+            container_grouping_t *tuple = calloc(1, sizeof(container_grouping_t));
+            tuple->offset = lpc;
+            offset += allocate_ip(container_data, tuple, buffer+offset, max-offset);
+            container_data->tuples = g_list_append(container_data->tuples, tuple);
+        }
+
+        container_data->docker_host_options = buffer;
+    }
+
+
+    for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) {
+        container_grouping_t *tuple = (container_grouping_t *)gIter->data;
+        // TODO: Remove from list if create_container() returns TRUE
+        create_container(rsc, container_data, tuple, data_set);
+    }
+
+    if(container_data->child) {
+        rsc->children = g_list_append(rsc->children, container_data->child);
+    }
+    return TRUE;
+}
+
+gboolean
+container_active(resource_t * rsc, gboolean all)
+{
+    return TRUE;
+}
+
+resource_t *
+find_container_child(const char *stem, resource_t * rsc, node_t *node) 
+{
+    container_variant_data_t *container_data = NULL;
+    resource_t *parent = uber_parent(rsc);
+    CRM_ASSERT(parent->parent);
+
+    parent = parent->parent;
+    get_container_variant_data(container_data, parent);
+
+    if (is_not_set(rsc->flags, pe_rsc_unique)) {
+        for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) {
+            container_grouping_t *tuple = (container_grouping_t *)gIter->data;
+
+            CRM_ASSERT(tuple);
+            if(tuple->node->details == node->details) {
+                rsc = tuple->child;
+                break;
+            }
+        }
+    }
+
+    if (rsc && safe_str_neq(stem, rsc->id)) {
+        free(rsc->clone_name);
+        rsc->clone_name = strdup(stem);
+    }
+
+    return rsc;
+}
+
+static void
+container_print_xml(resource_t * rsc, const char *pre_text, long options, void *print_data)
+{
+    container_variant_data_t *container_data = NULL;
+    char *child_text = NULL;
+    CRM_CHECK(rsc != NULL, return);
+
+    if (pre_text == NULL) {
+        pre_text = "";
+    }
+    child_text = crm_concat(pre_text, "   ", ' ');
+
+    status_print("%s<container ", pre_text);
+    status_print("id=\"%s\" ", rsc->id);
+    status_print("managed=\"%s\" ", is_set(rsc->flags, pe_rsc_managed) ? "true" : "false");
+    status_print("failed=\"%s\" ", is_set(rsc->flags, pe_rsc_failed) ? "true" : "false");
+    status_print(">\n");
+
+    get_container_variant_data(container_data, rsc);
+
+    status_print("%sDocker container: %s [%s]%s%s",
+                 pre_text, rsc->id, container_data->image,
+                 is_set(rsc->flags, pe_rsc_unique) ? " (unique)" : "",
+                 is_set(rsc->flags, pe_rsc_managed) ? "" : " (unmanaged)");
+
+    for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) {
+        container_grouping_t *tuple = (container_grouping_t *)gIter->data;
+
+        CRM_ASSERT(tuple);
+        if(tuple->ip) {
+            tuple->ip->fns->print(tuple->ip, child_text, options, print_data);
+        }
+        if(tuple->child) {
+            tuple->child->fns->print(tuple->child, child_text, options, print_data);
+        }
+        if(tuple->docker) {
+            tuple->docker->fns->print(tuple->docker, child_text, options, print_data);
+        }
+        if(tuple->remote) {
+            tuple->remote->fns->print(tuple->remote, child_text, options, print_data);
+        }
+    }
+    status_print("%s</container>\n", pre_text);
+    free(child_text);
+}
+
+static void
+tuple_print(container_grouping_t * tuple, const char *pre_text, long options, void *print_data)
+{
+    node_t *node = NULL;
+    resource_t *rsc = tuple->child;
+
+    int offset = 0;
+    char buffer[LINE_MAX];
+
+    if(rsc == NULL) {
+        rsc = tuple->docker;
+    }
+
+    if(tuple->remote) {
+        offset += snprintf(buffer + offset, LINE_MAX - offset, "%s", rsc_printable_id(tuple->remote));
+    } else {
+        offset += snprintf(buffer + offset, LINE_MAX - offset, "%s", rsc_printable_id(tuple->docker));
+    }
+    if(tuple->ipaddr) {
+        offset += snprintf(buffer + offset, LINE_MAX - offset, " (%s)", tuple->ipaddr);
+    }
+
+    if(tuple->remote && tuple->remote->running_on != NULL) {
+        node = tuple->remote->running_on->data;
+    } else if (tuple->remote == NULL && rsc->running_on != NULL) {
+        node = rsc->running_on->data;
+    }
+    common_print(rsc, pre_text, buffer, node, options, print_data);
+}
+
+void
+container_print(resource_t * rsc, const char *pre_text, long options, void *print_data)
+{
+    container_variant_data_t *container_data = NULL;
+    char *child_text = NULL;
+    CRM_CHECK(rsc != NULL, return);
+
+    if (options & pe_print_xml) {
+        container_print_xml(rsc, pre_text, options, print_data);
+        return;
+    }
+
+    get_container_variant_data(container_data, rsc);
+
+    if (pre_text == NULL) {
+        pre_text = " ";
+    }
+
+    child_text = crm_strdup_printf("     %s", pre_text);
+    status_print("%sDocker container%s: %s [%s]%s%s\n",
+                 pre_text, container_data->replicas>1?" set":"", rsc->id, container_data->image,
+                 is_set(rsc->flags, pe_rsc_unique) ? " (unique)" : "",
+                 is_set(rsc->flags, pe_rsc_managed) ? "" : " (unmanaged)");
+
+    for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) {
+        container_grouping_t *tuple = (container_grouping_t *)gIter->data;
+
+        CRM_ASSERT(tuple);
+        if(is_set(options, pe_print_clone_details)) {
+            if(g_list_length(container_data->tuples) > 1) {
+                status_print("  %sReplica[%d]\n", pre_text, tuple->offset);
+            }
+
+            if(tuple->ip) {
+                tuple->ip->fns->print(tuple->ip, child_text, options, print_data);
+            }
+            if(tuple->docker) {
+                tuple->docker->fns->print(tuple->docker, child_text, options, print_data);
+            }
+            if(tuple->remote) {
+                tuple->remote->fns->print(tuple->remote, child_text, options, print_data);
+            }
+            if(tuple->child) {
+                tuple->child->fns->print(tuple->child, child_text, options, print_data);
+            }
+        } else {
+            char *child_text = crm_strdup_printf("%s  ", pre_text);
+            tuple_print(tuple, child_text, options, print_data);
+        }
+    }
+}
+
+void
+tuple_free(container_grouping_t *tuple) 
+{
+    if(tuple == NULL) {
+        return;
+    }
+
+    // TODO: Free tuple->node ?
+
+    if(tuple->ip) {
+        tuple->ip->fns->free(tuple->ip);
+        tuple->ip = NULL;
+    }
+    if(tuple->child) {
+        tuple->child->fns->free(tuple->child);
+        tuple->child = NULL;
+    }
+    if(tuple->docker) {
+        tuple->docker->fns->free(tuple->docker);
+        tuple->docker = NULL;
+    }
+    if(tuple->remote) {
+        tuple->remote->fns->free(tuple->remote);
+        tuple->remote = NULL;
+    }
+    free(tuple->ipaddr);
+    free(tuple);
+}
+
+void
+container_free(resource_t * rsc)
+{
+    container_variant_data_t *container_data = NULL;
+    CRM_CHECK(rsc != NULL, return);
+
+    get_container_variant_data(container_data, rsc);
+    pe_rsc_trace(rsc, "Freeing %s", rsc->id);
+
+    free(container_data->prefix);
+    free(container_data->image);
+    free(container_data->host_network);
+    free(container_data->host_netmask);
+    free(container_data->ip_range_start);
+    free(container_data->docker_network);
+    free(container_data->docker_run_options);
+    free(container_data->docker_host_options);
+
+    g_list_free_full(container_data->tuples, (GDestroyNotify)tuple_free);
+    g_list_free_full(container_data->mounts, (GDestroyNotify)mount_free);
+    g_list_free_full(container_data->ports, free);
+    common_free(rsc);
+}
+
+enum rsc_role_e
+container_resource_state(const resource_t * rsc, gboolean current)
+{
+    enum rsc_role_e container_role = RSC_ROLE_UNKNOWN;
+    return container_role;
+}
diff --git a/lib/pengine/native.c b/lib/pengine/native.c
index 11febf4..8bcb2b6 100644
--- a/lib/pengine/native.c
+++ b/lib/pengine/native.c
@@ -465,9 +465,8 @@ comma_if(int i)
 }
 
 void
-native_print(resource_t * rsc, const char *pre_text, long options, void *print_data)
+common_print(resource_t * rsc, const char *pre_text, const char *name, node_t *node, long options, void *print_data)
 {
-    node_t *node = NULL;
     const char *desc = NULL;
     const char *class = crm_element_value(rsc->xml, XML_AGENT_ATTR_CLASS);
     const char *kind = crm_element_value(rsc->xml, XML_ATTR_TYPE);
@@ -500,9 +499,6 @@ native_print(resource_t * rsc, const char *pre_text, long options, void *print_d
         return;
     }
 
-    if (rsc->running_on != NULL) {
-        node = rsc->running_on->data;
-    }
     if ((options & pe_print_rsconly) || g_list_length(rsc->running_on) > 1) {
         node = NULL;
     }
@@ -531,7 +527,7 @@ native_print(resource_t * rsc, const char *pre_text, long options, void *print_d
     if(pre_text) {
         offset += snprintf(buffer + offset, LINE_MAX - offset, "%s", pre_text);
     }
-    offset += snprintf(buffer + offset, LINE_MAX - offset, "%s", rsc_printable_id(rsc));
+    offset += snprintf(buffer + offset, LINE_MAX - offset, "%s", name);
     offset += snprintf(buffer + offset, LINE_MAX - offset, "\t(%s", class);
     if (safe_str_eq(class, PCMK_RESOURCE_CLASS_OCF)) {
         const char *prov = crm_element_value(rsc->xml, XML_AGENT_ATTR_PROVIDER);
@@ -717,6 +713,23 @@ native_print(resource_t * rsc, const char *pre_text, long options, void *print_d
 }
 
 void
+native_print(resource_t * rsc, const char *pre_text, long options, void *print_data)
+{
+    node_t *node = NULL;
+
+    CRM_ASSERT(rsc->variant == pe_native);
+    if (options & pe_print_xml) {
+        native_print_xml(rsc, pre_text, options, print_data);
+        return;
+    }
+
+    if (rsc->running_on != NULL) {
+        node = rsc->running_on->data;
+    }
+    common_print(rsc, pre_text, rsc_printable_id(rsc), node, options, print_data);
+}
+
+void
 native_free(resource_t * rsc)
 {
     pe_rsc_trace(rsc, "Freeing resource action list (not the data)");
diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c
index f3a7ebc..3bc9839 100644
--- a/lib/pengine/unpack.c
+++ b/lib/pengine/unpack.c
@@ -296,7 +296,7 @@ destroy_digest_cache(gpointer ptr)
     free(data);
 }
 
-static node_t *
+node_t *
 create_node(const char *id, const char *uname, const char *type, const char *score, pe_working_set_t * data_set)
 {
     node_t *new_node = NULL;
@@ -359,8 +359,37 @@ create_node(const char *id, const char *uname, const char *type, const char *sco
     return new_node;
 }
 
+bool
+remote_id_conflict(const char *remote_name, pe_working_set_t *data) 
+{
+    bool match = FALSE;
+#if 1
+    pe_find_resource(data->resources, remote_name);
+#else
+    if (data->name_check == NULL) {
+        data->name_check = g_hash_table_new(crm_str_hash, g_str_equal);
+        for (xml_rsc = __xml_first_child(parent); xml_rsc != NULL; xml_rsc = __xml_next_element(xml_rsc)) {
+            const char *id = ID(xml_rsc);
+
+            /* avoiding heap allocation here because we know the duration of this hashtable allows us to */
+            g_hash_table_insert(data->name_check, (char *) id, (char *) id);
+        }
+    }
+    if (g_hash_table_lookup(data->name_check, remote_name)) {
+        match = TRUE;
+    }
+#endif
+    if (match) {
+        crm_err("Invalid remote-node name, a resource called '%s' already exists.", remote_name);
+        return NULL;
+    }
+
+    return match;
+}
+
+
 static const char *
-expand_remote_rsc_meta(xmlNode *xml_obj, xmlNode *parent, GHashTable **rsc_name_check)
+expand_remote_rsc_meta(xmlNode *xml_obj, xmlNode *parent, pe_working_set_t *data)
 {
     xmlNode *xml_rsc = NULL;
     xmlNode *xml_tmp = NULL;
@@ -402,20 +431,7 @@ expand_remote_rsc_meta(xmlNode *xml_obj, xmlNode *parent, GHashTable **rsc_name_
         return NULL;
     }
 
-    if (*rsc_name_check == NULL) {
-        *rsc_name_check = g_hash_table_new(crm_str_hash, g_str_equal);
-        for (xml_rsc = __xml_first_child(parent); xml_rsc != NULL; xml_rsc = __xml_next_element(xml_rsc)) {
-            const char *id = ID(xml_rsc);
-
-            /* avoiding heap allocation here because we know the duration of this hashtable allows us to */
-            g_hash_table_insert(*rsc_name_check, (char *) id, (char *) id);
-        }
-    }
-
-    if (g_hash_table_lookup(*rsc_name_check, remote_name)) {
-
-        crm_err("Naming conflict with remote-node=%s.  remote-nodes can not have the same name as a resource.",
-                remote_name);
+    if (remote_id_conflict(remote_name, data)) {
         return NULL;
     }
 
@@ -661,7 +677,7 @@ unpack_remote_nodes(xmlNode * xml_resources, pe_working_set_t * data_set)
         if (crm_str_eq((const char *)xml_obj->name, XML_CIB_TAG_RESOURCE, TRUE)) {
             /* expands a metadata defined remote resource into the xml config
              * as an actual rsc primitive to be unpacked later. */
-            new_node_id = expand_remote_rsc_meta(xml_obj, xml_resources, &rsc_name_check);
+            new_node_id = expand_remote_rsc_meta(xml_obj, xml_resources, data_set);
 
             if (new_node_id && pe_find_node(data_set->nodes, new_node_id) == NULL) {
                 crm_trace("Found guest remote node %s in container resource %s", new_node_id, ID(xml_obj));
@@ -674,7 +690,7 @@ unpack_remote_nodes(xmlNode * xml_resources, pe_working_set_t * data_set)
             /* search through a group to see if any of the primitive contain a remote node. */
             for (xml_obj2 = __xml_first_child(xml_obj); xml_obj2 != NULL; xml_obj2 = __xml_next_element(xml_obj2)) {
 
-                new_node_id = expand_remote_rsc_meta(xml_obj2, xml_resources, &rsc_name_check);
+                new_node_id = expand_remote_rsc_meta(xml_obj2, xml_resources, data_set);
 
                 if (new_node_id && pe_find_node(data_set->nodes, new_node_id) == NULL) {
                     crm_trace("Found guest remote node %s in container resource %s which is in group %s", new_node_id, ID(xml_obj2), ID(xml_obj));
@@ -1803,7 +1819,10 @@ unpack_find_resource(pe_working_set_t * data_set, node_t * node, const char *rsc
         parent = uber_parent(rsc);
     }
 
-    if (parent && parent->variant > pe_group) {
+    if(parent && parent->parent) {
+        rsc = find_container_child(rsc_id, rsc, node);
+
+    } else if (parent && parent->variant >= pe_clone) {
         if (is_not_set(parent->flags, pe_rsc_unique)) {
             char *base = clone_strip(rsc_id);
 
diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c
index 2b53999..16d12d8 100644
--- a/lib/pengine/utils.c
+++ b/lib/pengine/utils.c
@@ -509,7 +509,8 @@ custom_action(resource_t * rsc, char *key, const char *task,
             pe_set_action_bit(action, pe_action_optional);
 /*   			action->runnable = FALSE; */
 
-        } else if (action->node->details->online == FALSE) {
+        } else if (action->node->details->online == FALSE
+                   && (!is_container_remote_node(action->node) || action->node->details->remote_requires_reset)) {
             pe_clear_action_bit(action, pe_action_runnable);
             do_crm_log(warn_level, "Action %s on %s is unrunnable (offline)",
                        action->uuid, action->node->details->uname);
diff --git a/lib/pengine/variant.h b/lib/pengine/variant.h
index d127917..b02aeb0 100644
--- a/lib/pengine/variant.h
+++ b/lib/pengine/variant.h
@@ -55,6 +55,58 @@ typedef struct clone_variant_data_s {
 	CRM_ASSERT(rsc->variant == pe_clone || rsc->variant == pe_master); \
 	data = (clone_variant_data_t *)rsc->variant_opaque;
 
+#  elif VARIANT_CONTAINER
+
+typedef struct
+{
+        int offset;
+        node_t *node;
+        char *ipaddr;
+        resource_t *ip;
+        resource_t *child;
+        resource_t *docker;
+        resource_t *remote;
+
+} container_grouping_t;
+
+typedef struct
+{
+        char *source;
+        char *target;
+        char *options;
+        int flags;
+
+} container_mount_t;
+
+typedef struct container_variant_data_s {
+        int masters;
+        int replicas;
+        int replicas_per_host;
+        char *prefix;
+        char *image;
+        const char *ip_last;
+        char *host_network;
+        char *host_netmask;
+        char *docker_network;
+        char *ip_range_start;
+        char *docker_host_options;
+        char *docker_run_options;
+
+        resource_t *child;
+
+        GListPtr tuples;     /* container_grouping_t *       */
+        GListPtr ports;      /*        */
+        GListPtr mounts;     /*        */
+
+
+} container_variant_data_t;
+
+#    define get_container_variant_data(data, rsc)                       \
+	CRM_ASSERT(rsc != NULL);					\
+	CRM_ASSERT(rsc->variant == pe_container);                       \
+	CRM_ASSERT(rsc->variant_opaque != NULL);			\
+	data = (container_variant_data_t *)rsc->variant_opaque;		\
+
 #  elif VARIANT_GROUP
 
 typedef struct group_variant_data_s {
diff --git a/lrmd/remote_ctl.c b/lrmd/remote_ctl.c
index 41cab66..f3fc24f 100644
--- a/lrmd/remote_ctl.c
+++ b/lrmd/remote_ctl.c
@@ -210,6 +210,7 @@ client_start(gpointer user_data)
             client_exit(PCMK_OCF_UNKNOWN_ERROR);
         }
         wait_poke = 1;
+
     } else {
         lrmd_rsc_info_t *rsc_info = NULL;
 
@@ -244,156 +245,24 @@ client_start(gpointer user_data)
     return 0;
 }
 
-static int
-remote_proxy_dispatch_internal(const char *buffer, ssize_t length, gpointer userdata)
-{
-    /* Async responses from cib and friends back to clients via pacemaker_remoted */
-    xmlNode *xml = NULL;
-    remote_proxy_t *proxy = userdata;
-    uint32_t flags;
-
-    xml = string2xml(buffer);
-    if (xml == NULL) {
-        crm_warn("Received a NULL msg from IPC service.");
-        return 1;
-    }
-
-    flags = crm_ipc_buffer_flags(proxy->ipc);
-    if (flags & crm_ipc_proxied_relay_response) {
-        crm_trace("Passing response back to %.8s on %s: %.200s - request id: %d", proxy->session_id, proxy->node_name, buffer, proxy->last_request_id);
-        remote_proxy_relay_response(lrmd_conn, proxy->session_id, xml, proxy->last_request_id);
-        proxy->last_request_id = 0;
-
-    } else {
-        crm_trace("Passing event back to %.8s on %s: %.200s", proxy->session_id, proxy->node_name, buffer);
-        remote_proxy_relay_event(lrmd_conn, proxy->session_id, xml);
-    }
-    free_xml(xml);
-    return 1;
-}
-
 static void
-remote_proxy_disconnected(void *userdata)
-{
-    remote_proxy_t *proxy = userdata;
-
-    crm_trace("destroying %p", userdata);
-
-    proxy->source = NULL;
-    proxy->ipc = NULL;
-
-    remote_proxy_notify_destroy(lrmd_conn, proxy->session_id);
-    g_hash_table_remove(proxy_table, proxy->session_id);
-}
-
-static remote_proxy_t *
-remote_proxy_new(const char *node_name, const char *session_id, const char *channel)
-{
-    static struct ipc_client_callbacks proxy_callbacks = {
-        .dispatch = remote_proxy_dispatch_internal,
-        .destroy = remote_proxy_disconnected
-    };
-    remote_proxy_t *proxy = calloc(1, sizeof(remote_proxy_t));
-
-    proxy->node_name = strdup(node_name);
-    proxy->session_id = strdup(session_id);
-
-    if (safe_str_eq(channel, CRM_SYSTEM_CRMD)) {
-        proxy->is_local = TRUE;
-    } else {
-        proxy->source = mainloop_add_ipc_client(channel, G_PRIORITY_LOW, 0, proxy, &proxy_callbacks);
-        proxy->ipc = mainloop_get_ipc_client(proxy->source);
-
-        if (proxy->source == NULL) {
-            remote_proxy_free(proxy);
-            return NULL;
-        }
-    }
-
-    crm_trace("created proxy session ID %s", proxy->session_id);
-    g_hash_table_insert(proxy_table, proxy->session_id, proxy);
-
-    return proxy;
-}
-
-static void
-remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg)
+ctl_remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg)
 {
     const char *op = crm_element_value(msg, F_LRMD_IPC_OP);
     const char *session = crm_element_value(msg, F_LRMD_IPC_SESSION);
-    int msg_id = 0;
 
-    /* sessions are raw ipc connections to IPC,
-     * all we do is proxy requests/responses exactly
-     * like they are given to us at the ipc level. */
-
-    CRM_CHECK(op != NULL, return);
-    CRM_CHECK(session != NULL, return);
-
-    crm_element_value_int(msg, F_LRMD_IPC_MSG_ID, &msg_id);
-
-    /* This is msg from remote ipc client going to real ipc server */
     if (safe_str_eq(op, LRMD_IPC_OP_NEW)) {
         const char *channel = crm_element_value(msg, F_LRMD_IPC_IPC_SERVER);
 
-        CRM_CHECK(channel != NULL, return);
+        static struct ipc_client_callbacks proxy_callbacks = {
+            .dispatch = remote_proxy_dispatch,
+            .destroy = remote_proxy_disconnected
+        };
+
+        remote_proxy_new(lrmd, proxy_callbacks, options.node_name, session, channel);
 
-        if (remote_proxy_new(options.node_name, session, channel) == NULL) {
-            remote_proxy_notify_destroy(lrmd, session);
-        }
-        crm_info("new remote proxy client established to %s, session id %s", channel, session);
-    } else if (safe_str_eq(op, LRMD_IPC_OP_DESTROY)) {
-        remote_proxy_end_session(session);
-
-    } else if (safe_str_eq(op, LRMD_IPC_OP_REQUEST)) {
-        int flags = 0;
-        xmlNode *request = get_message_xml(msg, F_LRMD_IPC_MSG);
-        const char *name = crm_element_value(msg, F_LRMD_IPC_CLIENT);
-        remote_proxy_t *proxy = g_hash_table_lookup(proxy_table, session);
-
-        CRM_CHECK(request != NULL, return);
-
-        if (proxy == NULL) {
-            /* proxy connection no longer exists */
-            remote_proxy_notify_destroy(lrmd, session);
-            return;
-        } else if ((proxy->is_local == FALSE) && (crm_ipc_connected(proxy->ipc) == FALSE)) {
-            remote_proxy_end_session(session);
-            return;
-        }
-        proxy->last_request_id = 0;
-        crm_element_value_int(msg, F_LRMD_IPC_MSG_FLAGS, &flags);
-        crm_xml_add(request, XML_ACL_TAG_ROLE, "pacemaker-remote");
-
-#if ENABLE_ACL
-        CRM_ASSERT(options.node_name);
-        crm_acl_get_set_user(request, F_LRMD_IPC_USER, options.node_name);
-#endif
-
-        if (is_set(flags, crm_ipc_proxied)) {
-            int rc = crm_ipc_send(proxy->ipc, request, flags, 5000, NULL);
-
-            if(rc < 0) {
-                xmlNode *op_reply = create_xml_node(NULL, "nack");
-
-                crm_err("Could not relay %s request %d from %s to %s for %s: %s (%d)",
-                         op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name, pcmk_strerror(rc), rc);
-
-                /* Send a n'ack so the caller doesn't block */
-                crm_xml_add(op_reply, "function", __FUNCTION__);
-                crm_xml_add_int(op_reply, "line", __LINE__);
-                crm_xml_add_int(op_reply, "rc", rc);
-                remote_proxy_relay_response(lrmd, session, op_reply, msg_id);
-                free_xml(op_reply);
-
-            } else {
-                crm_trace("Relayed %s request %d from %s to %s for %s",
-                          op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name);
-                proxy->last_request_id = msg_id;
-            }
-        }
     } else {
-        crm_err("Unknown proxy operation: %s", op);
+        remote_proxy_cb(lrmd, options.node_name, msg);
     }
 }
 
@@ -510,7 +379,7 @@ main(int argc, char **argv)
         proxy_table =
             g_hash_table_new_full(crm_strcase_hash, crm_strcase_equal, NULL, remote_proxy_free);
         lrmd_conn = lrmd_remote_api_new(NULL, options.tls_host ? options.tls_host : "localhost", options.port);
-        lrmd_internal_set_proxy_callback(lrmd_conn, NULL,  remote_proxy_cb);
+        lrmd_internal_set_proxy_callback(lrmd_conn, NULL,  ctl_remote_proxy_cb);
     } else {
         lrmd_conn = lrmd_api_new();
     }
diff --git a/pengine/Makefile.am b/pengine/Makefile.am
index 5131dcb..c897db6 100644
--- a/pengine/Makefile.am
+++ b/pengine/Makefile.am
@@ -69,7 +69,7 @@ libpengine_la_LIBADD	= $(top_builddir)/lib/pengine/libpe_status.la \
 			$(top_builddir)/lib/cib/libcib.la
 # -L$(top_builddir)/lib/pils -lpils -export-dynamic -module -avoid-version
 libpengine_la_SOURCES	= pengine.c allocate.c notif.c utils.c constraints.c
-libpengine_la_SOURCES	+= native.c group.c clone.c master.c graph.c utilization.c
+libpengine_la_SOURCES	+= native.c group.c clone.c master.c graph.c utilization.c container.c
 
 pengine_CFLAGS	= $(CFLAGS_HARDENED_EXE)
 pengine_LDFLAGS	= $(LDFLAGS_HARDENED_EXE)
diff --git a/pengine/allocate.c b/pengine/allocate.c
index 74b57fb..441b596 100644
--- a/pengine/allocate.c
+++ b/pengine/allocate.c
@@ -69,6 +69,20 @@ resource_alloc_functions_t resource_class_alloc_functions[] = {
      group_append_meta,
      },
     {
+     container_merge_weights,
+     container_color,
+     container_create_actions,
+     container_create_probe,
+     container_internal_constraints,
+     container_rsc_colocation_lh,
+     container_rsc_colocation_rh,
+     container_rsc_location,
+     container_action_flags,
+     container_update_actions,
+     container_expand,
+     container_append_meta,
+     },
+    {
      clone_merge_weights,
      clone_color,
      clone_create_actions,
@@ -99,7 +113,7 @@ resource_alloc_functions_t resource_class_alloc_functions[] = {
 };
 
 gboolean
-update_action_flags(action_t * action, enum pe_action_flags flags, const char *source)
+update_action_flags(action_t * action, enum pe_action_flags flags, const char *source, int line)
 {
     static unsigned long calls = 0;
     gboolean changed = FALSE;
@@ -107,9 +121,9 @@ update_action_flags(action_t * action, enum pe_action_flags flags, const char *s
     enum pe_action_flags last = action->flags;
 
     if (clear) {
-        action->flags = crm_clear_bit(source, action->uuid, action->flags, flags);
+        action->flags = crm_clear_bit(source, line, action->uuid, action->flags, flags);
     } else {
-        action->flags = crm_set_bit(source, action->uuid, action->flags, flags);
+        action->flags = crm_set_bit(source, line, action->uuid, action->flags, flags);
     }
 
     if (last != action->flags) {
@@ -704,7 +718,7 @@ common_apply_stickiness(resource_t * rsc, node_t * node, pe_working_set_t * data
     }
 }
 
-static void
+void
 complex_set_cmds(resource_t * rsc)
 {
     GListPtr gIter = rsc->children;
@@ -1380,7 +1394,7 @@ fence_guest(pe_node_t *node, pe_action_t *done, pe_working_set_t *data_set)
      */
     stonith_op = pe_fence_op(node, fence_action, FALSE, data_set);
     update_action_flags(stonith_op, pe_action_pseudo | pe_action_runnable,
-                        __FUNCTION__);
+                        __FUNCTION__, __LINE__);
 
     /* We want to imply stops/demotes after the guest is stopped, not wait until
      * it is restarted, so we always order pseudo-fencing after stop, not start
@@ -1646,7 +1660,7 @@ rsc_order_then(action_t * lh_action, resource_t * rsc, order_constraint_t * orde
             order_actions(lh_action, rh_action_iter, type);
 
         } else if (type & pe_order_implies_then) {
-            update_action_flags(rh_action_iter, pe_action_runnable | pe_action_clear, __FUNCTION__);
+            update_action_flags(rh_action_iter, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__);
             crm_warn("Unrunnable %s 0x%.6x", rh_action_iter->uuid, type);
         } else {
             crm_warn("neither %s 0x%.6x", rh_action_iter->uuid, type);
diff --git a/pengine/allocate.h b/pengine/allocate.h
index f17451c..3d7b7ce 100644
--- a/pengine/allocate.h
+++ b/pengine/allocate.h
@@ -52,6 +52,9 @@ extern GHashTable *rsc_merge_weights(resource_t * rsc, const char *rhs, GHashTab
 extern GHashTable *clone_merge_weights(resource_t * rsc, const char *rhs, GHashTable * nodes,
                                        const char *attr, float factor, enum pe_weights flags);
 
+extern GHashTable *container_merge_weights(resource_t * rsc, const char *rhs, GHashTable * nodes,
+                                       const char *attr, float factor, enum pe_weights flags);
+
 extern GHashTable *master_merge_weights(resource_t * rsc, const char *rhs, GHashTable * nodes,
                                         const char *attr, float factor, enum pe_weights flags);
 
@@ -92,6 +95,21 @@ extern void group_rsc_location(resource_t * rsc, rsc_to_node_t * constraint);
 extern void group_expand(resource_t * rsc, pe_working_set_t * data_set);
 extern void group_append_meta(resource_t * rsc, xmlNode * xml);
 
+extern int container_num_allowed_nodes(resource_t * rsc);
+extern node_t *container_color(resource_t * rsc, node_t * preferred, pe_working_set_t * data_set);
+extern void container_create_actions(resource_t * rsc, pe_working_set_t * data_set);
+extern void container_internal_constraints(resource_t * rsc, pe_working_set_t * data_set);
+extern void container_rsc_colocation_lh(resource_t * lh_rsc, resource_t * rh_rsc,
+                                    rsc_colocation_t * constraint);
+extern void container_rsc_colocation_rh(resource_t * lh_rsc, resource_t * rh_rsc,
+                                    rsc_colocation_t * constraint);
+extern void container_rsc_location(resource_t * rsc, rsc_to_node_t * constraint);
+extern enum pe_action_flags container_action_flags(action_t * action, node_t * node);
+extern void container_expand(resource_t * rsc, pe_working_set_t * data_set);
+extern gboolean container_create_probe(resource_t * rsc, node_t * node, action_t * complete,
+                                   gboolean force, pe_working_set_t * data_set);
+extern void container_append_meta(resource_t * rsc, xmlNode * xml);
+
 extern int clone_num_allowed_nodes(resource_t * rsc);
 extern node_t *clone_color(resource_t * rsc, node_t * preferred, pe_working_set_t * data_set);
 extern void clone_create_actions(resource_t * rsc, pe_working_set_t * data_set);
@@ -135,6 +153,7 @@ extern gboolean unpack_location(xmlNode * xml_obj, pe_working_set_t * data_set);
 extern gboolean unpack_rsc_ticket(xmlNode * xml_obj, pe_working_set_t * data_set);
 
 extern void LogActions(resource_t * rsc, pe_working_set_t * data_set, gboolean terminal);
+void container_LogActions(resource_t * rsc, pe_working_set_t * data_set, gboolean terminal);
 
 extern void cleanup_alloc_calculations(pe_working_set_t * data_set);
 
@@ -151,8 +170,14 @@ extern enum pe_graph_flags group_update_actions(action_t * first, action_t * the
 extern enum pe_graph_flags clone_update_actions(action_t * first, action_t * then, node_t * node,
                                                 enum pe_action_flags flags,
                                                 enum pe_action_flags filter, enum pe_ordering type);
+extern enum pe_graph_flags container_update_actions(action_t * first, action_t * then, node_t * node,
+                                                    enum pe_action_flags flags,
+                                                    enum pe_action_flags filter, enum pe_ordering type);
 
-gboolean update_action_flags(action_t * action, enum pe_action_flags flags, const char *source);
+gboolean update_action_flags(action_t * action, enum pe_action_flags flags, const char *source, int line);
 gboolean update_action(action_t * action);
+void complex_set_cmds(resource_t * rsc);
+
+
 
 #endif
diff --git a/pengine/clone.c b/pengine/clone.c
index 35575c0..9e2835d 100644
--- a/pengine/clone.c
+++ b/pengine/clone.c
@@ -47,8 +47,10 @@ parent_node_instance(const resource_t * rsc, node_t * node)
 {
     node_t *ret = NULL;
 
-    if (node != NULL) {
+    if (node != NULL && rsc->parent) {
         ret = pe_hash_table_lookup(rsc->parent->allowed_nodes, node->details->id);
+    } else if(node != NULL) {
+        ret = pe_hash_table_lookup(rsc->allowed_nodes, node->details->id);
     }
     return ret;
 }
@@ -231,44 +233,48 @@ sort_clone_instance(gconstpointer a, gconstpointer b, gpointer data_set)
         n = node_copy(resource2->running_on->data);
         g_hash_table_insert(hash2, (gpointer) n->details->id, n);
 
-        for (gIter = resource1->parent->rsc_cons; gIter; gIter = gIter->next) {
-            rsc_colocation_t *constraint = (rsc_colocation_t *) gIter->data;
+        if(resource1->parent) {
+            for (gIter = resource1->parent->rsc_cons; gIter; gIter = gIter->next) {
+                rsc_colocation_t *constraint = (rsc_colocation_t *) gIter->data;
 
-            crm_trace("Applying %s to %s", constraint->id, resource1->id);
+                crm_trace("Applying %s to %s", constraint->id, resource1->id);
 
-            hash1 = native_merge_weights(constraint->rsc_rh, resource1->id, hash1,
-                                         constraint->node_attribute,
-                                         (float)constraint->score / INFINITY, 0);
-        }
+                hash1 = native_merge_weights(constraint->rsc_rh, resource1->id, hash1,
+                                             constraint->node_attribute,
+                                             (float)constraint->score / INFINITY, 0);
+            }
 
-        for (gIter = resource1->parent->rsc_cons_lhs; gIter; gIter = gIter->next) {
-            rsc_colocation_t *constraint = (rsc_colocation_t *) gIter->data;
+            for (gIter = resource1->parent->rsc_cons_lhs; gIter; gIter = gIter->next) {
+                rsc_colocation_t *constraint = (rsc_colocation_t *) gIter->data;
 
-            crm_trace("Applying %s to %s", constraint->id, resource1->id);
+                crm_trace("Applying %s to %s", constraint->id, resource1->id);
 
-            hash1 = native_merge_weights(constraint->rsc_lh, resource1->id, hash1,
-                                         constraint->node_attribute,
-                                         (float)constraint->score / INFINITY, pe_weights_positive);
+                hash1 = native_merge_weights(constraint->rsc_lh, resource1->id, hash1,
+                                             constraint->node_attribute,
+                                             (float)constraint->score / INFINITY, pe_weights_positive);
+            }
         }
 
-        for (gIter = resource2->parent->rsc_cons; gIter; gIter = gIter->next) {
-            rsc_colocation_t *constraint = (rsc_colocation_t *) gIter->data;
+        if(resource2->parent) {
+            for (gIter = resource2->parent->rsc_cons; gIter; gIter = gIter->next) {
+                rsc_colocation_t *constraint = (rsc_colocation_t *) gIter->data;
 
-            crm_trace("Applying %s to %s", constraint->id, resource2->id);
+                crm_trace("Applying %s to %s", constraint->id, resource2->id);
 
-            hash2 = native_merge_weights(constraint->rsc_rh, resource2->id, hash2,
-                                         constraint->node_attribute,
-                                         (float)constraint->score / INFINITY, 0);
-        }
+                hash2 = native_merge_weights(constraint->rsc_rh, resource2->id, hash2,
+                                             constraint->node_attribute,
+                                             (float)constraint->score / INFINITY, 0);
+            }
 
-        for (gIter = resource2->parent->rsc_cons_lhs; gIter; gIter = gIter->next) {
-            rsc_colocation_t *constraint = (rsc_colocation_t *) gIter->data;
+            for (gIter = resource2->parent->rsc_cons_lhs; gIter; gIter = gIter->next) {
+                rsc_colocation_t *constraint = (rsc_colocation_t *) gIter->data;
 
-            crm_trace("Applying %s to %s", constraint->id, resource2->id);
+                crm_trace("Applying %s to %s", constraint->id, resource2->id);
 
-            hash2 = native_merge_weights(constraint->rsc_lh, resource2->id, hash2,
-                                         constraint->node_attribute,
-                                         (float)constraint->score / INFINITY, pe_weights_positive);
+                hash2 = native_merge_weights(constraint->rsc_lh, resource2->id, hash2,
+                                             constraint->node_attribute,
+                                             (float)constraint->score / INFINITY, pe_weights_positive);
+            }
         }
 
         /* Current location score */
@@ -280,18 +286,18 @@ sort_clone_instance(gconstpointer a, gconstpointer b, gpointer data_set)
 
         if (node1->weight < node2->weight) {
             if (node1->weight < 0) {
-                crm_trace("%s > %s: current score", resource1->id, resource2->id);
+                crm_trace("%s > %s: current score: %d %d", resource1->id, resource2->id, node1->weight, node2->weight);
                 rc = -1;
                 goto out;
 
             } else {
-                crm_trace("%s < %s: current score", resource1->id, resource2->id);
+                crm_trace("%s < %s: current score: %d %d", resource1->id, resource2->id, node1->weight, node2->weight);
                 rc = 1;
                 goto out;
             }
 
         } else if (node1->weight > node2->weight) {
-            crm_trace("%s > %s: current score", resource1->id, resource2->id);
+            crm_trace("%s > %s: current score: %d %d", resource1->id, resource2->id, node1->weight, node2->weight);
             rc = -1;
             goto out;
         }
@@ -355,10 +361,18 @@ sort_clone_instance(gconstpointer a, gconstpointer b, gpointer data_set)
 }
 
 static node_t *
-can_run_instance(resource_t * rsc, node_t * node)
+can_run_instance(resource_t * rsc, node_t * node, int limit)
 {
     node_t *local_node = NULL;
-    clone_variant_data_t *clone_data = NULL;
+
+    if (node == NULL && rsc->allowed_nodes) {
+        GHashTableIter iter;
+        g_hash_table_iter_init(&iter, rsc->allowed_nodes);
+        while (g_hash_table_iter_next(&iter, NULL, (void **)&local_node)) {
+            can_run_instance(rsc, local_node, limit);
+        }
+        return NULL;
+    }
 
     if (can_run_resources(node) == FALSE) {
         goto bail;
@@ -368,7 +382,6 @@ can_run_instance(resource_t * rsc, node_t * node)
     }
 
     local_node = parent_node_instance(rsc, node);
-    get_clone_variant_data(clone_data, rsc->parent);
 
     if (local_node == NULL) {
         crm_warn("%s cannot run on %s: node not allowed", rsc->id, node->details->uname);
@@ -378,13 +391,14 @@ can_run_instance(resource_t * rsc, node_t * node)
         common_update_score(rsc, node->details->id, local_node->weight);
         pe_rsc_trace(rsc, "%s cannot run on %s: Parent node weight doesn't allow it.",
                      rsc->id, node->details->uname);
-    } else if (local_node->count < clone_data->clone_node_max) {
+
+    } else if (local_node->count < limit) {
         pe_rsc_trace(rsc, "%s can run on %s: %d", rsc->id, node->details->uname, local_node->count);
         return local_node;
 
     } else {
         pe_rsc_trace(rsc, "%s cannot run on %s: node full (%d >= %d)",
-                     rsc->id, node->details->uname, local_node->count, clone_data->clone_node_max);
+                     rsc->id, node->details->uname, local_node->count, limit);
     }
 
   bail:
@@ -395,14 +409,13 @@ can_run_instance(resource_t * rsc, node_t * node)
 }
 
 static node_t *
-color_instance(resource_t * rsc, node_t * prefer, gboolean all_coloc, pe_working_set_t * data_set)
+color_instance(resource_t * rsc, node_t * prefer, gboolean all_coloc, int limit, pe_working_set_t * data_set)
 {
     node_t *chosen = NULL;
-    node_t *local_node = NULL;
     GHashTable *backup = NULL;
 
     CRM_ASSERT(rsc);
-    pe_rsc_trace(rsc, "Processing %s %d", rsc->id, all_coloc);
+    pe_rsc_trace(rsc, "Processing %s %d %s", rsc->id, all_coloc, prefer?prefer->details->uname:"none");
 
     if (is_not_set(rsc->flags, pe_rsc_provisional)) {
         return rsc->fns->location(rsc, NULL, FALSE);
@@ -427,21 +440,12 @@ color_instance(resource_t * rsc, node_t * prefer, gboolean all_coloc, pe_working
         }
     }
 
-    if (rsc->allowed_nodes) {
-        GHashTableIter iter;
-        node_t *try_node = NULL;
-
-        g_hash_table_iter_init(&iter, rsc->allowed_nodes);
-        while (g_hash_table_iter_next(&iter, NULL, (void **)&try_node)) {
-            can_run_instance(rsc, try_node);
-        }
-    }
+    can_run_instance(rsc, NULL, limit);
 
     backup = node_hash_dup(rsc->allowed_nodes);
     chosen = rsc->cmds->allocate(rsc, prefer, data_set);
     if (chosen) {
-        local_node = pe_hash_table_lookup(rsc->parent->allowed_nodes, chosen->details->id);
-
+        node_t *local_node = parent_node_instance(rsc, chosen);
         if (prefer && chosen && chosen->details != prefer->details) {
             crm_notice("Pre-allocation failed: got %s instead of %s",
                        chosen->details->uname, prefer->details->uname);
@@ -493,127 +497,69 @@ append_parent_colocation(resource_t * rsc, resource_t * child, gboolean all)
     }
 }
 
-node_t *
-clone_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set)
-{
-    GHashTableIter iter;
-    GListPtr nIter = NULL;
-    GListPtr gIter = NULL;
-    GListPtr nodes = NULL;
-    node_t *node = NULL;
 
-    int allocated = 0;
+void
+distribute_children(resource_t *rsc, GListPtr children, GListPtr nodes,
+                    int max, int per_host_max, pe_working_set_t * data_set);
+
+void
+distribute_children(resource_t *rsc, GListPtr children, GListPtr nodes,
+                    int max, int per_host_max, pe_working_set_t * data_set) 
+{
     int loop_max = 0;
-    int clone_max = 0;
+    int allocated = 0;
     int available_nodes = 0;
-    clone_variant_data_t *clone_data = NULL;
-
-    get_clone_variant_data(clone_data, rsc);
-
-    if (is_not_set(rsc->flags, pe_rsc_provisional)) {
-        return NULL;
-
-    } else if (is_set(rsc->flags, pe_rsc_allocating)) {
-        pe_rsc_debug(rsc, "Dependency loop detected involving %s", rsc->id);
-        return NULL;
-    }
-
-    set_bit(rsc->flags, pe_rsc_allocating);
-    pe_rsc_trace(rsc, "Processing %s", rsc->id);
-
-    /* this information is used by sort_clone_instance() when deciding in which 
-     * order to allocate clone instances
-     */
-    gIter = rsc->rsc_cons;
-    for (; gIter != NULL; gIter = gIter->next) {
-        rsc_colocation_t *constraint = (rsc_colocation_t *) gIter->data;
-
-        pe_rsc_trace(rsc, "%s: Coloring %s first", rsc->id, constraint->rsc_rh->id);
-        constraint->rsc_rh->cmds->allocate(constraint->rsc_rh, prefer, data_set);
-    }
-
-    gIter = rsc->rsc_cons_lhs;
-    for (; gIter != NULL; gIter = gIter->next) {
-        rsc_colocation_t *constraint = (rsc_colocation_t *) gIter->data;
-
-        rsc->allowed_nodes =
-            constraint->rsc_lh->cmds->merge_weights(constraint->rsc_lh, rsc->id, rsc->allowed_nodes,
-                                                    constraint->node_attribute,
-                                                    (float)constraint->score / INFINITY,
-                                                    (pe_weights_rollback | pe_weights_positive));
-    }
-
-    dump_node_scores(show_scores ? 0 : scores_log_level, rsc, __FUNCTION__, rsc->allowed_nodes);
 
     /* count now tracks the number of clones currently allocated */
-    g_hash_table_iter_init(&iter, rsc->allowed_nodes);
-    while (g_hash_table_iter_next(&iter, NULL, (void **)&node)) {
+    for(GListPtr nIter = nodes; nIter != NULL; nIter = nIter->next) {
+        pe_node_t *node = nIter->data;
+
         node->count = 0;
         if (can_run_resources(node)) {
             available_nodes++;
         }
     }
 
-    clone_max = clone_data->clone_max;
     if(available_nodes) {
-        loop_max = clone_data->clone_max / available_nodes;
+        loop_max = max / available_nodes;
     }
     if (loop_max < 1) {
         loop_max = 1;
     }
 
-    rsc->children = g_list_sort_with_data(rsc->children, sort_clone_instance, data_set);
+    pe_rsc_debug(rsc, "Allocating %d %s instances to a possible %d nodes (%d per host, %d optimal)",
+                 max, rsc->id, available_nodes, per_host_max, loop_max);
 
-    /* Pre-allocate as many instances as we can to their current location
-     * First pre-sort the list of nodes by their placement score
-     */
-    nodes = g_hash_table_get_values(rsc->allowed_nodes);
-    nodes = g_list_sort_with_data(nodes, sort_node_weight, NULL);
+    /* Pre-allocate as many instances as we can to their current location */
+    for (GListPtr gIter = children; gIter != NULL && allocated < max; gIter = gIter->next) {
+        resource_t *child = (resource_t *) gIter->data;
 
-    for(nIter = nodes; nIter; nIter = nIter->next) {
-        int lpc;
+        if (child->running_on && is_set(child->flags, pe_rsc_provisional)
+            && is_not_set(child->flags, pe_rsc_failed)) {
+            node_t *child_node = child->running_on->data;
+            node_t *local_node = parent_node_instance(child, child->running_on->data);
 
-        node = nIter->data;
+            pe_rsc_trace(rsc, "Pre-allocating %s (%d remaining)", child->id, max - allocated);
+            pe_rsc_trace(rsc, "Foo %s to %s %d %d", child->id,
+                         child_node->details->uname, max, available_nodes);
 
-        if(clone_max <= 0) {
-            break;
-        }
+            if (can_run_resources(child_node) == FALSE || child_node->weight < 0) {
+                pe_rsc_trace(rsc, "Not Pre-allocating %s", child_node->details->uname);
 
-        if (can_run_resources(node) == FALSE || node->weight < 0) {
-            pe_rsc_trace(rsc, "Not Pre-allocatiing %s", node->details->uname);
-            continue;
-        }
+            } else if(local_node && local_node->count >= loop_max) {
+                pe_rsc_trace(rsc, "Deferring allocation of %s", child_node->details->uname);
 
-        clone_max--;
-        pe_rsc_trace(rsc, "Pre-allocating %s (%d remaining)", node->details->uname, clone_max);
-        for (lpc = 0;
-             allocated < clone_data->clone_max
-             && node->count < clone_data->clone_node_max
-             && lpc < clone_data->clone_node_max && lpc < loop_max; lpc++) {
-            for (gIter = rsc->children; gIter != NULL; gIter = gIter->next) {
-                resource_t *child = (resource_t *) gIter->data;
-
-                if (child->running_on && is_set(child->flags, pe_rsc_provisional)
-                    && is_not_set(child->flags, pe_rsc_failed)) {
-                    node_t *child_node = child->running_on->data;
-
-                    if (child_node->details == node->details
-                        && color_instance(child, node, clone_data->clone_max < available_nodes,
-                                          data_set)) {
-                        pe_rsc_trace(rsc, "Pre-allocated %s to %s", child->id,
-                                     node->details->uname);
-                        allocated++;
-                        break;
-                    }
-                }
+            } else if (color_instance(child, child_node, max < available_nodes, per_host_max, data_set)) {
+                pe_rsc_trace(rsc, "Pre-allocated %s to %s", child->id,
+                             child_node->details->uname);
+                allocated++;
             }
         }
     }
 
-    pe_rsc_trace(rsc, "Done pre-allocating (%d of %d)", allocated, clone_data->clone_max);
-    g_list_free(nodes);
+    pe_rsc_trace(rsc, "Done pre-allocating (%d of %d)", allocated, max);
 
-    for (gIter = rsc->children; gIter != NULL; gIter = gIter->next) {
+    for (GListPtr gIter = children; gIter != NULL; gIter = gIter->next) {
         resource_t *child = (resource_t *) gIter->data;
 
         if (g_list_length(child->running_on) > 0) {
@@ -627,17 +573,68 @@ clone_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set)
         }
 
         if (is_not_set(child->flags, pe_rsc_provisional)) {
-        } else if (allocated >= clone_data->clone_max) {
-            pe_rsc_debug(rsc, "Child %s not allocated - limit reached", child->id);
+        } else if (allocated >= max) {
+            pe_rsc_debug(rsc, "Child %s not allocated - limit reached %d %d", child->id, allocated, max);
             resource_location(child, NULL, -INFINITY, "clone_color:limit_reached", data_set);
-
-        } else if (color_instance(child, NULL, clone_data->clone_max < available_nodes, data_set)) {
-            allocated++;
+        } else {
+            if (color_instance(child, NULL, max < available_nodes, per_host_max, data_set)) {
+                allocated++;
+            }
         }
     }
 
     pe_rsc_debug(rsc, "Allocated %d %s instances of a possible %d",
-                 allocated, rsc->id, clone_data->clone_max);
+                 allocated, rsc->id, max);
+}
+
+
+node_t *
+clone_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set)
+{
+    GListPtr nodes = NULL;
+
+    clone_variant_data_t *clone_data = NULL;
+
+    get_clone_variant_data(clone_data, rsc);
+
+    if (is_not_set(rsc->flags, pe_rsc_provisional)) {
+        return NULL;
+
+    } else if (is_set(rsc->flags, pe_rsc_allocating)) {
+        pe_rsc_debug(rsc, "Dependency loop detected involving %s", rsc->id);
+        return NULL;
+    }
+
+    set_bit(rsc->flags, pe_rsc_allocating);
+    pe_rsc_trace(rsc, "Processing %s", rsc->id);
+
+    /* this information is used by sort_clone_instance() when deciding in which 
+     * order to allocate clone instances
+     */
+    for (GListPtr gIter = rsc->rsc_cons; gIter != NULL; gIter = gIter->next) {
+        rsc_colocation_t *constraint = (rsc_colocation_t *) gIter->data;
+
+        pe_rsc_trace(rsc, "%s: Coloring %s first", rsc->id, constraint->rsc_rh->id);
+        constraint->rsc_rh->cmds->allocate(constraint->rsc_rh, prefer, data_set);
+    }
+
+    for (GListPtr gIter = rsc->rsc_cons_lhs; gIter != NULL; gIter = gIter->next) {
+        rsc_colocation_t *constraint = (rsc_colocation_t *) gIter->data;
+
+        rsc->allowed_nodes =
+            constraint->rsc_lh->cmds->merge_weights(constraint->rsc_lh, rsc->id, rsc->allowed_nodes,
+                                                    constraint->node_attribute,
+                                                    (float)constraint->score / INFINITY,
+                                                    (pe_weights_rollback | pe_weights_positive));
+    }
+
+    dump_node_scores(show_scores ? 0 : scores_log_level, rsc, __FUNCTION__, rsc->allowed_nodes);
+
+    nodes = g_hash_table_get_values(rsc->allowed_nodes);
+    nodes = g_list_sort_with_data(nodes, sort_node_weight, NULL);
+    rsc->children = g_list_sort_with_data(rsc->children, sort_clone_instance, data_set);
+    distribute_children(rsc, rsc->children, nodes, clone_data->clone_max, clone_data->clone_node_max, data_set);
+    g_list_free(nodes);
 
     clear_bit(rsc->flags, pe_rsc_provisional);
     clear_bit(rsc->flags, pe_rsc_allocating);
@@ -846,12 +843,12 @@ clone_create_actions(resource_t * rsc, pe_working_set_t * data_set)
     started = custom_action(rsc, started_key(rsc),
                             RSC_STARTED, NULL, !child_starting, TRUE, data_set);
 
-    update_action_flags(start, pe_action_pseudo | pe_action_runnable, __FUNCTION__);
-    update_action_flags(started, pe_action_pseudo, __FUNCTION__);
+    update_action_flags(start, pe_action_pseudo | pe_action_runnable, __FUNCTION__, __LINE__);
+    update_action_flags(started, pe_action_pseudo, __FUNCTION__, __LINE__);
     started->priority = INFINITY;
 
     if (child_active || child_starting) {
-        update_action_flags(started, pe_action_runnable, __FUNCTION__);
+        update_action_flags(started, pe_action_runnable, __FUNCTION__, __LINE__);
     }
 
     child_ordering_constraints(rsc, data_set);
@@ -866,11 +863,11 @@ clone_create_actions(resource_t * rsc, pe_working_set_t * data_set)
                             RSC_STOPPED, NULL, !child_stopping, TRUE, data_set);
 
     stopped->priority = INFINITY;
-    update_action_flags(stop, pe_action_pseudo | pe_action_runnable, __FUNCTION__);
+    update_action_flags(stop, pe_action_pseudo | pe_action_runnable, __FUNCTION__, __LINE__);
     if (allow_dependent_migrations) {
-        update_action_flags(stop, pe_action_migrate_runnable, __FUNCTION__);
+        update_action_flags(stop, pe_action_migrate_runnable, __FUNCTION__, __LINE__);
     }
-    update_action_flags(stopped, pe_action_pseudo | pe_action_runnable, __FUNCTION__);
+    update_action_flags(stopped, pe_action_pseudo | pe_action_runnable, __FUNCTION__, __LINE__);
     if (clone_data->stop_notify == NULL) {
         clone_data->stop_notify =
             create_notification_boundaries(rsc, RSC_STOP, stop, stopped, data_set);
@@ -1204,7 +1201,7 @@ clone_action_flags(action_t * action, node_t * node)
                 && is_set(child_flags, pe_action_optional) == FALSE) {
                 pe_rsc_trace(child, "%s is mandatory because of %s", action->uuid,
                              child_action->uuid);
-                flags = crm_clear_bit(__FUNCTION__, action->rsc->id, flags, pe_action_optional);
+                flags = crm_clear_bit(__FUNCTION__, __LINE__, action->rsc->id, flags, pe_action_optional);
                 pe_clear_action_bit(action, pe_action_optional);
             }
             if (is_set(child_flags, pe_action_runnable)) {
@@ -1226,7 +1223,7 @@ clone_action_flags(action_t * action, node_t * node)
 
     if (check_runnable && any_runnable == FALSE) {
         pe_rsc_trace(action->rsc, "%s is not runnable because no children are", action->uuid);
-        flags = crm_clear_bit(__FUNCTION__, action->rsc->id, flags, pe_action_runnable);
+        flags = crm_clear_bit(__FUNCTION__, __LINE__, action->rsc->id, flags, pe_action_runnable);
         if (node == NULL) {
             pe_clear_action_bit(action, pe_action_runnable);
         }
diff --git a/pengine/constraints.c b/pengine/constraints.c
index eca4c25..92b9dd0 100644
--- a/pengine/constraints.c
+++ b/pengine/constraints.c
@@ -153,7 +153,7 @@ get_ordering_type(xmlNode * xml_obj)
                 kind_e = pe_order_kind_optional;
             }
 
-            /* } else if(rsc_then->variant == pe_native && rsc_first->variant > pe_group) { */
+            /* } else if(rsc_then->variant == pe_native && rsc_first->variant >= pe_clone) { */
             /*     kind_e = pe_order_kind_optional; */
         }
 
@@ -390,7 +390,7 @@ unpack_simple_rsc_order(xmlNode * xml_obj, pe_working_set_t * data_set)
          * actions to be considered runnable before allowing the pseudo action
          * to be runnable. */ 
         unordered_action->required_runnable_before = min_required_before;
-        update_action_flags(unordered_action, pe_action_requires_any, __FUNCTION__);
+        update_action_flags(unordered_action, pe_action_requires_any, __FUNCTION__, __LINE__);
 
         for (rIter = rsc_first->children; id && rIter; rIter = rIter->next) {
             resource_t *child = rIter->data;
@@ -1788,7 +1788,7 @@ order_rsc_sets(const char *id, xmlNode * set1, xmlNode * set2, enum pe_order_kin
         action_t *unordered_action = get_pseudo_op(task, data_set);
 
         free(task);
-        update_action_flags(unordered_action, pe_action_requires_any, __FUNCTION__);
+        update_action_flags(unordered_action, pe_action_requires_any, __FUNCTION__, __LINE__);
 
         for (xml_rsc = __xml_first_child(set1); xml_rsc != NULL; xml_rsc = __xml_next_element(xml_rsc)) {
             if (!crm_str_eq((const char *)xml_rsc->name, XML_TAG_RESOURCE_REF, TRUE)) {
diff --git a/pengine/container.c b/pengine/container.c
new file mode 100644
index 0000000..84f2f16
--- /dev/null
+++ b/pengine/container.c
@@ -0,0 +1,345 @@
+/* 
+ * Copyright (C) 2004 Andrew Beekhof <andrew@beekhof.net>
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ * 
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#include <crm_internal.h>
+
+#include <crm/msg_xml.h>
+#include <allocate.h>
+#include <notif.h>
+#include <utils.h>
+#include <allocate.h>
+
+#define VARIANT_CONTAINER 1
+#include <lib/pengine/variant.h>
+
+static bool
+is_child_container_node(container_variant_data_t *data, pe_node_t *node)
+{
+    for (GListPtr gIter = data->tuples; gIter != NULL; gIter = gIter->next) {
+        container_grouping_t *tuple = (container_grouping_t *)gIter->data;
+        if(node->details == tuple->node->details) {
+            return TRUE;
+        }
+    }
+    return FALSE;
+}
+
+gint sort_clone_instance(gconstpointer a, gconstpointer b, gpointer data_set);
+void distribute_children(resource_t *rsc, GListPtr children, GListPtr nodes,
+                         int max, int per_host_max, pe_working_set_t * data_set);
+
+node_t *
+container_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set)
+{
+    GListPtr containers = NULL;
+    GListPtr nodes = NULL;
+    container_variant_data_t *container_data = NULL;
+
+    CRM_CHECK(rsc != NULL, return NULL);
+
+    get_container_variant_data(container_data, rsc);
+
+    set_bit(rsc->flags, pe_rsc_allocating);
+
+    for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) {
+        container_grouping_t *tuple = (container_grouping_t *)gIter->data;
+        containers = g_list_append(containers, tuple->docker);
+    }
+
+    dump_node_scores(show_scores ? 0 : scores_log_level, rsc, __FUNCTION__, rsc->allowed_nodes);
+
+    nodes = g_hash_table_get_values(rsc->allowed_nodes);
+    nodes = g_list_sort_with_data(nodes, sort_node_weight, NULL);
+    containers = g_list_sort_with_data(containers, sort_clone_instance, data_set);
+    distribute_children(rsc, containers, nodes,
+                        container_data->replicas, container_data->replicas_per_host, data_set);
+    g_list_free(nodes);
+    g_list_free(containers);
+
+    for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) {
+        container_grouping_t *tuple = (container_grouping_t *)gIter->data;
+
+        CRM_ASSERT(tuple);
+        if(tuple->ip) {
+            tuple->ip->cmds->allocate(tuple->ip, prefer, data_set);
+        }
+        if(tuple->remote) {
+            tuple->remote->cmds->allocate(tuple->remote, prefer, data_set);
+        }
+
+        // Explicitly allocate tuple->child before the container->child
+        if(tuple->child) {
+            pe_node_t *node = NULL;
+            GHashTableIter iter;
+            g_hash_table_iter_init(&iter, tuple->child->allowed_nodes);
+            while (g_hash_table_iter_next(&iter, NULL, (gpointer *) & node)) {
+                if(node->details != tuple->node->details) {
+                    node->weight = -INFINITY;
+                } else {
+                    node->weight = INFINITY;
+                }
+            }
+
+            set_bit(tuple->child->parent->flags, pe_rsc_allocating);
+            tuple->child->cmds->allocate(tuple->child, tuple->node, data_set);
+            clear_bit(tuple->child->parent->flags, pe_rsc_allocating);
+        }
+    }
+
+    if(container_data->child) {
+        pe_node_t *node = NULL;
+        GHashTableIter iter;
+        g_hash_table_iter_init(&iter, container_data->child->allowed_nodes);
+        while (g_hash_table_iter_next(&iter, NULL, (gpointer *) & node)) {
+            if(is_child_container_node(container_data, node)) {
+                node->weight = 0;
+            } else {
+                node->weight = -INFINITY;
+            }
+        }
+        container_data->child->cmds->allocate(container_data->child, prefer, data_set);
+    }
+
+    clear_bit(rsc->flags, pe_rsc_allocating);
+    return NULL;
+}
+
+void
+container_create_actions(resource_t * rsc, pe_working_set_t * data_set)
+{
+    container_variant_data_t *container_data = NULL;
+
+    CRM_CHECK(rsc != NULL, return);
+
+    get_container_variant_data(container_data, rsc);
+    for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) {
+        container_grouping_t *tuple = (container_grouping_t *)gIter->data;
+
+        CRM_ASSERT(tuple);
+        if(tuple->ip) {
+            tuple->ip->cmds->create_actions(tuple->ip, data_set);
+        }
+        if(tuple->docker) {
+            tuple->docker->cmds->create_actions(tuple->docker, data_set);
+        }
+        if(tuple->remote) {
+            tuple->remote->cmds->create_actions(tuple->remote, data_set);
+        }
+    }
+
+    if(container_data->child) {
+        container_data->child->cmds->create_actions(container_data->child, data_set);
+    }
+}
+
+void
+container_internal_constraints(resource_t * rsc, pe_working_set_t * data_set)
+{
+    container_variant_data_t *container_data = NULL;
+
+    CRM_CHECK(rsc != NULL, return);
+
+    get_container_variant_data(container_data, rsc);
+    for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) {
+        char *id = NULL;
+        container_grouping_t *tuple = (container_grouping_t *)gIter->data;
+
+        CRM_ASSERT(tuple);
+        if(tuple->docker) {
+            tuple->docker->cmds->internal_constraints(tuple->docker, data_set);
+        }
+
+        if(tuple->ip) {
+            tuple->ip->cmds->internal_constraints(tuple->ip, data_set);
+
+            // Start ip then docker
+            new_rsc_order(tuple->ip, RSC_START, tuple->docker, RSC_START, pe_order_runnable_left, data_set);
+            new_rsc_order(tuple->docker, RSC_STOP, tuple->ip, RSC_STOP, pe_order_implies_first, data_set);
+
+            id = crm_strdup_printf("%s-ip-with-docker-%d", rsc->id, tuple->offset);
+            rsc_colocation_new(id, NULL, INFINITY, tuple->ip, tuple->docker, NULL, NULL, data_set);
+            free(id);
+        }
+
+        if(tuple->remote) {
+            CRM_ASSERT(tuple->ip);
+            tuple->remote->cmds->internal_constraints(tuple->remote, data_set);
+            // Start docker then remote
+            new_rsc_order(
+                tuple->docker, RSC_START, tuple->remote, RSC_START, pe_order_runnable_left, data_set);
+            new_rsc_order(
+                tuple->remote, RSC_STOP, tuple->docker, RSC_STOP, pe_order_implies_first, data_set);
+
+            id = crm_strdup_printf("%s-remote-with-ip-%d", rsc->id, tuple->offset);
+            rsc_colocation_new(id, NULL, INFINITY, tuple->remote, tuple->ip, NULL, NULL, data_set);
+            free(id);
+        }
+
+        if(tuple->child) {
+            CRM_ASSERT(tuple->remote);
+
+            // Start of the remote then child is implicit in the PE's remote logic
+        }
+
+    }
+
+    if(container_data->child) {
+        container_data->child->cmds->internal_constraints(container_data->child, data_set);
+    }
+}
+
+void
+container_rsc_colocation_lh(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocation_t * constraint)
+{
+    pe_err("Container %s cannot be colocated with anything", rsc_lh->id);
+}
+
+void
+container_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocation_t * constraint)
+{
+    pe_err("Container %s cannot be colocated with anything", rsc_rh->id);
+}
+
+enum pe_action_flags
+container_action_flags(action_t * action, node_t * node)
+{
+    enum pe_action_flags flags = (pe_action_optional | pe_action_runnable | pe_action_pseudo);
+    return flags;
+}
+
+
+enum pe_graph_flags
+container_update_actions(action_t * first, action_t * then, node_t * node, enum pe_action_flags flags,
+                     enum pe_action_flags filter, enum pe_ordering type)
+{
+    enum pe_graph_flags changed = pe_graph_none;
+    return changed;
+}
+
+void
+container_rsc_location(resource_t * rsc, rsc_to_node_t * constraint)
+{
+    GListPtr gIter = rsc->children;
+
+    pe_rsc_trace(rsc, "Processing location constraint %s for %s", constraint->id, rsc->id);
+
+    native_rsc_location(rsc, constraint);
+
+    for (; gIter != NULL; gIter = gIter->next) {
+        resource_t *child_rsc = (resource_t *) gIter->data;
+
+        child_rsc->cmds->rsc_location(child_rsc, constraint);
+    }
+}
+
+void
+container_expand(resource_t * rsc, pe_working_set_t * data_set)
+{
+    container_variant_data_t *container_data = NULL;
+
+    CRM_CHECK(rsc != NULL, return);
+
+    get_container_variant_data(container_data, rsc);
+    for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) {
+        container_grouping_t *tuple = (container_grouping_t *)gIter->data;
+
+        CRM_ASSERT(tuple);
+        if(tuple->ip) {
+            tuple->ip->cmds->expand(tuple->ip, data_set);
+        }
+        if(tuple->child) {
+            tuple->child->cmds->expand(tuple->child, data_set);
+        }
+        if(tuple->docker) {
+            tuple->docker->cmds->expand(tuple->docker, data_set);
+        }
+        if(tuple->remote) {
+            tuple->remote->cmds->expand(tuple->remote, data_set);
+        }
+    }
+}
+
+gboolean
+container_create_probe(resource_t * rsc, node_t * node, action_t * complete,
+                   gboolean force, pe_working_set_t * data_set)
+{
+    bool any_created = FALSE;
+    container_variant_data_t *container_data = NULL;
+
+    CRM_CHECK(rsc != NULL, return FALSE);
+
+    get_container_variant_data(container_data, rsc);
+    for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) {
+        container_grouping_t *tuple = (container_grouping_t *)gIter->data;
+
+        CRM_ASSERT(tuple);
+        if(tuple->ip) {
+            any_created |= tuple->ip->cmds->create_probe(tuple->ip, node, complete, force, data_set);
+        }
+        if(tuple->child && node->details == tuple->node->details) {
+            any_created |= tuple->child->cmds->create_probe(tuple->child, node, complete, force, data_set);
+        }
+        if(tuple->docker) {
+            any_created |= tuple->docker->cmds->create_probe(tuple->docker, node, complete, force, data_set);
+        }
+        if(FALSE && tuple->remote) {
+            // TODO: Needed?
+            any_created |= tuple->remote->cmds->create_probe(tuple->remote, node, complete, force, data_set);
+        }
+    }
+    return any_created;
+}
+
+void
+container_append_meta(resource_t * rsc, xmlNode * xml)
+{
+}
+
+GHashTable *
+container_merge_weights(resource_t * rsc, const char *rhs, GHashTable * nodes, const char *attr,
+                    float factor, enum pe_weights flags)
+{
+    return rsc_merge_weights(rsc, rhs, nodes, attr, factor, flags);
+}
+
+void container_LogActions(
+    resource_t * rsc, pe_working_set_t * data_set, gboolean terminal)
+{
+    container_variant_data_t *container_data = NULL;
+
+    CRM_CHECK(rsc != NULL, return);
+
+    get_container_variant_data(container_data, rsc);
+    for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) {
+        container_grouping_t *tuple = (container_grouping_t *)gIter->data;
+
+        CRM_ASSERT(tuple);
+        if(tuple->ip) {
+            LogActions(tuple->ip, data_set, terminal);
+        }
+        if(tuple->docker) {
+            LogActions(tuple->docker, data_set, terminal);
+        }
+        if(tuple->remote) {
+            LogActions(tuple->remote, data_set, terminal);
+        }
+        if(tuple->child) {
+            LogActions(tuple->child, data_set, terminal);
+        }
+    }
+}
diff --git a/pengine/graph.c b/pengine/graph.c
index 569cf6e..a1531dc 100644
--- a/pengine/graph.c
+++ b/pengine/graph.c
@@ -190,7 +190,7 @@ graph_update_action(action_t * first, action_t * then, node_t * node, enum pe_ac
                                                 pe_action_optional, pe_order_implies_then);
 
         } else if (is_set(flags, pe_action_optional) == FALSE) {
-            if (update_action_flags(then, pe_action_optional | pe_action_clear, __FUNCTION__)) {
+            if (update_action_flags(then, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__)) {
                 changed |= pe_graph_updated_then;
             }
         }
@@ -223,7 +223,7 @@ graph_update_action(action_t * first, action_t * then, node_t * node, enum pe_ac
 
         } else if (is_set(flags, pe_action_optional) == FALSE) {
             pe_rsc_trace(first->rsc, "first unrunnable: %s then %s", first->uuid, then->uuid);
-            if (update_action_flags(first, pe_action_runnable | pe_action_clear, __FUNCTION__)) {
+            if (update_action_flags(first, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__)) {
                 changed |= pe_graph_updated_first;
             }
         }
@@ -268,7 +268,7 @@ graph_update_action(action_t * first, action_t * then, node_t * node, enum pe_ac
             /* if the runnable before count for then exceeds the required number
              * of "before" runnable actions... mark then as runnable */
             if (then->runnable_before >= then->required_runnable_before) {
-                if (update_action_flags(then, pe_action_runnable, __FUNCTION__)) {
+                if (update_action_flags(then, pe_action_runnable, __FUNCTION__, __LINE__)) {
                     changed |= pe_graph_updated_then;
                 }
             }
@@ -290,7 +290,7 @@ graph_update_action(action_t * first, action_t * then, node_t * node, enum pe_ac
 
         } else if (is_set(flags, pe_action_runnable) == FALSE) {
             pe_rsc_trace(then->rsc, "then unrunnable: %s then %s", first->uuid, then->uuid);
-            if (update_action_flags(then, pe_action_runnable | pe_action_clear, __FUNCTION__)) {
+            if (update_action_flags(then, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__)) {
                 changed |= pe_graph_updated_then;
             }
         }
@@ -363,13 +363,13 @@ graph_update_action(action_t * first, action_t * then, node_t * node, enum pe_ac
         && (flags & pe_action_optional) == 0) {
         processed = TRUE;
         crm_trace("%s implies %s printed", first->uuid, then->uuid);
-        update_action_flags(then, pe_action_print_always, __FUNCTION__);  /* don't care about changed */
+        update_action_flags(then, pe_action_print_always, __FUNCTION__, __LINE__);  /* don't care about changed */
     }
 
     if ((type & pe_order_implies_first_printed) && (flags & pe_action_optional) == 0) {
         processed = TRUE;
         crm_trace("%s implies %s printed", then->uuid, first->uuid);
-        update_action_flags(first, pe_action_print_always, __FUNCTION__); /* don't care about changed */
+        update_action_flags(first, pe_action_print_always, __FUNCTION__, __LINE__); /* don't care about changed */
     }
 
     if ((type & pe_order_implies_then
@@ -381,7 +381,7 @@ graph_update_action(action_t * first, action_t * then, node_t * node, enum pe_ac
         && is_set(first->rsc->flags, pe_rsc_block)
         && is_not_set(first->flags, pe_action_runnable)) {
 
-        if (update_action_flags(then, pe_action_runnable | pe_action_clear, __FUNCTION__)) {
+        if (update_action_flags(then, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__)) {
             changed |= pe_graph_updated_then;
         }
 
@@ -909,7 +909,6 @@ action2xml(action_t * action, gboolean as_input, pe_working_set_t *data_set)
     }
 
     crm_xml_add_int(action_xml, XML_ATTR_ID, action->id);
-
     crm_xml_add(action_xml, XML_LRM_ATTR_TASK, action->task);
     if (action->rsc != NULL && action->rsc->clone_name != NULL) {
         char *clone_key = NULL;
@@ -1053,6 +1052,7 @@ action2xml(action_t * action, gboolean as_input, pe_working_set_t *data_set)
     g_hash_table_foreach(action->meta, hash2metafield, args_xml);
     if (action->rsc != NULL) {
         int isolated = 0;
+        const char *value = g_hash_table_lookup(action->rsc->meta, "external-ip");
         resource_t *parent = action->rsc;
 
         while (parent != NULL) {
@@ -1067,6 +1067,10 @@ action2xml(action_t * action, gboolean as_input, pe_working_set_t *data_set)
             free(nodeattr);
         }
 
+        if(value) {
+            hash2smartfield((gpointer)"pcmk_external_ip", (gpointer)value, (gpointer)args_xml);
+        }
+
     } else if (safe_str_eq(action->task, CRM_OP_FENCE) && action->node) {
         g_hash_table_foreach(action->node->details->attrs, hash2metafield, args_xml);
     }
@@ -1164,6 +1168,9 @@ should_dump_action(action_t * action)
         log_action(LOG_DEBUG, "Unallocated action", action, FALSE);
         return FALSE;
 
+    } else if(is_container_remote_node(action->node) && action->node->details->remote_requires_reset == FALSE) {
+        crm_trace("Assuming action %s for %s will be runnable", action->uuid, action->node->details->uname);
+
     } else if (action->node->details->online == FALSE) {
         pe_err("action %d was (%s) scheduled for offline node", action->id, action->uuid);
         log_action(LOG_DEBUG, "Action for offline node", action, FALSE);
diff --git a/pengine/master.c b/pengine/master.c
index 24d80c4..f6fcad3 100644
--- a/pengine/master.c
+++ b/pengine/master.c
@@ -845,14 +845,14 @@ master_create_actions(resource_t * rsc, pe_working_set_t * data_set)
                                     RSC_PROMOTED, NULL, !any_promoting, TRUE, data_set);
 
     action_complete->priority = INFINITY;
-    update_action_flags(action, pe_action_pseudo, __FUNCTION__);
-    update_action_flags(action, pe_action_runnable, __FUNCTION__);
-    update_action_flags(action_complete, pe_action_pseudo, __FUNCTION__);
-    update_action_flags(action_complete, pe_action_runnable, __FUNCTION__);
+    update_action_flags(action, pe_action_pseudo, __FUNCTION__, __LINE__);
+    update_action_flags(action, pe_action_runnable, __FUNCTION__, __LINE__);
+    update_action_flags(action_complete, pe_action_pseudo, __FUNCTION__, __LINE__);
+    update_action_flags(action_complete, pe_action_runnable, __FUNCTION__, __LINE__);
 
     if (clone_data->masters_allocated > 0) {
-        update_action_flags(action, pe_action_runnable, __FUNCTION__);
-        update_action_flags(action_complete, pe_action_runnable, __FUNCTION__);
+        update_action_flags(action, pe_action_runnable, __FUNCTION__, __LINE__);
+        update_action_flags(action_complete, pe_action_runnable, __FUNCTION__, __LINE__);
     }
 
     child_promoting_constraints(clone_data, pe_order_optional,
@@ -869,10 +869,10 @@ master_create_actions(resource_t * rsc, pe_working_set_t * data_set)
                                     RSC_DEMOTED, NULL, !any_demoting, TRUE, data_set);
     action_complete->priority = INFINITY;
 
-    update_action_flags(action, pe_action_pseudo, __FUNCTION__);
-    update_action_flags(action, pe_action_runnable, __FUNCTION__);
-    update_action_flags(action_complete, pe_action_pseudo, __FUNCTION__);
-    update_action_flags(action_complete, pe_action_runnable, __FUNCTION__);
+    update_action_flags(action, pe_action_pseudo, __FUNCTION__, __LINE__);
+    update_action_flags(action, pe_action_runnable, __FUNCTION__, __LINE__);
+    update_action_flags(action_complete, pe_action_pseudo, __FUNCTION__, __LINE__);
+    update_action_flags(action_complete, pe_action_runnable, __FUNCTION__, __LINE__);
 
     child_demoting_constraints(clone_data, pe_order_optional, rsc, NULL, last_demote_rsc, data_set);
 
diff --git a/pengine/native.c b/pengine/native.c
index 0c972ea..f864fed 100644
--- a/pengine/native.c
+++ b/pengine/native.c
@@ -106,9 +106,17 @@ native_choose_node(resource_t * rsc, node_t * prefer, pe_working_set_t * data_se
         return rsc->allocated_to ? TRUE : FALSE;
     }
 
+    if(rsc->allowed_nodes) {
+        nodes = g_hash_table_get_values(rsc->allowed_nodes);
+        nodes = g_list_sort_with_data(nodes, sort_node_weight, g_list_nth_data(rsc->running_on, 0));
+    }
     if (prefer) {
+        node_t *best = g_list_nth_data(nodes, 0);
+
         chosen = g_hash_table_lookup(rsc->allowed_nodes, prefer->details->id);
-        if (chosen && chosen->weight >= 0 && can_run_resources(chosen)) {
+        if (chosen && chosen->weight >= 0
+            && chosen->weight >= best->weight /* Possible alternative: (chosen->weight >= INFINITY || best->weight < INFINITY) */
+            && can_run_resources(chosen)) {
             pe_rsc_trace(rsc,
                          "Using preferred node %s for %s instead of choosing from %d candidates",
                          chosen->details->uname, rsc->id, length);
@@ -127,8 +135,6 @@ native_choose_node(resource_t * rsc, node_t * prefer, pe_working_set_t * data_se
     }
 
     if (chosen == NULL && rsc->allowed_nodes) {
-        nodes = g_hash_table_get_values(rsc->allowed_nodes);
-        nodes = g_list_sort_with_data(nodes, sort_node_weight, g_list_nth_data(rsc->running_on, 0));
 
         chosen = g_list_nth_data(nodes, 0);
         pe_rsc_trace(rsc, "Chose node %s for %s from %d candidates",
@@ -749,12 +755,12 @@ RecurringOp(resource_t * rsc, action_t * start, node_t * node,
     if (start == NULL || is_set(start->flags, pe_action_runnable) == FALSE) {
         pe_rsc_debug(rsc, "%s\t   %s (cancelled : start un-runnable)", crm_str(node_uname),
                      mon->uuid);
-        update_action_flags(mon, pe_action_runnable | pe_action_clear, __FUNCTION__);
+        update_action_flags(mon, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__);
 
     } else if (node == NULL || node->details->online == FALSE || node->details->unclean) {
         pe_rsc_debug(rsc, "%s\t   %s (cancelled : no node available)", crm_str(node_uname),
                      mon->uuid);
-        update_action_flags(mon, pe_action_runnable | pe_action_clear, __FUNCTION__);
+        update_action_flags(mon, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__);
 
     } else if (is_set(mon->flags, pe_action_optional) == FALSE) {
         pe_rsc_info(rsc, " Start recurring %s (%llus) for %s on %s", mon->task, interval_ms / 1000,
@@ -971,7 +977,7 @@ RecurringOp_Stopped(resource_t * rsc, action_t * start, node_t * node,
             if (is_set(stop->flags, pe_action_runnable) == FALSE) {
                 crm_debug("%s\t   %s (cancelled : stop un-runnable)",
                           crm_str(stop_node_uname), stopped_mon->uuid);
-                update_action_flags(stopped_mon, pe_action_runnable | pe_action_clear, __FUNCTION__);
+                update_action_flags(stopped_mon, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__);
             }
 
             if (is_set(rsc->flags, pe_rsc_managed)) {
@@ -991,7 +997,7 @@ RecurringOp_Stopped(resource_t * rsc, action_t * start, node_t * node,
             && is_set(rsc->flags, pe_rsc_managed) == FALSE) {
             pe_rsc_trace(rsc, "Marking %s optional on %s due to unmanaged",
                          key, crm_str(stop_node_uname));
-            update_action_flags(stopped_mon, pe_action_optional, __FUNCTION__);
+            update_action_flags(stopped_mon, pe_action_optional, __FUNCTION__, __LINE__);
         }
 
         if (is_set(stopped_mon->flags, pe_action_optional)) {
@@ -1001,7 +1007,7 @@ RecurringOp_Stopped(resource_t * rsc, action_t * start, node_t * node,
         if (stop_node->details->online == FALSE || stop_node->details->unclean) {
             pe_rsc_debug(rsc, "%s\t   %s (cancelled : no node available)",
                          crm_str(stop_node_uname), stopped_mon->uuid);
-            update_action_flags(stopped_mon, pe_action_runnable | pe_action_clear, __FUNCTION__);
+            update_action_flags(stopped_mon, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__);
         }
 
         if (is_set(stopped_mon->flags, pe_action_runnable)
@@ -1055,7 +1061,7 @@ handle_migration_actions(resource_t * rsc, node_t *current, node_t *chosen, pe_w
         set_bit(start->flags, pe_action_migrate_runnable);
         set_bit(stop->flags, pe_action_migrate_runnable);
 
-        update_action_flags(start, pe_action_pseudo, __FUNCTION__);       /* easier than trying to delete it from the graph */
+        update_action_flags(start, pe_action_pseudo, __FUNCTION__, __LINE__);       /* easier than trying to delete it from the graph */
 
         /* order probes before migrations */
         if (partial) {
@@ -1263,7 +1269,7 @@ native_create_actions(resource_t * rsc, pe_working_set_t * data_set)
     /* Required steps from this role to the next */
     while (role != rsc->next_role) {
         next_role = rsc_state_matrix[role][rsc->next_role];
-        pe_rsc_trace(rsc, "Role: Executing: %s->%s = (%s)", role2text(role), role2text(next_role), rsc->id);
+        pe_rsc_trace(rsc, "Role: Executing: %s->%s = (%s on %s)", role2text(role), role2text(next_role), rsc->id, chosen?chosen->details->uname:"NA");
         if (rsc_action_matrix[role][next_role] (rsc, chosen, FALSE, data_set) == FALSE) {
             break;
         }
@@ -1410,7 +1416,7 @@ native_internal_constraints(resource_t * rsc, pe_working_set_t * data_set)
 
             if (load_stopped->node == NULL) {
                 load_stopped->node = node_copy(current);
-                update_action_flags(load_stopped, pe_action_optional | pe_action_clear, __FUNCTION__);
+                update_action_flags(load_stopped, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__);
             }
 
             custom_action_order(rsc, stop_key(rsc), NULL,
@@ -1424,7 +1430,7 @@ native_internal_constraints(resource_t * rsc, pe_working_set_t * data_set)
 
             if (load_stopped->node == NULL) {
                 load_stopped->node = node_copy(next);
-                update_action_flags(load_stopped, pe_action_optional | pe_action_clear, __FUNCTION__);
+                update_action_flags(load_stopped, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__);
             }
 
             custom_action_order(NULL, strdup(load_stopped_task), load_stopped,
@@ -2138,6 +2144,11 @@ LogActions(resource_t * rsc, pe_working_set_t * data_set, gboolean terminal)
     gboolean moving = FALSE;
     GListPtr possible_matches = NULL;
 
+    if(rsc->variant == pe_container) {
+        container_LogActions(rsc, data_set, terminal);
+        return;
+    }
+
     if (rsc->children) {
         GListPtr gIter = NULL;
 
@@ -2417,7 +2428,7 @@ StopRsc(resource_t * rsc, node_t * next, gboolean optional, pe_working_set_t * d
         stop = stop_action(rsc, current, optional);
 
         if (is_not_set(rsc->flags, pe_rsc_managed)) {
-            update_action_flags(stop, pe_action_runnable | pe_action_clear, __FUNCTION__);
+            update_action_flags(stop, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__);
         }
 
         if (is_set(data_set->flags, pe_flag_remove_after_stop)) {
@@ -2437,7 +2448,7 @@ StartRsc(resource_t * rsc, node_t * next, gboolean optional, pe_working_set_t *
     pe_rsc_trace(rsc, "%s on %s %d", rsc->id, next ? next->details->uname : "N/A", optional);
     start = start_action(rsc, next, TRUE);
     if (is_set(start->flags, pe_action_runnable) && optional == FALSE) {
-        update_action_flags(start, pe_action_optional | pe_action_clear, __FUNCTION__);
+        update_action_flags(start, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__);
     }
     return TRUE;
 }
@@ -2481,7 +2492,7 @@ PromoteRsc(resource_t * rsc, node_t * next, gboolean optional, pe_working_set_t
     for (gIter = action_list; gIter != NULL; gIter = gIter->next) {
         action_t *promote = (action_t *) gIter->data;
 
-        update_action_flags(promote, pe_action_runnable | pe_action_clear, __FUNCTION__);
+        update_action_flags(promote, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__);
     }
 
     g_list_free(action_list);
@@ -2773,7 +2784,7 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete,
 
     key = generate_op_key(rsc->id, RSC_STATUS, 0);
     probe = custom_action(rsc, key, RSC_STATUS, node, FALSE, TRUE, data_set);
-    update_action_flags(probe, pe_action_optional | pe_action_clear, __FUNCTION__);
+    update_action_flags(probe, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__);
 
     /* If enabled, require unfencing before probing any fence devices
      * but ensure it happens after any resources that require
@@ -2940,9 +2951,9 @@ native_stop_constraints(resource_t * rsc, action_t * stonith_op, pe_working_set_
         /* The stop would never complete and is now implied by the fencing,
          * so convert it into a pseudo-action.
          */
-        update_action_flags(action, pe_action_pseudo, __FUNCTION__);
-        update_action_flags(action, pe_action_runnable, __FUNCTION__);
-        update_action_flags(action, pe_action_implied_by_stonith, __FUNCTION__);
+        update_action_flags(action, pe_action_pseudo, __FUNCTION__, __LINE__);
+        update_action_flags(action, pe_action_runnable, __FUNCTION__, __LINE__);
+        update_action_flags(action, pe_action_implied_by_stonith, __FUNCTION__, __LINE__);
 
         if(start == NULL || start->needs > rsc_req_quorum) {
             enum pe_ordering flags = pe_order_optional;
@@ -3041,8 +3052,8 @@ native_stop_constraints(resource_t * rsc, action_t * stonith_op, pe_working_set_
             /* The demote would never complete and is now implied by the
              * fencing, so convert it into a pseudo-action.
              */
-            update_action_flags(action, pe_action_pseudo, __FUNCTION__);
-            update_action_flags(action, pe_action_runnable, __FUNCTION__);
+            update_action_flags(action, pe_action_pseudo, __FUNCTION__, __LINE__);
+            update_action_flags(action, pe_action_runnable, __FUNCTION__, __LINE__);
 
             if (start == NULL || start->needs > rsc_req_quorum) {
                 order_actions(stonith_op, action, pe_order_preserve|pe_order_optional);
diff --git a/pengine/notif.c b/pengine/notif.c
index 73bb226..a2d4c1b 100644
--- a/pengine/notif.c
+++ b/pengine/notif.c
@@ -315,8 +315,8 @@ create_notification_boundaries(resource_t * rsc, const char *action, action_t *
             custom_action(rsc, key, RSC_NOTIFY, NULL, is_set(start->flags, pe_action_optional),
                           TRUE, data_set);
 
-        update_action_flags(n_data->pre, pe_action_pseudo, __FUNCTION__);
-        update_action_flags(n_data->pre, pe_action_runnable, __FUNCTION__);
+        update_action_flags(n_data->pre, pe_action_pseudo, __FUNCTION__, __LINE__);
+        update_action_flags(n_data->pre, pe_action_runnable, __FUNCTION__, __LINE__);
 
         add_hash_param(n_data->pre->meta, "notify_type", "pre");
         add_hash_param(n_data->pre->meta, "notify_operation", n_data->action);
@@ -330,8 +330,8 @@ create_notification_boundaries(resource_t * rsc, const char *action, action_t *
             custom_action(rsc, key, RSC_NOTIFIED, NULL, is_set(start->flags, pe_action_optional),
                           TRUE, data_set);
 
-        update_action_flags(n_data->pre_done, pe_action_pseudo, __FUNCTION__);
-        update_action_flags(n_data->pre_done, pe_action_runnable, __FUNCTION__);
+        update_action_flags(n_data->pre_done, pe_action_pseudo, __FUNCTION__, __LINE__);
+        update_action_flags(n_data->pre_done, pe_action_runnable, __FUNCTION__, __LINE__);
 
         add_hash_param(n_data->pre_done->meta, "notify_type", "pre");
         add_hash_param(n_data->pre_done->meta, "notify_operation", n_data->action);
@@ -351,11 +351,11 @@ create_notification_boundaries(resource_t * rsc, const char *action, action_t *
                           data_set);
 
         n_data->post->priority = INFINITY;
-        update_action_flags(n_data->post, pe_action_pseudo, __FUNCTION__);
+        update_action_flags(n_data->post, pe_action_pseudo, __FUNCTION__, __LINE__);
         if (is_set(end->flags, pe_action_runnable)) {
-            update_action_flags(n_data->post, pe_action_runnable, __FUNCTION__);
+            update_action_flags(n_data->post, pe_action_runnable, __FUNCTION__, __LINE__);
         } else {
-            update_action_flags(n_data->post, pe_action_runnable | pe_action_clear, __FUNCTION__);
+            update_action_flags(n_data->post, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__);
         }
 
         add_hash_param(n_data->post->meta, "notify_type", "post");
@@ -371,11 +371,11 @@ create_notification_boundaries(resource_t * rsc, const char *action, action_t *
                           TRUE, data_set);
 
         n_data->post_done->priority = INFINITY;
-        update_action_flags(n_data->post_done, pe_action_pseudo, __FUNCTION__);
+        update_action_flags(n_data->post_done, pe_action_pseudo, __FUNCTION__, __LINE__);
         if (is_set(end->flags, pe_action_runnable)) {
-            update_action_flags(n_data->post_done, pe_action_runnable, __FUNCTION__);
+            update_action_flags(n_data->post_done, pe_action_runnable, __FUNCTION__, __LINE__);
         } else {
-            update_action_flags(n_data->post_done, pe_action_runnable | pe_action_clear, __FUNCTION__);
+            update_action_flags(n_data->post_done, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__);
         }
 
         add_hash_param(n_data->post_done->meta, "notify_type", "post");
@@ -585,13 +585,13 @@ expand_notification_data(notify_data_t * n_data, pe_working_set_t * data_set)
     g_hash_table_insert(n_data->keys, strdup("notify_all_uname"), node_list);
 
     if (required && n_data->pre) {
-        update_action_flags(n_data->pre, pe_action_optional | pe_action_clear, __FUNCTION__);
-        update_action_flags(n_data->pre_done, pe_action_optional | pe_action_clear, __FUNCTION__);
+        update_action_flags(n_data->pre, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__);
+        update_action_flags(n_data->pre_done, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__);
     }
 
     if (required && n_data->post) {
-        update_action_flags(n_data->post, pe_action_optional | pe_action_clear, __FUNCTION__);
-        update_action_flags(n_data->post_done, pe_action_optional | pe_action_clear, __FUNCTION__);
+        update_action_flags(n_data->post, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__);
+        update_action_flags(n_data->post_done, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__);
     }
     return required;
 }
diff --git a/pengine/test10/1360.scores b/pengine/test10/1360.scores
index 39c803d..c0c5cc9 100644
--- a/pengine/test10/1360.scores
+++ b/pengine/test10/1360.scores
@@ -10,4 +10,6 @@ group_color: VIP allocation score on ssgtest1b: 0
 native_color: VIP allocation score on ssgtest1a: INFINITY
 native_color: VIP allocation score on ssgtest1b: 0
 native_color: dollies:0 allocation score on ssgtest1a: 0
+native_color: dollies:0 allocation score on ssgtest1a: 0
+native_color: dollies:0 allocation score on ssgtest1b: INFINITY
 native_color: dollies:0 allocation score on ssgtest1b: INFINITY
diff --git a/pengine/test10/662.scores b/pengine/test10/662.scores
index 50be40c..5e6598c 100644
--- a/pengine/test10/662.scores
+++ b/pengine/test10/662.scores
@@ -29,10 +29,10 @@ native_color: child_DoFencing:0 allocation score on c001n04: -INFINITY
 native_color: child_DoFencing:0 allocation score on c001n09: -INFINITY
 native_color: child_DoFencing:1 allocation score on c001n02: -INFINITY
 native_color: child_DoFencing:1 allocation score on c001n03: 1
-native_color: child_DoFencing:1 allocation score on c001n04: -INFINITY
+native_color: child_DoFencing:1 allocation score on c001n04: 0
 native_color: child_DoFencing:1 allocation score on c001n09: 0
 native_color: child_DoFencing:2 allocation score on c001n02: -INFINITY
-native_color: child_DoFencing:2 allocation score on c001n03: 0
+native_color: child_DoFencing:2 allocation score on c001n03: -INFINITY
 native_color: child_DoFencing:2 allocation score on c001n04: 1
 native_color: child_DoFencing:2 allocation score on c001n09: 0
 native_color: child_DoFencing:3 allocation score on c001n02: -INFINITY
diff --git a/pengine/test10/696.scores b/pengine/test10/696.scores
index 4f6dd50..f27fc36 100644
--- a/pengine/test10/696.scores
+++ b/pengine/test10/696.scores
@@ -16,9 +16,9 @@ native_color: DcIPaddr allocation score on hadev2: 0
 native_color: DcIPaddr allocation score on hadev3: -INFINITY
 native_color: child_DoFencing:0 allocation score on hadev1: 0
 native_color: child_DoFencing:0 allocation score on hadev2: 1
-native_color: child_DoFencing:0 allocation score on hadev3: -INFINITY
+native_color: child_DoFencing:0 allocation score on hadev3: 0
 native_color: child_DoFencing:1 allocation score on hadev1: 0
-native_color: child_DoFencing:1 allocation score on hadev2: 0
+native_color: child_DoFencing:1 allocation score on hadev2: -INFINITY
 native_color: child_DoFencing:1 allocation score on hadev3: 1
 native_color: child_DoFencing:2 allocation score on hadev1: 0
 native_color: child_DoFencing:2 allocation score on hadev2: -INFINITY
diff --git a/pengine/test10/anti-colocation-slave.scores b/pengine/test10/anti-colocation-slave.scores
index b9d278e..e0b8a52 100644
--- a/pengine/test10/anti-colocation-slave.scores
+++ b/pengine/test10/anti-colocation-slave.scores
@@ -10,8 +10,8 @@ native_color: dummy1 allocation score on sle12sp2-2: 0
 native_color: st_sbd allocation score on sle12sp2-1: 0
 native_color: st_sbd allocation score on sle12sp2-2: 0
 native_color: state1:0 allocation score on sle12sp2-1: 11
-native_color: state1:0 allocation score on sle12sp2-2: -INFINITY
-native_color: state1:1 allocation score on sle12sp2-1: 0
+native_color: state1:0 allocation score on sle12sp2-2: 0
+native_color: state1:1 allocation score on sle12sp2-1: -INFINITY
 native_color: state1:1 allocation score on sle12sp2-2: 6
 state1:0 promotion score on sle12sp2-1: -INFINITY
 state1:1 promotion score on sle12sp2-2: 5
diff --git a/pengine/test10/asymmetric.scores b/pengine/test10/asymmetric.scores
index 1dcb15a..802da70 100644
--- a/pengine/test10/asymmetric.scores
+++ b/pengine/test10/asymmetric.scores
@@ -8,7 +8,7 @@ clone_color: ms_drbd_poolA allocation score on puma3: 0
 ebe3fb6e-7778-426e-be58-190ab1ff3dd3:0 promotion score on puma1: 5
 ebe3fb6e-7778-426e-be58-190ab1ff3dd3:1 promotion score on puma3: 100
 native_color: ebe3fb6e-7778-426e-be58-190ab1ff3dd3:0 allocation score on puma1: 6
-native_color: ebe3fb6e-7778-426e-be58-190ab1ff3dd3:0 allocation score on puma3: 0
-native_color: ebe3fb6e-7778-426e-be58-190ab1ff3dd3:1 allocation score on puma1: -INFINITY
+native_color: ebe3fb6e-7778-426e-be58-190ab1ff3dd3:0 allocation score on puma3: -INFINITY
+native_color: ebe3fb6e-7778-426e-be58-190ab1ff3dd3:1 allocation score on puma1: 0
 native_color: ebe3fb6e-7778-426e-be58-190ab1ff3dd3:1 allocation score on puma3: 101
 native_color: vpool_ip_poolA allocation score on puma3: -INFINITY
diff --git a/pengine/test10/bnc-515172.scores b/pengine/test10/bnc-515172.scores
index 3615bfa..f085a46 100644
--- a/pengine/test10/bnc-515172.scores
+++ b/pengine/test10/bnc-515172.scores
@@ -49,18 +49,18 @@ native_color: Res_Pingd_Gateway:0 allocation score on sles11-ha2: 0
 native_color: Res_Pingd_Gateway:0 allocation score on sles11-ha3: 0
 native_color: Res_Pingd_Gateway:1 allocation score on sles11-ha1: -INFINITY
 native_color: Res_Pingd_Gateway:1 allocation score on sles11-ha2: 1
-native_color: Res_Pingd_Gateway:1 allocation score on sles11-ha3: -INFINITY
+native_color: Res_Pingd_Gateway:1 allocation score on sles11-ha3: 0
 native_color: Res_Pingd_Gateway:2 allocation score on sles11-ha1: -INFINITY
-native_color: Res_Pingd_Gateway:2 allocation score on sles11-ha2: 0
+native_color: Res_Pingd_Gateway:2 allocation score on sles11-ha2: -INFINITY
 native_color: Res_Pingd_Gateway:2 allocation score on sles11-ha3: 1
 native_color: Res_Pingd_Public:0 allocation score on sles11-ha1: 1
 native_color: Res_Pingd_Public:0 allocation score on sles11-ha2: 0
 native_color: Res_Pingd_Public:0 allocation score on sles11-ha3: 0
 native_color: Res_Pingd_Public:1 allocation score on sles11-ha1: -INFINITY
 native_color: Res_Pingd_Public:1 allocation score on sles11-ha2: 1
-native_color: Res_Pingd_Public:1 allocation score on sles11-ha3: -INFINITY
+native_color: Res_Pingd_Public:1 allocation score on sles11-ha3: 0
 native_color: Res_Pingd_Public:2 allocation score on sles11-ha1: -INFINITY
-native_color: Res_Pingd_Public:2 allocation score on sles11-ha2: 0
+native_color: Res_Pingd_Public:2 allocation score on sles11-ha2: -INFINITY
 native_color: Res_Pingd_Public:2 allocation score on sles11-ha3: 1
 native_color: Stonith_Resource:0 allocation score on sles11-ha1: 1
 native_color: Stonith_Resource:0 allocation score on sles11-ha2: 0
diff --git a/pengine/test10/bug-1685.scores b/pengine/test10/bug-1685.scores
index e45d379..7142c60 100644
--- a/pengine/test10/bug-1685.scores
+++ b/pengine/test10/bug-1685.scores
@@ -5,10 +5,10 @@ clone_color: prim_shared_storage:1 allocation score on redun1: 76
 clone_color: prim_shared_storage:1 allocation score on redun2: 0
 clone_color: shared_storage allocation score on redun1: 0
 clone_color: shared_storage allocation score on redun2: 0
-native_color: prim_shared_storage:0 allocation score on redun1: -INFINITY
+native_color: prim_shared_storage:0 allocation score on redun1: 0
 native_color: prim_shared_storage:0 allocation score on redun2: 76
 native_color: prim_shared_storage:1 allocation score on redun1: 76
-native_color: prim_shared_storage:1 allocation score on redun2: 0
+native_color: prim_shared_storage:1 allocation score on redun2: -INFINITY
 native_color: shared_filesystem allocation score on redun1: -INFINITY
 native_color: shared_filesystem allocation score on redun2: 76
 prim_shared_storage:0 promotion score on redun2: 75
diff --git a/pengine/test10/bug-1765.scores b/pengine/test10/bug-1765.scores
index c072902..28f19e1 100644
--- a/pengine/test10/bug-1765.scores
+++ b/pengine/test10/bug-1765.scores
@@ -21,7 +21,7 @@ native_color: drbd0:0 allocation score on sles236: 76
 native_color: drbd0:0 allocation score on sles238: 75
 native_color: drbd0:1 allocation score on sles236: -INFINITY
 native_color: drbd0:1 allocation score on sles238: 5
-native_color: drbd1:0 allocation score on sles236: -INFINITY
+native_color: drbd1:0 allocation score on sles236: 0
 native_color: drbd1:0 allocation score on sles238: 76
 native_color: drbd1:1 allocation score on sles236: 76
-native_color: drbd1:1 allocation score on sles238: 0
+native_color: drbd1:1 allocation score on sles238: -INFINITY
diff --git a/pengine/test10/bug-5143-ms-shuffle.scores b/pengine/test10/bug-5143-ms-shuffle.scores
index 37881e6..b062986 100644
--- a/pengine/test10/bug-5143-ms-shuffle.scores
+++ b/pengine/test10/bug-5143-ms-shuffle.scores
@@ -93,29 +93,29 @@ drbd-r1:0 promotion score on hex-2: -1
 drbd-r1:1 promotion score on hex-3: 10000
 group_color: basegrp:0 allocation score on hex-1: 0
 group_color: basegrp:0 allocation score on hex-2: -INFINITY
-group_color: basegrp:0 allocation score on hex-3: -INFINITY
+group_color: basegrp:0 allocation score on hex-3: 0
 group_color: basegrp:1 allocation score on hex-1: 0
 group_color: basegrp:1 allocation score on hex-2: 0
 group_color: basegrp:1 allocation score on hex-3: 0
-group_color: basegrp:2 allocation score on hex-1: 0
+group_color: basegrp:2 allocation score on hex-1: -INFINITY
 group_color: basegrp:2 allocation score on hex-2: -INFINITY
 group_color: basegrp:2 allocation score on hex-3: 0
 group_color: clvmd:0 allocation score on hex-1: 1
 group_color: clvmd:0 allocation score on hex-2: -INFINITY
-group_color: clvmd:0 allocation score on hex-3: -INFINITY
+group_color: clvmd:0 allocation score on hex-3: 0
 group_color: clvmd:1 allocation score on hex-1: 0
 group_color: clvmd:1 allocation score on hex-2: 1
 group_color: clvmd:1 allocation score on hex-3: 0
-group_color: clvmd:2 allocation score on hex-1: 0
+group_color: clvmd:2 allocation score on hex-1: -INFINITY
 group_color: clvmd:2 allocation score on hex-2: -INFINITY
 group_color: clvmd:2 allocation score on hex-3: 1
 group_color: dlm:0 allocation score on hex-1: 1
 group_color: dlm:0 allocation score on hex-2: -INFINITY
-group_color: dlm:0 allocation score on hex-3: -INFINITY
+group_color: dlm:0 allocation score on hex-3: 0
 group_color: dlm:1 allocation score on hex-1: 0
 group_color: dlm:1 allocation score on hex-2: 1
 group_color: dlm:1 allocation score on hex-3: 0
-group_color: dlm:2 allocation score on hex-1: 0
+group_color: dlm:2 allocation score on hex-1: -INFINITY
 group_color: dlm:2 allocation score on hex-2: -INFINITY
 group_color: dlm:2 allocation score on hex-3: 1
 group_color: dummy1 allocation score on hex-1: 0
@@ -129,11 +129,11 @@ group_color: fs-md0 allocation score on hex-2: 0
 group_color: fs-md0 allocation score on hex-3: 1000
 group_color: fs-ocfs-1:0 allocation score on hex-1: 1
 group_color: fs-ocfs-1:0 allocation score on hex-2: -INFINITY
-group_color: fs-ocfs-1:0 allocation score on hex-3: -INFINITY
+group_color: fs-ocfs-1:0 allocation score on hex-3: 0
 group_color: fs-ocfs-1:1 allocation score on hex-1: 0
 group_color: fs-ocfs-1:1 allocation score on hex-2: 1
 group_color: fs-ocfs-1:1 allocation score on hex-3: 0
-group_color: fs-ocfs-1:2 allocation score on hex-1: 0
+group_color: fs-ocfs-1:2 allocation score on hex-1: -INFINITY
 group_color: fs-ocfs-1:2 allocation score on hex-2: -INFINITY
 group_color: fs-ocfs-1:2 allocation score on hex-3: 1
 group_color: fs-r0 allocation score on hex-1: 0
@@ -147,11 +147,11 @@ group_color: md0-group allocation score on hex-2: 0
 group_color: md0-group allocation score on hex-3: 0
 group_color: o2cb:0 allocation score on hex-1: 1
 group_color: o2cb:0 allocation score on hex-2: -INFINITY
-group_color: o2cb:0 allocation score on hex-3: -INFINITY
+group_color: o2cb:0 allocation score on hex-3: 0
 group_color: o2cb:1 allocation score on hex-1: 0
 group_color: o2cb:1 allocation score on hex-2: 1
 group_color: o2cb:1 allocation score on hex-3: 0
-group_color: o2cb:2 allocation score on hex-1: 0
+group_color: o2cb:2 allocation score on hex-1: -INFINITY
 group_color: o2cb:2 allocation score on hex-2: -INFINITY
 group_color: o2cb:2 allocation score on hex-3: 1
 group_color: r0-group allocation score on hex-1: 0
@@ -162,11 +162,11 @@ group_color: vg-md0 allocation score on hex-2: 0
 group_color: vg-md0 allocation score on hex-3: 1000
 group_color: vg1:0 allocation score on hex-1: 1
 group_color: vg1:0 allocation score on hex-2: -INFINITY
-group_color: vg1:0 allocation score on hex-3: -INFINITY
+group_color: vg1:0 allocation score on hex-3: 0
 group_color: vg1:1 allocation score on hex-1: 0
 group_color: vg1:1 allocation score on hex-2: 1
 group_color: vg1:1 allocation score on hex-3: 0
-group_color: vg1:2 allocation score on hex-1: 0
+group_color: vg1:2 allocation score on hex-1: -INFINITY
 group_color: vg1:2 allocation score on hex-2: -INFINITY
 group_color: vg1:2 allocation score on hex-3: 1
 native_color: clvmd:0 allocation score on hex-1: 4
@@ -180,11 +180,11 @@ native_color: clvmd:2 allocation score on hex-2: -INFINITY
 native_color: clvmd:2 allocation score on hex-3: 4
 native_color: dlm:0 allocation score on hex-1: 5
 native_color: dlm:0 allocation score on hex-2: -INFINITY
-native_color: dlm:0 allocation score on hex-3: -INFINITY
+native_color: dlm:0 allocation score on hex-3: 0
 native_color: dlm:1 allocation score on hex-1: 0
 native_color: dlm:1 allocation score on hex-2: 5
 native_color: dlm:1 allocation score on hex-3: 0
-native_color: dlm:2 allocation score on hex-1: 0
+native_color: dlm:2 allocation score on hex-1: -INFINITY
 native_color: dlm:2 allocation score on hex-2: -INFINITY
 native_color: dlm:2 allocation score on hex-3: 5
 native_color: drbd-r0:0 allocation score on hex-1: 10001
diff --git a/pengine/test10/bug-5186-partial-migrate.scores b/pengine/test10/bug-5186-partial-migrate.scores
index baec909..8b29529 100644
--- a/pengine/test10/bug-5186-partial-migrate.scores
+++ b/pengine/test10/bug-5186-partial-migrate.scores
@@ -67,8 +67,8 @@ native_color: prmDiskd1:0 allocation score on bl460g1n7: -INFINITY
 native_color: prmDiskd1:0 allocation score on bl460g1n8: -INFINITY
 native_color: prmDiskd1:1 allocation score on bl460g1n6: INFINITY
 native_color: prmDiskd1:1 allocation score on bl460g1n7: -INFINITY
-native_color: prmDiskd1:1 allocation score on bl460g1n8: -INFINITY
-native_color: prmDiskd1:2 allocation score on bl460g1n6: 0
+native_color: prmDiskd1:1 allocation score on bl460g1n8: 0
+native_color: prmDiskd1:2 allocation score on bl460g1n6: -INFINITY
 native_color: prmDiskd1:2 allocation score on bl460g1n7: -INFINITY
 native_color: prmDiskd1:2 allocation score on bl460g1n8: INFINITY
 native_color: prmDiskd2:0 allocation score on bl460g1n6: -INFINITY
@@ -76,8 +76,8 @@ native_color: prmDiskd2:0 allocation score on bl460g1n7: -INFINITY
 native_color: prmDiskd2:0 allocation score on bl460g1n8: -INFINITY
 native_color: prmDiskd2:1 allocation score on bl460g1n6: INFINITY
 native_color: prmDiskd2:1 allocation score on bl460g1n7: -INFINITY
-native_color: prmDiskd2:1 allocation score on bl460g1n8: -INFINITY
-native_color: prmDiskd2:2 allocation score on bl460g1n6: 0
+native_color: prmDiskd2:1 allocation score on bl460g1n8: 0
+native_color: prmDiskd2:2 allocation score on bl460g1n6: -INFINITY
 native_color: prmDiskd2:2 allocation score on bl460g1n7: -INFINITY
 native_color: prmDiskd2:2 allocation score on bl460g1n8: INFINITY
 native_color: prmDummy allocation score on bl460g1n6: 200
@@ -88,8 +88,8 @@ native_color: prmPing:0 allocation score on bl460g1n7: -INFINITY
 native_color: prmPing:0 allocation score on bl460g1n8: -INFINITY
 native_color: prmPing:1 allocation score on bl460g1n6: INFINITY
 native_color: prmPing:1 allocation score on bl460g1n7: -INFINITY
-native_color: prmPing:1 allocation score on bl460g1n8: -INFINITY
-native_color: prmPing:2 allocation score on bl460g1n6: 0
+native_color: prmPing:1 allocation score on bl460g1n8: 0
+native_color: prmPing:2 allocation score on bl460g1n6: -INFINITY
 native_color: prmPing:2 allocation score on bl460g1n7: -INFINITY
 native_color: prmPing:2 allocation score on bl460g1n8: INFINITY
 native_color: prmStonith6-1 allocation score on bl460g1n6: -INFINITY
diff --git a/pengine/test10/bug-cl-5168.scores b/pengine/test10/bug-cl-5168.scores
index 027d669..640e0f1 100644
--- a/pengine/test10/bug-cl-5168.scores
+++ b/pengine/test10/bug-cl-5168.scores
@@ -194,8 +194,11 @@ native_color: drbd-r0:1 allocation score on hex-1: INFINITY
 native_color: drbd-r0:1 allocation score on hex-2: 0
 native_color: drbd-r0:1 allocation score on hex-3: -INFINITY
 native_color: drbd-r1:0 allocation score on hex-1: -INFINITY
+native_color: drbd-r1:0 allocation score on hex-1: -INFINITY
+native_color: drbd-r1:0 allocation score on hex-2: 1001
 native_color: drbd-r1:0 allocation score on hex-2: 1001
 native_color: drbd-r1:0 allocation score on hex-3: -INFINITY
+native_color: drbd-r1:0 allocation score on hex-3: INFINITY
 native_color: drbd-r1:1 allocation score on hex-1: -INFINITY
 native_color: drbd-r1:1 allocation score on hex-2: 0
 native_color: drbd-r1:1 allocation score on hex-3: INFINITY
diff --git a/pengine/test10/bug-cl-5213.scores b/pengine/test10/bug-cl-5213.scores
index b5b64ae..f9347dc 100644
--- a/pengine/test10/bug-cl-5213.scores
+++ b/pengine/test10/bug-cl-5213.scores
@@ -7,9 +7,9 @@ clone_color: pgsql:1 allocation score on srv01: INFINITY
 clone_color: pgsql:1 allocation score on srv02: 0
 native_color: A-master allocation score on srv01: 0
 native_color: A-master allocation score on srv02: INFINITY
-native_color: pgsql:0 allocation score on srv01: -INFINITY
+native_color: pgsql:0 allocation score on srv01: 0
 native_color: pgsql:0 allocation score on srv02: INFINITY
 native_color: pgsql:1 allocation score on srv01: INFINITY
-native_color: pgsql:1 allocation score on srv02: 0
+native_color: pgsql:1 allocation score on srv02: -INFINITY
 pgsql:0 promotion score on srv02: -INFINITY
 pgsql:1 promotion score on srv01: -INFINITY
diff --git a/pengine/test10/bug-cl-5219.scores b/pengine/test10/bug-cl-5219.scores
index cdb624a..991ca83 100644
--- a/pengine/test10/bug-cl-5219.scores
+++ b/pengine/test10/bug-cl-5219.scores
@@ -23,18 +23,18 @@ native_color: child2-service allocation score on ha1.test.anchor.net.au: -INFINI
 native_color: child2-service allocation score on ha2.test.anchor.net.au: 11
 native_color: parent-service allocation score on ha1.test.anchor.net.au: -INFINITY
 native_color: parent-service allocation score on ha2.test.anchor.net.au: 11
-native_color: stateful-child1:0 allocation score on ha1.test.anchor.net.au: -INFINITY
+native_color: stateful-child1:0 allocation score on ha1.test.anchor.net.au: 0
 native_color: stateful-child1:0 allocation score on ha2.test.anchor.net.au: 11
 native_color: stateful-child1:1 allocation score on ha1.test.anchor.net.au: 6
-native_color: stateful-child1:1 allocation score on ha2.test.anchor.net.au: 0
-native_color: stateful-child2:0 allocation score on ha1.test.anchor.net.au: -INFINITY
+native_color: stateful-child1:1 allocation score on ha2.test.anchor.net.au: -INFINITY
+native_color: stateful-child2:0 allocation score on ha1.test.anchor.net.au: 0
 native_color: stateful-child2:0 allocation score on ha2.test.anchor.net.au: 11
 native_color: stateful-child2:1 allocation score on ha1.test.anchor.net.au: 6
-native_color: stateful-child2:1 allocation score on ha2.test.anchor.net.au: 0
-native_color: stateful-parent:0 allocation score on ha1.test.anchor.net.au: -INFINITY
+native_color: stateful-child2:1 allocation score on ha2.test.anchor.net.au: -INFINITY
+native_color: stateful-parent:0 allocation score on ha1.test.anchor.net.au: 0
 native_color: stateful-parent:0 allocation score on ha2.test.anchor.net.au: 11
 native_color: stateful-parent:1 allocation score on ha1.test.anchor.net.au: 6
-native_color: stateful-parent:1 allocation score on ha2.test.anchor.net.au: 0
+native_color: stateful-parent:1 allocation score on ha2.test.anchor.net.au: -INFINITY
 stateful-child1:0 promotion score on ha2.test.anchor.net.au: INFINITY
 stateful-child1:1 promotion score on ha1.test.anchor.net.au: -INFINITY
 stateful-child2:0 promotion score on ha2.test.anchor.net.au: INFINITY
diff --git a/pengine/test10/bug-lf-2106.scores b/pengine/test10/bug-lf-2106.scores
index d7a2dbd..9b8e06c 100644
--- a/pengine/test10/bug-lf-2106.scores
+++ b/pengine/test10/bug-lf-2106.scores
@@ -96,8 +96,8 @@ native_color: itwiki allocation score on cl-virt-2: 176
 native_color: medomus-cvs allocation score on cl-virt-1: -INFINITY
 native_color: medomus-cvs allocation score on cl-virt-2: 226
 native_color: pingd:0 allocation score on cl-virt-1: 1
-native_color: pingd:0 allocation score on cl-virt-2: -INFINITY
-native_color: pingd:1 allocation score on cl-virt-1: 0
+native_color: pingd:0 allocation score on cl-virt-2: 0
+native_color: pingd:1 allocation score on cl-virt-1: -INFINITY
 native_color: pingd:1 allocation score on cl-virt-2: 1
 native_color: servsyslog allocation score on cl-virt-1: -INFINITY
 native_color: servsyslog allocation score on cl-virt-2: 176
diff --git a/pengine/test10/bug-lf-2317.scores b/pengine/test10/bug-lf-2317.scores
index 12b86e7..73ea6ee 100644
--- a/pengine/test10/bug-lf-2317.scores
+++ b/pengine/test10/bug-lf-2317.scores
@@ -9,7 +9,7 @@ drbd_r0:0 promotion score on ibm2.isg.si: 10000
 drbd_r0:1 promotion score on ibm1.isg.si: 10000
 native_color: HostingIsg allocation score on ibm1.isg.si: 0
 native_color: HostingIsg allocation score on ibm2.isg.si: 10
-native_color: drbd_r0:0 allocation score on ibm1.isg.si: -INFINITY
+native_color: drbd_r0:0 allocation score on ibm1.isg.si: 0
 native_color: drbd_r0:0 allocation score on ibm2.isg.si: 10001
 native_color: drbd_r0:1 allocation score on ibm1.isg.si: 10001
-native_color: drbd_r0:1 allocation score on ibm2.isg.si: 0
+native_color: drbd_r0:1 allocation score on ibm2.isg.si: -INFINITY
diff --git a/pengine/test10/bug-lf-2358.scores b/pengine/test10/bug-lf-2358.scores
index 2f8ea08..a04b469 100644
--- a/pengine/test10/bug-lf-2358.scores
+++ b/pengine/test10/bug-lf-2358.scores
@@ -45,10 +45,10 @@ native_color: res_drbd_mysql1:0 allocation score on alice.demo: -INFINITY
 native_color: res_drbd_mysql1:0 allocation score on bob.demo: 10001
 native_color: res_drbd_mysql1:1 allocation score on alice.demo: 0
 native_color: res_drbd_mysql1:1 allocation score on bob.demo: -INFINITY
-native_color: res_drbd_mysql2:0 allocation score on alice.demo: -INFINITY
+native_color: res_drbd_mysql2:0 allocation score on alice.demo: 0
 native_color: res_drbd_mysql2:0 allocation score on bob.demo: 10001
 native_color: res_drbd_mysql2:1 allocation score on alice.demo: 10001
-native_color: res_drbd_mysql2:1 allocation score on bob.demo: 0
+native_color: res_drbd_mysql2:1 allocation score on bob.demo: -INFINITY
 native_color: res_drbd_nfsexport:0 allocation score on alice.demo: -INFINITY
 native_color: res_drbd_nfsexport:0 allocation score on bob.demo: -INFINITY
 native_color: res_drbd_nfsexport:1 allocation score on alice.demo: -INFINITY
diff --git a/pengine/test10/bug-lf-2422.scores b/pengine/test10/bug-lf-2422.scores
index 14f1c05..738e423 100644
--- a/pengine/test10/bug-lf-2422.scores
+++ b/pengine/test10/bug-lf-2422.scores
@@ -109,12 +109,12 @@ group_color: clvm:0 allocation score on qa-suse-3: 0
 group_color: clvm:0 allocation score on qa-suse-4: 0
 group_color: clvm:1 allocation score on qa-suse-1: -INFINITY
 group_color: clvm:1 allocation score on qa-suse-2: 0
-group_color: clvm:1 allocation score on qa-suse-3: -INFINITY
+group_color: clvm:1 allocation score on qa-suse-3: 0
 group_color: clvm:1 allocation score on qa-suse-4: 1
 group_color: clvm:2 allocation score on qa-suse-1: -INFINITY
 group_color: clvm:2 allocation score on qa-suse-2: 0
 group_color: clvm:2 allocation score on qa-suse-3: 1
-group_color: clvm:2 allocation score on qa-suse-4: 0
+group_color: clvm:2 allocation score on qa-suse-4: -INFINITY
 group_color: clvm:3 allocation score on qa-suse-1: -INFINITY
 group_color: clvm:3 allocation score on qa-suse-2: 1
 group_color: clvm:3 allocation score on qa-suse-3: -INFINITY
@@ -125,12 +125,12 @@ group_color: cmirror:0 allocation score on qa-suse-3: 0
 group_color: cmirror:0 allocation score on qa-suse-4: 0
 group_color: cmirror:1 allocation score on qa-suse-1: -INFINITY
 group_color: cmirror:1 allocation score on qa-suse-2: 0
-group_color: cmirror:1 allocation score on qa-suse-3: -INFINITY
+group_color: cmirror:1 allocation score on qa-suse-3: 0
 group_color: cmirror:1 allocation score on qa-suse-4: 1
 group_color: cmirror:2 allocation score on qa-suse-1: -INFINITY
 group_color: cmirror:2 allocation score on qa-suse-2: 0
 group_color: cmirror:2 allocation score on qa-suse-3: 1
-group_color: cmirror:2 allocation score on qa-suse-4: 0
+group_color: cmirror:2 allocation score on qa-suse-4: -INFINITY
 group_color: cmirror:3 allocation score on qa-suse-1: -INFINITY
 group_color: cmirror:3 allocation score on qa-suse-2: 1
 group_color: cmirror:3 allocation score on qa-suse-3: -INFINITY
@@ -141,12 +141,12 @@ group_color: dlm:0 allocation score on qa-suse-3: 0
 group_color: dlm:0 allocation score on qa-suse-4: 0
 group_color: dlm:1 allocation score on qa-suse-1: -INFINITY
 group_color: dlm:1 allocation score on qa-suse-2: 0
-group_color: dlm:1 allocation score on qa-suse-3: -INFINITY
+group_color: dlm:1 allocation score on qa-suse-3: 0
 group_color: dlm:1 allocation score on qa-suse-4: 1
 group_color: dlm:2 allocation score on qa-suse-1: -INFINITY
 group_color: dlm:2 allocation score on qa-suse-2: 0
 group_color: dlm:2 allocation score on qa-suse-3: 1
-group_color: dlm:2 allocation score on qa-suse-4: 0
+group_color: dlm:2 allocation score on qa-suse-4: -INFINITY
 group_color: dlm:3 allocation score on qa-suse-1: -INFINITY
 group_color: dlm:3 allocation score on qa-suse-2: 1
 group_color: dlm:3 allocation score on qa-suse-3: -INFINITY
@@ -157,12 +157,12 @@ group_color: o2cb:0 allocation score on qa-suse-3: 0
 group_color: o2cb:0 allocation score on qa-suse-4: 0
 group_color: o2cb:1 allocation score on qa-suse-1: -INFINITY
 group_color: o2cb:1 allocation score on qa-suse-2: 0
-group_color: o2cb:1 allocation score on qa-suse-3: -INFINITY
+group_color: o2cb:1 allocation score on qa-suse-3: 0
 group_color: o2cb:1 allocation score on qa-suse-4: 1
 group_color: o2cb:2 allocation score on qa-suse-1: -INFINITY
 group_color: o2cb:2 allocation score on qa-suse-2: 0
 group_color: o2cb:2 allocation score on qa-suse-3: 1
-group_color: o2cb:2 allocation score on qa-suse-4: 0
+group_color: o2cb:2 allocation score on qa-suse-4: -INFINITY
 group_color: o2cb:3 allocation score on qa-suse-1: -INFINITY
 group_color: o2cb:3 allocation score on qa-suse-2: 1
 group_color: o2cb:3 allocation score on qa-suse-3: -INFINITY
@@ -173,12 +173,12 @@ group_color: o2stage:0 allocation score on qa-suse-3: 0
 group_color: o2stage:0 allocation score on qa-suse-4: 0
 group_color: o2stage:1 allocation score on qa-suse-1: -INFINITY
 group_color: o2stage:1 allocation score on qa-suse-2: 0
-group_color: o2stage:1 allocation score on qa-suse-3: -INFINITY
+group_color: o2stage:1 allocation score on qa-suse-3: 0
 group_color: o2stage:1 allocation score on qa-suse-4: 0
 group_color: o2stage:2 allocation score on qa-suse-1: -INFINITY
 group_color: o2stage:2 allocation score on qa-suse-2: 0
 group_color: o2stage:2 allocation score on qa-suse-3: 0
-group_color: o2stage:2 allocation score on qa-suse-4: 0
+group_color: o2stage:2 allocation score on qa-suse-4: -INFINITY
 group_color: o2stage:3 allocation score on qa-suse-1: -INFINITY
 group_color: o2stage:3 allocation score on qa-suse-2: 0
 group_color: o2stage:3 allocation score on qa-suse-3: -INFINITY
@@ -221,12 +221,12 @@ native_color: dlm:0 allocation score on qa-suse-3: 0
 native_color: dlm:0 allocation score on qa-suse-4: 0
 native_color: dlm:1 allocation score on qa-suse-1: -INFINITY
 native_color: dlm:1 allocation score on qa-suse-2: 0
-native_color: dlm:1 allocation score on qa-suse-3: -INFINITY
+native_color: dlm:1 allocation score on qa-suse-3: 0
 native_color: dlm:1 allocation score on qa-suse-4: 4
 native_color: dlm:2 allocation score on qa-suse-1: -INFINITY
 native_color: dlm:2 allocation score on qa-suse-2: 0
 native_color: dlm:2 allocation score on qa-suse-3: 4
-native_color: dlm:2 allocation score on qa-suse-4: 0
+native_color: dlm:2 allocation score on qa-suse-4: -INFINITY
 native_color: dlm:3 allocation score on qa-suse-1: -INFINITY
 native_color: dlm:3 allocation score on qa-suse-2: 4
 native_color: dlm:3 allocation score on qa-suse-3: -INFINITY
diff --git a/pengine/test10/bug-lf-2453.scores b/pengine/test10/bug-lf-2453.scores
index 3b044e7..b2ecd0a 100644
--- a/pengine/test10/bug-lf-2453.scores
+++ b/pengine/test10/bug-lf-2453.scores
@@ -12,8 +12,8 @@ clone_color: apache:0 allocation score on domu2: INFINITY
 clone_color: apache:1 allocation score on domu1: INFINITY
 clone_color: apache:1 allocation score on domu2: INFINITY
 native_color: DummyResource:0 allocation score on domu1: INFINITY
-native_color: DummyResource:0 allocation score on domu2: -INFINITY
-native_color: DummyResource:1 allocation score on domu1: INFINITY
+native_color: DummyResource:0 allocation score on domu2: INFINITY
+native_color: DummyResource:1 allocation score on domu1: -INFINITY
 native_color: DummyResource:1 allocation score on domu2: INFINITY
 native_color: PrimitiveResource1 allocation score on domu1: INFINITY
 native_color: apache:0 allocation score on domu1: -INFINITY
diff --git a/pengine/test10/bug-lf-2508.scores b/pengine/test10/bug-lf-2508.scores
index e3b3642..3c3ce16 100644
--- a/pengine/test10/bug-lf-2508.scores
+++ b/pengine/test10/bug-lf-2508.scores
@@ -247,13 +247,13 @@ group_color: grpStonith1:3 allocation score on srv01: -INFINITY
 group_color: grpStonith1:3 allocation score on srv02: -INFINITY
 group_color: grpStonith1:3 allocation score on srv03: -INFINITY
 group_color: grpStonith1:3 allocation score on srv04: -INFINITY
-group_color: grpStonith2:0 allocation score on srv01: -INFINITY
+group_color: grpStonith2:0 allocation score on srv01: 0
 group_color: grpStonith2:0 allocation score on srv02: -INFINITY
 group_color: grpStonith2:0 allocation score on srv03: 0
 group_color: grpStonith2:0 allocation score on srv04: 0
 group_color: grpStonith2:1 allocation score on srv01: 0
 group_color: grpStonith2:1 allocation score on srv02: -INFINITY
-group_color: grpStonith2:1 allocation score on srv03: 0
+group_color: grpStonith2:1 allocation score on srv03: -INFINITY
 group_color: grpStonith2:1 allocation score on srv04: 0
 group_color: grpStonith2:2 allocation score on srv01: -INFINITY
 group_color: grpStonith2:2 allocation score on srv02: -INFINITY
@@ -279,7 +279,7 @@ group_color: grpStonith3:3 allocation score on srv01: -INFINITY
 group_color: grpStonith3:3 allocation score on srv02: -INFINITY
 group_color: grpStonith3:3 allocation score on srv03: -INFINITY
 group_color: grpStonith3:3 allocation score on srv04: -INFINITY
-group_color: grpStonith4:0 allocation score on srv01: -INFINITY
+group_color: grpStonith4:0 allocation score on srv01: 0
 group_color: grpStonith4:0 allocation score on srv02: -INFINITY
 group_color: grpStonith4:0 allocation score on srv03: 0
 group_color: grpStonith4:0 allocation score on srv04: -INFINITY
@@ -289,7 +289,7 @@ group_color: grpStonith4:1 allocation score on srv03: -INFINITY
 group_color: grpStonith4:1 allocation score on srv04: -INFINITY
 group_color: grpStonith4:2 allocation score on srv01: 0
 group_color: grpStonith4:2 allocation score on srv02: -INFINITY
-group_color: grpStonith4:2 allocation score on srv03: 0
+group_color: grpStonith4:2 allocation score on srv03: -INFINITY
 group_color: grpStonith4:2 allocation score on srv04: -INFINITY
 group_color: grpStonith4:3 allocation score on srv01: -INFINITY
 group_color: grpStonith4:3 allocation score on srv02: -INFINITY
@@ -327,13 +327,13 @@ group_color: prmStonith1-3:3 allocation score on srv01: -INFINITY
 group_color: prmStonith1-3:3 allocation score on srv02: -INFINITY
 group_color: prmStonith1-3:3 allocation score on srv03: -INFINITY
 group_color: prmStonith1-3:3 allocation score on srv04: -INFINITY
-group_color: prmStonith2-1:0 allocation score on srv01: -INFINITY
+group_color: prmStonith2-1:0 allocation score on srv01: 0
 group_color: prmStonith2-1:0 allocation score on srv02: -INFINITY
 group_color: prmStonith2-1:0 allocation score on srv03: INFINITY
 group_color: prmStonith2-1:0 allocation score on srv04: 0
 group_color: prmStonith2-1:1 allocation score on srv01: INFINITY
 group_color: prmStonith2-1:1 allocation score on srv02: -INFINITY
-group_color: prmStonith2-1:1 allocation score on srv03: 0
+group_color: prmStonith2-1:1 allocation score on srv03: -INFINITY
 group_color: prmStonith2-1:1 allocation score on srv04: 0
 group_color: prmStonith2-1:2 allocation score on srv01: -INFINITY
 group_color: prmStonith2-1:2 allocation score on srv02: -INFINITY
@@ -343,13 +343,13 @@ group_color: prmStonith2-1:3 allocation score on srv01: -INFINITY
 group_color: prmStonith2-1:3 allocation score on srv02: -INFINITY
 group_color: prmStonith2-1:3 allocation score on srv03: -INFINITY
 group_color: prmStonith2-1:3 allocation score on srv04: -INFINITY
-group_color: prmStonith2-3:0 allocation score on srv01: -INFINITY
+group_color: prmStonith2-3:0 allocation score on srv01: 0
 group_color: prmStonith2-3:0 allocation score on srv02: -INFINITY
 group_color: prmStonith2-3:0 allocation score on srv03: INFINITY
 group_color: prmStonith2-3:0 allocation score on srv04: 0
 group_color: prmStonith2-3:1 allocation score on srv01: INFINITY
 group_color: prmStonith2-3:1 allocation score on srv02: -INFINITY
-group_color: prmStonith2-3:1 allocation score on srv03: 0
+group_color: prmStonith2-3:1 allocation score on srv03: -INFINITY
 group_color: prmStonith2-3:1 allocation score on srv04: 0
 group_color: prmStonith2-3:2 allocation score on srv01: -INFINITY
 group_color: prmStonith2-3:2 allocation score on srv02: -INFINITY
@@ -391,7 +391,7 @@ group_color: prmStonith3-3:3 allocation score on srv01: -INFINITY
 group_color: prmStonith3-3:3 allocation score on srv02: -INFINITY
 group_color: prmStonith3-3:3 allocation score on srv03: -INFINITY
 group_color: prmStonith3-3:3 allocation score on srv04: -INFINITY
-group_color: prmStonith4-1:0 allocation score on srv01: -INFINITY
+group_color: prmStonith4-1:0 allocation score on srv01: 0
 group_color: prmStonith4-1:0 allocation score on srv02: -INFINITY
 group_color: prmStonith4-1:0 allocation score on srv03: INFINITY
 group_color: prmStonith4-1:0 allocation score on srv04: -INFINITY
@@ -401,13 +401,13 @@ group_color: prmStonith4-1:1 allocation score on srv03: -INFINITY
 group_color: prmStonith4-1:1 allocation score on srv04: -INFINITY
 group_color: prmStonith4-1:2 allocation score on srv01: INFINITY
 group_color: prmStonith4-1:2 allocation score on srv02: -INFINITY
-group_color: prmStonith4-1:2 allocation score on srv03: 0
+group_color: prmStonith4-1:2 allocation score on srv03: -INFINITY
 group_color: prmStonith4-1:2 allocation score on srv04: -INFINITY
 group_color: prmStonith4-1:3 allocation score on srv01: -INFINITY
 group_color: prmStonith4-1:3 allocation score on srv02: -INFINITY
 group_color: prmStonith4-1:3 allocation score on srv03: -INFINITY
 group_color: prmStonith4-1:3 allocation score on srv04: -INFINITY
-group_color: prmStonith4-3:0 allocation score on srv01: -INFINITY
+group_color: prmStonith4-3:0 allocation score on srv01: 0
 group_color: prmStonith4-3:0 allocation score on srv02: -INFINITY
 group_color: prmStonith4-3:0 allocation score on srv03: INFINITY
 group_color: prmStonith4-3:0 allocation score on srv04: -INFINITY
@@ -417,7 +417,7 @@ group_color: prmStonith4-3:1 allocation score on srv03: -INFINITY
 group_color: prmStonith4-3:1 allocation score on srv04: -INFINITY
 group_color: prmStonith4-3:2 allocation score on srv01: INFINITY
 group_color: prmStonith4-3:2 allocation score on srv02: -INFINITY
-group_color: prmStonith4-3:2 allocation score on srv03: 0
+group_color: prmStonith4-3:2 allocation score on srv03: -INFINITY
 group_color: prmStonith4-3:2 allocation score on srv04: -INFINITY
 group_color: prmStonith4-3:3 allocation score on srv01: -INFINITY
 group_color: prmStonith4-3:3 allocation score on srv02: -INFINITY
@@ -467,13 +467,13 @@ native_color: prmStonith1-3:3 allocation score on srv01: -INFINITY
 native_color: prmStonith1-3:3 allocation score on srv02: -INFINITY
 native_color: prmStonith1-3:3 allocation score on srv03: -INFINITY
 native_color: prmStonith1-3:3 allocation score on srv04: -INFINITY
-native_color: prmStonith2-1:0 allocation score on srv01: -INFINITY
+native_color: prmStonith2-1:0 allocation score on srv01: 0
 native_color: prmStonith2-1:0 allocation score on srv02: -INFINITY
 native_color: prmStonith2-1:0 allocation score on srv03: INFINITY
 native_color: prmStonith2-1:0 allocation score on srv04: 0
 native_color: prmStonith2-1:1 allocation score on srv01: INFINITY
 native_color: prmStonith2-1:1 allocation score on srv02: -INFINITY
-native_color: prmStonith2-1:1 allocation score on srv03: 0
+native_color: prmStonith2-1:1 allocation score on srv03: -INFINITY
 native_color: prmStonith2-1:1 allocation score on srv04: 0
 native_color: prmStonith2-1:2 allocation score on srv01: -INFINITY
 native_color: prmStonith2-1:2 allocation score on srv02: -INFINITY
@@ -531,7 +531,7 @@ native_color: prmStonith3-3:3 allocation score on srv01: -INFINITY
 native_color: prmStonith3-3:3 allocation score on srv02: -INFINITY
 native_color: prmStonith3-3:3 allocation score on srv03: -INFINITY
 native_color: prmStonith3-3:3 allocation score on srv04: -INFINITY
-native_color: prmStonith4-1:0 allocation score on srv01: -INFINITY
+native_color: prmStonith4-1:0 allocation score on srv01: 0
 native_color: prmStonith4-1:0 allocation score on srv02: -INFINITY
 native_color: prmStonith4-1:0 allocation score on srv03: INFINITY
 native_color: prmStonith4-1:0 allocation score on srv04: -INFINITY
@@ -541,7 +541,7 @@ native_color: prmStonith4-1:1 allocation score on srv03: -INFINITY
 native_color: prmStonith4-1:1 allocation score on srv04: -INFINITY
 native_color: prmStonith4-1:2 allocation score on srv01: INFINITY
 native_color: prmStonith4-1:2 allocation score on srv02: -INFINITY
-native_color: prmStonith4-1:2 allocation score on srv03: 0
+native_color: prmStonith4-1:2 allocation score on srv03: -INFINITY
 native_color: prmStonith4-1:2 allocation score on srv04: -INFINITY
 native_color: prmStonith4-1:3 allocation score on srv01: -INFINITY
 native_color: prmStonith4-1:3 allocation score on srv02: -INFINITY
diff --git a/pengine/test10/bug-pm-11.scores b/pengine/test10/bug-pm-11.scores
index 4a150b0..7809a55 100644
--- a/pengine/test10/bug-pm-11.scores
+++ b/pengine/test10/bug-pm-11.scores
@@ -15,22 +15,22 @@ clone_color: stateful-2:1 allocation score on node-a: 0
 clone_color: stateful-2:1 allocation score on node-b: 0
 group:0 promotion score on node-b: 49
 group:1 promotion score on node-a: 99
-group_color: group:0 allocation score on node-a: -INFINITY
+group_color: group:0 allocation score on node-a: 0
 group_color: group:0 allocation score on node-b: 0
 group_color: group:1 allocation score on node-a: 0
-group_color: group:1 allocation score on node-b: 0
-group_color: stateful-1:0 allocation score on node-a: -INFINITY
+group_color: group:1 allocation score on node-b: -INFINITY
+group_color: stateful-1:0 allocation score on node-a: 0
 group_color: stateful-1:0 allocation score on node-b: 1
 group_color: stateful-1:1 allocation score on node-a: 1
-group_color: stateful-1:1 allocation score on node-b: 0
-group_color: stateful-2:0 allocation score on node-a: -INFINITY
+group_color: stateful-1:1 allocation score on node-b: -INFINITY
+group_color: stateful-2:0 allocation score on node-a: 0
 group_color: stateful-2:0 allocation score on node-b: 0
 group_color: stateful-2:1 allocation score on node-a: 0
-group_color: stateful-2:1 allocation score on node-b: 0
-native_color: stateful-1:0 allocation score on node-a: -INFINITY
+group_color: stateful-2:1 allocation score on node-b: -INFINITY
+native_color: stateful-1:0 allocation score on node-a: 0
 native_color: stateful-1:0 allocation score on node-b: 1
 native_color: stateful-1:1 allocation score on node-a: 1
-native_color: stateful-1:1 allocation score on node-b: 0
+native_color: stateful-1:1 allocation score on node-b: -INFINITY
 native_color: stateful-2:0 allocation score on node-a: -INFINITY
 native_color: stateful-2:0 allocation score on node-b: 0
 native_color: stateful-2:1 allocation score on node-a: 0
diff --git a/pengine/test10/bug-pm-12.scores b/pengine/test10/bug-pm-12.scores
index 0713859..db773a4 100644
--- a/pengine/test10/bug-pm-12.scores
+++ b/pengine/test10/bug-pm-12.scores
@@ -15,22 +15,22 @@ clone_color: stateful-2:1 allocation score on node-a: 1
 clone_color: stateful-2:1 allocation score on node-b: 0
 group:0 promotion score on node-b: 49
 group:1 promotion score on node-a: 99
-group_color: group:0 allocation score on node-a: -INFINITY
+group_color: group:0 allocation score on node-a: 0
 group_color: group:0 allocation score on node-b: 0
 group_color: group:1 allocation score on node-a: 0
-group_color: group:1 allocation score on node-b: 0
-group_color: stateful-1:0 allocation score on node-a: -INFINITY
+group_color: group:1 allocation score on node-b: -INFINITY
+group_color: stateful-1:0 allocation score on node-a: 0
 group_color: stateful-1:0 allocation score on node-b: 1
 group_color: stateful-1:1 allocation score on node-a: 1
-group_color: stateful-1:1 allocation score on node-b: 0
-group_color: stateful-2:0 allocation score on node-a: -INFINITY
+group_color: stateful-1:1 allocation score on node-b: -INFINITY
+group_color: stateful-2:0 allocation score on node-a: 0
 group_color: stateful-2:0 allocation score on node-b: 1
 group_color: stateful-2:1 allocation score on node-a: 1
-group_color: stateful-2:1 allocation score on node-b: 0
-native_color: stateful-1:0 allocation score on node-a: -INFINITY
+group_color: stateful-2:1 allocation score on node-b: -INFINITY
+native_color: stateful-1:0 allocation score on node-a: 0
 native_color: stateful-1:0 allocation score on node-b: 2
 native_color: stateful-1:1 allocation score on node-a: 2
-native_color: stateful-1:1 allocation score on node-b: 0
+native_color: stateful-1:1 allocation score on node-b: -INFINITY
 native_color: stateful-2:0 allocation score on node-a: -INFINITY
 native_color: stateful-2:0 allocation score on node-b: 1
 native_color: stateful-2:1 allocation score on node-a: 1
diff --git a/pengine/test10/bug-rh-1097457.scores b/pengine/test10/bug-rh-1097457.scores
index c93b195..7729421 100644
--- a/pengine/test10/bug-rh-1097457.scores
+++ b/pengine/test10/bug-rh-1097457.scores
@@ -137,18 +137,18 @@ native_color: FAKE6-IP allocation score on lamaVM3: -INFINITY
 native_color: FAKE6:0 allocation score on lama2: -INFINITY
 native_color: FAKE6:0 allocation score on lama3: -INFINITY
 native_color: FAKE6:0 allocation score on lamaVM1: 0
-native_color: FAKE6:0 allocation score on lamaVM2: -INFINITY
+native_color: FAKE6:0 allocation score on lamaVM2: 0
 native_color: FAKE6:0 allocation score on lamaVM3: 1
 native_color: FAKE6:1 allocation score on lama2: -INFINITY
 native_color: FAKE6:1 allocation score on lama3: -INFINITY
 native_color: FAKE6:1 allocation score on lamaVM1: 1
-native_color: FAKE6:1 allocation score on lamaVM2: -INFINITY
+native_color: FAKE6:1 allocation score on lamaVM2: 0
 native_color: FAKE6:1 allocation score on lamaVM3: -INFINITY
 native_color: FAKE6:2 allocation score on lama2: -INFINITY
 native_color: FAKE6:2 allocation score on lama3: -INFINITY
-native_color: FAKE6:2 allocation score on lamaVM1: 0
+native_color: FAKE6:2 allocation score on lamaVM1: -INFINITY
 native_color: FAKE6:2 allocation score on lamaVM2: 1
-native_color: FAKE6:2 allocation score on lamaVM3: 0
+native_color: FAKE6:2 allocation score on lamaVM3: -INFINITY
 native_color: FSlun1 allocation score on lama2: 0
 native_color: FSlun1 allocation score on lama3: 0
 native_color: FSlun1 allocation score on lamaVM1: INFINITY
diff --git a/pengine/test10/clone-interleave-2.scores b/pengine/test10/clone-interleave-2.scores
index aba18b3..1eb341c 100644
--- a/pengine/test10/clone-interleave-2.scores
+++ b/pengine/test10/clone-interleave-2.scores
@@ -36,12 +36,12 @@ clone_color: clone-3 allocation score on pcmk-1: 0
 clone_color: clone-3 allocation score on pcmk-2: 0
 clone_color: clone-3 allocation score on pcmk-3: 0
 native_color: child-1:0 allocation score on pcmk-1: 1
-native_color: child-1:0 allocation score on pcmk-2: -INFINITY
-native_color: child-1:0 allocation score on pcmk-3: -INFINITY
-native_color: child-1:1 allocation score on pcmk-1: 0
+native_color: child-1:0 allocation score on pcmk-2: 0
+native_color: child-1:0 allocation score on pcmk-3: 0
+native_color: child-1:1 allocation score on pcmk-1: -INFINITY
 native_color: child-1:1 allocation score on pcmk-2: 1
 native_color: child-1:1 allocation score on pcmk-3: 0
-native_color: child-1:2 allocation score on pcmk-1: 0
+native_color: child-1:2 allocation score on pcmk-1: -INFINITY
 native_color: child-1:2 allocation score on pcmk-2: -INFINITY
 native_color: child-1:2 allocation score on pcmk-3: 1
 native_color: child-2:0 allocation score on pcmk-1: -INFINITY
diff --git a/pengine/test10/clone-interleave-3.scores b/pengine/test10/clone-interleave-3.scores
index 951cfdd..689a176 100644
--- a/pengine/test10/clone-interleave-3.scores
+++ b/pengine/test10/clone-interleave-3.scores
@@ -36,12 +36,12 @@ clone_color: clone-3 allocation score on pcmk-1: 0
 clone_color: clone-3 allocation score on pcmk-2: 0
 clone_color: clone-3 allocation score on pcmk-3: 0
 native_color: child-1:0 allocation score on pcmk-1: 1
-native_color: child-1:0 allocation score on pcmk-2: -INFINITY
-native_color: child-1:0 allocation score on pcmk-3: -INFINITY
-native_color: child-1:1 allocation score on pcmk-1: 0
+native_color: child-1:0 allocation score on pcmk-2: 0
+native_color: child-1:0 allocation score on pcmk-3: 0
+native_color: child-1:1 allocation score on pcmk-1: -INFINITY
 native_color: child-1:1 allocation score on pcmk-2: 1
 native_color: child-1:1 allocation score on pcmk-3: 0
-native_color: child-1:2 allocation score on pcmk-1: 0
+native_color: child-1:2 allocation score on pcmk-1: -INFINITY
 native_color: child-1:2 allocation score on pcmk-2: -INFINITY
 native_color: child-1:2 allocation score on pcmk-3: 1
 native_color: child-2:0 allocation score on pcmk-1: 1
@@ -54,12 +54,12 @@ native_color: child-2:2 allocation score on pcmk-1: 0
 native_color: child-2:2 allocation score on pcmk-2: -INFINITY
 native_color: child-2:2 allocation score on pcmk-3: 1
 native_color: child-3:0 allocation score on pcmk-1: 1
-native_color: child-3:0 allocation score on pcmk-2: -INFINITY
-native_color: child-3:0 allocation score on pcmk-3: -INFINITY
-native_color: child-3:1 allocation score on pcmk-1: 0
+native_color: child-3:0 allocation score on pcmk-2: 0
+native_color: child-3:0 allocation score on pcmk-3: 0
+native_color: child-3:1 allocation score on pcmk-1: -INFINITY
 native_color: child-3:1 allocation score on pcmk-2: 1
 native_color: child-3:1 allocation score on pcmk-3: 0
-native_color: child-3:2 allocation score on pcmk-1: 0
+native_color: child-3:2 allocation score on pcmk-1: -INFINITY
 native_color: child-3:2 allocation score on pcmk-2: -INFINITY
 native_color: child-3:2 allocation score on pcmk-3: 1
 native_color: dummy allocation score on pcmk-1: 0
diff --git a/pengine/test10/clone-order-16instances.scores b/pengine/test10/clone-order-16instances.scores
index f5dadd7..410bcf7 100644
--- a/pengine/test10/clone-order-16instances.scores
+++ b/pengine/test10/clone-order-16instances.scores
@@ -801,7 +801,7 @@ native_color: clvmd:9 allocation score on virt-033.cluster-qe.lab.eng.brq.redhat
 native_color: clvmd:9 allocation score on virt-034.cluster-qe.lab.eng.brq.redhat.com: -INFINITY
 native_color: dlm:0 allocation score on virt-009.cluster-qe.lab.eng.brq.redhat.com: 0
 native_color: dlm:0 allocation score on virt-010.cluster-qe.lab.eng.brq.redhat.com: 1
-native_color: dlm:0 allocation score on virt-012.cluster-qe.lab.eng.brq.redhat.com: -INFINITY
+native_color: dlm:0 allocation score on virt-012.cluster-qe.lab.eng.brq.redhat.com: 0
 native_color: dlm:0 allocation score on virt-013.cluster-qe.lab.eng.brq.redhat.com: 0
 native_color: dlm:0 allocation score on virt-014.cluster-qe.lab.eng.brq.redhat.com: 0
 native_color: dlm:0 allocation score on virt-015.cluster-qe.lab.eng.brq.redhat.com: 0
@@ -816,7 +816,7 @@ native_color: dlm:0 allocation score on virt-032.cluster-qe.lab.eng.brq.redhat.c
 native_color: dlm:0 allocation score on virt-033.cluster-qe.lab.eng.brq.redhat.com: 0
 native_color: dlm:0 allocation score on virt-034.cluster-qe.lab.eng.brq.redhat.com: 0
 native_color: dlm:1 allocation score on virt-009.cluster-qe.lab.eng.brq.redhat.com: 0
-native_color: dlm:1 allocation score on virt-010.cluster-qe.lab.eng.brq.redhat.com: 0
+native_color: dlm:1 allocation score on virt-010.cluster-qe.lab.eng.brq.redhat.com: -INFINITY
 native_color: dlm:1 allocation score on virt-012.cluster-qe.lab.eng.brq.redhat.com: 1
 native_color: dlm:1 allocation score on virt-013.cluster-qe.lab.eng.brq.redhat.com: 0
 native_color: dlm:1 allocation score on virt-014.cluster-qe.lab.eng.brq.redhat.com: 0
diff --git a/pengine/test10/clone-require-all-1.scores b/pengine/test10/clone-require-all-1.scores
index fe3ce21..9601a10 100644
--- a/pengine/test10/clone-require-all-1.scores
+++ b/pengine/test10/clone-require-all-1.scores
@@ -40,10 +40,10 @@ clone_color: B:3 allocation score on rhel7-auto2: -INFINITY
 clone_color: B:3 allocation score on rhel7-auto3: 0
 clone_color: B:3 allocation score on rhel7-auto4: 0
 native_color: A:0 allocation score on rhel7-auto1: 1
-native_color: A:0 allocation score on rhel7-auto2: -INFINITY
+native_color: A:0 allocation score on rhel7-auto2: 0
 native_color: A:0 allocation score on rhel7-auto3: -INFINITY
 native_color: A:0 allocation score on rhel7-auto4: -INFINITY
-native_color: A:1 allocation score on rhel7-auto1: 0
+native_color: A:1 allocation score on rhel7-auto1: -INFINITY
 native_color: A:1 allocation score on rhel7-auto2: 1
 native_color: A:1 allocation score on rhel7-auto3: -INFINITY
 native_color: A:1 allocation score on rhel7-auto4: -INFINITY
diff --git a/pengine/test10/clone-require-all-3.scores b/pengine/test10/clone-require-all-3.scores
index 814a972..f1e739a 100644
--- a/pengine/test10/clone-require-all-3.scores
+++ b/pengine/test10/clone-require-all-3.scores
@@ -58,10 +58,10 @@ native_color: A:3 allocation score on rhel7-auto4: -INFINITY
 native_color: B:0 allocation score on rhel7-auto1: -INFINITY
 native_color: B:0 allocation score on rhel7-auto2: -INFINITY
 native_color: B:0 allocation score on rhel7-auto3: 1
-native_color: B:0 allocation score on rhel7-auto4: -INFINITY
+native_color: B:0 allocation score on rhel7-auto4: 0
 native_color: B:1 allocation score on rhel7-auto1: -INFINITY
 native_color: B:1 allocation score on rhel7-auto2: -INFINITY
-native_color: B:1 allocation score on rhel7-auto3: 0
+native_color: B:1 allocation score on rhel7-auto3: -INFINITY
 native_color: B:1 allocation score on rhel7-auto4: 1
 native_color: B:2 allocation score on rhel7-auto1: -INFINITY
 native_color: B:2 allocation score on rhel7-auto2: -INFINITY
diff --git a/pengine/test10/clone-require-all-5.scores b/pengine/test10/clone-require-all-5.scores
index cca6739..1123d60 100644
--- a/pengine/test10/clone-require-all-5.scores
+++ b/pengine/test10/clone-require-all-5.scores
@@ -40,10 +40,10 @@ clone_color: B:3 allocation score on rhel7-auto2: -INFINITY
 clone_color: B:3 allocation score on rhel7-auto3: 0
 clone_color: B:3 allocation score on rhel7-auto4: 0
 native_color: A:0 allocation score on rhel7-auto1: 1
-native_color: A:0 allocation score on rhel7-auto2: -INFINITY
+native_color: A:0 allocation score on rhel7-auto2: 0
 native_color: A:0 allocation score on rhel7-auto3: 0
 native_color: A:0 allocation score on rhel7-auto4: -INFINITY
-native_color: A:1 allocation score on rhel7-auto1: 0
+native_color: A:1 allocation score on rhel7-auto1: -INFINITY
 native_color: A:1 allocation score on rhel7-auto2: 1
 native_color: A:1 allocation score on rhel7-auto3: 0
 native_color: A:1 allocation score on rhel7-auto4: -INFINITY
diff --git a/pengine/test10/clone-require-all-6.scores b/pengine/test10/clone-require-all-6.scores
index 4e8ee5a..f293573 100644
--- a/pengine/test10/clone-require-all-6.scores
+++ b/pengine/test10/clone-require-all-6.scores
@@ -57,13 +57,13 @@ native_color: A:3 allocation score on rhel7-auto3: -INFINITY
 native_color: A:3 allocation score on rhel7-auto4: -INFINITY
 native_color: B:0 allocation score on rhel7-auto1: 1
 native_color: B:0 allocation score on rhel7-auto2: -INFINITY
-native_color: B:0 allocation score on rhel7-auto3: -INFINITY
-native_color: B:0 allocation score on rhel7-auto4: -INFINITY
-native_color: B:1 allocation score on rhel7-auto1: 0
+native_color: B:0 allocation score on rhel7-auto3: 0
+native_color: B:0 allocation score on rhel7-auto4: 0
+native_color: B:1 allocation score on rhel7-auto1: -INFINITY
 native_color: B:1 allocation score on rhel7-auto2: -INFINITY
 native_color: B:1 allocation score on rhel7-auto3: 1
 native_color: B:1 allocation score on rhel7-auto4: 0
-native_color: B:2 allocation score on rhel7-auto1: 0
+native_color: B:2 allocation score on rhel7-auto1: -INFINITY
 native_color: B:2 allocation score on rhel7-auto2: -INFINITY
 native_color: B:2 allocation score on rhel7-auto3: -INFINITY
 native_color: B:2 allocation score on rhel7-auto4: 1
diff --git a/pengine/test10/clone-require-all-no-interleave-3.scores b/pengine/test10/clone-require-all-no-interleave-3.scores
index 70dd2d1..76e8db6 100644
--- a/pengine/test10/clone-require-all-no-interleave-3.scores
+++ b/pengine/test10/clone-require-all-no-interleave-3.scores
@@ -96,10 +96,10 @@ native_color: C:0 allocation score on rhel7-auto2: -INFINITY
 native_color: C:0 allocation score on rhel7-auto3: 0
 native_color: C:0 allocation score on rhel7-auto4: -INFINITY
 native_color: C:1 allocation score on rhel7-auto1: 1
-native_color: C:1 allocation score on rhel7-auto2: -INFINITY
+native_color: C:1 allocation score on rhel7-auto2: 0
 native_color: C:1 allocation score on rhel7-auto3: 0
 native_color: C:1 allocation score on rhel7-auto4: -INFINITY
-native_color: C:2 allocation score on rhel7-auto1: 0
+native_color: C:2 allocation score on rhel7-auto1: -INFINITY
 native_color: C:2 allocation score on rhel7-auto2: 1
 native_color: C:2 allocation score on rhel7-auto3: 0
 native_color: C:2 allocation score on rhel7-auto4: -INFINITY
diff --git a/pengine/test10/clone_min_interleave_stop_one.scores b/pengine/test10/clone_min_interleave_stop_one.scores
index 1a98230..014bbad 100644
--- a/pengine/test10/clone_min_interleave_stop_one.scores
+++ b/pengine/test10/clone_min_interleave_stop_one.scores
@@ -39,27 +39,27 @@ native_color: FAKE1:0 allocation score on c7auto1: -INFINITY
 native_color: FAKE1:0 allocation score on c7auto2: -INFINITY
 native_color: FAKE1:0 allocation score on c7auto3: -INFINITY
 native_color: FAKE1:1 allocation score on c7auto1: 1
-native_color: FAKE1:1 allocation score on c7auto2: -INFINITY
+native_color: FAKE1:1 allocation score on c7auto2: 0
 native_color: FAKE1:1 allocation score on c7auto3: -INFINITY
-native_color: FAKE1:2 allocation score on c7auto1: 0
+native_color: FAKE1:2 allocation score on c7auto1: -INFINITY
 native_color: FAKE1:2 allocation score on c7auto2: 1
 native_color: FAKE1:2 allocation score on c7auto3: -INFINITY
 native_color: FAKE2:0 allocation score on c7auto1: 0
 native_color: FAKE2:0 allocation score on c7auto2: 0
 native_color: FAKE2:0 allocation score on c7auto3: 1
 native_color: FAKE2:1 allocation score on c7auto1: 1
-native_color: FAKE2:1 allocation score on c7auto2: -INFINITY
+native_color: FAKE2:1 allocation score on c7auto2: 0
 native_color: FAKE2:1 allocation score on c7auto3: -INFINITY
-native_color: FAKE2:2 allocation score on c7auto1: 0
+native_color: FAKE2:2 allocation score on c7auto1: -INFINITY
 native_color: FAKE2:2 allocation score on c7auto2: 1
 native_color: FAKE2:2 allocation score on c7auto3: -INFINITY
 native_color: FAKE3:0 allocation score on c7auto1: 0
 native_color: FAKE3:0 allocation score on c7auto2: 0
 native_color: FAKE3:0 allocation score on c7auto3: 1
 native_color: FAKE3:1 allocation score on c7auto1: 1
-native_color: FAKE3:1 allocation score on c7auto2: -INFINITY
+native_color: FAKE3:1 allocation score on c7auto2: 0
 native_color: FAKE3:1 allocation score on c7auto3: -INFINITY
-native_color: FAKE3:2 allocation score on c7auto1: 0
+native_color: FAKE3:2 allocation score on c7auto1: -INFINITY
 native_color: FAKE3:2 allocation score on c7auto2: 1
 native_color: FAKE3:2 allocation score on c7auto3: -INFINITY
 native_color: shooter allocation score on c7auto1: 0
diff --git a/pengine/test10/clone_min_interleave_stop_two.scores b/pengine/test10/clone_min_interleave_stop_two.scores
index ee7df92..f00467c 100644
--- a/pengine/test10/clone_min_interleave_stop_two.scores
+++ b/pengine/test10/clone_min_interleave_stop_two.scores
@@ -45,23 +45,23 @@ native_color: FAKE1:2 allocation score on c7auto1: -INFINITY
 native_color: FAKE1:2 allocation score on c7auto2: -INFINITY
 native_color: FAKE1:2 allocation score on c7auto3: -INFINITY
 native_color: FAKE2:0 allocation score on c7auto1: 0
-native_color: FAKE2:0 allocation score on c7auto2: -INFINITY
+native_color: FAKE2:0 allocation score on c7auto2: 0
 native_color: FAKE2:0 allocation score on c7auto3: 1
 native_color: FAKE2:1 allocation score on c7auto1: 1
-native_color: FAKE2:1 allocation score on c7auto2: -INFINITY
+native_color: FAKE2:1 allocation score on c7auto2: 0
 native_color: FAKE2:1 allocation score on c7auto3: -INFINITY
-native_color: FAKE2:2 allocation score on c7auto1: 0
+native_color: FAKE2:2 allocation score on c7auto1: -INFINITY
 native_color: FAKE2:2 allocation score on c7auto2: 1
-native_color: FAKE2:2 allocation score on c7auto3: 0
+native_color: FAKE2:2 allocation score on c7auto3: -INFINITY
 native_color: FAKE3:0 allocation score on c7auto1: 0
-native_color: FAKE3:0 allocation score on c7auto2: -INFINITY
+native_color: FAKE3:0 allocation score on c7auto2: 0
 native_color: FAKE3:0 allocation score on c7auto3: 1
 native_color: FAKE3:1 allocation score on c7auto1: 1
-native_color: FAKE3:1 allocation score on c7auto2: -INFINITY
+native_color: FAKE3:1 allocation score on c7auto2: 0
 native_color: FAKE3:1 allocation score on c7auto3: -INFINITY
-native_color: FAKE3:2 allocation score on c7auto1: 0
+native_color: FAKE3:2 allocation score on c7auto1: -INFINITY
 native_color: FAKE3:2 allocation score on c7auto2: 1
-native_color: FAKE3:2 allocation score on c7auto3: 0
+native_color: FAKE3:2 allocation score on c7auto3: -INFINITY
 native_color: shooter allocation score on c7auto1: 0
 native_color: shooter allocation score on c7auto2: 0
 native_color: shooter allocation score on c7auto3: 0
diff --git a/pengine/test10/clone_min_stop_one.scores b/pengine/test10/clone_min_stop_one.scores
index 1f28932..3621ed8 100644
--- a/pengine/test10/clone_min_stop_one.scores
+++ b/pengine/test10/clone_min_stop_one.scores
@@ -25,13 +25,13 @@ native_color: FAKE allocation score on c7auto3: -INFINITY
 native_color: FAKE allocation score on c7auto4: 0
 native_color: FAKECLONE:0 allocation score on c7auto1: 1
 native_color: FAKECLONE:0 allocation score on c7auto2: -INFINITY
-native_color: FAKECLONE:0 allocation score on c7auto3: -INFINITY
+native_color: FAKECLONE:0 allocation score on c7auto3: 0
 native_color: FAKECLONE:0 allocation score on c7auto4: -INFINITY
 native_color: FAKECLONE:1 allocation score on c7auto1: -INFINITY
 native_color: FAKECLONE:1 allocation score on c7auto2: -INFINITY
 native_color: FAKECLONE:1 allocation score on c7auto3: -INFINITY
 native_color: FAKECLONE:1 allocation score on c7auto4: -INFINITY
-native_color: FAKECLONE:2 allocation score on c7auto1: 0
+native_color: FAKECLONE:2 allocation score on c7auto1: -INFINITY
 native_color: FAKECLONE:2 allocation score on c7auto2: -INFINITY
 native_color: FAKECLONE:2 allocation score on c7auto3: 1
 native_color: FAKECLONE:2 allocation score on c7auto4: -INFINITY
diff --git a/pengine/test10/cloned_stop_one.scores b/pengine/test10/cloned_stop_one.scores
index 6d66638..35db5ca 100644
--- a/pengine/test10/cloned_stop_one.scores
+++ b/pengine/test10/cloned_stop_one.scores
@@ -56,10 +56,10 @@ native_color: FAKECLONE2:3 allocation score on c7auto2: -INFINITY
 native_color: FAKECLONE2:3 allocation score on c7auto3: -INFINITY
 native_color: FAKECLONE2:3 allocation score on c7auto4: -INFINITY
 native_color: FAKECLONE:0 allocation score on c7auto1: 1
-native_color: FAKECLONE:0 allocation score on c7auto2: -INFINITY
+native_color: FAKECLONE:0 allocation score on c7auto2: 0
 native_color: FAKECLONE:0 allocation score on c7auto3: -INFINITY
 native_color: FAKECLONE:0 allocation score on c7auto4: -INFINITY
-native_color: FAKECLONE:1 allocation score on c7auto1: 0
+native_color: FAKECLONE:1 allocation score on c7auto1: -INFINITY
 native_color: FAKECLONE:1 allocation score on c7auto2: 1
 native_color: FAKECLONE:1 allocation score on c7auto3: -INFINITY
 native_color: FAKECLONE:1 allocation score on c7auto4: -INFINITY
diff --git a/pengine/test10/colo_slave_w_native.scores b/pengine/test10/colo_slave_w_native.scores
index e91cb9a..1cb0071 100644
--- a/pengine/test10/colo_slave_w_native.scores
+++ b/pengine/test10/colo_slave_w_native.scores
@@ -9,7 +9,7 @@ clone_color: MS_RSC_NATIVE:1 allocation score on node1: 6
 clone_color: MS_RSC_NATIVE:1 allocation score on node2: 0
 native_color: A allocation score on node1: 0
 native_color: A allocation score on node2: 5000
-native_color: MS_RSC_NATIVE:0 allocation score on node1: -INFINITY
+native_color: MS_RSC_NATIVE:0 allocation score on node1: 0
 native_color: MS_RSC_NATIVE:0 allocation score on node2: 11
 native_color: MS_RSC_NATIVE:1 allocation score on node1: 6
-native_color: MS_RSC_NATIVE:1 allocation score on node2: 0
+native_color: MS_RSC_NATIVE:1 allocation score on node2: -INFINITY
diff --git a/pengine/test10/coloc-clone-stays-active.scores b/pengine/test10/coloc-clone-stays-active.scores
index adda9a0..8eb0ae7 100644
--- a/pengine/test10/coloc-clone-stays-active.scores
+++ b/pengine/test10/coloc-clone-stays-active.scores
@@ -231,10 +231,10 @@ group_color: iscsi-pool-0-target-all allocation score on s01-0: 1000
 group_color: iscsi-pool-0-target-all allocation score on s01-1: 0
 group_color: iscsi-pool-0-vips allocation score on s01-0: 0
 group_color: iscsi-pool-0-vips allocation score on s01-1: 0
-group_color: iscsi-pool-0-vips-fw:0 allocation score on s01-0: -INFINITY
+group_color: iscsi-pool-0-vips-fw:0 allocation score on s01-0: 0
 group_color: iscsi-pool-0-vips-fw:0 allocation score on s01-1: 2000
 group_color: iscsi-pool-0-vips-fw:1 allocation score on s01-0: 2000
-group_color: iscsi-pool-0-vips-fw:1 allocation score on s01-1: 0
+group_color: iscsi-pool-0-vips-fw:1 allocation score on s01-1: -INFINITY
 group_color: iscsi-pool-1-lun-1 allocation score on s01-0: 0
 group_color: iscsi-pool-1-lun-1 allocation score on s01-1: 0
 group_color: iscsi-pool-1-target allocation score on s01-0: 0
@@ -243,10 +243,10 @@ group_color: iscsi-pool-1-target-all allocation score on s01-0: 0
 group_color: iscsi-pool-1-target-all allocation score on s01-1: 1000
 group_color: iscsi-pool-1-vips allocation score on s01-0: 0
 group_color: iscsi-pool-1-vips allocation score on s01-1: 0
-group_color: iscsi-pool-1-vips-fw:0 allocation score on s01-0: -INFINITY
+group_color: iscsi-pool-1-vips-fw:0 allocation score on s01-0: 0
 group_color: iscsi-pool-1-vips-fw:0 allocation score on s01-1: 2000
 group_color: iscsi-pool-1-vips-fw:1 allocation score on s01-0: 2000
-group_color: iscsi-pool-1-vips-fw:1 allocation score on s01-1: 0
+group_color: iscsi-pool-1-vips-fw:1 allocation score on s01-1: -INFINITY
 group_color: iscsi-vds-dom0-stateless-0-lun-1 allocation score on s01-0: 0
 group_color: iscsi-vds-dom0-stateless-0-lun-1 allocation score on s01-1: 0
 group_color: iscsi-vds-dom0-stateless-0-target allocation score on s01-0: 0
@@ -255,20 +255,20 @@ group_color: iscsi-vds-dom0-stateless-0-target-all allocation score on s01-0: 0
 group_color: iscsi-vds-dom0-stateless-0-target-all allocation score on s01-1: 0
 group_color: iscsi-vds-dom0-stateless-0-vips allocation score on s01-0: 0
 group_color: iscsi-vds-dom0-stateless-0-vips allocation score on s01-1: 0
-group_color: iscsi-vds-dom0-stateless-0-vips-fw:0 allocation score on s01-0: -INFINITY
+group_color: iscsi-vds-dom0-stateless-0-vips-fw:0 allocation score on s01-0: 0
 group_color: iscsi-vds-dom0-stateless-0-vips-fw:0 allocation score on s01-1: 2000
 group_color: iscsi-vds-dom0-stateless-0-vips-fw:1 allocation score on s01-0: 2000
-group_color: iscsi-vds-dom0-stateless-0-vips-fw:1 allocation score on s01-1: 0
+group_color: iscsi-vds-dom0-stateless-0-vips-fw:1 allocation score on s01-1: -INFINITY
 group_color: nginx allocation score on s01-0: 0
 group_color: nginx allocation score on s01-1: 0
-group_color: ospf-routing:0 allocation score on s01-0: -INFINITY
+group_color: ospf-routing:0 allocation score on s01-0: 0
 group_color: ospf-routing:0 allocation score on s01-1: 0
 group_color: ospf-routing:1 allocation score on s01-0: 0
-group_color: ospf-routing:1 allocation score on s01-1: 0
-group_color: ospfd:0 allocation score on s01-0: -INFINITY
+group_color: ospf-routing:1 allocation score on s01-1: -INFINITY
+group_color: ospfd:0 allocation score on s01-0: 0
 group_color: ospfd:0 allocation score on s01-1: 1
 group_color: ospfd:1 allocation score on s01-0: 1
-group_color: ospfd:1 allocation score on s01-1: 0
+group_color: ospfd:1 allocation score on s01-1: -INFINITY
 group_color: syslog-ng allocation score on s01-0: 0
 group_color: syslog-ng allocation score on s01-1: 0
 group_color: syslog-server allocation score on s01-0: 0
@@ -279,16 +279,16 @@ group_color: tftpd allocation score on s01-0: 0
 group_color: tftpd allocation score on s01-1: 0
 group_color: vip-227 allocation score on s01-0: 0
 group_color: vip-227 allocation score on s01-1: 0
-group_color: vip-227-fw:0 allocation score on s01-0: -INFINITY
+group_color: vip-227-fw:0 allocation score on s01-0: 0
 group_color: vip-227-fw:0 allocation score on s01-1: 1
 group_color: vip-227-fw:1 allocation score on s01-0: 1
-group_color: vip-227-fw:1 allocation score on s01-1: 0
+group_color: vip-227-fw:1 allocation score on s01-1: -INFINITY
 group_color: vip-228 allocation score on s01-0: 0
 group_color: vip-228 allocation score on s01-1: 0
-group_color: vip-228-fw:0 allocation score on s01-0: -INFINITY
+group_color: vip-228-fw:0 allocation score on s01-0: 0
 group_color: vip-228-fw:0 allocation score on s01-1: 1
 group_color: vip-228-fw:1 allocation score on s01-0: 1
-group_color: vip-228-fw:1 allocation score on s01-1: 0
+group_color: vip-228-fw:1 allocation score on s01-1: -INFINITY
 group_color: vip-232 allocation score on s01-0: 0
 group_color: vip-232 allocation score on s01-1: 0
 group_color: vip-233 allocation score on s01-0: 0
@@ -297,32 +297,32 @@ group_color: vip-234 allocation score on s01-0: 0
 group_color: vip-234 allocation score on s01-1: 0
 group_color: vip-235 allocation score on s01-0: 0
 group_color: vip-235 allocation score on s01-1: 0
-group_color: vip-235-fw:0 allocation score on s01-0: -INFINITY
+group_color: vip-235-fw:0 allocation score on s01-0: 0
 group_color: vip-235-fw:0 allocation score on s01-1: 1
 group_color: vip-235-fw:1 allocation score on s01-0: 1
-group_color: vip-235-fw:1 allocation score on s01-1: 0
+group_color: vip-235-fw:1 allocation score on s01-1: -INFINITY
 group_color: vip-236 allocation score on s01-0: 0
 group_color: vip-236 allocation score on s01-1: 0
-group_color: vip-236-fw:0 allocation score on s01-0: -INFINITY
+group_color: vip-236-fw:0 allocation score on s01-0: 0
 group_color: vip-236-fw:0 allocation score on s01-1: 1
 group_color: vip-236-fw:1 allocation score on s01-0: 1
-group_color: vip-236-fw:1 allocation score on s01-1: 0
+group_color: vip-236-fw:1 allocation score on s01-1: -INFINITY
 group_color: vip-237 allocation score on s01-0: 0
 group_color: vip-237 allocation score on s01-1: 0
-group_color: vip-237-fw:0 allocation score on s01-0: -INFINITY
+group_color: vip-237-fw:0 allocation score on s01-0: 0
 group_color: vip-237-fw:0 allocation score on s01-1: 1
 group_color: vip-237-fw:1 allocation score on s01-0: 1
-group_color: vip-237-fw:1 allocation score on s01-1: 0
+group_color: vip-237-fw:1 allocation score on s01-1: -INFINITY
 group_color: vip-238 allocation score on s01-0: 0
 group_color: vip-238 allocation score on s01-1: 0
-group_color: vip-238-fw:0 allocation score on s01-0: -INFINITY
+group_color: vip-238-fw:0 allocation score on s01-0: 0
 group_color: vip-238-fw:0 allocation score on s01-1: 1
 group_color: vip-238-fw:1 allocation score on s01-0: 1
-group_color: vip-238-fw:1 allocation score on s01-1: 0
-group_color: zebra:0 allocation score on s01-0: -INFINITY
+group_color: vip-238-fw:1 allocation score on s01-1: -INFINITY
+group_color: zebra:0 allocation score on s01-0: 0
 group_color: zebra:0 allocation score on s01-1: 1
 group_color: zebra:1 allocation score on s01-0: 1
-group_color: zebra:1 allocation score on s01-1: 0
+group_color: zebra:1 allocation score on s01-1: -INFINITY
 iscsi-pool-0-vips-fw:0 promotion score on s01-1: -INFINITY
 iscsi-pool-0-vips-fw:1 promotion score on s01-0: 2000
 iscsi-pool-1-vips-fw:0 promotion score on s01-1: 2000
@@ -337,10 +337,10 @@ native_color: dhcpd:0 allocation score on s01-0: -INFINITY
 native_color: dhcpd:0 allocation score on s01-1: -INFINITY
 native_color: dhcpd:1 allocation score on s01-0: -INFINITY
 native_color: dhcpd:1 allocation score on s01-1: -INFINITY
-native_color: dlm:0 allocation score on s01-0: -INFINITY
+native_color: dlm:0 allocation score on s01-0: 0
 native_color: dlm:0 allocation score on s01-1: 1
 native_color: dlm:1 allocation score on s01-0: 1
-native_color: dlm:1 allocation score on s01-1: 0
+native_color: dlm:1 allocation score on s01-1: -INFINITY
 native_color: drbd-pool-0:0 allocation score on s01-0: -INFINITY
 native_color: drbd-pool-0:0 allocation score on s01-1: 10001
 native_color: drbd-pool-0:1 allocation score on s01-0: 10001
@@ -353,26 +353,26 @@ native_color: drbd-s01-logs:0 allocation score on s01-0: 0
 native_color: drbd-s01-logs:0 allocation score on s01-1: 10001
 native_color: drbd-s01-logs:1 allocation score on s01-0: 10001
 native_color: drbd-s01-logs:1 allocation score on s01-1: -INFINITY
-native_color: drbd-s01-service:0 allocation score on s01-0: -INFINITY
+native_color: drbd-s01-service:0 allocation score on s01-0: 0
 native_color: drbd-s01-service:0 allocation score on s01-1: 10001
 native_color: drbd-s01-service:1 allocation score on s01-0: 10001
-native_color: drbd-s01-service:1 allocation score on s01-1: 0
-native_color: drbd-s01-vm-data:0 allocation score on s01-0: -INFINITY
+native_color: drbd-s01-service:1 allocation score on s01-1: -INFINITY
+native_color: drbd-s01-vm-data:0 allocation score on s01-0: 0
 native_color: drbd-s01-vm-data:0 allocation score on s01-1: 10001
 native_color: drbd-s01-vm-data:1 allocation score on s01-0: 10001
-native_color: drbd-s01-vm-data:1 allocation score on s01-1: 0
-native_color: drbd-vds-dom0-stateless-0:0 allocation score on s01-0: -INFINITY
+native_color: drbd-s01-vm-data:1 allocation score on s01-1: -INFINITY
+native_color: drbd-vds-dom0-stateless-0:0 allocation score on s01-0: 0
 native_color: drbd-vds-dom0-stateless-0:0 allocation score on s01-1: 10001
 native_color: drbd-vds-dom0-stateless-0:1 allocation score on s01-0: 10001
-native_color: drbd-vds-dom0-stateless-0:1 allocation score on s01-1: 0
-native_color: drbd-vds-http:0 allocation score on s01-0: -INFINITY
+native_color: drbd-vds-dom0-stateless-0:1 allocation score on s01-1: -INFINITY
+native_color: drbd-vds-http:0 allocation score on s01-0: 0
 native_color: drbd-vds-http:0 allocation score on s01-1: 10001
 native_color: drbd-vds-http:1 allocation score on s01-0: 10001
-native_color: drbd-vds-http:1 allocation score on s01-1: 0
-native_color: drbd-vds-tftpboot:0 allocation score on s01-0: -INFINITY
+native_color: drbd-vds-http:1 allocation score on s01-1: -INFINITY
+native_color: drbd-vds-tftpboot:0 allocation score on s01-0: 0
 native_color: drbd-vds-tftpboot:0 allocation score on s01-1: 10001
 native_color: drbd-vds-tftpboot:1 allocation score on s01-0: 10001
-native_color: drbd-vds-tftpboot:1 allocation score on s01-1: 0
+native_color: drbd-vds-tftpboot:1 allocation score on s01-1: -INFINITY
 native_color: drbdlinks-s01-service:0 allocation score on s01-0: -INFINITY
 native_color: drbdlinks-s01-service:0 allocation score on s01-1: 1
 native_color: drbdlinks-s01-service:1 allocation score on s01-0: 1
@@ -397,10 +397,10 @@ native_color: iscsi-vds-dom0-stateless-0-lun-1 allocation score on s01-0: -INFIN
 native_color: iscsi-vds-dom0-stateless-0-lun-1 allocation score on s01-1: -INFINITY
 native_color: iscsi-vds-dom0-stateless-0-target allocation score on s01-0: -INFINITY
 native_color: iscsi-vds-dom0-stateless-0-target allocation score on s01-1: -INFINITY
-native_color: libvirtd:0 allocation score on s01-0: -INFINITY
+native_color: libvirtd:0 allocation score on s01-0: 0
 native_color: libvirtd:0 allocation score on s01-1: 1
 native_color: libvirtd:1 allocation score on s01-0: 1
-native_color: libvirtd:1 allocation score on s01-1: 0
+native_color: libvirtd:1 allocation score on s01-1: -INFINITY
 native_color: mgmt-vm allocation score on s01-0: -INFINITY
 native_color: mgmt-vm allocation score on s01-1: 0
 native_color: nginx allocation score on s01-0: -INFINITY
@@ -413,10 +413,10 @@ native_color: ospfd:0 allocation score on s01-0: -INFINITY
 native_color: ospfd:0 allocation score on s01-1: 1
 native_color: ospfd:1 allocation score on s01-0: 1
 native_color: ospfd:1 allocation score on s01-1: -INFINITY
-native_color: ping-bmc-and-switch:0 allocation score on s01-0: -INFINITY
+native_color: ping-bmc-and-switch:0 allocation score on s01-0: 0
 native_color: ping-bmc-and-switch:0 allocation score on s01-1: 1
 native_color: ping-bmc-and-switch:1 allocation score on s01-0: 1
-native_color: ping-bmc-and-switch:1 allocation score on s01-1: 0
+native_color: ping-bmc-and-switch:1 allocation score on s01-1: -INFINITY
 native_color: s01-logs-fs:0 allocation score on s01-0: -INFINITY
 native_color: s01-logs-fs:0 allocation score on s01-1: 10002
 native_color: s01-logs-fs:1 allocation score on s01-0: 10002
@@ -455,10 +455,10 @@ native_color: vg-s01-vm-data:1 allocation score on s01-0: 10002
 native_color: vg-s01-vm-data:1 allocation score on s01-1: -INFINITY
 native_color: vip-227 allocation score on s01-0: -INFINITY
 native_color: vip-227 allocation score on s01-1: -INFINITY
-native_color: vip-227-fw:0 allocation score on s01-0: -INFINITY
+native_color: vip-227-fw:0 allocation score on s01-0: 0
 native_color: vip-227-fw:0 allocation score on s01-1: 2
 native_color: vip-227-fw:1 allocation score on s01-0: 2
-native_color: vip-227-fw:1 allocation score on s01-1: 0
+native_color: vip-227-fw:1 allocation score on s01-1: -INFINITY
 native_color: vip-228 allocation score on s01-0: -INFINITY
 native_color: vip-228 allocation score on s01-1: -INFINITY
 native_color: vip-228-fw:0 allocation score on s01-0: -INFINITY
@@ -473,10 +473,10 @@ native_color: vip-234 allocation score on s01-0: 0
 native_color: vip-234 allocation score on s01-1: 0
 native_color: vip-235 allocation score on s01-0: 0
 native_color: vip-235 allocation score on s01-1: -INFINITY
-native_color: vip-235-fw:0 allocation score on s01-0: -INFINITY
+native_color: vip-235-fw:0 allocation score on s01-0: 0
 native_color: vip-235-fw:0 allocation score on s01-1: 2
 native_color: vip-235-fw:1 allocation score on s01-0: 2
-native_color: vip-235-fw:1 allocation score on s01-1: 0
+native_color: vip-235-fw:1 allocation score on s01-1: -INFINITY
 native_color: vip-236 allocation score on s01-0: 0
 native_color: vip-236 allocation score on s01-1: -INFINITY
 native_color: vip-236-fw:0 allocation score on s01-0: -INFINITY
@@ -485,21 +485,21 @@ native_color: vip-236-fw:1 allocation score on s01-0: 1
 native_color: vip-236-fw:1 allocation score on s01-1: -INFINITY
 native_color: vip-237 allocation score on s01-0: -INFINITY
 native_color: vip-237 allocation score on s01-1: 0
-native_color: vip-237-fw:0 allocation score on s01-0: -INFINITY
+native_color: vip-237-fw:0 allocation score on s01-0: 0
 native_color: vip-237-fw:0 allocation score on s01-1: 2
 native_color: vip-237-fw:1 allocation score on s01-0: 2
-native_color: vip-237-fw:1 allocation score on s01-1: 0
+native_color: vip-237-fw:1 allocation score on s01-1: -INFINITY
 native_color: vip-238 allocation score on s01-0: -INFINITY
 native_color: vip-238 allocation score on s01-1: 0
 native_color: vip-238-fw:0 allocation score on s01-0: -INFINITY
 native_color: vip-238-fw:0 allocation score on s01-1: 1
 native_color: vip-238-fw:1 allocation score on s01-0: 1
 native_color: vip-238-fw:1 allocation score on s01-1: -INFINITY
-native_color: xinetd:0 allocation score on s01-0: -INFINITY
+native_color: xinetd:0 allocation score on s01-0: 0
 native_color: xinetd:0 allocation score on s01-1: 1
 native_color: xinetd:1 allocation score on s01-0: 1
-native_color: xinetd:1 allocation score on s01-1: 0
-native_color: zebra:0 allocation score on s01-0: -INFINITY
+native_color: xinetd:1 allocation score on s01-1: -INFINITY
+native_color: zebra:0 allocation score on s01-0: 0
 native_color: zebra:0 allocation score on s01-1: 2
 native_color: zebra:1 allocation score on s01-0: 2
-native_color: zebra:1 allocation score on s01-1: 0
+native_color: zebra:1 allocation score on s01-1: -INFINITY
diff --git a/pengine/test10/colocate-primitive-with-clone.scores b/pengine/test10/colocate-primitive-with-clone.scores
index 4f40acc..b04a1e7 100644
--- a/pengine/test10/colocate-primitive-with-clone.scores
+++ b/pengine/test10/colocate-primitive-with-clone.scores
@@ -285,10 +285,10 @@ native_color: UmVIPcheck allocation score on srv03: -INFINITY
 native_color: UmVIPcheck allocation score on srv04: 100
 native_color: clnG3dummy01:0 allocation score on srv01: -INFINITY
 native_color: clnG3dummy01:0 allocation score on srv02: 100
-native_color: clnG3dummy01:0 allocation score on srv03: 0
+native_color: clnG3dummy01:0 allocation score on srv03: -INFINITY
 native_color: clnG3dummy01:0 allocation score on srv04: -INFINITY
 native_color: clnG3dummy01:1 allocation score on srv01: -INFINITY
-native_color: clnG3dummy01:1 allocation score on srv02: -INFINITY
+native_color: clnG3dummy01:1 allocation score on srv02: 0
 native_color: clnG3dummy01:1 allocation score on srv03: 100
 native_color: clnG3dummy01:1 allocation score on srv04: -INFINITY
 native_color: clnG3dummy01:2 allocation score on srv01: -INFINITY
@@ -301,10 +301,10 @@ native_color: clnG3dummy01:3 allocation score on srv03: -INFINITY
 native_color: clnG3dummy01:3 allocation score on srv04: -INFINITY
 native_color: clnG3dummy02:0 allocation score on srv01: -INFINITY
 native_color: clnG3dummy02:0 allocation score on srv02: 100
-native_color: clnG3dummy02:0 allocation score on srv03: 0
+native_color: clnG3dummy02:0 allocation score on srv03: -INFINITY
 native_color: clnG3dummy02:0 allocation score on srv04: -INFINITY
 native_color: clnG3dummy02:1 allocation score on srv01: -INFINITY
-native_color: clnG3dummy02:1 allocation score on srv02: -INFINITY
+native_color: clnG3dummy02:1 allocation score on srv02: 0
 native_color: clnG3dummy02:1 allocation score on srv03: 100
 native_color: clnG3dummy02:1 allocation score on srv04: -INFINITY
 native_color: clnG3dummy02:2 allocation score on srv01: -INFINITY
@@ -317,10 +317,10 @@ native_color: clnG3dummy02:3 allocation score on srv03: -INFINITY
 native_color: clnG3dummy02:3 allocation score on srv04: -INFINITY
 native_color: clnPrmDiskd1:0 allocation score on srv01: -INFINITY
 native_color: clnPrmDiskd1:0 allocation score on srv02: 100
-native_color: clnPrmDiskd1:0 allocation score on srv03: 0
+native_color: clnPrmDiskd1:0 allocation score on srv03: -INFINITY
 native_color: clnPrmDiskd1:0 allocation score on srv04: -INFINITY
 native_color: clnPrmDiskd1:1 allocation score on srv01: -INFINITY
-native_color: clnPrmDiskd1:1 allocation score on srv02: -INFINITY
+native_color: clnPrmDiskd1:1 allocation score on srv02: 0
 native_color: clnPrmDiskd1:1 allocation score on srv03: 100
 native_color: clnPrmDiskd1:1 allocation score on srv04: -INFINITY
 native_color: clnPrmDiskd1:2 allocation score on srv01: -INFINITY
@@ -333,10 +333,10 @@ native_color: clnPrmDiskd1:3 allocation score on srv03: -INFINITY
 native_color: clnPrmDiskd1:3 allocation score on srv04: -INFINITY
 native_color: clnPrmPingd:0 allocation score on srv01: -INFINITY
 native_color: clnPrmPingd:0 allocation score on srv02: 100
-native_color: clnPrmPingd:0 allocation score on srv03: 0
+native_color: clnPrmPingd:0 allocation score on srv03: -INFINITY
 native_color: clnPrmPingd:0 allocation score on srv04: -INFINITY
 native_color: clnPrmPingd:1 allocation score on srv01: -INFINITY
-native_color: clnPrmPingd:1 allocation score on srv02: -INFINITY
+native_color: clnPrmPingd:1 allocation score on srv02: 0
 native_color: clnPrmPingd:1 allocation score on srv03: 100
 native_color: clnPrmPingd:1 allocation score on srv04: -INFINITY
 native_color: clnPrmPingd:2 allocation score on srv01: -INFINITY
diff --git a/pengine/test10/complex_enforce_colo.scores b/pengine/test10/complex_enforce_colo.scores
index 9394084..e64c6e8 100644
--- a/pengine/test10/complex_enforce_colo.scores
+++ b/pengine/test10/complex_enforce_colo.scores
@@ -477,12 +477,12 @@ native_color: ceilometer-central allocation score on rhos6-node1: 0
 native_color: ceilometer-central allocation score on rhos6-node2: 0
 native_color: ceilometer-central allocation score on rhos6-node3: 0
 native_color: ceilometer-collector:0 allocation score on rhos6-node1: 1
-native_color: ceilometer-collector:0 allocation score on rhos6-node2: -INFINITY
-native_color: ceilometer-collector:0 allocation score on rhos6-node3: -INFINITY
-native_color: ceilometer-collector:1 allocation score on rhos6-node1: 0
+native_color: ceilometer-collector:0 allocation score on rhos6-node2: 0
+native_color: ceilometer-collector:0 allocation score on rhos6-node3: 0
+native_color: ceilometer-collector:1 allocation score on rhos6-node1: -INFINITY
 native_color: ceilometer-collector:1 allocation score on rhos6-node2: 1
 native_color: ceilometer-collector:1 allocation score on rhos6-node3: 0
-native_color: ceilometer-collector:2 allocation score on rhos6-node1: 0
+native_color: ceilometer-collector:2 allocation score on rhos6-node1: -INFINITY
 native_color: ceilometer-collector:2 allocation score on rhos6-node2: -INFINITY
 native_color: ceilometer-collector:2 allocation score on rhos6-node3: 1
 native_color: ceilometer-delay:0 allocation score on rhos6-node1: 1
@@ -567,25 +567,25 @@ native_color: heat-api-cloudwatch:2 allocation score on rhos6-node1: -INFINITY
 native_color: heat-api-cloudwatch:2 allocation score on rhos6-node2: -INFINITY
 native_color: heat-api-cloudwatch:2 allocation score on rhos6-node3: 1
 native_color: heat-api:0 allocation score on rhos6-node1: 1
-native_color: heat-api:0 allocation score on rhos6-node2: -INFINITY
-native_color: heat-api:0 allocation score on rhos6-node3: -INFINITY
-native_color: heat-api:1 allocation score on rhos6-node1: 0
+native_color: heat-api:0 allocation score on rhos6-node2: 0
+native_color: heat-api:0 allocation score on rhos6-node3: 0
+native_color: heat-api:1 allocation score on rhos6-node1: -INFINITY
 native_color: heat-api:1 allocation score on rhos6-node2: 1
 native_color: heat-api:1 allocation score on rhos6-node3: 0
-native_color: heat-api:2 allocation score on rhos6-node1: 0
+native_color: heat-api:2 allocation score on rhos6-node1: -INFINITY
 native_color: heat-api:2 allocation score on rhos6-node2: -INFINITY
 native_color: heat-api:2 allocation score on rhos6-node3: 1
 native_color: heat-engine allocation score on rhos6-node1: 0
 native_color: heat-engine allocation score on rhos6-node2: 0
 native_color: heat-engine allocation score on rhos6-node3: 0
 native_color: horizon:0 allocation score on rhos6-node1: 1
-native_color: horizon:0 allocation score on rhos6-node2: -INFINITY
-native_color: horizon:0 allocation score on rhos6-node3: -INFINITY
-native_color: horizon:1 allocation score on rhos6-node1: 0
+native_color: horizon:0 allocation score on rhos6-node2: 0
+native_color: horizon:0 allocation score on rhos6-node3: 0
+native_color: horizon:1 allocation score on rhos6-node1: -INFINITY
 native_color: horizon:1 allocation score on rhos6-node2: 1
-native_color: horizon:1 allocation score on rhos6-node3: -INFINITY
-native_color: horizon:2 allocation score on rhos6-node1: 0
-native_color: horizon:2 allocation score on rhos6-node2: 0
+native_color: horizon:1 allocation score on rhos6-node3: 0
+native_color: horizon:2 allocation score on rhos6-node1: -INFINITY
+native_color: horizon:2 allocation score on rhos6-node2: -INFINITY
 native_color: horizon:2 allocation score on rhos6-node3: 1
 native_color: keystone:0 allocation score on rhos6-node1: -INFINITY
 native_color: keystone:0 allocation score on rhos6-node2: -INFINITY
@@ -687,13 +687,13 @@ native_color: neutron-scale:2 allocation score on rhos6-node1: 1
 native_color: neutron-scale:2 allocation score on rhos6-node2: -INFINITY
 native_color: neutron-scale:2 allocation score on rhos6-node3: -INFINITY
 native_color: neutron-server:0 allocation score on rhos6-node1: 1
-native_color: neutron-server:0 allocation score on rhos6-node2: -INFINITY
-native_color: neutron-server:0 allocation score on rhos6-node3: -INFINITY
-native_color: neutron-server:1 allocation score on rhos6-node1: 0
+native_color: neutron-server:0 allocation score on rhos6-node2: 0
+native_color: neutron-server:0 allocation score on rhos6-node3: 0
+native_color: neutron-server:1 allocation score on rhos6-node1: -INFINITY
 native_color: neutron-server:1 allocation score on rhos6-node2: 1
-native_color: neutron-server:1 allocation score on rhos6-node3: -INFINITY
-native_color: neutron-server:2 allocation score on rhos6-node1: 0
-native_color: neutron-server:2 allocation score on rhos6-node2: 0
+native_color: neutron-server:1 allocation score on rhos6-node3: 0
+native_color: neutron-server:2 allocation score on rhos6-node1: -INFINITY
+native_color: neutron-server:2 allocation score on rhos6-node2: -INFINITY
 native_color: neutron-server:2 allocation score on rhos6-node3: 1
 native_color: node1-fence allocation score on rhos6-node1: 0
 native_color: node1-fence allocation score on rhos6-node2: 0
@@ -723,13 +723,13 @@ native_color: nova-conductor:2 allocation score on rhos6-node1: -INFINITY
 native_color: nova-conductor:2 allocation score on rhos6-node2: -INFINITY
 native_color: nova-conductor:2 allocation score on rhos6-node3: 1
 native_color: nova-consoleauth:0 allocation score on rhos6-node1: 1
-native_color: nova-consoleauth:0 allocation score on rhos6-node2: -INFINITY
-native_color: nova-consoleauth:0 allocation score on rhos6-node3: -INFINITY
-native_color: nova-consoleauth:1 allocation score on rhos6-node1: 0
+native_color: nova-consoleauth:0 allocation score on rhos6-node2: 0
+native_color: nova-consoleauth:0 allocation score on rhos6-node3: 0
+native_color: nova-consoleauth:1 allocation score on rhos6-node1: -INFINITY
 native_color: nova-consoleauth:1 allocation score on rhos6-node2: 1
-native_color: nova-consoleauth:1 allocation score on rhos6-node3: -INFINITY
-native_color: nova-consoleauth:2 allocation score on rhos6-node1: 0
-native_color: nova-consoleauth:2 allocation score on rhos6-node2: 0
+native_color: nova-consoleauth:1 allocation score on rhos6-node3: 0
+native_color: nova-consoleauth:2 allocation score on rhos6-node1: -INFINITY
+native_color: nova-consoleauth:2 allocation score on rhos6-node2: -INFINITY
 native_color: nova-consoleauth:2 allocation score on rhos6-node3: 1
 native_color: nova-novncproxy:0 allocation score on rhos6-node1: 1
 native_color: nova-novncproxy:0 allocation score on rhos6-node2: -INFINITY
@@ -777,12 +777,12 @@ native_color: swift-container:2 allocation score on rhos6-node1: -INFINITY
 native_color: swift-container:2 allocation score on rhos6-node2: -INFINITY
 native_color: swift-container:2 allocation score on rhos6-node3: 1
 native_color: swift-fs:0 allocation score on rhos6-node1: 1
-native_color: swift-fs:0 allocation score on rhos6-node2: -INFINITY
-native_color: swift-fs:0 allocation score on rhos6-node3: -INFINITY
-native_color: swift-fs:1 allocation score on rhos6-node1: 0
+native_color: swift-fs:0 allocation score on rhos6-node2: 0
+native_color: swift-fs:0 allocation score on rhos6-node3: 0
+native_color: swift-fs:1 allocation score on rhos6-node1: -INFINITY
 native_color: swift-fs:1 allocation score on rhos6-node2: 1
 native_color: swift-fs:1 allocation score on rhos6-node3: 0
-native_color: swift-fs:2 allocation score on rhos6-node1: 0
+native_color: swift-fs:2 allocation score on rhos6-node1: -INFINITY
 native_color: swift-fs:2 allocation score on rhos6-node2: -INFINITY
 native_color: swift-fs:2 allocation score on rhos6-node3: 1
 native_color: swift-object-expirer allocation score on rhos6-node1: 0
@@ -798,12 +798,12 @@ native_color: swift-object:2 allocation score on rhos6-node1: -INFINITY
 native_color: swift-object:2 allocation score on rhos6-node2: -INFINITY
 native_color: swift-object:2 allocation score on rhos6-node3: 1
 native_color: swift-proxy:0 allocation score on rhos6-node1: 1
-native_color: swift-proxy:0 allocation score on rhos6-node2: -INFINITY
-native_color: swift-proxy:0 allocation score on rhos6-node3: -INFINITY
-native_color: swift-proxy:1 allocation score on rhos6-node1: 0
+native_color: swift-proxy:0 allocation score on rhos6-node2: 0
+native_color: swift-proxy:0 allocation score on rhos6-node3: 0
+native_color: swift-proxy:1 allocation score on rhos6-node1: -INFINITY
 native_color: swift-proxy:1 allocation score on rhos6-node2: 1
 native_color: swift-proxy:1 allocation score on rhos6-node3: 0
-native_color: swift-proxy:2 allocation score on rhos6-node1: 0
+native_color: swift-proxy:2 allocation score on rhos6-node1: -INFINITY
 native_color: swift-proxy:2 allocation score on rhos6-node2: -INFINITY
 native_color: swift-proxy:2 allocation score on rhos6-node3: 1
 native_color: vip-ceilometer allocation score on rhos6-node1: 0
diff --git a/pengine/test10/container-is-remote-node.scores b/pengine/test10/container-is-remote-node.scores
index 486ecbe..6c743c5 100644
--- a/pengine/test10/container-is-remote-node.scores
+++ b/pengine/test10/container-is-remote-node.scores
@@ -82,9 +82,9 @@ native_color: clvmd:2 allocation score on lama2: -INFINITY
 native_color: clvmd:2 allocation score on lama3: -INFINITY
 native_color: dlm:0 allocation score on RNVM1: -INFINITY
 native_color: dlm:0 allocation score on lama2: 1
-native_color: dlm:0 allocation score on lama3: -INFINITY
+native_color: dlm:0 allocation score on lama3: 0
 native_color: dlm:1 allocation score on RNVM1: -INFINITY
-native_color: dlm:1 allocation score on lama2: 0
+native_color: dlm:1 allocation score on lama2: -INFINITY
 native_color: dlm:1 allocation score on lama3: 1
 native_color: dlm:2 allocation score on RNVM1: -INFINITY
 native_color: dlm:2 allocation score on lama2: -INFINITY
diff --git a/pengine/test10/group-dependents.scores b/pengine/test10/group-dependents.scores
index 665d8c1..64531a5 100644
--- a/pengine/test10/group-dependents.scores
+++ b/pengine/test10/group-dependents.scores
@@ -58,8 +58,8 @@ native_color: asterisk allocation score on asttest2: 0
 native_color: dahdi allocation score on asttest1: -INFINITY
 native_color: dahdi allocation score on asttest2: 0
 native_color: drbd:0 allocation score on asttest1: 6
-native_color: drbd:0 allocation score on asttest2: -INFINITY
-native_color: drbd:1 allocation score on asttest1: 0
+native_color: drbd:0 allocation score on asttest2: 0
+native_color: drbd:1 allocation score on asttest1: -INFINITY
 native_color: drbd:1 allocation score on asttest2: 6
 native_color: fonulator allocation score on asttest1: -INFINITY
 native_color: fonulator allocation score on asttest2: 0
diff --git a/pengine/test10/group10.scores b/pengine/test10/group10.scores
index 2a22b7b..6d3f6bf 100644
--- a/pengine/test10/group10.scores
+++ b/pengine/test10/group10.scores
@@ -52,18 +52,18 @@ native_color: child_192.168.100.183 allocation score on c001n02: -INFINITY
 native_color: child_192.168.100.183 allocation score on c001n03: -INFINITY
 native_color: child_192.168.100.183 allocation score on c001n08: -INFINITY
 native_color: child_DoFencing:0 allocation score on c001n01: 1
-native_color: child_DoFencing:0 allocation score on c001n02: -INFINITY
-native_color: child_DoFencing:0 allocation score on c001n03: -INFINITY
-native_color: child_DoFencing:0 allocation score on c001n08: -INFINITY
-native_color: child_DoFencing:1 allocation score on c001n01: 0
+native_color: child_DoFencing:0 allocation score on c001n02: 0
+native_color: child_DoFencing:0 allocation score on c001n03: 0
+native_color: child_DoFencing:0 allocation score on c001n08: 0
+native_color: child_DoFencing:1 allocation score on c001n01: -INFINITY
 native_color: child_DoFencing:1 allocation score on c001n02: 1
 native_color: child_DoFencing:1 allocation score on c001n03: 0
 native_color: child_DoFencing:1 allocation score on c001n08: 0
-native_color: child_DoFencing:2 allocation score on c001n01: 0
+native_color: child_DoFencing:2 allocation score on c001n01: -INFINITY
 native_color: child_DoFencing:2 allocation score on c001n02: -INFINITY
 native_color: child_DoFencing:2 allocation score on c001n03: 1
 native_color: child_DoFencing:2 allocation score on c001n08: 0
-native_color: child_DoFencing:3 allocation score on c001n01: 0
+native_color: child_DoFencing:3 allocation score on c001n01: -INFINITY
 native_color: child_DoFencing:3 allocation score on c001n02: -INFINITY
 native_color: child_DoFencing:3 allocation score on c001n03: -INFINITY
 native_color: child_DoFencing:3 allocation score on c001n08: 1
diff --git a/pengine/test10/history-1.scores b/pengine/test10/history-1.scores
index 6263b95..bd0f43d 100644
--- a/pengine/test10/history-1.scores
+++ b/pengine/test10/history-1.scores
@@ -100,10 +100,10 @@ native_color: migrator allocation score on pcmk-2: 0
 native_color: migrator allocation score on pcmk-3: 0
 native_color: migrator allocation score on pcmk-4: 0
 native_color: ping-1:0 allocation score on pcmk-1: 1
-native_color: ping-1:0 allocation score on pcmk-2: -INFINITY
+native_color: ping-1:0 allocation score on pcmk-2: 0
 native_color: ping-1:0 allocation score on pcmk-3: 0
 native_color: ping-1:0 allocation score on pcmk-4: -INFINITY
-native_color: ping-1:1 allocation score on pcmk-1: 0
+native_color: ping-1:1 allocation score on pcmk-1: -INFINITY
 native_color: ping-1:1 allocation score on pcmk-2: 1
 native_color: ping-1:1 allocation score on pcmk-3: 0
 native_color: ping-1:1 allocation score on pcmk-4: -INFINITY
diff --git a/pengine/test10/inc10.scores b/pengine/test10/inc10.scores
index bf69d89..de77779 100644
--- a/pengine/test10/inc10.scores
+++ b/pengine/test10/inc10.scores
@@ -39,7 +39,7 @@ clone_color: ocfs2:3 allocation score on xen-1: 0
 clone_color: ocfs2:3 allocation score on xen-2: 0
 clone_color: ocfs2:3 allocation score on xen-3: 0
 clone_color: ocfs2:3 allocation score on xen-4: 1
-native_color: child_DoFencing:0 allocation score on xen-1: -INFINITY
+native_color: child_DoFencing:0 allocation score on xen-1: 0
 native_color: child_DoFencing:0 allocation score on xen-2: -INFINITY
 native_color: child_DoFencing:0 allocation score on xen-3: 1
 native_color: child_DoFencing:0 allocation score on xen-4: 0
@@ -49,13 +49,13 @@ native_color: child_DoFencing:1 allocation score on xen-3: -INFINITY
 native_color: child_DoFencing:1 allocation score on xen-4: -INFINITY
 native_color: child_DoFencing:2 allocation score on xen-1: 1
 native_color: child_DoFencing:2 allocation score on xen-2: -INFINITY
-native_color: child_DoFencing:2 allocation score on xen-3: 0
+native_color: child_DoFencing:2 allocation score on xen-3: -INFINITY
 native_color: child_DoFencing:2 allocation score on xen-4: 0
 native_color: child_DoFencing:3 allocation score on xen-1: -INFINITY
 native_color: child_DoFencing:3 allocation score on xen-2: -INFINITY
 native_color: child_DoFencing:3 allocation score on xen-3: -INFINITY
 native_color: child_DoFencing:3 allocation score on xen-4: 1
-native_color: ocfs2:0 allocation score on xen-1: -INFINITY
+native_color: ocfs2:0 allocation score on xen-1: 0
 native_color: ocfs2:0 allocation score on xen-2: -INFINITY
 native_color: ocfs2:0 allocation score on xen-3: 1
 native_color: ocfs2:0 allocation score on xen-4: 0
@@ -65,7 +65,7 @@ native_color: ocfs2:1 allocation score on xen-3: -INFINITY
 native_color: ocfs2:1 allocation score on xen-4: -INFINITY
 native_color: ocfs2:2 allocation score on xen-1: 1
 native_color: ocfs2:2 allocation score on xen-2: -INFINITY
-native_color: ocfs2:2 allocation score on xen-3: 0
+native_color: ocfs2:2 allocation score on xen-3: -INFINITY
 native_color: ocfs2:2 allocation score on xen-4: 0
 native_color: ocfs2:3 allocation score on xen-1: -INFINITY
 native_color: ocfs2:3 allocation score on xen-2: -INFINITY
diff --git a/pengine/test10/interleave-restart.scores b/pengine/test10/interleave-restart.scores
index c4e5773..b5b697b 100644
--- a/pengine/test10/interleave-restart.scores
+++ b/pengine/test10/interleave-restart.scores
@@ -23,19 +23,19 @@ clone_color: stonithclone:1 allocation score on node1: 1
 clone_color: stonithclone:1 allocation score on node2: 0
 clone_color: stonithcloneset allocation score on node1: 0
 clone_color: stonithcloneset allocation score on node2: 0
-native_color: configstoreclone:0 allocation score on node1: -INFINITY
+native_color: configstoreclone:0 allocation score on node1: 0
 native_color: configstoreclone:0 allocation score on node2: 1
 native_color: configstoreclone:1 allocation score on node1: 1
-native_color: configstoreclone:1 allocation score on node2: 0
+native_color: configstoreclone:1 allocation score on node2: -INFINITY
 native_color: evmsclone:0 allocation score on node1: 0
 native_color: evmsclone:0 allocation score on node2: 1
 native_color: evmsclone:1 allocation score on node1: 1
 native_color: evmsclone:1 allocation score on node2: -INFINITY
-native_color: imagestoreclone:0 allocation score on node1: -INFINITY
+native_color: imagestoreclone:0 allocation score on node1: 0
 native_color: imagestoreclone:0 allocation score on node2: 1
 native_color: imagestoreclone:1 allocation score on node1: 1
-native_color: imagestoreclone:1 allocation score on node2: 0
-native_color: stonithclone:0 allocation score on node1: -INFINITY
+native_color: imagestoreclone:1 allocation score on node2: -INFINITY
+native_color: stonithclone:0 allocation score on node1: 0
 native_color: stonithclone:0 allocation score on node2: 1
 native_color: stonithclone:1 allocation score on node1: 1
-native_color: stonithclone:1 allocation score on node2: 0
+native_color: stonithclone:1 allocation score on node2: -INFINITY
diff --git a/pengine/test10/load-stopped-loop-2.scores b/pengine/test10/load-stopped-loop-2.scores
index 10f120f..6e42135 100644
--- a/pengine/test10/load-stopped-loop-2.scores
+++ b/pengine/test10/load-stopped-loop-2.scores
@@ -60,10 +60,10 @@ native_color: p_glusterd:0 allocation score on xfc1: 0
 native_color: p_glusterd:0 allocation score on xfc2: 0
 native_color: p_glusterd:0 allocation score on xfc3: 1
 native_color: p_glusterd:1 allocation score on xfc0: 1
-native_color: p_glusterd:1 allocation score on xfc1: -INFINITY
+native_color: p_glusterd:1 allocation score on xfc1: 0
 native_color: p_glusterd:1 allocation score on xfc2: 0
 native_color: p_glusterd:1 allocation score on xfc3: -INFINITY
-native_color: p_glusterd:2 allocation score on xfc0: 0
+native_color: p_glusterd:2 allocation score on xfc0: -INFINITY
 native_color: p_glusterd:2 allocation score on xfc1: 1
 native_color: p_glusterd:2 allocation score on xfc2: 0
 native_color: p_glusterd:2 allocation score on xfc3: -INFINITY
diff --git a/pengine/test10/load-stopped-loop.scores b/pengine/test10/load-stopped-loop.scores
index dc9f5f5..df95481 100644
--- a/pengine/test10/load-stopped-loop.scores
+++ b/pengine/test10/load-stopped-loop.scores
@@ -882,14 +882,14 @@ native_color: dist.fly-uni.org-vm allocation score on mgmt01: -INFINITY
 native_color: dist.fly-uni.org-vm allocation score on v03-a: -INFINITY
 native_color: dist.fly-uni.org-vm allocation score on v03-b: -INFINITY
 native_color: dlm:0 allocation score on mgmt01: 1
-native_color: dlm:0 allocation score on v03-a: -INFINITY
-native_color: dlm:0 allocation score on v03-b: -INFINITY
-native_color: dlm:1 allocation score on mgmt01: 0
-native_color: dlm:1 allocation score on v03-a: -INFINITY
+native_color: dlm:0 allocation score on v03-a: 0
+native_color: dlm:0 allocation score on v03-b: 0
+native_color: dlm:1 allocation score on mgmt01: -INFINITY
+native_color: dlm:1 allocation score on v03-a: 0
 native_color: dlm:1 allocation score on v03-b: 1
-native_color: dlm:2 allocation score on mgmt01: 0
+native_color: dlm:2 allocation score on mgmt01: -INFINITY
 native_color: dlm:2 allocation score on v03-a: 1
-native_color: dlm:2 allocation score on v03-b: 0
+native_color: dlm:2 allocation score on v03-b: -INFINITY
 native_color: dlm:3 allocation score on mgmt01: -INFINITY
 native_color: dlm:3 allocation score on v03-a: -INFINITY
 native_color: dlm:3 allocation score on v03-b: -INFINITY
@@ -933,14 +933,14 @@ native_color: gw.gotin.vds-ok.com-vm allocation score on mgmt01: -INFINITY
 native_color: gw.gotin.vds-ok.com-vm allocation score on v03-a: -INFINITY
 native_color: gw.gotin.vds-ok.com-vm allocation score on v03-b: -INFINITY
 native_color: iscsid:0 allocation score on mgmt01: 1
-native_color: iscsid:0 allocation score on v03-a: -INFINITY
-native_color: iscsid:0 allocation score on v03-b: -INFINITY
-native_color: iscsid:1 allocation score on mgmt01: 0
-native_color: iscsid:1 allocation score on v03-a: -INFINITY
+native_color: iscsid:0 allocation score on v03-a: 0
+native_color: iscsid:0 allocation score on v03-b: 0
+native_color: iscsid:1 allocation score on mgmt01: -INFINITY
+native_color: iscsid:1 allocation score on v03-a: 0
 native_color: iscsid:1 allocation score on v03-b: 1
-native_color: iscsid:2 allocation score on mgmt01: 0
+native_color: iscsid:2 allocation score on mgmt01: -INFINITY
 native_color: iscsid:2 allocation score on v03-a: 1
-native_color: iscsid:2 allocation score on v03-b: 0
+native_color: iscsid:2 allocation score on v03-b: -INFINITY
 native_color: iscsid:3 allocation score on mgmt01: -INFINITY
 native_color: iscsid:3 allocation score on v03-a: -INFINITY
 native_color: iscsid:3 allocation score on v03-b: -INFINITY
@@ -966,14 +966,14 @@ native_color: lenny-x32-devel-vm allocation score on mgmt01: -INFINITY
 native_color: lenny-x32-devel-vm allocation score on v03-a: 0
 native_color: lenny-x32-devel-vm allocation score on v03-b: 0
 native_color: libvirt-images-fs:0 allocation score on mgmt01: 1
-native_color: libvirt-images-fs:0 allocation score on v03-a: -INFINITY
-native_color: libvirt-images-fs:0 allocation score on v03-b: -INFINITY
-native_color: libvirt-images-fs:1 allocation score on mgmt01: 0
-native_color: libvirt-images-fs:1 allocation score on v03-a: -INFINITY
+native_color: libvirt-images-fs:0 allocation score on v03-a: 0
+native_color: libvirt-images-fs:0 allocation score on v03-b: 0
+native_color: libvirt-images-fs:1 allocation score on mgmt01: -INFINITY
+native_color: libvirt-images-fs:1 allocation score on v03-a: 0
 native_color: libvirt-images-fs:1 allocation score on v03-b: 1
-native_color: libvirt-images-fs:2 allocation score on mgmt01: 0
+native_color: libvirt-images-fs:2 allocation score on mgmt01: -INFINITY
 native_color: libvirt-images-fs:2 allocation score on v03-a: 1
-native_color: libvirt-images-fs:2 allocation score on v03-b: 0
+native_color: libvirt-images-fs:2 allocation score on v03-b: -INFINITY
 native_color: libvirt-images-fs:3 allocation score on mgmt01: -INFINITY
 native_color: libvirt-images-fs:3 allocation score on v03-a: -INFINITY
 native_color: libvirt-images-fs:3 allocation score on v03-b: -INFINITY
@@ -1017,14 +1017,14 @@ native_color: libvirt-images-pool:7 allocation score on mgmt01: -INFINITY
 native_color: libvirt-images-pool:7 allocation score on v03-a: -INFINITY
 native_color: libvirt-images-pool:7 allocation score on v03-b: -INFINITY
 native_color: libvirt-install-fs:0 allocation score on mgmt01: 1
-native_color: libvirt-install-fs:0 allocation score on v03-a: -INFINITY
-native_color: libvirt-install-fs:0 allocation score on v03-b: -INFINITY
-native_color: libvirt-install-fs:1 allocation score on mgmt01: 0
-native_color: libvirt-install-fs:1 allocation score on v03-a: -INFINITY
+native_color: libvirt-install-fs:0 allocation score on v03-a: 0
+native_color: libvirt-install-fs:0 allocation score on v03-b: 0
+native_color: libvirt-install-fs:1 allocation score on mgmt01: -INFINITY
+native_color: libvirt-install-fs:1 allocation score on v03-a: 0
 native_color: libvirt-install-fs:1 allocation score on v03-b: 1
-native_color: libvirt-install-fs:2 allocation score on mgmt01: 0
+native_color: libvirt-install-fs:2 allocation score on mgmt01: -INFINITY
 native_color: libvirt-install-fs:2 allocation score on v03-a: 1
-native_color: libvirt-install-fs:2 allocation score on v03-b: 0
+native_color: libvirt-install-fs:2 allocation score on v03-b: -INFINITY
 native_color: libvirt-install-fs:3 allocation score on mgmt01: -INFINITY
 native_color: libvirt-install-fs:3 allocation score on v03-a: -INFINITY
 native_color: libvirt-install-fs:3 allocation score on v03-b: -INFINITY
@@ -1122,11 +1122,11 @@ native_color: maxb-c55-vm allocation score on mgmt01: -INFINITY
 native_color: maxb-c55-vm allocation score on v03-a: -INFINITY
 native_color: maxb-c55-vm allocation score on v03-b: -INFINITY
 native_color: mcast-anbriz-net:0 allocation score on mgmt01: -INFINITY
-native_color: mcast-anbriz-net:0 allocation score on v03-a: -INFINITY
+native_color: mcast-anbriz-net:0 allocation score on v03-a: 0
 native_color: mcast-anbriz-net:0 allocation score on v03-b: 1
 native_color: mcast-anbriz-net:1 allocation score on mgmt01: -INFINITY
 native_color: mcast-anbriz-net:1 allocation score on v03-a: 1
-native_color: mcast-anbriz-net:1 allocation score on v03-b: 0
+native_color: mcast-anbriz-net:1 allocation score on v03-b: -INFINITY
 native_color: mcast-anbriz-net:2 allocation score on mgmt01: -INFINITY
 native_color: mcast-anbriz-net:2 allocation score on v03-a: -INFINITY
 native_color: mcast-anbriz-net:2 allocation score on v03-b: -INFINITY
@@ -1146,11 +1146,11 @@ native_color: mcast-anbriz-net:7 allocation score on mgmt01: -INFINITY
 native_color: mcast-anbriz-net:7 allocation score on v03-a: -INFINITY
 native_color: mcast-anbriz-net:7 allocation score on v03-b: -INFINITY
 native_color: mcast-gleb-net:0 allocation score on mgmt01: -INFINITY
-native_color: mcast-gleb-net:0 allocation score on v03-a: -INFINITY
+native_color: mcast-gleb-net:0 allocation score on v03-a: 0
 native_color: mcast-gleb-net:0 allocation score on v03-b: 1
 native_color: mcast-gleb-net:1 allocation score on mgmt01: -INFINITY
 native_color: mcast-gleb-net:1 allocation score on v03-a: 1
-native_color: mcast-gleb-net:1 allocation score on v03-b: 0
+native_color: mcast-gleb-net:1 allocation score on v03-b: -INFINITY
 native_color: mcast-gleb-net:2 allocation score on mgmt01: -INFINITY
 native_color: mcast-gleb-net:2 allocation score on v03-a: -INFINITY
 native_color: mcast-gleb-net:2 allocation score on v03-b: -INFINITY
@@ -1170,11 +1170,11 @@ native_color: mcast-gleb-net:7 allocation score on mgmt01: -INFINITY
 native_color: mcast-gleb-net:7 allocation score on v03-a: -INFINITY
 native_color: mcast-gleb-net:7 allocation score on v03-b: -INFINITY
 native_color: mcast-test-net:0 allocation score on mgmt01: -INFINITY
-native_color: mcast-test-net:0 allocation score on v03-a: -INFINITY
+native_color: mcast-test-net:0 allocation score on v03-a: 0
 native_color: mcast-test-net:0 allocation score on v03-b: 1
 native_color: mcast-test-net:1 allocation score on mgmt01: -INFINITY
 native_color: mcast-test-net:1 allocation score on v03-a: 1
-native_color: mcast-test-net:1 allocation score on v03-b: 0
+native_color: mcast-test-net:1 allocation score on v03-b: -INFINITY
 native_color: mcast-test-net:2 allocation score on mgmt01: -INFINITY
 native_color: mcast-test-net:2 allocation score on v03-a: -INFINITY
 native_color: mcast-test-net:2 allocation score on v03-b: -INFINITY
@@ -1197,14 +1197,14 @@ native_color: metae.ru-vm allocation score on mgmt01: -INFINITY
 native_color: metae.ru-vm allocation score on v03-a: -INFINITY
 native_color: metae.ru-vm allocation score on v03-b: -INFINITY
 native_color: multipathd:0 allocation score on mgmt01: 1
-native_color: multipathd:0 allocation score on v03-a: -INFINITY
-native_color: multipathd:0 allocation score on v03-b: -INFINITY
-native_color: multipathd:1 allocation score on mgmt01: 0
-native_color: multipathd:1 allocation score on v03-a: -INFINITY
+native_color: multipathd:0 allocation score on v03-a: 0
+native_color: multipathd:0 allocation score on v03-b: 0
+native_color: multipathd:1 allocation score on mgmt01: -INFINITY
+native_color: multipathd:1 allocation score on v03-a: 0
 native_color: multipathd:1 allocation score on v03-b: 1
-native_color: multipathd:2 allocation score on mgmt01: 0
+native_color: multipathd:2 allocation score on mgmt01: -INFINITY
 native_color: multipathd:2 allocation score on v03-a: 1
-native_color: multipathd:2 allocation score on v03-b: 0
+native_color: multipathd:2 allocation score on v03-b: -INFINITY
 native_color: multipathd:3 allocation score on mgmt01: -INFINITY
 native_color: multipathd:3 allocation score on v03-a: -INFINITY
 native_color: multipathd:3 allocation score on v03-b: -INFINITY
@@ -1224,11 +1224,11 @@ native_color: multipathd:8 allocation score on mgmt01: -INFINITY
 native_color: multipathd:8 allocation score on v03-a: -INFINITY
 native_color: multipathd:8 allocation score on v03-b: -INFINITY
 native_color: node-params:0 allocation score on mgmt01: -INFINITY
-native_color: node-params:0 allocation score on v03-a: -INFINITY
+native_color: node-params:0 allocation score on v03-a: 0
 native_color: node-params:0 allocation score on v03-b: 1
 native_color: node-params:1 allocation score on mgmt01: -INFINITY
 native_color: node-params:1 allocation score on v03-a: 1
-native_color: node-params:1 allocation score on v03-b: 0
+native_color: node-params:1 allocation score on v03-b: -INFINITY
 native_color: node-params:2 allocation score on mgmt01: -INFINITY
 native_color: node-params:2 allocation score on v03-a: -INFINITY
 native_color: node-params:2 allocation score on v03-b: -INFINITY
@@ -1497,11 +1497,11 @@ native_color: vds-ok-pool-1-vg:8 allocation score on mgmt01: -INFINITY
 native_color: vds-ok-pool-1-vg:8 allocation score on v03-a: -INFINITY
 native_color: vds-ok-pool-1-vg:8 allocation score on v03-b: -INFINITY
 native_color: vlan1-if:0 allocation score on mgmt01: -INFINITY
-native_color: vlan1-if:0 allocation score on v03-a: -INFINITY
+native_color: vlan1-if:0 allocation score on v03-a: 0
 native_color: vlan1-if:0 allocation score on v03-b: 1
 native_color: vlan1-if:1 allocation score on mgmt01: -INFINITY
 native_color: vlan1-if:1 allocation score on v03-a: 1
-native_color: vlan1-if:1 allocation score on v03-b: 0
+native_color: vlan1-if:1 allocation score on v03-b: -INFINITY
 native_color: vlan1-if:2 allocation score on mgmt01: -INFINITY
 native_color: vlan1-if:2 allocation score on v03-a: -INFINITY
 native_color: vlan1-if:2 allocation score on v03-b: -INFINITY
@@ -1521,11 +1521,11 @@ native_color: vlan1-if:7 allocation score on mgmt01: -INFINITY
 native_color: vlan1-if:7 allocation score on v03-a: -INFINITY
 native_color: vlan1-if:7 allocation score on v03-b: -INFINITY
 native_color: vlan101-if:0 allocation score on mgmt01: -INFINITY
-native_color: vlan101-if:0 allocation score on v03-a: -INFINITY
+native_color: vlan101-if:0 allocation score on v03-a: 0
 native_color: vlan101-if:0 allocation score on v03-b: 1
 native_color: vlan101-if:1 allocation score on mgmt01: -INFINITY
 native_color: vlan101-if:1 allocation score on v03-a: 1
-native_color: vlan101-if:1 allocation score on v03-b: 0
+native_color: vlan101-if:1 allocation score on v03-b: -INFINITY
 native_color: vlan101-if:2 allocation score on mgmt01: -INFINITY
 native_color: vlan101-if:2 allocation score on v03-a: -INFINITY
 native_color: vlan101-if:2 allocation score on v03-b: -INFINITY
@@ -1545,11 +1545,11 @@ native_color: vlan101-if:7 allocation score on mgmt01: -INFINITY
 native_color: vlan101-if:7 allocation score on v03-a: -INFINITY
 native_color: vlan101-if:7 allocation score on v03-b: -INFINITY
 native_color: vlan102-if:0 allocation score on mgmt01: -INFINITY
-native_color: vlan102-if:0 allocation score on v03-a: -INFINITY
+native_color: vlan102-if:0 allocation score on v03-a: 0
 native_color: vlan102-if:0 allocation score on v03-b: 1
 native_color: vlan102-if:1 allocation score on mgmt01: -INFINITY
 native_color: vlan102-if:1 allocation score on v03-a: 1
-native_color: vlan102-if:1 allocation score on v03-b: 0
+native_color: vlan102-if:1 allocation score on v03-b: -INFINITY
 native_color: vlan102-if:2 allocation score on mgmt01: -INFINITY
 native_color: vlan102-if:2 allocation score on v03-a: -INFINITY
 native_color: vlan102-if:2 allocation score on v03-b: -INFINITY
@@ -1569,11 +1569,11 @@ native_color: vlan102-if:7 allocation score on mgmt01: -INFINITY
 native_color: vlan102-if:7 allocation score on v03-a: -INFINITY
 native_color: vlan102-if:7 allocation score on v03-b: -INFINITY
 native_color: vlan103-if:0 allocation score on mgmt01: -INFINITY
-native_color: vlan103-if:0 allocation score on v03-a: -INFINITY
+native_color: vlan103-if:0 allocation score on v03-a: 0
 native_color: vlan103-if:0 allocation score on v03-b: 1
 native_color: vlan103-if:1 allocation score on mgmt01: -INFINITY
 native_color: vlan103-if:1 allocation score on v03-a: 1
-native_color: vlan103-if:1 allocation score on v03-b: 0
+native_color: vlan103-if:1 allocation score on v03-b: -INFINITY
 native_color: vlan103-if:2 allocation score on mgmt01: -INFINITY
 native_color: vlan103-if:2 allocation score on v03-a: -INFINITY
 native_color: vlan103-if:2 allocation score on v03-b: -INFINITY
@@ -1593,11 +1593,11 @@ native_color: vlan103-if:7 allocation score on mgmt01: -INFINITY
 native_color: vlan103-if:7 allocation score on v03-a: -INFINITY
 native_color: vlan103-if:7 allocation score on v03-b: -INFINITY
 native_color: vlan104-if:0 allocation score on mgmt01: -INFINITY
-native_color: vlan104-if:0 allocation score on v03-a: -INFINITY
+native_color: vlan104-if:0 allocation score on v03-a: 0
 native_color: vlan104-if:0 allocation score on v03-b: 1
 native_color: vlan104-if:1 allocation score on mgmt01: -INFINITY
 native_color: vlan104-if:1 allocation score on v03-a: 1
-native_color: vlan104-if:1 allocation score on v03-b: 0
+native_color: vlan104-if:1 allocation score on v03-b: -INFINITY
 native_color: vlan104-if:2 allocation score on mgmt01: -INFINITY
 native_color: vlan104-if:2 allocation score on v03-a: -INFINITY
 native_color: vlan104-if:2 allocation score on v03-b: -INFINITY
@@ -1617,11 +1617,11 @@ native_color: vlan104-if:7 allocation score on mgmt01: -INFINITY
 native_color: vlan104-if:7 allocation score on v03-a: -INFINITY
 native_color: vlan104-if:7 allocation score on v03-b: -INFINITY
 native_color: vlan200-if:0 allocation score on mgmt01: -INFINITY
-native_color: vlan200-if:0 allocation score on v03-a: -INFINITY
+native_color: vlan200-if:0 allocation score on v03-a: 0
 native_color: vlan200-if:0 allocation score on v03-b: 1
 native_color: vlan200-if:1 allocation score on mgmt01: -INFINITY
 native_color: vlan200-if:1 allocation score on v03-a: 1
-native_color: vlan200-if:1 allocation score on v03-b: 0
+native_color: vlan200-if:1 allocation score on v03-b: -INFINITY
 native_color: vlan200-if:2 allocation score on mgmt01: -INFINITY
 native_color: vlan200-if:2 allocation score on v03-a: -INFINITY
 native_color: vlan200-if:2 allocation score on v03-b: -INFINITY
@@ -1641,11 +1641,11 @@ native_color: vlan200-if:7 allocation score on mgmt01: -INFINITY
 native_color: vlan200-if:7 allocation score on v03-a: -INFINITY
 native_color: vlan200-if:7 allocation score on v03-b: -INFINITY
 native_color: vlan3-if:0 allocation score on mgmt01: -INFINITY
-native_color: vlan3-if:0 allocation score on v03-a: -INFINITY
+native_color: vlan3-if:0 allocation score on v03-a: 0
 native_color: vlan3-if:0 allocation score on v03-b: 1
 native_color: vlan3-if:1 allocation score on mgmt01: -INFINITY
 native_color: vlan3-if:1 allocation score on v03-a: 1
-native_color: vlan3-if:1 allocation score on v03-b: 0
+native_color: vlan3-if:1 allocation score on v03-b: -INFINITY
 native_color: vlan3-if:2 allocation score on mgmt01: -INFINITY
 native_color: vlan3-if:2 allocation score on v03-a: -INFINITY
 native_color: vlan3-if:2 allocation score on v03-b: -INFINITY
@@ -1665,11 +1665,11 @@ native_color: vlan3-if:7 allocation score on mgmt01: -INFINITY
 native_color: vlan3-if:7 allocation score on v03-a: -INFINITY
 native_color: vlan3-if:7 allocation score on v03-b: -INFINITY
 native_color: vlan4-if:0 allocation score on mgmt01: -INFINITY
-native_color: vlan4-if:0 allocation score on v03-a: -INFINITY
+native_color: vlan4-if:0 allocation score on v03-a: 0
 native_color: vlan4-if:0 allocation score on v03-b: 1
 native_color: vlan4-if:1 allocation score on mgmt01: -INFINITY
 native_color: vlan4-if:1 allocation score on v03-a: 1
-native_color: vlan4-if:1 allocation score on v03-b: 0
+native_color: vlan4-if:1 allocation score on v03-b: -INFINITY
 native_color: vlan4-if:2 allocation score on mgmt01: -INFINITY
 native_color: vlan4-if:2 allocation score on v03-a: -INFINITY
 native_color: vlan4-if:2 allocation score on v03-b: -INFINITY
@@ -1689,11 +1689,11 @@ native_color: vlan4-if:7 allocation score on mgmt01: -INFINITY
 native_color: vlan4-if:7 allocation score on v03-a: -INFINITY
 native_color: vlan4-if:7 allocation score on v03-b: -INFINITY
 native_color: vlan5-if:0 allocation score on mgmt01: -INFINITY
-native_color: vlan5-if:0 allocation score on v03-a: -INFINITY
+native_color: vlan5-if:0 allocation score on v03-a: 0
 native_color: vlan5-if:0 allocation score on v03-b: 1
 native_color: vlan5-if:1 allocation score on mgmt01: -INFINITY
 native_color: vlan5-if:1 allocation score on v03-a: 1
-native_color: vlan5-if:1 allocation score on v03-b: 0
+native_color: vlan5-if:1 allocation score on v03-b: -INFINITY
 native_color: vlan5-if:2 allocation score on mgmt01: -INFINITY
 native_color: vlan5-if:2 allocation score on v03-a: -INFINITY
 native_color: vlan5-if:2 allocation score on v03-b: -INFINITY
@@ -1713,11 +1713,11 @@ native_color: vlan5-if:7 allocation score on mgmt01: -INFINITY
 native_color: vlan5-if:7 allocation score on v03-a: -INFINITY
 native_color: vlan5-if:7 allocation score on v03-b: -INFINITY
 native_color: vlan900-if:0 allocation score on mgmt01: -INFINITY
-native_color: vlan900-if:0 allocation score on v03-a: -INFINITY
+native_color: vlan900-if:0 allocation score on v03-a: 0
 native_color: vlan900-if:0 allocation score on v03-b: 1
 native_color: vlan900-if:1 allocation score on mgmt01: -INFINITY
 native_color: vlan900-if:1 allocation score on v03-a: 1
-native_color: vlan900-if:1 allocation score on v03-b: 0
+native_color: vlan900-if:1 allocation score on v03-b: -INFINITY
 native_color: vlan900-if:2 allocation score on mgmt01: -INFINITY
 native_color: vlan900-if:2 allocation score on v03-a: -INFINITY
 native_color: vlan900-if:2 allocation score on v03-b: -INFINITY
@@ -1737,11 +1737,11 @@ native_color: vlan900-if:7 allocation score on mgmt01: -INFINITY
 native_color: vlan900-if:7 allocation score on v03-a: -INFINITY
 native_color: vlan900-if:7 allocation score on v03-b: -INFINITY
 native_color: vlan909-if:0 allocation score on mgmt01: -INFINITY
-native_color: vlan909-if:0 allocation score on v03-a: -INFINITY
+native_color: vlan909-if:0 allocation score on v03-a: 0
 native_color: vlan909-if:0 allocation score on v03-b: 1
 native_color: vlan909-if:1 allocation score on mgmt01: -INFINITY
 native_color: vlan909-if:1 allocation score on v03-a: 1
-native_color: vlan909-if:1 allocation score on v03-b: 0
+native_color: vlan909-if:1 allocation score on v03-b: -INFINITY
 native_color: vlan909-if:2 allocation score on mgmt01: -INFINITY
 native_color: vlan909-if:2 allocation score on v03-a: -INFINITY
 native_color: vlan909-if:2 allocation score on v03-b: -INFINITY
diff --git a/pengine/test10/master-12.scores b/pengine/test10/master-12.scores
index bbef5b7..3f70867 100644
--- a/pengine/test10/master-12.scores
+++ b/pengine/test10/master-12.scores
@@ -14,10 +14,10 @@ clone_color: sf:1 allocation score on sel4: 1
 drbd0:0 promotion score on sel4: 75
 drbd0:1 promotion score on sel3: 175
 drbd0:2 promotion score on none: 0
-native_color: drbd0:0 allocation score on sel3: -INFINITY
+native_color: drbd0:0 allocation score on sel3: 0
 native_color: drbd0:0 allocation score on sel4: 76
 native_color: drbd0:1 allocation score on sel3: 76
-native_color: drbd0:1 allocation score on sel4: 0
+native_color: drbd0:1 allocation score on sel4: -INFINITY
 native_color: fs0 allocation score on sel3: 76
 native_color: fs0 allocation score on sel4: -INFINITY
 native_color: sf:0 allocation score on sel3: 1
diff --git a/pengine/test10/master-13.scores b/pengine/test10/master-13.scores
index 2167568..491a1f3 100644
--- a/pengine/test10/master-13.scores
+++ b/pengine/test10/master-13.scores
@@ -18,7 +18,7 @@ native_color: IPaddr0 allocation score on frigg: -INFINITY
 native_color: IPaddr0 allocation score on odin: 76
 native_color: MailTo allocation score on frigg: -INFINITY
 native_color: MailTo allocation score on odin: 0
-native_color: drbd0:0 allocation score on frigg: -INFINITY
+native_color: drbd0:0 allocation score on frigg: 0
 native_color: drbd0:0 allocation score on odin: 76
 native_color: drbd0:1 allocation score on frigg: 76
-native_color: drbd0:1 allocation score on odin: 0
+native_color: drbd0:1 allocation score on odin: -INFINITY
diff --git a/pengine/test10/master-4.scores b/pengine/test10/master-4.scores
index aa0b9b7..e5f390d 100644
--- a/pengine/test10/master-4.scores
+++ b/pengine/test10/master-4.scores
@@ -71,22 +71,22 @@ native_color: DcIPaddr allocation score on c001n01: -INFINITY
 native_color: DcIPaddr allocation score on c001n02: -INFINITY
 native_color: DcIPaddr allocation score on c001n03: -INFINITY
 native_color: DcIPaddr allocation score on c001n08: 0
-native_color: child_DoFencing:0 allocation score on c001n01: -INFINITY
-native_color: child_DoFencing:0 allocation score on c001n02: -INFINITY
+native_color: child_DoFencing:0 allocation score on c001n01: 0
+native_color: child_DoFencing:0 allocation score on c001n02: 0
 native_color: child_DoFencing:0 allocation score on c001n03: 0
 native_color: child_DoFencing:0 allocation score on c001n08: 1
-native_color: child_DoFencing:1 allocation score on c001n01: -INFINITY
-native_color: child_DoFencing:1 allocation score on c001n02: -INFINITY
+native_color: child_DoFencing:1 allocation score on c001n01: 0
+native_color: child_DoFencing:1 allocation score on c001n02: 0
 native_color: child_DoFencing:1 allocation score on c001n03: 1
 native_color: child_DoFencing:1 allocation score on c001n08: -INFINITY
 native_color: child_DoFencing:2 allocation score on c001n01: 1
-native_color: child_DoFencing:2 allocation score on c001n02: -INFINITY
-native_color: child_DoFencing:2 allocation score on c001n03: 0
-native_color: child_DoFencing:2 allocation score on c001n08: 0
-native_color: child_DoFencing:3 allocation score on c001n01: 0
+native_color: child_DoFencing:2 allocation score on c001n02: 0
+native_color: child_DoFencing:2 allocation score on c001n03: -INFINITY
+native_color: child_DoFencing:2 allocation score on c001n08: -INFINITY
+native_color: child_DoFencing:3 allocation score on c001n01: -INFINITY
 native_color: child_DoFencing:3 allocation score on c001n02: 1
-native_color: child_DoFencing:3 allocation score on c001n03: 0
-native_color: child_DoFencing:3 allocation score on c001n08: 0
+native_color: child_DoFencing:3 allocation score on c001n03: -INFINITY
+native_color: child_DoFencing:3 allocation score on c001n08: -INFINITY
 native_color: heartbeat_child allocation score on c001n01: -INFINITY
 native_color: heartbeat_child allocation score on c001n02: -INFINITY
 native_color: heartbeat_child allocation score on c001n03: 0
@@ -99,38 +99,38 @@ native_color: ocf_child allocation score on c001n01: 0
 native_color: ocf_child allocation score on c001n02: 0
 native_color: ocf_child allocation score on c001n03: 0
 native_color: ocf_child allocation score on c001n08: 0
-native_color: ocf_msdummy:0 allocation score on c001n01: -INFINITY
-native_color: ocf_msdummy:0 allocation score on c001n02: -INFINITY
+native_color: ocf_msdummy:0 allocation score on c001n01: 0
+native_color: ocf_msdummy:0 allocation score on c001n02: 0
 native_color: ocf_msdummy:0 allocation score on c001n03: 0
 native_color: ocf_msdummy:0 allocation score on c001n08: 1001
-native_color: ocf_msdummy:1 allocation score on c001n01: -INFINITY
-native_color: ocf_msdummy:1 allocation score on c001n02: -INFINITY
+native_color: ocf_msdummy:1 allocation score on c001n01: 0
+native_color: ocf_msdummy:1 allocation score on c001n02: 0
 native_color: ocf_msdummy:1 allocation score on c001n03: 1
-native_color: ocf_msdummy:1 allocation score on c001n08: -INFINITY
+native_color: ocf_msdummy:1 allocation score on c001n08: 0
 native_color: ocf_msdummy:2 allocation score on c001n01: 1
-native_color: ocf_msdummy:2 allocation score on c001n02: -INFINITY
+native_color: ocf_msdummy:2 allocation score on c001n02: 0
 native_color: ocf_msdummy:2 allocation score on c001n03: 0
 native_color: ocf_msdummy:2 allocation score on c001n08: 0
-native_color: ocf_msdummy:3 allocation score on c001n01: -INFINITY
-native_color: ocf_msdummy:3 allocation score on c001n02: -INFINITY
+native_color: ocf_msdummy:3 allocation score on c001n01: 0
+native_color: ocf_msdummy:3 allocation score on c001n02: 0
 native_color: ocf_msdummy:3 allocation score on c001n03: 0
 native_color: ocf_msdummy:3 allocation score on c001n08: 1
-native_color: ocf_msdummy:4 allocation score on c001n01: -INFINITY
-native_color: ocf_msdummy:4 allocation score on c001n02: -INFINITY
+native_color: ocf_msdummy:4 allocation score on c001n01: 0
+native_color: ocf_msdummy:4 allocation score on c001n02: 0
 native_color: ocf_msdummy:4 allocation score on c001n03: 1
 native_color: ocf_msdummy:4 allocation score on c001n08: -INFINITY
 native_color: ocf_msdummy:5 allocation score on c001n01: 1
-native_color: ocf_msdummy:5 allocation score on c001n02: -INFINITY
-native_color: ocf_msdummy:5 allocation score on c001n03: 0
-native_color: ocf_msdummy:5 allocation score on c001n08: 0
-native_color: ocf_msdummy:6 allocation score on c001n01: 0
+native_color: ocf_msdummy:5 allocation score on c001n02: 0
+native_color: ocf_msdummy:5 allocation score on c001n03: -INFINITY
+native_color: ocf_msdummy:5 allocation score on c001n08: -INFINITY
+native_color: ocf_msdummy:6 allocation score on c001n01: -INFINITY
 native_color: ocf_msdummy:6 allocation score on c001n02: 1
-native_color: ocf_msdummy:6 allocation score on c001n03: 0
-native_color: ocf_msdummy:6 allocation score on c001n08: 0
-native_color: ocf_msdummy:7 allocation score on c001n01: 0
+native_color: ocf_msdummy:6 allocation score on c001n03: -INFINITY
+native_color: ocf_msdummy:6 allocation score on c001n08: -INFINITY
+native_color: ocf_msdummy:7 allocation score on c001n01: -INFINITY
 native_color: ocf_msdummy:7 allocation score on c001n02: 1
-native_color: ocf_msdummy:7 allocation score on c001n03: 0
-native_color: ocf_msdummy:7 allocation score on c001n08: 0
+native_color: ocf_msdummy:7 allocation score on c001n03: -INFINITY
+native_color: ocf_msdummy:7 allocation score on c001n08: -INFINITY
 native_color: rsc_c001n01 allocation score on c001n01: 100
 native_color: rsc_c001n01 allocation score on c001n02: 0
 native_color: rsc_c001n01 allocation score on c001n03: 0
diff --git a/pengine/test10/master-5.scores b/pengine/test10/master-5.scores
index aa0b9b7..e5f390d 100644
--- a/pengine/test10/master-5.scores
+++ b/pengine/test10/master-5.scores
@@ -71,22 +71,22 @@ native_color: DcIPaddr allocation score on c001n01: -INFINITY
 native_color: DcIPaddr allocation score on c001n02: -INFINITY
 native_color: DcIPaddr allocation score on c001n03: -INFINITY
 native_color: DcIPaddr allocation score on c001n08: 0
-native_color: child_DoFencing:0 allocation score on c001n01: -INFINITY
-native_color: child_DoFencing:0 allocation score on c001n02: -INFINITY
+native_color: child_DoFencing:0 allocation score on c001n01: 0
+native_color: child_DoFencing:0 allocation score on c001n02: 0
 native_color: child_DoFencing:0 allocation score on c001n03: 0
 native_color: child_DoFencing:0 allocation score on c001n08: 1
-native_color: child_DoFencing:1 allocation score on c001n01: -INFINITY
-native_color: child_DoFencing:1 allocation score on c001n02: -INFINITY
+native_color: child_DoFencing:1 allocation score on c001n01: 0
+native_color: child_DoFencing:1 allocation score on c001n02: 0
 native_color: child_DoFencing:1 allocation score on c001n03: 1
 native_color: child_DoFencing:1 allocation score on c001n08: -INFINITY
 native_color: child_DoFencing:2 allocation score on c001n01: 1
-native_color: child_DoFencing:2 allocation score on c001n02: -INFINITY
-native_color: child_DoFencing:2 allocation score on c001n03: 0
-native_color: child_DoFencing:2 allocation score on c001n08: 0
-native_color: child_DoFencing:3 allocation score on c001n01: 0
+native_color: child_DoFencing:2 allocation score on c001n02: 0
+native_color: child_DoFencing:2 allocation score on c001n03: -INFINITY
+native_color: child_DoFencing:2 allocation score on c001n08: -INFINITY
+native_color: child_DoFencing:3 allocation score on c001n01: -INFINITY
 native_color: child_DoFencing:3 allocation score on c001n02: 1
-native_color: child_DoFencing:3 allocation score on c001n03: 0
-native_color: child_DoFencing:3 allocation score on c001n08: 0
+native_color: child_DoFencing:3 allocation score on c001n03: -INFINITY
+native_color: child_DoFencing:3 allocation score on c001n08: -INFINITY
 native_color: heartbeat_child allocation score on c001n01: -INFINITY
 native_color: heartbeat_child allocation score on c001n02: -INFINITY
 native_color: heartbeat_child allocation score on c001n03: 0
@@ -99,38 +99,38 @@ native_color: ocf_child allocation score on c001n01: 0
 native_color: ocf_child allocation score on c001n02: 0
 native_color: ocf_child allocation score on c001n03: 0
 native_color: ocf_child allocation score on c001n08: 0
-native_color: ocf_msdummy:0 allocation score on c001n01: -INFINITY
-native_color: ocf_msdummy:0 allocation score on c001n02: -INFINITY
+native_color: ocf_msdummy:0 allocation score on c001n01: 0
+native_color: ocf_msdummy:0 allocation score on c001n02: 0
 native_color: ocf_msdummy:0 allocation score on c001n03: 0
 native_color: ocf_msdummy:0 allocation score on c001n08: 1001
-native_color: ocf_msdummy:1 allocation score on c001n01: -INFINITY
-native_color: ocf_msdummy:1 allocation score on c001n02: -INFINITY
+native_color: ocf_msdummy:1 allocation score on c001n01: 0
+native_color: ocf_msdummy:1 allocation score on c001n02: 0
 native_color: ocf_msdummy:1 allocation score on c001n03: 1
-native_color: ocf_msdummy:1 allocation score on c001n08: -INFINITY
+native_color: ocf_msdummy:1 allocation score on c001n08: 0
 native_color: ocf_msdummy:2 allocation score on c001n01: 1
-native_color: ocf_msdummy:2 allocation score on c001n02: -INFINITY
+native_color: ocf_msdummy:2 allocation score on c001n02: 0
 native_color: ocf_msdummy:2 allocation score on c001n03: 0
 native_color: ocf_msdummy:2 allocation score on c001n08: 0
-native_color: ocf_msdummy:3 allocation score on c001n01: -INFINITY
-native_color: ocf_msdummy:3 allocation score on c001n02: -INFINITY
+native_color: ocf_msdummy:3 allocation score on c001n01: 0
+native_color: ocf_msdummy:3 allocation score on c001n02: 0
 native_color: ocf_msdummy:3 allocation score on c001n03: 0
 native_color: ocf_msdummy:3 allocation score on c001n08: 1
-native_color: ocf_msdummy:4 allocation score on c001n01: -INFINITY
-native_color: ocf_msdummy:4 allocation score on c001n02: -INFINITY
+native_color: ocf_msdummy:4 allocation score on c001n01: 0
+native_color: ocf_msdummy:4 allocation score on c001n02: 0
 native_color: ocf_msdummy:4 allocation score on c001n03: 1
 native_color: ocf_msdummy:4 allocation score on c001n08: -INFINITY
 native_color: ocf_msdummy:5 allocation score on c001n01: 1
-native_color: ocf_msdummy:5 allocation score on c001n02: -INFINITY
-native_color: ocf_msdummy:5 allocation score on c001n03: 0
-native_color: ocf_msdummy:5 allocation score on c001n08: 0
-native_color: ocf_msdummy:6 allocation score on c001n01: 0
+native_color: ocf_msdummy:5 allocation score on c001n02: 0
+native_color: ocf_msdummy:5 allocation score on c001n03: -INFINITY
+native_color: ocf_msdummy:5 allocation score on c001n08: -INFINITY
+native_color: ocf_msdummy:6 allocation score on c001n01: -INFINITY
 native_color: ocf_msdummy:6 allocation score on c001n02: 1
-native_color: ocf_msdummy:6 allocation score on c001n03: 0
-native_color: ocf_msdummy:6 allocation score on c001n08: 0
-native_color: ocf_msdummy:7 allocation score on c001n01: 0
+native_color: ocf_msdummy:6 allocation score on c001n03: -INFINITY
+native_color: ocf_msdummy:6 allocation score on c001n08: -INFINITY
+native_color: ocf_msdummy:7 allocation score on c001n01: -INFINITY
 native_color: ocf_msdummy:7 allocation score on c001n02: 1
-native_color: ocf_msdummy:7 allocation score on c001n03: 0
-native_color: ocf_msdummy:7 allocation score on c001n08: 0
+native_color: ocf_msdummy:7 allocation score on c001n03: -INFINITY
+native_color: ocf_msdummy:7 allocation score on c001n08: -INFINITY
 native_color: rsc_c001n01 allocation score on c001n01: 100
 native_color: rsc_c001n01 allocation score on c001n02: 0
 native_color: rsc_c001n01 allocation score on c001n03: 0
diff --git a/pengine/test10/master-6.scores b/pengine/test10/master-6.scores
index 13fb695..a896612 100644
--- a/pengine/test10/master-6.scores
+++ b/pengine/test10/master-6.scores
@@ -75,22 +75,22 @@ native_color: DcIPaddr allocation score on c001n01: -INFINITY
 native_color: DcIPaddr allocation score on c001n02: -INFINITY
 native_color: DcIPaddr allocation score on c001n03: -INFINITY
 native_color: DcIPaddr allocation score on c001n08: 0
-native_color: child_DoFencing:0 allocation score on c001n01: -INFINITY
+native_color: child_DoFencing:0 allocation score on c001n01: 0
 native_color: child_DoFencing:0 allocation score on c001n02: 0
-native_color: child_DoFencing:0 allocation score on c001n03: -INFINITY
+native_color: child_DoFencing:0 allocation score on c001n03: 0
 native_color: child_DoFencing:0 allocation score on c001n08: 1
-native_color: child_DoFencing:1 allocation score on c001n01: -INFINITY
+native_color: child_DoFencing:1 allocation score on c001n01: 0
 native_color: child_DoFencing:1 allocation score on c001n02: 1
-native_color: child_DoFencing:1 allocation score on c001n03: -INFINITY
+native_color: child_DoFencing:1 allocation score on c001n03: 0
 native_color: child_DoFencing:1 allocation score on c001n08: -INFINITY
-native_color: child_DoFencing:2 allocation score on c001n01: -INFINITY
-native_color: child_DoFencing:2 allocation score on c001n02: 0
+native_color: child_DoFencing:2 allocation score on c001n01: 0
+native_color: child_DoFencing:2 allocation score on c001n02: -INFINITY
 native_color: child_DoFencing:2 allocation score on c001n03: 1
-native_color: child_DoFencing:2 allocation score on c001n08: 0
+native_color: child_DoFencing:2 allocation score on c001n08: -INFINITY
 native_color: child_DoFencing:3 allocation score on c001n01: 1
-native_color: child_DoFencing:3 allocation score on c001n02: 0
-native_color: child_DoFencing:3 allocation score on c001n03: 0
-native_color: child_DoFencing:3 allocation score on c001n08: 0
+native_color: child_DoFencing:3 allocation score on c001n02: -INFINITY
+native_color: child_DoFencing:3 allocation score on c001n03: -INFINITY
+native_color: child_DoFencing:3 allocation score on c001n08: -INFINITY
 native_color: heartbeat_192.168.100.182 allocation score on c001n01: -INFINITY
 native_color: heartbeat_192.168.100.182 allocation score on c001n02: 0
 native_color: heartbeat_192.168.100.182 allocation score on c001n03: -INFINITY
@@ -107,38 +107,38 @@ native_color: ocf_192.168.100.183 allocation score on c001n01: -INFINITY
 native_color: ocf_192.168.100.183 allocation score on c001n02: 0
 native_color: ocf_192.168.100.183 allocation score on c001n03: -INFINITY
 native_color: ocf_192.168.100.183 allocation score on c001n08: -INFINITY
-native_color: ocf_msdummy:0 allocation score on c001n01: -INFINITY
+native_color: ocf_msdummy:0 allocation score on c001n01: 0
 native_color: ocf_msdummy:0 allocation score on c001n02: 0
-native_color: ocf_msdummy:0 allocation score on c001n03: -INFINITY
+native_color: ocf_msdummy:0 allocation score on c001n03: 0
 native_color: ocf_msdummy:0 allocation score on c001n08: 1001
-native_color: ocf_msdummy:1 allocation score on c001n01: -INFINITY
+native_color: ocf_msdummy:1 allocation score on c001n01: 0
 native_color: ocf_msdummy:1 allocation score on c001n02: 1
-native_color: ocf_msdummy:1 allocation score on c001n03: -INFINITY
-native_color: ocf_msdummy:1 allocation score on c001n08: -INFINITY
-native_color: ocf_msdummy:2 allocation score on c001n01: -INFINITY
+native_color: ocf_msdummy:1 allocation score on c001n03: 0
+native_color: ocf_msdummy:1 allocation score on c001n08: 0
+native_color: ocf_msdummy:2 allocation score on c001n01: 0
 native_color: ocf_msdummy:2 allocation score on c001n02: 0
 native_color: ocf_msdummy:2 allocation score on c001n03: 1
 native_color: ocf_msdummy:2 allocation score on c001n08: 0
-native_color: ocf_msdummy:3 allocation score on c001n01: -INFINITY
+native_color: ocf_msdummy:3 allocation score on c001n01: 0
 native_color: ocf_msdummy:3 allocation score on c001n02: 0
-native_color: ocf_msdummy:3 allocation score on c001n03: -INFINITY
+native_color: ocf_msdummy:3 allocation score on c001n03: 0
 native_color: ocf_msdummy:3 allocation score on c001n08: 1
-native_color: ocf_msdummy:4 allocation score on c001n01: -INFINITY
+native_color: ocf_msdummy:4 allocation score on c001n01: 0
 native_color: ocf_msdummy:4 allocation score on c001n02: 1
-native_color: ocf_msdummy:4 allocation score on c001n03: -INFINITY
+native_color: ocf_msdummy:4 allocation score on c001n03: 0
 native_color: ocf_msdummy:4 allocation score on c001n08: -INFINITY
-native_color: ocf_msdummy:5 allocation score on c001n01: -INFINITY
-native_color: ocf_msdummy:5 allocation score on c001n02: 0
+native_color: ocf_msdummy:5 allocation score on c001n01: 0
+native_color: ocf_msdummy:5 allocation score on c001n02: -INFINITY
 native_color: ocf_msdummy:5 allocation score on c001n03: 1
-native_color: ocf_msdummy:5 allocation score on c001n08: 0
+native_color: ocf_msdummy:5 allocation score on c001n08: -INFINITY
 native_color: ocf_msdummy:6 allocation score on c001n01: 1
-native_color: ocf_msdummy:6 allocation score on c001n02: 0
-native_color: ocf_msdummy:6 allocation score on c001n03: 0
-native_color: ocf_msdummy:6 allocation score on c001n08: 0
+native_color: ocf_msdummy:6 allocation score on c001n02: -INFINITY
+native_color: ocf_msdummy:6 allocation score on c001n03: -INFINITY
+native_color: ocf_msdummy:6 allocation score on c001n08: -INFINITY
 native_color: ocf_msdummy:7 allocation score on c001n01: 1
-native_color: ocf_msdummy:7 allocation score on c001n02: 0
-native_color: ocf_msdummy:7 allocation score on c001n03: 0
-native_color: ocf_msdummy:7 allocation score on c001n08: 0
+native_color: ocf_msdummy:7 allocation score on c001n02: -INFINITY
+native_color: ocf_msdummy:7 allocation score on c001n03: -INFINITY
+native_color: ocf_msdummy:7 allocation score on c001n08: -INFINITY
 native_color: rsc_c001n01 allocation score on c001n01: 100
 native_color: rsc_c001n01 allocation score on c001n02: 0
 native_color: rsc_c001n01 allocation score on c001n03: 0
diff --git a/pengine/test10/master-7.scores b/pengine/test10/master-7.scores
index 207dc8c..37fc6cd 100644
--- a/pengine/test10/master-7.scores
+++ b/pengine/test10/master-7.scores
@@ -82,14 +82,14 @@ native_color: child_DoFencing:0 allocation score on c001n08: -INFINITY
 native_color: child_DoFencing:1 allocation score on c001n01: -INFINITY
 native_color: child_DoFencing:1 allocation score on c001n02: 0
 native_color: child_DoFencing:1 allocation score on c001n03: 1
-native_color: child_DoFencing:1 allocation score on c001n08: -INFINITY
+native_color: child_DoFencing:1 allocation score on c001n08: 0
 native_color: child_DoFencing:2 allocation score on c001n01: -INFINITY
 native_color: child_DoFencing:2 allocation score on c001n02: 1
 native_color: child_DoFencing:2 allocation score on c001n03: -INFINITY
-native_color: child_DoFencing:2 allocation score on c001n08: -INFINITY
+native_color: child_DoFencing:2 allocation score on c001n08: 0
 native_color: child_DoFencing:3 allocation score on c001n01: -INFINITY
-native_color: child_DoFencing:3 allocation score on c001n02: 0
-native_color: child_DoFencing:3 allocation score on c001n03: 0
+native_color: child_DoFencing:3 allocation score on c001n02: -INFINITY
+native_color: child_DoFencing:3 allocation score on c001n03: -INFINITY
 native_color: child_DoFencing:3 allocation score on c001n08: 1
 native_color: heartbeat_192.168.100.182 allocation score on c001n01: -INFINITY
 native_color: heartbeat_192.168.100.182 allocation score on c001n02: 0
@@ -114,11 +114,11 @@ native_color: ocf_msdummy:0 allocation score on c001n08: -INFINITY
 native_color: ocf_msdummy:1 allocation score on c001n01: -INFINITY
 native_color: ocf_msdummy:1 allocation score on c001n02: 0
 native_color: ocf_msdummy:1 allocation score on c001n03: 1
-native_color: ocf_msdummy:1 allocation score on c001n08: -INFINITY
+native_color: ocf_msdummy:1 allocation score on c001n08: 0
 native_color: ocf_msdummy:2 allocation score on c001n01: -INFINITY
 native_color: ocf_msdummy:2 allocation score on c001n02: 1
-native_color: ocf_msdummy:2 allocation score on c001n03: -INFINITY
-native_color: ocf_msdummy:2 allocation score on c001n08: -INFINITY
+native_color: ocf_msdummy:2 allocation score on c001n03: 0
+native_color: ocf_msdummy:2 allocation score on c001n08: 0
 native_color: ocf_msdummy:3 allocation score on c001n01: -INFINITY
 native_color: ocf_msdummy:3 allocation score on c001n02: 0
 native_color: ocf_msdummy:3 allocation score on c001n03: 0
@@ -130,14 +130,14 @@ native_color: ocf_msdummy:4 allocation score on c001n08: -INFINITY
 native_color: ocf_msdummy:5 allocation score on c001n01: -INFINITY
 native_color: ocf_msdummy:5 allocation score on c001n02: 0
 native_color: ocf_msdummy:5 allocation score on c001n03: 1
-native_color: ocf_msdummy:5 allocation score on c001n08: -INFINITY
+native_color: ocf_msdummy:5 allocation score on c001n08: 0
 native_color: ocf_msdummy:6 allocation score on c001n01: -INFINITY
 native_color: ocf_msdummy:6 allocation score on c001n02: 1
 native_color: ocf_msdummy:6 allocation score on c001n03: -INFINITY
-native_color: ocf_msdummy:6 allocation score on c001n08: -INFINITY
+native_color: ocf_msdummy:6 allocation score on c001n08: 0
 native_color: ocf_msdummy:7 allocation score on c001n01: -INFINITY
-native_color: ocf_msdummy:7 allocation score on c001n02: 0
-native_color: ocf_msdummy:7 allocation score on c001n03: 0
+native_color: ocf_msdummy:7 allocation score on c001n02: -INFINITY
+native_color: ocf_msdummy:7 allocation score on c001n03: -INFINITY
 native_color: ocf_msdummy:7 allocation score on c001n08: 1
 native_color: rsc_c001n01 allocation score on c001n01: 100
 native_color: rsc_c001n01 allocation score on c001n02: 0
diff --git a/pengine/test10/master-8.scores b/pengine/test10/master-8.scores
index 88cf1ed..c9d1cc9 100644
--- a/pengine/test10/master-8.scores
+++ b/pengine/test10/master-8.scores
@@ -82,14 +82,14 @@ native_color: child_DoFencing:0 allocation score on c001n08: -INFINITY
 native_color: child_DoFencing:1 allocation score on c001n01: -INFINITY
 native_color: child_DoFencing:1 allocation score on c001n02: 0
 native_color: child_DoFencing:1 allocation score on c001n03: 1
-native_color: child_DoFencing:1 allocation score on c001n08: -INFINITY
+native_color: child_DoFencing:1 allocation score on c001n08: 0
 native_color: child_DoFencing:2 allocation score on c001n01: -INFINITY
 native_color: child_DoFencing:2 allocation score on c001n02: 1
 native_color: child_DoFencing:2 allocation score on c001n03: -INFINITY
-native_color: child_DoFencing:2 allocation score on c001n08: -INFINITY
+native_color: child_DoFencing:2 allocation score on c001n08: 0
 native_color: child_DoFencing:3 allocation score on c001n01: -INFINITY
-native_color: child_DoFencing:3 allocation score on c001n02: 0
-native_color: child_DoFencing:3 allocation score on c001n03: 0
+native_color: child_DoFencing:3 allocation score on c001n02: -INFINITY
+native_color: child_DoFencing:3 allocation score on c001n03: -INFINITY
 native_color: child_DoFencing:3 allocation score on c001n08: 1
 native_color: heartbeat_192.168.100.182 allocation score on c001n01: -INFINITY
 native_color: heartbeat_192.168.100.182 allocation score on c001n02: 0
@@ -114,11 +114,11 @@ native_color: ocf_msdummy:0 allocation score on c001n08: -INFINITY
 native_color: ocf_msdummy:1 allocation score on c001n01: -INFINITY
 native_color: ocf_msdummy:1 allocation score on c001n02: 0
 native_color: ocf_msdummy:1 allocation score on c001n03: 1
-native_color: ocf_msdummy:1 allocation score on c001n08: -INFINITY
+native_color: ocf_msdummy:1 allocation score on c001n08: 0
 native_color: ocf_msdummy:2 allocation score on c001n01: -INFINITY
 native_color: ocf_msdummy:2 allocation score on c001n02: 1
 native_color: ocf_msdummy:2 allocation score on c001n03: 0
-native_color: ocf_msdummy:2 allocation score on c001n08: -INFINITY
+native_color: ocf_msdummy:2 allocation score on c001n08: 0
 native_color: ocf_msdummy:3 allocation score on c001n01: -INFINITY
 native_color: ocf_msdummy:3 allocation score on c001n02: 0
 native_color: ocf_msdummy:3 allocation score on c001n03: 0
@@ -134,9 +134,9 @@ native_color: ocf_msdummy:5 allocation score on c001n08: -INFINITY
 native_color: ocf_msdummy:6 allocation score on c001n01: -INFINITY
 native_color: ocf_msdummy:6 allocation score on c001n02: 1
 native_color: ocf_msdummy:6 allocation score on c001n03: 0
-native_color: ocf_msdummy:6 allocation score on c001n08: -INFINITY
+native_color: ocf_msdummy:6 allocation score on c001n08: 0
 native_color: ocf_msdummy:7 allocation score on c001n01: -INFINITY
-native_color: ocf_msdummy:7 allocation score on c001n02: 0
+native_color: ocf_msdummy:7 allocation score on c001n02: -INFINITY
 native_color: ocf_msdummy:7 allocation score on c001n03: 0
 native_color: ocf_msdummy:7 allocation score on c001n08: 1
 native_color: rsc_c001n01 allocation score on c001n01: 100
diff --git a/pengine/test10/master-demote-2.scores b/pengine/test10/master-demote-2.scores
index 0455105..2d4d1f0 100644
--- a/pengine/test10/master-demote-2.scores
+++ b/pengine/test10/master-demote-2.scores
@@ -69,18 +69,18 @@ native_color: migrator allocation score on pcmk-3: 0
 native_color: migrator allocation score on pcmk-4: 0
 native_color: ping-1:0 allocation score on pcmk-1: 1
 native_color: ping-1:0 allocation score on pcmk-2: 0
-native_color: ping-1:0 allocation score on pcmk-3: -INFINITY
+native_color: ping-1:0 allocation score on pcmk-3: 0
 native_color: ping-1:0 allocation score on pcmk-4: 0
 native_color: ping-1:1 allocation score on pcmk-1: -INFINITY
 native_color: ping-1:1 allocation score on pcmk-2: 1
-native_color: ping-1:1 allocation score on pcmk-3: -INFINITY
-native_color: ping-1:1 allocation score on pcmk-4: -INFINITY
-native_color: ping-1:2 allocation score on pcmk-1: 0
-native_color: ping-1:2 allocation score on pcmk-2: 0
+native_color: ping-1:1 allocation score on pcmk-3: 0
+native_color: ping-1:1 allocation score on pcmk-4: 0
+native_color: ping-1:2 allocation score on pcmk-1: -INFINITY
+native_color: ping-1:2 allocation score on pcmk-2: -INFINITY
 native_color: ping-1:2 allocation score on pcmk-3: 1
 native_color: ping-1:2 allocation score on pcmk-4: 0
 native_color: ping-1:3 allocation score on pcmk-1: -INFINITY
-native_color: ping-1:3 allocation score on pcmk-2: 0
+native_color: ping-1:3 allocation score on pcmk-2: -INFINITY
 native_color: ping-1:3 allocation score on pcmk-3: -INFINITY
 native_color: ping-1:3 allocation score on pcmk-4: 1
 native_color: r192.168.122.105 allocation score on pcmk-1: -INFINITY
diff --git a/pengine/test10/master-demote.scores b/pengine/test10/master-demote.scores
index 9046c30..7c654f3 100644
--- a/pengine/test10/master-demote.scores
+++ b/pengine/test10/master-demote.scores
@@ -51,8 +51,8 @@ native_color: named_address allocation score on cxb1: 210
 native_color: named_daemon allocation score on cxa1: -INFINITY
 native_color: named_daemon allocation score on cxb1: -INFINITY
 native_color: named_drbd_node:0 allocation score on cxa1: 76
-native_color: named_drbd_node:0 allocation score on cxb1: -INFINITY
-native_color: named_drbd_node:1 allocation score on cxa1: 0
+native_color: named_drbd_node:0 allocation score on cxb1: 0
+native_color: named_drbd_node:1 allocation score on cxa1: -INFINITY
 native_color: named_drbd_node:1 allocation score on cxb1: 76
 native_color: named_filesys allocation score on cxa1: -INFINITY
 native_color: named_filesys allocation score on cxb1: -INFINITY
diff --git a/pengine/test10/master-dependent-ban.scores b/pengine/test10/master-dependent-ban.scores
index 0964ff3..ea70651 100644
--- a/pengine/test10/master-dependent-ban.scores
+++ b/pengine/test10/master-dependent-ban.scores
@@ -11,11 +11,8 @@ clone_color: p_drbd-dtest1:1 allocation score on c8: -INFINITY
 native_color: p_drbd-dtest1:0 allocation score on c6: -INFINITY
 native_color: p_drbd-dtest1:0 allocation score on c7: 1001
 native_color: p_drbd-dtest1:0 allocation score on c8: -INFINITY
-native_color: p_drbd-dtest1:1 allocation score on c6: -INFINITY
 native_color: p_drbd-dtest1:1 allocation score on c6: 6
 native_color: p_drbd-dtest1:1 allocation score on c7: -INFINITY
-native_color: p_drbd-dtest1:1 allocation score on c7: 0
-native_color: p_drbd-dtest1:1 allocation score on c8: -INFINITY
 native_color: p_drbd-dtest1:1 allocation score on c8: -INFINITY
 native_color: p_dtest1 allocation score on c6: -INFINITY
 native_color: p_dtest1 allocation score on c7: 1001
diff --git a/pengine/test10/master-notify.scores b/pengine/test10/master-notify.scores
index 7a93db0..f44754b 100644
--- a/pengine/test10/master-notify.scores
+++ b/pengine/test10/master-notify.scores
@@ -15,14 +15,14 @@ fake:0 promotion score on rhel7-auto1: 5
 fake:1 promotion score on rhel7-auto3: 5
 fake:2 promotion score on rhel7-auto2: 5
 native_color: fake:0 allocation score on rhel7-auto1: 6
-native_color: fake:0 allocation score on rhel7-auto2: -INFINITY
-native_color: fake:0 allocation score on rhel7-auto3: -INFINITY
-native_color: fake:1 allocation score on rhel7-auto1: 0
-native_color: fake:1 allocation score on rhel7-auto2: -INFINITY
+native_color: fake:0 allocation score on rhel7-auto2: 0
+native_color: fake:0 allocation score on rhel7-auto3: 0
+native_color: fake:1 allocation score on rhel7-auto1: -INFINITY
+native_color: fake:1 allocation score on rhel7-auto2: 0
 native_color: fake:1 allocation score on rhel7-auto3: 6
-native_color: fake:2 allocation score on rhel7-auto1: 0
+native_color: fake:2 allocation score on rhel7-auto1: -INFINITY
 native_color: fake:2 allocation score on rhel7-auto2: 6
-native_color: fake:2 allocation score on rhel7-auto3: 0
+native_color: fake:2 allocation score on rhel7-auto3: -INFINITY
 native_color: shooter allocation score on rhel7-auto1: 0
 native_color: shooter allocation score on rhel7-auto2: 0
 native_color: shooter allocation score on rhel7-auto3: 0
diff --git a/pengine/test10/master-role.scores b/pengine/test10/master-role.scores
index 6ea7a0a..6524faa 100644
--- a/pengine/test10/master-role.scores
+++ b/pengine/test10/master-role.scores
@@ -5,9 +5,9 @@ clone_color: res_Stateful_1:0 allocation score on sles11-a: 0
 clone_color: res_Stateful_1:0 allocation score on sles11-b: 11
 clone_color: res_Stateful_1:1 allocation score on sles11-a: 11
 clone_color: res_Stateful_1:1 allocation score on sles11-b: 0
-native_color: res_Stateful_1:0 allocation score on sles11-a: -INFINITY
+native_color: res_Stateful_1:0 allocation score on sles11-a: 0
 native_color: res_Stateful_1:0 allocation score on sles11-b: 11
 native_color: res_Stateful_1:1 allocation score on sles11-a: 11
-native_color: res_Stateful_1:1 allocation score on sles11-b: 0
+native_color: res_Stateful_1:1 allocation score on sles11-b: -INFINITY
 res_Stateful_1:0 promotion score on sles11-b: 10
 res_Stateful_1:1 promotion score on sles11-a: 10
diff --git a/pengine/test10/master-unmanaged-monitor.scores b/pengine/test10/master-unmanaged-monitor.scores
index c8ca2c3..fa5e100 100644
--- a/pengine/test10/master-unmanaged-monitor.scores
+++ b/pengine/test10/master-unmanaged-monitor.scores
@@ -99,22 +99,22 @@ native_color: migrator allocation score on pcmk-1: 0
 native_color: migrator allocation score on pcmk-2: 0
 native_color: migrator allocation score on pcmk-3: 0
 native_color: migrator allocation score on pcmk-4: INFINITY
-native_color: ping-1:0 allocation score on pcmk-1: -INFINITY
+native_color: ping-1:0 allocation score on pcmk-1: 0
 native_color: ping-1:0 allocation score on pcmk-2: INFINITY
 native_color: ping-1:0 allocation score on pcmk-3: 0
 native_color: ping-1:0 allocation score on pcmk-4: 0
-native_color: ping-1:1 allocation score on pcmk-1: -INFINITY
+native_color: ping-1:1 allocation score on pcmk-1: 0
 native_color: ping-1:1 allocation score on pcmk-2: -INFINITY
 native_color: ping-1:1 allocation score on pcmk-3: INFINITY
-native_color: ping-1:1 allocation score on pcmk-4: -INFINITY
-native_color: ping-1:2 allocation score on pcmk-1: -INFINITY
+native_color: ping-1:1 allocation score on pcmk-4: 0
+native_color: ping-1:2 allocation score on pcmk-1: 0
 native_color: ping-1:2 allocation score on pcmk-2: -INFINITY
-native_color: ping-1:2 allocation score on pcmk-3: 0
+native_color: ping-1:2 allocation score on pcmk-3: -INFINITY
 native_color: ping-1:2 allocation score on pcmk-4: INFINITY
 native_color: ping-1:3 allocation score on pcmk-1: INFINITY
-native_color: ping-1:3 allocation score on pcmk-2: 0
-native_color: ping-1:3 allocation score on pcmk-3: 0
-native_color: ping-1:3 allocation score on pcmk-4: 0
+native_color: ping-1:3 allocation score on pcmk-2: -INFINITY
+native_color: ping-1:3 allocation score on pcmk-3: -INFINITY
+native_color: ping-1:3 allocation score on pcmk-4: -INFINITY
 native_color: r192.168.122.112 allocation score on pcmk-1: -INFINITY
 native_color: r192.168.122.112 allocation score on pcmk-2: -INFINITY
 native_color: r192.168.122.112 allocation score on pcmk-3: INFINITY
diff --git a/pengine/test10/migrate-begin.scores b/pengine/test10/migrate-begin.scores
index da34108..0ed41b2 100644
--- a/pengine/test10/migrate-begin.scores
+++ b/pengine/test10/migrate-begin.scores
@@ -5,9 +5,9 @@ clone_color: dlm:0 allocation score on hex-13: 0
 clone_color: dlm:0 allocation score on hex-14: 1
 clone_color: dlm:1 allocation score on hex-13: 1
 clone_color: dlm:1 allocation score on hex-14: 0
-native_color: dlm:0 allocation score on hex-13: -INFINITY
+native_color: dlm:0 allocation score on hex-13: 0
 native_color: dlm:0 allocation score on hex-14: 1
 native_color: dlm:1 allocation score on hex-13: 1
-native_color: dlm:1 allocation score on hex-14: 0
+native_color: dlm:1 allocation score on hex-14: -INFINITY
 native_color: test-vm allocation score on hex-13: 0
 native_color: test-vm allocation score on hex-14: -INFINITY
diff --git a/pengine/test10/migrate-both-vms.scores b/pengine/test10/migrate-both-vms.scores
index 5879699..c8ec735 100644
--- a/pengine/test10/migrate-both-vms.scores
+++ b/pengine/test10/migrate-both-vms.scores
@@ -135,7 +135,7 @@ native_color: fs-libvirt-VM-xcm:0 allocation score on cvmh01: -INFINITY
 native_color: fs-libvirt-VM-xcm:0 allocation score on cvmh02: -INFINITY
 native_color: fs-libvirt-VM-xcm:0 allocation score on cvmh03: -INFINITY
 native_color: fs-libvirt-VM-xcm:0 allocation score on cvmh04: -INFINITY
-native_color: fs-libvirt-VM-xcm:1 allocation score on cvmh01: -INFINITY
+native_color: fs-libvirt-VM-xcm:1 allocation score on cvmh01: 0
 native_color: fs-libvirt-VM-xcm:1 allocation score on cvmh02: 1
 native_color: fs-libvirt-VM-xcm:1 allocation score on cvmh03: -INFINITY
 native_color: fs-libvirt-VM-xcm:1 allocation score on cvmh04: -INFINITY
@@ -144,14 +144,14 @@ native_color: fs-libvirt-VM-xcm:2 allocation score on cvmh02: -INFINITY
 native_color: fs-libvirt-VM-xcm:2 allocation score on cvmh03: -INFINITY
 native_color: fs-libvirt-VM-xcm:2 allocation score on cvmh04: -INFINITY
 native_color: fs-libvirt-VM-xcm:3 allocation score on cvmh01: 1
-native_color: fs-libvirt-VM-xcm:3 allocation score on cvmh02: 0
+native_color: fs-libvirt-VM-xcm:3 allocation score on cvmh02: -INFINITY
 native_color: fs-libvirt-VM-xcm:3 allocation score on cvmh03: -INFINITY
 native_color: fs-libvirt-VM-xcm:3 allocation score on cvmh04: -INFINITY
 native_color: p-fs-gpfs:0 allocation score on cvmh01: -INFINITY
 native_color: p-fs-gpfs:0 allocation score on cvmh02: -INFINITY
 native_color: p-fs-gpfs:0 allocation score on cvmh03: -INFINITY
 native_color: p-fs-gpfs:0 allocation score on cvmh04: -INFINITY
-native_color: p-fs-gpfs:1 allocation score on cvmh01: -INFINITY
+native_color: p-fs-gpfs:1 allocation score on cvmh01: 0
 native_color: p-fs-gpfs:1 allocation score on cvmh02: 1
 native_color: p-fs-gpfs:1 allocation score on cvmh03: -INFINITY
 native_color: p-fs-gpfs:1 allocation score on cvmh04: -INFINITY
@@ -160,7 +160,7 @@ native_color: p-fs-gpfs:2 allocation score on cvmh02: -INFINITY
 native_color: p-fs-gpfs:2 allocation score on cvmh03: -INFINITY
 native_color: p-fs-gpfs:2 allocation score on cvmh04: -INFINITY
 native_color: p-fs-gpfs:3 allocation score on cvmh01: 1
-native_color: p-fs-gpfs:3 allocation score on cvmh02: 0
+native_color: p-fs-gpfs:3 allocation score on cvmh02: -INFINITY
 native_color: p-fs-gpfs:3 allocation score on cvmh03: -INFINITY
 native_color: p-fs-gpfs:3 allocation score on cvmh04: -INFINITY
 native_color: p-libvirtd:0 allocation score on cvmh01: -INFINITY
@@ -183,7 +183,7 @@ native_color: p-watch-ib0:0 allocation score on cvmh01: -INFINITY
 native_color: p-watch-ib0:0 allocation score on cvmh02: -INFINITY
 native_color: p-watch-ib0:0 allocation score on cvmh03: -INFINITY
 native_color: p-watch-ib0:0 allocation score on cvmh04: -INFINITY
-native_color: p-watch-ib0:1 allocation score on cvmh01: -INFINITY
+native_color: p-watch-ib0:1 allocation score on cvmh01: 0
 native_color: p-watch-ib0:1 allocation score on cvmh02: 1
 native_color: p-watch-ib0:1 allocation score on cvmh03: -INFINITY
 native_color: p-watch-ib0:1 allocation score on cvmh04: -INFINITY
@@ -192,7 +192,7 @@ native_color: p-watch-ib0:2 allocation score on cvmh02: -INFINITY
 native_color: p-watch-ib0:2 allocation score on cvmh03: -INFINITY
 native_color: p-watch-ib0:2 allocation score on cvmh04: -INFINITY
 native_color: p-watch-ib0:3 allocation score on cvmh01: 1
-native_color: p-watch-ib0:3 allocation score on cvmh02: 0
+native_color: p-watch-ib0:3 allocation score on cvmh02: -INFINITY
 native_color: p-watch-ib0:3 allocation score on cvmh03: -INFINITY
 native_color: p-watch-ib0:3 allocation score on cvmh04: -INFINITY
 native_color: vm-compute-test allocation score on cvmh01: 0
diff --git a/pengine/test10/migrate-fail-2.scores b/pengine/test10/migrate-fail-2.scores
index da34108..0ed41b2 100644
--- a/pengine/test10/migrate-fail-2.scores
+++ b/pengine/test10/migrate-fail-2.scores
@@ -5,9 +5,9 @@ clone_color: dlm:0 allocation score on hex-13: 0
 clone_color: dlm:0 allocation score on hex-14: 1
 clone_color: dlm:1 allocation score on hex-13: 1
 clone_color: dlm:1 allocation score on hex-14: 0
-native_color: dlm:0 allocation score on hex-13: -INFINITY
+native_color: dlm:0 allocation score on hex-13: 0
 native_color: dlm:0 allocation score on hex-14: 1
 native_color: dlm:1 allocation score on hex-13: 1
-native_color: dlm:1 allocation score on hex-14: 0
+native_color: dlm:1 allocation score on hex-14: -INFINITY
 native_color: test-vm allocation score on hex-13: 0
 native_color: test-vm allocation score on hex-14: -INFINITY
diff --git a/pengine/test10/migrate-fail-4.scores b/pengine/test10/migrate-fail-4.scores
index da34108..0ed41b2 100644
--- a/pengine/test10/migrate-fail-4.scores
+++ b/pengine/test10/migrate-fail-4.scores
@@ -5,9 +5,9 @@ clone_color: dlm:0 allocation score on hex-13: 0
 clone_color: dlm:0 allocation score on hex-14: 1
 clone_color: dlm:1 allocation score on hex-13: 1
 clone_color: dlm:1 allocation score on hex-14: 0
-native_color: dlm:0 allocation score on hex-13: -INFINITY
+native_color: dlm:0 allocation score on hex-13: 0
 native_color: dlm:0 allocation score on hex-14: 1
 native_color: dlm:1 allocation score on hex-13: 1
-native_color: dlm:1 allocation score on hex-14: 0
+native_color: dlm:1 allocation score on hex-14: -INFINITY
 native_color: test-vm allocation score on hex-13: 0
 native_color: test-vm allocation score on hex-14: -INFINITY
diff --git a/pengine/test10/migrate-fail-5.scores b/pengine/test10/migrate-fail-5.scores
index da34108..0ed41b2 100644
--- a/pengine/test10/migrate-fail-5.scores
+++ b/pengine/test10/migrate-fail-5.scores
@@ -5,9 +5,9 @@ clone_color: dlm:0 allocation score on hex-13: 0
 clone_color: dlm:0 allocation score on hex-14: 1
 clone_color: dlm:1 allocation score on hex-13: 1
 clone_color: dlm:1 allocation score on hex-14: 0
-native_color: dlm:0 allocation score on hex-13: -INFINITY
+native_color: dlm:0 allocation score on hex-13: 0
 native_color: dlm:0 allocation score on hex-14: 1
 native_color: dlm:1 allocation score on hex-13: 1
-native_color: dlm:1 allocation score on hex-14: 0
+native_color: dlm:1 allocation score on hex-14: -INFINITY
 native_color: test-vm allocation score on hex-13: 0
 native_color: test-vm allocation score on hex-14: -INFINITY
diff --git a/pengine/test10/migrate-fail-6.scores b/pengine/test10/migrate-fail-6.scores
index da34108..0ed41b2 100644
--- a/pengine/test10/migrate-fail-6.scores
+++ b/pengine/test10/migrate-fail-6.scores
@@ -5,9 +5,9 @@ clone_color: dlm:0 allocation score on hex-13: 0
 clone_color: dlm:0 allocation score on hex-14: 1
 clone_color: dlm:1 allocation score on hex-13: 1
 clone_color: dlm:1 allocation score on hex-14: 0
-native_color: dlm:0 allocation score on hex-13: -INFINITY
+native_color: dlm:0 allocation score on hex-13: 0
 native_color: dlm:0 allocation score on hex-14: 1
 native_color: dlm:1 allocation score on hex-13: 1
-native_color: dlm:1 allocation score on hex-14: 0
+native_color: dlm:1 allocation score on hex-14: -INFINITY
 native_color: test-vm allocation score on hex-13: 0
 native_color: test-vm allocation score on hex-14: -INFINITY
diff --git a/pengine/test10/migrate-fail-8.scores b/pengine/test10/migrate-fail-8.scores
index da34108..0ed41b2 100644
--- a/pengine/test10/migrate-fail-8.scores
+++ b/pengine/test10/migrate-fail-8.scores
@@ -5,9 +5,9 @@ clone_color: dlm:0 allocation score on hex-13: 0
 clone_color: dlm:0 allocation score on hex-14: 1
 clone_color: dlm:1 allocation score on hex-13: 1
 clone_color: dlm:1 allocation score on hex-14: 0
-native_color: dlm:0 allocation score on hex-13: -INFINITY
+native_color: dlm:0 allocation score on hex-13: 0
 native_color: dlm:0 allocation score on hex-14: 1
 native_color: dlm:1 allocation score on hex-13: 1
-native_color: dlm:1 allocation score on hex-14: 0
+native_color: dlm:1 allocation score on hex-14: -INFINITY
 native_color: test-vm allocation score on hex-13: 0
 native_color: test-vm allocation score on hex-14: -INFINITY
diff --git a/pengine/test10/migrate-fail-9.scores b/pengine/test10/migrate-fail-9.scores
index da34108..0ed41b2 100644
--- a/pengine/test10/migrate-fail-9.scores
+++ b/pengine/test10/migrate-fail-9.scores
@@ -5,9 +5,9 @@ clone_color: dlm:0 allocation score on hex-13: 0
 clone_color: dlm:0 allocation score on hex-14: 1
 clone_color: dlm:1 allocation score on hex-13: 1
 clone_color: dlm:1 allocation score on hex-14: 0
-native_color: dlm:0 allocation score on hex-13: -INFINITY
+native_color: dlm:0 allocation score on hex-13: 0
 native_color: dlm:0 allocation score on hex-14: 1
 native_color: dlm:1 allocation score on hex-13: 1
-native_color: dlm:1 allocation score on hex-14: 0
+native_color: dlm:1 allocation score on hex-14: -INFINITY
 native_color: test-vm allocation score on hex-13: 0
 native_color: test-vm allocation score on hex-14: -INFINITY
diff --git a/pengine/test10/migrate-fencing.scores b/pengine/test10/migrate-fencing.scores
index c68de49..3febd69 100644
--- a/pengine/test10/migrate-fencing.scores
+++ b/pengine/test10/migrate-fencing.scores
@@ -84,12 +84,12 @@ native_color: FencingChild:1 allocation score on pcmk-2: 0
 native_color: FencingChild:1 allocation score on pcmk-3: 0
 native_color: FencingChild:1 allocation score on pcmk-4: -INFINITY
 native_color: FencingChild:2 allocation score on pcmk-1: -INFINITY
-native_color: FencingChild:2 allocation score on pcmk-2: -INFINITY
+native_color: FencingChild:2 allocation score on pcmk-2: 0
 native_color: FencingChild:2 allocation score on pcmk-3: 1
 native_color: FencingChild:2 allocation score on pcmk-4: -INFINITY
 native_color: FencingChild:3 allocation score on pcmk-1: -INFINITY
 native_color: FencingChild:3 allocation score on pcmk-2: 1
-native_color: FencingChild:3 allocation score on pcmk-3: 0
+native_color: FencingChild:3 allocation score on pcmk-3: -INFINITY
 native_color: FencingChild:3 allocation score on pcmk-4: -INFINITY
 native_color: lsb-dummy allocation score on pcmk-1: 0
 native_color: lsb-dummy allocation score on pcmk-2: -INFINITY
@@ -104,16 +104,16 @@ native_color: ping-1:0 allocation score on pcmk-2: -INFINITY
 native_color: ping-1:0 allocation score on pcmk-3: -INFINITY
 native_color: ping-1:0 allocation score on pcmk-4: -INFINITY
 native_color: ping-1:1 allocation score on pcmk-1: 1
-native_color: ping-1:1 allocation score on pcmk-2: -INFINITY
-native_color: ping-1:1 allocation score on pcmk-3: -INFINITY
+native_color: ping-1:1 allocation score on pcmk-2: 0
+native_color: ping-1:1 allocation score on pcmk-3: 0
 native_color: ping-1:1 allocation score on pcmk-4: -INFINITY
-native_color: ping-1:2 allocation score on pcmk-1: 0
-native_color: ping-1:2 allocation score on pcmk-2: -INFINITY
+native_color: ping-1:2 allocation score on pcmk-1: -INFINITY
+native_color: ping-1:2 allocation score on pcmk-2: 0
 native_color: ping-1:2 allocation score on pcmk-3: 1
 native_color: ping-1:2 allocation score on pcmk-4: -INFINITY
-native_color: ping-1:3 allocation score on pcmk-1: 0
+native_color: ping-1:3 allocation score on pcmk-1: -INFINITY
 native_color: ping-1:3 allocation score on pcmk-2: 1
-native_color: ping-1:3 allocation score on pcmk-3: 0
+native_color: ping-1:3 allocation score on pcmk-3: -INFINITY
 native_color: ping-1:3 allocation score on pcmk-4: -INFINITY
 native_color: r192.168.101.181 allocation score on pcmk-1: 6
 native_color: r192.168.101.181 allocation score on pcmk-2: -INFINITY
@@ -152,12 +152,12 @@ native_color: stateful-1:1 allocation score on pcmk-2: 0
 native_color: stateful-1:1 allocation score on pcmk-3: 0
 native_color: stateful-1:1 allocation score on pcmk-4: -INFINITY
 native_color: stateful-1:2 allocation score on pcmk-1: -INFINITY
-native_color: stateful-1:2 allocation score on pcmk-2: -INFINITY
+native_color: stateful-1:2 allocation score on pcmk-2: 0
 native_color: stateful-1:2 allocation score on pcmk-3: 6
 native_color: stateful-1:2 allocation score on pcmk-4: -INFINITY
 native_color: stateful-1:3 allocation score on pcmk-1: -INFINITY
 native_color: stateful-1:3 allocation score on pcmk-2: 6
-native_color: stateful-1:3 allocation score on pcmk-3: 0
+native_color: stateful-1:3 allocation score on pcmk-3: -INFINITY
 native_color: stateful-1:3 allocation score on pcmk-4: -INFINITY
 stateful-1:0 promotion score on none: 0
 stateful-1:1 promotion score on pcmk-1: 5
diff --git a/pengine/test10/migrate-partial-2.scores b/pengine/test10/migrate-partial-2.scores
index da34108..0ed41b2 100644
--- a/pengine/test10/migrate-partial-2.scores
+++ b/pengine/test10/migrate-partial-2.scores
@@ -5,9 +5,9 @@ clone_color: dlm:0 allocation score on hex-13: 0
 clone_color: dlm:0 allocation score on hex-14: 1
 clone_color: dlm:1 allocation score on hex-13: 1
 clone_color: dlm:1 allocation score on hex-14: 0
-native_color: dlm:0 allocation score on hex-13: -INFINITY
+native_color: dlm:0 allocation score on hex-13: 0
 native_color: dlm:0 allocation score on hex-14: 1
 native_color: dlm:1 allocation score on hex-13: 1
-native_color: dlm:1 allocation score on hex-14: 0
+native_color: dlm:1 allocation score on hex-14: -INFINITY
 native_color: test-vm allocation score on hex-13: 0
 native_color: test-vm allocation score on hex-14: -INFINITY
diff --git a/pengine/test10/migrate-partial-3.scores b/pengine/test10/migrate-partial-3.scores
index 309b51c..7448a6d 100644
--- a/pengine/test10/migrate-partial-3.scores
+++ b/pengine/test10/migrate-partial-3.scores
@@ -11,11 +11,11 @@ clone_color: dlm:1 allocation score on hex-15: 0
 clone_color: dlm:2 allocation score on hex-13: 0
 clone_color: dlm:2 allocation score on hex-14: 0
 clone_color: dlm:2 allocation score on hex-15: 0
-native_color: dlm:0 allocation score on hex-13: -INFINITY
+native_color: dlm:0 allocation score on hex-13: 0
 native_color: dlm:0 allocation score on hex-14: 1
 native_color: dlm:0 allocation score on hex-15: -INFINITY
 native_color: dlm:1 allocation score on hex-13: 1
-native_color: dlm:1 allocation score on hex-14: 0
+native_color: dlm:1 allocation score on hex-14: -INFINITY
 native_color: dlm:1 allocation score on hex-15: -INFINITY
 native_color: dlm:2 allocation score on hex-13: -INFINITY
 native_color: dlm:2 allocation score on hex-14: -INFINITY
diff --git a/pengine/test10/not-reschedule-unneeded-monitor.scores b/pengine/test10/not-reschedule-unneeded-monitor.scores
index 3bc02ed..3591076 100644
--- a/pengine/test10/not-reschedule-unneeded-monitor.scores
+++ b/pengine/test10/not-reschedule-unneeded-monitor.scores
@@ -25,28 +25,28 @@ clone_color: vmdisk:0 allocation score on castor: 0
 clone_color: vmdisk:0 allocation score on kimball: 1
 clone_color: vmdisk:1 allocation score on castor: 1
 clone_color: vmdisk:1 allocation score on kimball: 0
-group_color: vm-fs:0 allocation score on castor: -INFINITY
+group_color: vm-fs:0 allocation score on castor: 0
 group_color: vm-fs:0 allocation score on kimball: 1
 group_color: vm-fs:1 allocation score on castor: 1
-group_color: vm-fs:1 allocation score on kimball: 0
-group_color: vm1:0 allocation score on castor: -INFINITY
+group_color: vm-fs:1 allocation score on kimball: -INFINITY
+group_color: vm1:0 allocation score on castor: 0
 group_color: vm1:0 allocation score on kimball: 0
 group_color: vm1:1 allocation score on castor: 0
-group_color: vm1:1 allocation score on kimball: 0
-group_color: vmdisk:0 allocation score on castor: -INFINITY
+group_color: vm1:1 allocation score on kimball: -INFINITY
+group_color: vmdisk:0 allocation score on castor: 0
 group_color: vmdisk:0 allocation score on kimball: 1
 group_color: vmdisk:1 allocation score on castor: 1
-group_color: vmdisk:1 allocation score on kimball: 0
-native_color: dlm:0 allocation score on castor: -INFINITY
+group_color: vmdisk:1 allocation score on kimball: -INFINITY
+native_color: dlm:0 allocation score on castor: 0
 native_color: dlm:0 allocation score on kimball: 1
 native_color: dlm:1 allocation score on castor: 1
-native_color: dlm:1 allocation score on kimball: 0
+native_color: dlm:1 allocation score on kimball: -INFINITY
 native_color: sbd allocation score on castor: 0
 native_color: sbd allocation score on kimball: 1
-native_color: sgdisk:0 allocation score on castor: -INFINITY
+native_color: sgdisk:0 allocation score on castor: 0
 native_color: sgdisk:0 allocation score on kimball: 1
 native_color: sgdisk:1 allocation score on castor: 1
-native_color: sgdisk:1 allocation score on kimball: 0
+native_color: sgdisk:1 allocation score on kimball: -INFINITY
 native_color: sle12-kvm allocation score on castor: -INFINITY
 native_color: sle12-kvm allocation score on kimball: 0
 native_color: vm-fs:0 allocation score on castor: -INFINITY
diff --git a/pengine/test10/novell-251689.scores b/pengine/test10/novell-251689.scores
index c433786..5dc9b48 100644
--- a/pengine/test10/novell-251689.scores
+++ b/pengine/test10/novell-251689.scores
@@ -29,25 +29,25 @@ clone_color: stonithclone:1 allocation score on node1: 1
 clone_color: stonithclone:1 allocation score on node2: 0
 clone_color: stonithcloneset allocation score on node1: 0
 clone_color: stonithcloneset allocation score on node2: 0
-native_color: configstoreclone:0 allocation score on node1: -INFINITY
+native_color: configstoreclone:0 allocation score on node1: 0
 native_color: configstoreclone:0 allocation score on node2: 1
 native_color: configstoreclone:1 allocation score on node1: 1
-native_color: configstoreclone:1 allocation score on node2: 0
-native_color: evmsclone:0 allocation score on node1: -INFINITY
+native_color: configstoreclone:1 allocation score on node2: -INFINITY
+native_color: evmsclone:0 allocation score on node1: 0
 native_color: evmsclone:0 allocation score on node2: 1
 native_color: evmsclone:1 allocation score on node1: 1
-native_color: evmsclone:1 allocation score on node2: 0
-native_color: evmsdclone:0 allocation score on node1: -INFINITY
+native_color: evmsclone:1 allocation score on node2: -INFINITY
+native_color: evmsdclone:0 allocation score on node1: 0
 native_color: evmsdclone:0 allocation score on node2: 1
 native_color: evmsdclone:1 allocation score on node1: 1
-native_color: evmsdclone:1 allocation score on node2: 0
-native_color: imagestoreclone:0 allocation score on node1: -INFINITY
+native_color: evmsdclone:1 allocation score on node2: -INFINITY
+native_color: imagestoreclone:0 allocation score on node1: 0
 native_color: imagestoreclone:0 allocation score on node2: 1
 native_color: imagestoreclone:1 allocation score on node1: 1
-native_color: imagestoreclone:1 allocation score on node2: 0
+native_color: imagestoreclone:1 allocation score on node2: -INFINITY
 native_color: sles10 allocation score on node1: -INFINITY
 native_color: sles10 allocation score on node2: -INFINITY
-native_color: stonithclone:0 allocation score on node1: -INFINITY
+native_color: stonithclone:0 allocation score on node1: 0
 native_color: stonithclone:0 allocation score on node2: 1
 native_color: stonithclone:1 allocation score on node1: 1
-native_color: stonithclone:1 allocation score on node2: 0
+native_color: stonithclone:1 allocation score on node2: -INFINITY
diff --git a/pengine/test10/one-or-more-unrunnnable-instances.scores b/pengine/test10/one-or-more-unrunnnable-instances.scores
index dfa1112..59230f1 100644
--- a/pengine/test10/one-or-more-unrunnnable-instances.scores
+++ b/pengine/test10/one-or-more-unrunnnable-instances.scores
@@ -2319,18 +2319,18 @@ native_color: galera:0 allocation score on mrg-07: -INFINITY
 native_color: galera:0 allocation score on mrg-08: -INFINITY
 native_color: galera:0 allocation score on mrg-09: -INFINITY
 native_color: galera:0 allocation score on rdo7-node1: 101
-native_color: galera:0 allocation score on rdo7-node2: -INFINITY
-native_color: galera:0 allocation score on rdo7-node3: -INFINITY
+native_color: galera:0 allocation score on rdo7-node2: 0
+native_color: galera:0 allocation score on rdo7-node3: 0
 native_color: galera:1 allocation score on mrg-07: -INFINITY
 native_color: galera:1 allocation score on mrg-08: -INFINITY
 native_color: galera:1 allocation score on mrg-09: -INFINITY
-native_color: galera:1 allocation score on rdo7-node1: 0
+native_color: galera:1 allocation score on rdo7-node1: -INFINITY
 native_color: galera:1 allocation score on rdo7-node2: 101
 native_color: galera:1 allocation score on rdo7-node3: 0
 native_color: galera:2 allocation score on mrg-07: -INFINITY
 native_color: galera:2 allocation score on mrg-08: -INFINITY
 native_color: galera:2 allocation score on mrg-09: -INFINITY
-native_color: galera:2 allocation score on rdo7-node1: 0
+native_color: galera:2 allocation score on rdo7-node1: -INFINITY
 native_color: galera:2 allocation score on rdo7-node2: -INFINITY
 native_color: galera:2 allocation score on rdo7-node3: 101
 native_color: galera:3 allocation score on mrg-07: -INFINITY
@@ -2391,18 +2391,18 @@ native_color: glance-fs:0 allocation score on mrg-07: -INFINITY
 native_color: glance-fs:0 allocation score on mrg-08: -INFINITY
 native_color: glance-fs:0 allocation score on mrg-09: -INFINITY
 native_color: glance-fs:0 allocation score on rdo7-node1: 1
-native_color: glance-fs:0 allocation score on rdo7-node2: -INFINITY
-native_color: glance-fs:0 allocation score on rdo7-node3: -INFINITY
+native_color: glance-fs:0 allocation score on rdo7-node2: 0
+native_color: glance-fs:0 allocation score on rdo7-node3: 0
 native_color: glance-fs:1 allocation score on mrg-07: -INFINITY
 native_color: glance-fs:1 allocation score on mrg-08: -INFINITY
 native_color: glance-fs:1 allocation score on mrg-09: -INFINITY
-native_color: glance-fs:1 allocation score on rdo7-node1: 0
+native_color: glance-fs:1 allocation score on rdo7-node1: -INFINITY
 native_color: glance-fs:1 allocation score on rdo7-node2: 1
 native_color: glance-fs:1 allocation score on rdo7-node3: 0
 native_color: glance-fs:2 allocation score on mrg-07: -INFINITY
 native_color: glance-fs:2 allocation score on mrg-08: -INFINITY
 native_color: glance-fs:2 allocation score on mrg-09: -INFINITY
-native_color: glance-fs:2 allocation score on rdo7-node1: 0
+native_color: glance-fs:2 allocation score on rdo7-node1: -INFINITY
 native_color: glance-fs:2 allocation score on rdo7-node2: -INFINITY
 native_color: glance-fs:2 allocation score on rdo7-node3: 1
 native_color: glance-fs:3 allocation score on mrg-07: -INFINITY
@@ -2607,18 +2607,18 @@ native_color: horizon:0 allocation score on mrg-07: -INFINITY
 native_color: horizon:0 allocation score on mrg-08: -INFINITY
 native_color: horizon:0 allocation score on mrg-09: -INFINITY
 native_color: horizon:0 allocation score on rdo7-node1: 1
-native_color: horizon:0 allocation score on rdo7-node2: -INFINITY
-native_color: horizon:0 allocation score on rdo7-node3: -INFINITY
+native_color: horizon:0 allocation score on rdo7-node2: 0
+native_color: horizon:0 allocation score on rdo7-node3: 0
 native_color: horizon:1 allocation score on mrg-07: -INFINITY
 native_color: horizon:1 allocation score on mrg-08: -INFINITY
 native_color: horizon:1 allocation score on mrg-09: -INFINITY
-native_color: horizon:1 allocation score on rdo7-node1: 0
+native_color: horizon:1 allocation score on rdo7-node1: -INFINITY
 native_color: horizon:1 allocation score on rdo7-node2: 1
 native_color: horizon:1 allocation score on rdo7-node3: 0
 native_color: horizon:2 allocation score on mrg-07: -INFINITY
 native_color: horizon:2 allocation score on mrg-08: -INFINITY
 native_color: horizon:2 allocation score on mrg-09: -INFINITY
-native_color: horizon:2 allocation score on rdo7-node1: 0
+native_color: horizon:2 allocation score on rdo7-node1: -INFINITY
 native_color: horizon:2 allocation score on rdo7-node2: -INFINITY
 native_color: horizon:2 allocation score on rdo7-node3: 1
 native_color: horizon:3 allocation score on mrg-07: -INFINITY
@@ -2751,18 +2751,18 @@ native_color: memcached:0 allocation score on mrg-07: -INFINITY
 native_color: memcached:0 allocation score on mrg-08: -INFINITY
 native_color: memcached:0 allocation score on mrg-09: -INFINITY
 native_color: memcached:0 allocation score on rdo7-node1: 1
-native_color: memcached:0 allocation score on rdo7-node2: -INFINITY
-native_color: memcached:0 allocation score on rdo7-node3: -INFINITY
+native_color: memcached:0 allocation score on rdo7-node2: 0
+native_color: memcached:0 allocation score on rdo7-node3: 0
 native_color: memcached:1 allocation score on mrg-07: -INFINITY
 native_color: memcached:1 allocation score on mrg-08: -INFINITY
 native_color: memcached:1 allocation score on mrg-09: -INFINITY
-native_color: memcached:1 allocation score on rdo7-node1: 0
+native_color: memcached:1 allocation score on rdo7-node1: -INFINITY
 native_color: memcached:1 allocation score on rdo7-node2: 1
 native_color: memcached:1 allocation score on rdo7-node3: 0
 native_color: memcached:2 allocation score on mrg-07: -INFINITY
 native_color: memcached:2 allocation score on mrg-08: -INFINITY
 native_color: memcached:2 allocation score on mrg-09: -INFINITY
-native_color: memcached:2 allocation score on rdo7-node1: 0
+native_color: memcached:2 allocation score on rdo7-node1: -INFINITY
 native_color: memcached:2 allocation score on rdo7-node2: -INFINITY
 native_color: memcached:2 allocation score on rdo7-node3: 1
 native_color: memcached:3 allocation score on mrg-07: -INFINITY
@@ -2787,18 +2787,18 @@ native_color: mongodb:0 allocation score on mrg-07: -INFINITY
 native_color: mongodb:0 allocation score on mrg-08: -INFINITY
 native_color: mongodb:0 allocation score on mrg-09: -INFINITY
 native_color: mongodb:0 allocation score on rdo7-node1: 1
-native_color: mongodb:0 allocation score on rdo7-node2: -INFINITY
-native_color: mongodb:0 allocation score on rdo7-node3: -INFINITY
+native_color: mongodb:0 allocation score on rdo7-node2: 0
+native_color: mongodb:0 allocation score on rdo7-node3: 0
 native_color: mongodb:1 allocation score on mrg-07: -INFINITY
 native_color: mongodb:1 allocation score on mrg-08: -INFINITY
 native_color: mongodb:1 allocation score on mrg-09: -INFINITY
-native_color: mongodb:1 allocation score on rdo7-node1: 0
+native_color: mongodb:1 allocation score on rdo7-node1: -INFINITY
 native_color: mongodb:1 allocation score on rdo7-node2: 1
 native_color: mongodb:1 allocation score on rdo7-node3: 0
 native_color: mongodb:2 allocation score on mrg-07: -INFINITY
 native_color: mongodb:2 allocation score on mrg-08: -INFINITY
 native_color: mongodb:2 allocation score on mrg-09: -INFINITY
-native_color: mongodb:2 allocation score on rdo7-node1: 0
+native_color: mongodb:2 allocation score on rdo7-node1: -INFINITY
 native_color: mongodb:2 allocation score on rdo7-node2: -INFINITY
 native_color: mongodb:2 allocation score on rdo7-node3: 1
 native_color: mongodb:3 allocation score on mrg-07: -INFINITY
@@ -3363,18 +3363,18 @@ native_color: rabbitmq-server:0 allocation score on mrg-07: -INFINITY
 native_color: rabbitmq-server:0 allocation score on mrg-08: -INFINITY
 native_color: rabbitmq-server:0 allocation score on mrg-09: -INFINITY
 native_color: rabbitmq-server:0 allocation score on rdo7-node1: 1
-native_color: rabbitmq-server:0 allocation score on rdo7-node2: -INFINITY
-native_color: rabbitmq-server:0 allocation score on rdo7-node3: -INFINITY
+native_color: rabbitmq-server:0 allocation score on rdo7-node2: 0
+native_color: rabbitmq-server:0 allocation score on rdo7-node3: 0
 native_color: rabbitmq-server:1 allocation score on mrg-07: -INFINITY
 native_color: rabbitmq-server:1 allocation score on mrg-08: -INFINITY
 native_color: rabbitmq-server:1 allocation score on mrg-09: -INFINITY
-native_color: rabbitmq-server:1 allocation score on rdo7-node1: 0
+native_color: rabbitmq-server:1 allocation score on rdo7-node1: -INFINITY
 native_color: rabbitmq-server:1 allocation score on rdo7-node2: 1
 native_color: rabbitmq-server:1 allocation score on rdo7-node3: 0
 native_color: rabbitmq-server:2 allocation score on mrg-07: -INFINITY
 native_color: rabbitmq-server:2 allocation score on mrg-08: -INFINITY
 native_color: rabbitmq-server:2 allocation score on mrg-09: -INFINITY
-native_color: rabbitmq-server:2 allocation score on rdo7-node1: 0
+native_color: rabbitmq-server:2 allocation score on rdo7-node1: -INFINITY
 native_color: rabbitmq-server:2 allocation score on rdo7-node2: -INFINITY
 native_color: rabbitmq-server:2 allocation score on rdo7-node3: 1
 native_color: rabbitmq-server:3 allocation score on mrg-07: -INFINITY
@@ -3508,18 +3508,18 @@ native_color: swift-fs:0 allocation score on mrg-08: -INFINITY
 native_color: swift-fs:0 allocation score on mrg-09: -INFINITY
 native_color: swift-fs:0 allocation score on rdo7-node1: 1
 native_color: swift-fs:0 allocation score on rdo7-node2: 0
-native_color: swift-fs:0 allocation score on rdo7-node3: -INFINITY
+native_color: swift-fs:0 allocation score on rdo7-node3: 0
 native_color: swift-fs:1 allocation score on mrg-07: -INFINITY
 native_color: swift-fs:1 allocation score on mrg-08: -INFINITY
 native_color: swift-fs:1 allocation score on mrg-09: -INFINITY
 native_color: swift-fs:1 allocation score on rdo7-node1: -INFINITY
 native_color: swift-fs:1 allocation score on rdo7-node2: 1
-native_color: swift-fs:1 allocation score on rdo7-node3: -INFINITY
+native_color: swift-fs:1 allocation score on rdo7-node3: 0
 native_color: swift-fs:2 allocation score on mrg-07: -INFINITY
 native_color: swift-fs:2 allocation score on mrg-08: -INFINITY
 native_color: swift-fs:2 allocation score on mrg-09: -INFINITY
-native_color: swift-fs:2 allocation score on rdo7-node1: 0
-native_color: swift-fs:2 allocation score on rdo7-node2: 0
+native_color: swift-fs:2 allocation score on rdo7-node1: -INFINITY
+native_color: swift-fs:2 allocation score on rdo7-node2: -INFINITY
 native_color: swift-fs:2 allocation score on rdo7-node3: 1
 native_color: swift-fs:3 allocation score on mrg-07: -INFINITY
 native_color: swift-fs:3 allocation score on mrg-08: -INFINITY
diff --git a/pengine/test10/params-6.scores b/pengine/test10/params-6.scores
index 4a91ebf..76b9a20 100644
--- a/pengine/test10/params-6.scores
+++ b/pengine/test10/params-6.scores
@@ -827,14 +827,14 @@ native_color: dist.express-consult.org-vm allocation score on v03-b: -INFINITY
 native_color: dist.fly-uni.org-vm allocation score on mgmt01: -INFINITY
 native_color: dist.fly-uni.org-vm allocation score on v03-a: -INFINITY
 native_color: dist.fly-uni.org-vm allocation score on v03-b: -INFINITY
-native_color: dlm:0 allocation score on mgmt01: -INFINITY
+native_color: dlm:0 allocation score on mgmt01: 0
 native_color: dlm:0 allocation score on v03-a: 1
-native_color: dlm:0 allocation score on v03-b: -INFINITY
+native_color: dlm:0 allocation score on v03-b: 0
 native_color: dlm:1 allocation score on mgmt01: 1
-native_color: dlm:1 allocation score on v03-a: 0
+native_color: dlm:1 allocation score on v03-a: -INFINITY
 native_color: dlm:1 allocation score on v03-b: 0
 native_color: dlm:2 allocation score on mgmt01: -INFINITY
-native_color: dlm:2 allocation score on v03-a: 0
+native_color: dlm:2 allocation score on v03-a: -INFINITY
 native_color: dlm:2 allocation score on v03-b: 1
 native_color: dlm:3 allocation score on mgmt01: -INFINITY
 native_color: dlm:3 allocation score on v03-a: -INFINITY
@@ -869,14 +869,14 @@ native_color: git.vds-ok.com-vm allocation score on v03-b: -INFINITY
 native_color: gotin-bbb-vm allocation score on mgmt01: -INFINITY
 native_color: gotin-bbb-vm allocation score on v03-a: -INFINITY
 native_color: gotin-bbb-vm allocation score on v03-b: -INFINITY
-native_color: iscsid:0 allocation score on mgmt01: -INFINITY
+native_color: iscsid:0 allocation score on mgmt01: 0
 native_color: iscsid:0 allocation score on v03-a: 1
-native_color: iscsid:0 allocation score on v03-b: -INFINITY
+native_color: iscsid:0 allocation score on v03-b: 0
 native_color: iscsid:1 allocation score on mgmt01: 1
-native_color: iscsid:1 allocation score on v03-a: 0
+native_color: iscsid:1 allocation score on v03-a: -INFINITY
 native_color: iscsid:1 allocation score on v03-b: 0
 native_color: iscsid:2 allocation score on mgmt01: -INFINITY
-native_color: iscsid:2 allocation score on v03-a: 0
+native_color: iscsid:2 allocation score on v03-a: -INFINITY
 native_color: iscsid:2 allocation score on v03-b: 1
 native_color: iscsid:3 allocation score on mgmt01: -INFINITY
 native_color: iscsid:3 allocation score on v03-a: -INFINITY
@@ -899,14 +899,14 @@ native_color: iscsid:8 allocation score on v03-b: -INFINITY
 native_color: lenny-x32-devel-vm allocation score on mgmt01: -INFINITY
 native_color: lenny-x32-devel-vm allocation score on v03-a: 0
 native_color: lenny-x32-devel-vm allocation score on v03-b: 0
-native_color: libvirt-images-fs:0 allocation score on mgmt01: -INFINITY
+native_color: libvirt-images-fs:0 allocation score on mgmt01: 0
 native_color: libvirt-images-fs:0 allocation score on v03-a: 1
-native_color: libvirt-images-fs:0 allocation score on v03-b: -INFINITY
+native_color: libvirt-images-fs:0 allocation score on v03-b: 0
 native_color: libvirt-images-fs:1 allocation score on mgmt01: 1
-native_color: libvirt-images-fs:1 allocation score on v03-a: 0
+native_color: libvirt-images-fs:1 allocation score on v03-a: -INFINITY
 native_color: libvirt-images-fs:1 allocation score on v03-b: 0
 native_color: libvirt-images-fs:2 allocation score on mgmt01: -INFINITY
-native_color: libvirt-images-fs:2 allocation score on v03-a: 0
+native_color: libvirt-images-fs:2 allocation score on v03-a: -INFINITY
 native_color: libvirt-images-fs:2 allocation score on v03-b: 1
 native_color: libvirt-images-fs:3 allocation score on mgmt01: -INFINITY
 native_color: libvirt-images-fs:3 allocation score on v03-a: -INFINITY
@@ -950,14 +950,14 @@ native_color: libvirt-images-pool:6 allocation score on v03-b: -INFINITY
 native_color: libvirt-images-pool:7 allocation score on mgmt01: -INFINITY
 native_color: libvirt-images-pool:7 allocation score on v03-a: -INFINITY
 native_color: libvirt-images-pool:7 allocation score on v03-b: -INFINITY
-native_color: libvirt-install-fs:0 allocation score on mgmt01: -INFINITY
+native_color: libvirt-install-fs:0 allocation score on mgmt01: 0
 native_color: libvirt-install-fs:0 allocation score on v03-a: 1
-native_color: libvirt-install-fs:0 allocation score on v03-b: -INFINITY
+native_color: libvirt-install-fs:0 allocation score on v03-b: 0
 native_color: libvirt-install-fs:1 allocation score on mgmt01: 1
-native_color: libvirt-install-fs:1 allocation score on v03-a: 0
+native_color: libvirt-install-fs:1 allocation score on v03-a: -INFINITY
 native_color: libvirt-install-fs:1 allocation score on v03-b: 0
 native_color: libvirt-install-fs:2 allocation score on mgmt01: -INFINITY
-native_color: libvirt-install-fs:2 allocation score on v03-a: 0
+native_color: libvirt-install-fs:2 allocation score on v03-a: -INFINITY
 native_color: libvirt-install-fs:2 allocation score on v03-b: 1
 native_color: libvirt-install-fs:3 allocation score on mgmt01: -INFINITY
 native_color: libvirt-install-fs:3 allocation score on v03-a: -INFINITY
@@ -1055,14 +1055,14 @@ native_color: mcast-test-net:7 allocation score on v03-b: -INFINITY
 native_color: metae.ru-vm allocation score on mgmt01: -INFINITY
 native_color: metae.ru-vm allocation score on v03-a: -INFINITY
 native_color: metae.ru-vm allocation score on v03-b: -INFINITY
-native_color: multipathd:0 allocation score on mgmt01: -INFINITY
+native_color: multipathd:0 allocation score on mgmt01: 0
 native_color: multipathd:0 allocation score on v03-a: 1
-native_color: multipathd:0 allocation score on v03-b: -INFINITY
+native_color: multipathd:0 allocation score on v03-b: 0
 native_color: multipathd:1 allocation score on mgmt01: 1
-native_color: multipathd:1 allocation score on v03-a: 0
+native_color: multipathd:1 allocation score on v03-a: -INFINITY
 native_color: multipathd:1 allocation score on v03-b: 0
 native_color: multipathd:2 allocation score on mgmt01: -INFINITY
-native_color: multipathd:2 allocation score on v03-a: 0
+native_color: multipathd:2 allocation score on v03-a: -INFINITY
 native_color: multipathd:2 allocation score on v03-b: 1
 native_color: multipathd:3 allocation score on mgmt01: -INFINITY
 native_color: multipathd:3 allocation score on v03-a: -INFINITY
@@ -1084,9 +1084,9 @@ native_color: multipathd:8 allocation score on v03-a: -INFINITY
 native_color: multipathd:8 allocation score on v03-b: -INFINITY
 native_color: node-params:0 allocation score on mgmt01: -INFINITY
 native_color: node-params:0 allocation score on v03-a: 1
-native_color: node-params:0 allocation score on v03-b: -INFINITY
+native_color: node-params:0 allocation score on v03-b: 0
 native_color: node-params:1 allocation score on mgmt01: -INFINITY
-native_color: node-params:1 allocation score on v03-a: 0
+native_color: node-params:1 allocation score on v03-a: -INFINITY
 native_color: node-params:1 allocation score on v03-b: 1
 native_color: node-params:2 allocation score on mgmt01: -INFINITY
 native_color: node-params:2 allocation score on v03-a: -INFINITY
@@ -1351,9 +1351,9 @@ native_color: vds-ok-pool-1-vg:8 allocation score on v03-a: -INFINITY
 native_color: vds-ok-pool-1-vg:8 allocation score on v03-b: -INFINITY
 native_color: vlan1-if:0 allocation score on mgmt01: -INFINITY
 native_color: vlan1-if:0 allocation score on v03-a: 1
-native_color: vlan1-if:0 allocation score on v03-b: -INFINITY
+native_color: vlan1-if:0 allocation score on v03-b: 0
 native_color: vlan1-if:1 allocation score on mgmt01: -INFINITY
-native_color: vlan1-if:1 allocation score on v03-a: 0
+native_color: vlan1-if:1 allocation score on v03-a: -INFINITY
 native_color: vlan1-if:1 allocation score on v03-b: 1
 native_color: vlan1-if:2 allocation score on mgmt01: -INFINITY
 native_color: vlan1-if:2 allocation score on v03-a: -INFINITY
@@ -1375,9 +1375,9 @@ native_color: vlan1-if:7 allocation score on v03-a: -INFINITY
 native_color: vlan1-if:7 allocation score on v03-b: -INFINITY
 native_color: vlan101-if:0 allocation score on mgmt01: -INFINITY
 native_color: vlan101-if:0 allocation score on v03-a: 1
-native_color: vlan101-if:0 allocation score on v03-b: -INFINITY
+native_color: vlan101-if:0 allocation score on v03-b: 0
 native_color: vlan101-if:1 allocation score on mgmt01: -INFINITY
-native_color: vlan101-if:1 allocation score on v03-a: 0
+native_color: vlan101-if:1 allocation score on v03-a: -INFINITY
 native_color: vlan101-if:1 allocation score on v03-b: 1
 native_color: vlan101-if:2 allocation score on mgmt01: -INFINITY
 native_color: vlan101-if:2 allocation score on v03-a: -INFINITY
@@ -1399,9 +1399,9 @@ native_color: vlan101-if:7 allocation score on v03-a: -INFINITY
 native_color: vlan101-if:7 allocation score on v03-b: -INFINITY
 native_color: vlan102-if:0 allocation score on mgmt01: -INFINITY
 native_color: vlan102-if:0 allocation score on v03-a: 1
-native_color: vlan102-if:0 allocation score on v03-b: -INFINITY
+native_color: vlan102-if:0 allocation score on v03-b: 0
 native_color: vlan102-if:1 allocation score on mgmt01: -INFINITY
-native_color: vlan102-if:1 allocation score on v03-a: 0
+native_color: vlan102-if:1 allocation score on v03-a: -INFINITY
 native_color: vlan102-if:1 allocation score on v03-b: 1
 native_color: vlan102-if:2 allocation score on mgmt01: -INFINITY
 native_color: vlan102-if:2 allocation score on v03-a: -INFINITY
@@ -1423,9 +1423,9 @@ native_color: vlan102-if:7 allocation score on v03-a: -INFINITY
 native_color: vlan102-if:7 allocation score on v03-b: -INFINITY
 native_color: vlan103-if:0 allocation score on mgmt01: -INFINITY
 native_color: vlan103-if:0 allocation score on v03-a: 1
-native_color: vlan103-if:0 allocation score on v03-b: -INFINITY
+native_color: vlan103-if:0 allocation score on v03-b: 0
 native_color: vlan103-if:1 allocation score on mgmt01: -INFINITY
-native_color: vlan103-if:1 allocation score on v03-a: 0
+native_color: vlan103-if:1 allocation score on v03-a: -INFINITY
 native_color: vlan103-if:1 allocation score on v03-b: 1
 native_color: vlan103-if:2 allocation score on mgmt01: -INFINITY
 native_color: vlan103-if:2 allocation score on v03-a: -INFINITY
@@ -1447,9 +1447,9 @@ native_color: vlan103-if:7 allocation score on v03-a: -INFINITY
 native_color: vlan103-if:7 allocation score on v03-b: -INFINITY
 native_color: vlan104-if:0 allocation score on mgmt01: -INFINITY
 native_color: vlan104-if:0 allocation score on v03-a: 1
-native_color: vlan104-if:0 allocation score on v03-b: -INFINITY
+native_color: vlan104-if:0 allocation score on v03-b: 0
 native_color: vlan104-if:1 allocation score on mgmt01: -INFINITY
-native_color: vlan104-if:1 allocation score on v03-a: 0
+native_color: vlan104-if:1 allocation score on v03-a: -INFINITY
 native_color: vlan104-if:1 allocation score on v03-b: 1
 native_color: vlan104-if:2 allocation score on mgmt01: -INFINITY
 native_color: vlan104-if:2 allocation score on v03-a: -INFINITY
@@ -1495,9 +1495,9 @@ native_color: vlan200-if:7 allocation score on v03-a: -INFINITY
 native_color: vlan200-if:7 allocation score on v03-b: -INFINITY
 native_color: vlan3-if:0 allocation score on mgmt01: -INFINITY
 native_color: vlan3-if:0 allocation score on v03-a: 1
-native_color: vlan3-if:0 allocation score on v03-b: -INFINITY
+native_color: vlan3-if:0 allocation score on v03-b: 0
 native_color: vlan3-if:1 allocation score on mgmt01: -INFINITY
-native_color: vlan3-if:1 allocation score on v03-a: 0
+native_color: vlan3-if:1 allocation score on v03-a: -INFINITY
 native_color: vlan3-if:1 allocation score on v03-b: 1
 native_color: vlan3-if:2 allocation score on mgmt01: -INFINITY
 native_color: vlan3-if:2 allocation score on v03-a: -INFINITY
@@ -1519,9 +1519,9 @@ native_color: vlan3-if:7 allocation score on v03-a: -INFINITY
 native_color: vlan3-if:7 allocation score on v03-b: -INFINITY
 native_color: vlan4-if:0 allocation score on mgmt01: -INFINITY
 native_color: vlan4-if:0 allocation score on v03-a: 1
-native_color: vlan4-if:0 allocation score on v03-b: -INFINITY
+native_color: vlan4-if:0 allocation score on v03-b: 0
 native_color: vlan4-if:1 allocation score on mgmt01: -INFINITY
-native_color: vlan4-if:1 allocation score on v03-a: 0
+native_color: vlan4-if:1 allocation score on v03-a: -INFINITY
 native_color: vlan4-if:1 allocation score on v03-b: 1
 native_color: vlan4-if:2 allocation score on mgmt01: -INFINITY
 native_color: vlan4-if:2 allocation score on v03-a: -INFINITY
@@ -1543,9 +1543,9 @@ native_color: vlan4-if:7 allocation score on v03-a: -INFINITY
 native_color: vlan4-if:7 allocation score on v03-b: -INFINITY
 native_color: vlan5-if:0 allocation score on mgmt01: -INFINITY
 native_color: vlan5-if:0 allocation score on v03-a: 1
-native_color: vlan5-if:0 allocation score on v03-b: -INFINITY
+native_color: vlan5-if:0 allocation score on v03-b: 0
 native_color: vlan5-if:1 allocation score on mgmt01: -INFINITY
-native_color: vlan5-if:1 allocation score on v03-a: 0
+native_color: vlan5-if:1 allocation score on v03-a: -INFINITY
 native_color: vlan5-if:1 allocation score on v03-b: 1
 native_color: vlan5-if:2 allocation score on mgmt01: -INFINITY
 native_color: vlan5-if:2 allocation score on v03-a: -INFINITY
@@ -1567,9 +1567,9 @@ native_color: vlan5-if:7 allocation score on v03-a: -INFINITY
 native_color: vlan5-if:7 allocation score on v03-b: -INFINITY
 native_color: vlan900-if:0 allocation score on mgmt01: -INFINITY
 native_color: vlan900-if:0 allocation score on v03-a: 1
-native_color: vlan900-if:0 allocation score on v03-b: -INFINITY
+native_color: vlan900-if:0 allocation score on v03-b: 0
 native_color: vlan900-if:1 allocation score on mgmt01: -INFINITY
-native_color: vlan900-if:1 allocation score on v03-a: 0
+native_color: vlan900-if:1 allocation score on v03-a: -INFINITY
 native_color: vlan900-if:1 allocation score on v03-b: 1
 native_color: vlan900-if:2 allocation score on mgmt01: -INFINITY
 native_color: vlan900-if:2 allocation score on v03-a: -INFINITY
@@ -1591,9 +1591,9 @@ native_color: vlan900-if:7 allocation score on v03-a: -INFINITY
 native_color: vlan900-if:7 allocation score on v03-b: -INFINITY
 native_color: vlan909-if:0 allocation score on mgmt01: -INFINITY
 native_color: vlan909-if:0 allocation score on v03-a: 1
-native_color: vlan909-if:0 allocation score on v03-b: -INFINITY
+native_color: vlan909-if:0 allocation score on v03-b: 0
 native_color: vlan909-if:1 allocation score on mgmt01: -INFINITY
-native_color: vlan909-if:1 allocation score on v03-a: 0
+native_color: vlan909-if:1 allocation score on v03-a: -INFINITY
 native_color: vlan909-if:1 allocation score on v03-b: 1
 native_color: vlan909-if:2 allocation score on mgmt01: -INFINITY
 native_color: vlan909-if:2 allocation score on v03-a: -INFINITY
diff --git a/pengine/test10/probe-0.scores b/pengine/test10/probe-0.scores
index 078cc6c..b37b1a9 100644
--- a/pengine/test10/probe-0.scores
+++ b/pengine/test10/probe-0.scores
@@ -21,11 +21,11 @@ native_color: configstoreclone:0 allocation score on x32c47: 0
 native_color: configstoreclone:0 allocation score on x32c48: 0
 native_color: configstoreclone:1 allocation score on x32c47: -INFINITY
 native_color: configstoreclone:1 allocation score on x32c48: 0
-native_color: imagestoreclone:0 allocation score on x32c47: -INFINITY
+native_color: imagestoreclone:0 allocation score on x32c47: 0
 native_color: imagestoreclone:0 allocation score on x32c48: 1
 native_color: imagestoreclone:1 allocation score on x32c47: 1
-native_color: imagestoreclone:1 allocation score on x32c48: 0
-native_color: stonithclone:0 allocation score on x32c47: -INFINITY
+native_color: imagestoreclone:1 allocation score on x32c48: -INFINITY
+native_color: stonithclone:0 allocation score on x32c47: 0
 native_color: stonithclone:0 allocation score on x32c48: 1
 native_color: stonithclone:1 allocation score on x32c47: 1
-native_color: stonithclone:1 allocation score on x32c48: 0
+native_color: stonithclone:1 allocation score on x32c48: -INFINITY
diff --git a/pengine/test10/probe-3.scores b/pengine/test10/probe-3.scores
index 048abff..6f1539c 100644
--- a/pengine/test10/probe-3.scores
+++ b/pengine/test10/probe-3.scores
@@ -76,14 +76,14 @@ group_color: r192.168.101.183 allocation score on pcmk-2: 0
 group_color: r192.168.101.183 allocation score on pcmk-3: 0
 group_color: r192.168.101.183 allocation score on pcmk-4: 0
 native_color: FencingChild:0 allocation score on pcmk-1: 1
-native_color: FencingChild:0 allocation score on pcmk-2: -INFINITY
-native_color: FencingChild:0 allocation score on pcmk-3: -INFINITY
+native_color: FencingChild:0 allocation score on pcmk-2: 0
+native_color: FencingChild:0 allocation score on pcmk-3: 0
 native_color: FencingChild:0 allocation score on pcmk-4: -INFINITY
-native_color: FencingChild:1 allocation score on pcmk-1: 0
+native_color: FencingChild:1 allocation score on pcmk-1: -INFINITY
 native_color: FencingChild:1 allocation score on pcmk-2: 1
 native_color: FencingChild:1 allocation score on pcmk-3: 0
 native_color: FencingChild:1 allocation score on pcmk-4: -INFINITY
-native_color: FencingChild:2 allocation score on pcmk-1: 0
+native_color: FencingChild:2 allocation score on pcmk-1: -INFINITY
 native_color: FencingChild:2 allocation score on pcmk-2: -INFINITY
 native_color: FencingChild:2 allocation score on pcmk-3: 1
 native_color: FencingChild:2 allocation score on pcmk-4: -INFINITY
@@ -100,14 +100,14 @@ native_color: migrator allocation score on pcmk-2: 0
 native_color: migrator allocation score on pcmk-3: 0
 native_color: migrator allocation score on pcmk-4: 0
 native_color: ping-1:0 allocation score on pcmk-1: 1
-native_color: ping-1:0 allocation score on pcmk-2: -INFINITY
-native_color: ping-1:0 allocation score on pcmk-3: -INFINITY
+native_color: ping-1:0 allocation score on pcmk-2: 0
+native_color: ping-1:0 allocation score on pcmk-3: 0
 native_color: ping-1:0 allocation score on pcmk-4: -INFINITY
-native_color: ping-1:1 allocation score on pcmk-1: 0
+native_color: ping-1:1 allocation score on pcmk-1: -INFINITY
 native_color: ping-1:1 allocation score on pcmk-2: 1
 native_color: ping-1:1 allocation score on pcmk-3: 0
 native_color: ping-1:1 allocation score on pcmk-4: -INFINITY
-native_color: ping-1:2 allocation score on pcmk-1: 0
+native_color: ping-1:2 allocation score on pcmk-1: -INFINITY
 native_color: ping-1:2 allocation score on pcmk-2: -INFINITY
 native_color: ping-1:2 allocation score on pcmk-3: 1
 native_color: ping-1:2 allocation score on pcmk-4: -INFINITY
diff --git a/pengine/test10/probe-4.scores b/pengine/test10/probe-4.scores
index 048abff..6f1539c 100644
--- a/pengine/test10/probe-4.scores
+++ b/pengine/test10/probe-4.scores
@@ -76,14 +76,14 @@ group_color: r192.168.101.183 allocation score on pcmk-2: 0
 group_color: r192.168.101.183 allocation score on pcmk-3: 0
 group_color: r192.168.101.183 allocation score on pcmk-4: 0
 native_color: FencingChild:0 allocation score on pcmk-1: 1
-native_color: FencingChild:0 allocation score on pcmk-2: -INFINITY
-native_color: FencingChild:0 allocation score on pcmk-3: -INFINITY
+native_color: FencingChild:0 allocation score on pcmk-2: 0
+native_color: FencingChild:0 allocation score on pcmk-3: 0
 native_color: FencingChild:0 allocation score on pcmk-4: -INFINITY
-native_color: FencingChild:1 allocation score on pcmk-1: 0
+native_color: FencingChild:1 allocation score on pcmk-1: -INFINITY
 native_color: FencingChild:1 allocation score on pcmk-2: 1
 native_color: FencingChild:1 allocation score on pcmk-3: 0
 native_color: FencingChild:1 allocation score on pcmk-4: -INFINITY
-native_color: FencingChild:2 allocation score on pcmk-1: 0
+native_color: FencingChild:2 allocation score on pcmk-1: -INFINITY
 native_color: FencingChild:2 allocation score on pcmk-2: -INFINITY
 native_color: FencingChild:2 allocation score on pcmk-3: 1
 native_color: FencingChild:2 allocation score on pcmk-4: -INFINITY
@@ -100,14 +100,14 @@ native_color: migrator allocation score on pcmk-2: 0
 native_color: migrator allocation score on pcmk-3: 0
 native_color: migrator allocation score on pcmk-4: 0
 native_color: ping-1:0 allocation score on pcmk-1: 1
-native_color: ping-1:0 allocation score on pcmk-2: -INFINITY
-native_color: ping-1:0 allocation score on pcmk-3: -INFINITY
+native_color: ping-1:0 allocation score on pcmk-2: 0
+native_color: ping-1:0 allocation score on pcmk-3: 0
 native_color: ping-1:0 allocation score on pcmk-4: -INFINITY
-native_color: ping-1:1 allocation score on pcmk-1: 0
+native_color: ping-1:1 allocation score on pcmk-1: -INFINITY
 native_color: ping-1:1 allocation score on pcmk-2: 1
 native_color: ping-1:1 allocation score on pcmk-3: 0
 native_color: ping-1:1 allocation score on pcmk-4: -INFINITY
-native_color: ping-1:2 allocation score on pcmk-1: 0
+native_color: ping-1:2 allocation score on pcmk-1: -INFINITY
 native_color: ping-1:2 allocation score on pcmk-2: -INFINITY
 native_color: ping-1:2 allocation score on pcmk-3: 1
 native_color: ping-1:2 allocation score on pcmk-4: -INFINITY
diff --git a/pengine/test10/rec-node-13.scores b/pengine/test10/rec-node-13.scores
index 83749ea..dda1134 100644
--- a/pengine/test10/rec-node-13.scores
+++ b/pengine/test10/rec-node-13.scores
@@ -159,14 +159,14 @@ native_color: child_DoFencing:1 allocation score on c001n02: -INFINITY
 native_color: child_DoFencing:1 allocation score on c001n03: -INFINITY
 native_color: child_DoFencing:1 allocation score on c001n04: -INFINITY
 native_color: child_DoFencing:1 allocation score on c001n05: -INFINITY
-native_color: child_DoFencing:1 allocation score on c001n06: -INFINITY
+native_color: child_DoFencing:1 allocation score on c001n06: 0
 native_color: child_DoFencing:1 allocation score on c001n07: 1
 native_color: child_DoFencing:2 allocation score on c001n02: -INFINITY
 native_color: child_DoFencing:2 allocation score on c001n03: -INFINITY
 native_color: child_DoFencing:2 allocation score on c001n04: -INFINITY
 native_color: child_DoFencing:2 allocation score on c001n05: -INFINITY
 native_color: child_DoFencing:2 allocation score on c001n06: 1
-native_color: child_DoFencing:2 allocation score on c001n07: 0
+native_color: child_DoFencing:2 allocation score on c001n07: -INFINITY
 native_color: child_DoFencing:3 allocation score on c001n02: -INFINITY
 native_color: child_DoFencing:3 allocation score on c001n03: -INFINITY
 native_color: child_DoFencing:3 allocation score on c001n04: -INFINITY
@@ -213,8 +213,8 @@ native_color: ocf_msdummy:0 allocation score on c001n02: 1001
 native_color: ocf_msdummy:0 allocation score on c001n03: -INFINITY
 native_color: ocf_msdummy:0 allocation score on c001n04: -INFINITY
 native_color: ocf_msdummy:0 allocation score on c001n05: -INFINITY
-native_color: ocf_msdummy:0 allocation score on c001n06: -INFINITY
-native_color: ocf_msdummy:0 allocation score on c001n07: -INFINITY
+native_color: ocf_msdummy:0 allocation score on c001n06: 0
+native_color: ocf_msdummy:0 allocation score on c001n07: 0
 native_color: ocf_msdummy:1 allocation score on c001n02: -INFINITY
 native_color: ocf_msdummy:1 allocation score on c001n03: -INFINITY
 native_color: ocf_msdummy:1 allocation score on c001n04: -INFINITY
@@ -231,7 +231,7 @@ native_color: ocf_msdummy:11 allocation score on c001n02: 0
 native_color: ocf_msdummy:11 allocation score on c001n03: -INFINITY
 native_color: ocf_msdummy:11 allocation score on c001n04: -INFINITY
 native_color: ocf_msdummy:11 allocation score on c001n05: -INFINITY
-native_color: ocf_msdummy:11 allocation score on c001n06: -INFINITY
+native_color: ocf_msdummy:11 allocation score on c001n06: 0
 native_color: ocf_msdummy:11 allocation score on c001n07: 1
 native_color: ocf_msdummy:2 allocation score on c001n02: -INFINITY
 native_color: ocf_msdummy:2 allocation score on c001n03: -INFINITY
@@ -249,8 +249,8 @@ native_color: ocf_msdummy:4 allocation score on c001n02: 1
 native_color: ocf_msdummy:4 allocation score on c001n03: -INFINITY
 native_color: ocf_msdummy:4 allocation score on c001n04: -INFINITY
 native_color: ocf_msdummy:4 allocation score on c001n05: -INFINITY
-native_color: ocf_msdummy:4 allocation score on c001n06: -INFINITY
-native_color: ocf_msdummy:4 allocation score on c001n07: -INFINITY
+native_color: ocf_msdummy:4 allocation score on c001n06: 0
+native_color: ocf_msdummy:4 allocation score on c001n07: 0
 native_color: ocf_msdummy:5 allocation score on c001n02: -INFINITY
 native_color: ocf_msdummy:5 allocation score on c001n03: -INFINITY
 native_color: ocf_msdummy:5 allocation score on c001n04: -INFINITY
@@ -269,13 +269,13 @@ native_color: ocf_msdummy:7 allocation score on c001n04: -INFINITY
 native_color: ocf_msdummy:7 allocation score on c001n05: -INFINITY
 native_color: ocf_msdummy:7 allocation score on c001n06: -INFINITY
 native_color: ocf_msdummy:7 allocation score on c001n07: -INFINITY
-native_color: ocf_msdummy:8 allocation score on c001n02: 0
+native_color: ocf_msdummy:8 allocation score on c001n02: -INFINITY
 native_color: ocf_msdummy:8 allocation score on c001n03: -INFINITY
 native_color: ocf_msdummy:8 allocation score on c001n04: -INFINITY
 native_color: ocf_msdummy:8 allocation score on c001n05: -INFINITY
 native_color: ocf_msdummy:8 allocation score on c001n06: 1
 native_color: ocf_msdummy:8 allocation score on c001n07: 0
-native_color: ocf_msdummy:9 allocation score on c001n02: 0
+native_color: ocf_msdummy:9 allocation score on c001n02: -INFINITY
 native_color: ocf_msdummy:9 allocation score on c001n03: -INFINITY
 native_color: ocf_msdummy:9 allocation score on c001n04: -INFINITY
 native_color: ocf_msdummy:9 allocation score on c001n05: -INFINITY
diff --git a/pengine/test10/remote-orphaned.scores b/pengine/test10/remote-orphaned.scores
index beab9e8..53b4ada 100644
--- a/pengine/test10/remote-orphaned.scores
+++ b/pengine/test10/remote-orphaned.scores
@@ -57,8 +57,8 @@ native_color: migrator allocation score on 18node2: 0
 native_color: migrator allocation score on 18node3: 0
 native_color: ping-1:0 allocation score on 18node1: 1
 native_color: ping-1:0 allocation score on 18node2: -INFINITY
-native_color: ping-1:0 allocation score on 18node3: -INFINITY
-native_color: ping-1:1 allocation score on 18node1: 0
+native_color: ping-1:0 allocation score on 18node3: 0
+native_color: ping-1:1 allocation score on 18node1: -INFINITY
 native_color: ping-1:1 allocation score on 18node2: -INFINITY
 native_color: ping-1:1 allocation score on 18node3: 1
 native_color: ping-1:2 allocation score on 18node1: -INFINITY
@@ -85,9 +85,9 @@ native_color: rsc_18node3 allocation score on 18node2: 0
 native_color: rsc_18node3 allocation score on 18node3: 100
 native_color: stateful-1:0 allocation score on 18node1: 11
 native_color: stateful-1:0 allocation score on 18node2: -INFINITY
-native_color: stateful-1:0 allocation score on 18node3: -INFINITY
+native_color: stateful-1:0 allocation score on 18node3: 0
 native_color: stateful-1:0 allocation score on remote1: -INFINITY
-native_color: stateful-1:1 allocation score on 18node1: 0
+native_color: stateful-1:1 allocation score on 18node1: -INFINITY
 native_color: stateful-1:1 allocation score on 18node2: -INFINITY
 native_color: stateful-1:1 allocation score on 18node3: 6
 native_color: stateful-1:1 allocation score on remote1: -INFINITY
diff --git a/pengine/test10/stonith-0.scores b/pengine/test10/stonith-0.scores
index 9961589..7aab8cd 100644
--- a/pengine/test10/stonith-0.scores
+++ b/pengine/test10/stonith-0.scores
@@ -197,38 +197,38 @@ native_color: DcIPaddr allocation score on c001n07: -INFINITY
 native_color: DcIPaddr allocation score on c001n08: -INFINITY
 native_color: child_DoFencing:0 allocation score on c001n02: 1
 native_color: child_DoFencing:0 allocation score on c001n03: -INFINITY
-native_color: child_DoFencing:0 allocation score on c001n04: -INFINITY
+native_color: child_DoFencing:0 allocation score on c001n04: 0
 native_color: child_DoFencing:0 allocation score on c001n05: -INFINITY
-native_color: child_DoFencing:0 allocation score on c001n06: -INFINITY
-native_color: child_DoFencing:0 allocation score on c001n07: -INFINITY
-native_color: child_DoFencing:0 allocation score on c001n08: -INFINITY
-native_color: child_DoFencing:1 allocation score on c001n02: 0
+native_color: child_DoFencing:0 allocation score on c001n06: 0
+native_color: child_DoFencing:0 allocation score on c001n07: 0
+native_color: child_DoFencing:0 allocation score on c001n08: 0
+native_color: child_DoFencing:1 allocation score on c001n02: -INFINITY
 native_color: child_DoFencing:1 allocation score on c001n03: -INFINITY
 native_color: child_DoFencing:1 allocation score on c001n04: 1
 native_color: child_DoFencing:1 allocation score on c001n05: -INFINITY
 native_color: child_DoFencing:1 allocation score on c001n06: 0
 native_color: child_DoFencing:1 allocation score on c001n07: 0
-native_color: child_DoFencing:1 allocation score on c001n08: -INFINITY
-native_color: child_DoFencing:2 allocation score on c001n02: 0
+native_color: child_DoFencing:1 allocation score on c001n08: 0
+native_color: child_DoFencing:2 allocation score on c001n02: -INFINITY
 native_color: child_DoFencing:2 allocation score on c001n03: -INFINITY
 native_color: child_DoFencing:2 allocation score on c001n04: -INFINITY
 native_color: child_DoFencing:2 allocation score on c001n05: -INFINITY
 native_color: child_DoFencing:2 allocation score on c001n06: 1
 native_color: child_DoFencing:2 allocation score on c001n07: 0
-native_color: child_DoFencing:2 allocation score on c001n08: -INFINITY
-native_color: child_DoFencing:3 allocation score on c001n02: 0
+native_color: child_DoFencing:2 allocation score on c001n08: 0
+native_color: child_DoFencing:3 allocation score on c001n02: -INFINITY
 native_color: child_DoFencing:3 allocation score on c001n03: -INFINITY
 native_color: child_DoFencing:3 allocation score on c001n04: -INFINITY
 native_color: child_DoFencing:3 allocation score on c001n05: -INFINITY
 native_color: child_DoFencing:3 allocation score on c001n06: -INFINITY
 native_color: child_DoFencing:3 allocation score on c001n07: 1
-native_color: child_DoFencing:3 allocation score on c001n08: -INFINITY
-native_color: child_DoFencing:4 allocation score on c001n02: 0
+native_color: child_DoFencing:3 allocation score on c001n08: 0
+native_color: child_DoFencing:4 allocation score on c001n02: -INFINITY
 native_color: child_DoFencing:4 allocation score on c001n03: -INFINITY
-native_color: child_DoFencing:4 allocation score on c001n04: 0
+native_color: child_DoFencing:4 allocation score on c001n04: -INFINITY
 native_color: child_DoFencing:4 allocation score on c001n05: -INFINITY
-native_color: child_DoFencing:4 allocation score on c001n06: 0
-native_color: child_DoFencing:4 allocation score on c001n07: 0
+native_color: child_DoFencing:4 allocation score on c001n06: -INFINITY
+native_color: child_DoFencing:4 allocation score on c001n07: -INFINITY
 native_color: child_DoFencing:4 allocation score on c001n08: 1
 native_color: child_DoFencing:5 allocation score on c001n02: -INFINITY
 native_color: child_DoFencing:5 allocation score on c001n03: -INFINITY
@@ -274,73 +274,73 @@ native_color: ocf_192.168.100.183 allocation score on c001n07: -INFINITY
 native_color: ocf_192.168.100.183 allocation score on c001n08: -INFINITY
 native_color: ocf_msdummy:0 allocation score on c001n02: 1001
 native_color: ocf_msdummy:0 allocation score on c001n03: -INFINITY
-native_color: ocf_msdummy:0 allocation score on c001n04: -INFINITY
+native_color: ocf_msdummy:0 allocation score on c001n04: 0
 native_color: ocf_msdummy:0 allocation score on c001n05: -INFINITY
-native_color: ocf_msdummy:0 allocation score on c001n06: -INFINITY
-native_color: ocf_msdummy:0 allocation score on c001n07: -INFINITY
-native_color: ocf_msdummy:0 allocation score on c001n08: -INFINITY
+native_color: ocf_msdummy:0 allocation score on c001n06: 0
+native_color: ocf_msdummy:0 allocation score on c001n07: 0
+native_color: ocf_msdummy:0 allocation score on c001n08: 0
 native_color: ocf_msdummy:1 allocation score on c001n02: 1
 native_color: ocf_msdummy:1 allocation score on c001n03: -INFINITY
-native_color: ocf_msdummy:1 allocation score on c001n04: -INFINITY
+native_color: ocf_msdummy:1 allocation score on c001n04: 0
 native_color: ocf_msdummy:1 allocation score on c001n05: -INFINITY
-native_color: ocf_msdummy:1 allocation score on c001n06: -INFINITY
-native_color: ocf_msdummy:1 allocation score on c001n07: -INFINITY
-native_color: ocf_msdummy:1 allocation score on c001n08: -INFINITY
-native_color: ocf_msdummy:10 allocation score on c001n02: 0
+native_color: ocf_msdummy:1 allocation score on c001n06: 0
+native_color: ocf_msdummy:1 allocation score on c001n07: 0
+native_color: ocf_msdummy:1 allocation score on c001n08: 0
+native_color: ocf_msdummy:10 allocation score on c001n02: -INFINITY
 native_color: ocf_msdummy:10 allocation score on c001n03: -INFINITY
 native_color: ocf_msdummy:10 allocation score on c001n04: 1
 native_color: ocf_msdummy:10 allocation score on c001n05: -INFINITY
 native_color: ocf_msdummy:10 allocation score on c001n06: 0
 native_color: ocf_msdummy:10 allocation score on c001n07: 0
-native_color: ocf_msdummy:10 allocation score on c001n08: -INFINITY
-native_color: ocf_msdummy:11 allocation score on c001n02: 0
+native_color: ocf_msdummy:10 allocation score on c001n08: 0
+native_color: ocf_msdummy:11 allocation score on c001n02: -INFINITY
 native_color: ocf_msdummy:11 allocation score on c001n03: -INFINITY
 native_color: ocf_msdummy:11 allocation score on c001n04: 1
 native_color: ocf_msdummy:11 allocation score on c001n05: -INFINITY
 native_color: ocf_msdummy:11 allocation score on c001n06: 0
 native_color: ocf_msdummy:11 allocation score on c001n07: 0
-native_color: ocf_msdummy:11 allocation score on c001n08: -INFINITY
-native_color: ocf_msdummy:12 allocation score on c001n02: 0
+native_color: ocf_msdummy:11 allocation score on c001n08: 0
+native_color: ocf_msdummy:12 allocation score on c001n02: -INFINITY
 native_color: ocf_msdummy:12 allocation score on c001n03: -INFINITY
 native_color: ocf_msdummy:12 allocation score on c001n04: -INFINITY
 native_color: ocf_msdummy:12 allocation score on c001n05: -INFINITY
 native_color: ocf_msdummy:12 allocation score on c001n06: 1
 native_color: ocf_msdummy:12 allocation score on c001n07: 0
-native_color: ocf_msdummy:12 allocation score on c001n08: -INFINITY
-native_color: ocf_msdummy:13 allocation score on c001n02: 0
+native_color: ocf_msdummy:12 allocation score on c001n08: 0
+native_color: ocf_msdummy:13 allocation score on c001n02: -INFINITY
 native_color: ocf_msdummy:13 allocation score on c001n03: -INFINITY
 native_color: ocf_msdummy:13 allocation score on c001n04: -INFINITY
 native_color: ocf_msdummy:13 allocation score on c001n05: -INFINITY
 native_color: ocf_msdummy:13 allocation score on c001n06: 1
 native_color: ocf_msdummy:13 allocation score on c001n07: 0
-native_color: ocf_msdummy:13 allocation score on c001n08: -INFINITY
-native_color: ocf_msdummy:2 allocation score on c001n02: 0
+native_color: ocf_msdummy:13 allocation score on c001n08: 0
+native_color: ocf_msdummy:2 allocation score on c001n02: -INFINITY
 native_color: ocf_msdummy:2 allocation score on c001n03: -INFINITY
 native_color: ocf_msdummy:2 allocation score on c001n04: -INFINITY
 native_color: ocf_msdummy:2 allocation score on c001n05: -INFINITY
 native_color: ocf_msdummy:2 allocation score on c001n06: -INFINITY
 native_color: ocf_msdummy:2 allocation score on c001n07: 1
-native_color: ocf_msdummy:2 allocation score on c001n08: -INFINITY
-native_color: ocf_msdummy:3 allocation score on c001n02: 0
+native_color: ocf_msdummy:2 allocation score on c001n08: 0
+native_color: ocf_msdummy:3 allocation score on c001n02: -INFINITY
 native_color: ocf_msdummy:3 allocation score on c001n03: -INFINITY
 native_color: ocf_msdummy:3 allocation score on c001n04: -INFINITY
 native_color: ocf_msdummy:3 allocation score on c001n05: -INFINITY
 native_color: ocf_msdummy:3 allocation score on c001n06: -INFINITY
 native_color: ocf_msdummy:3 allocation score on c001n07: 1
-native_color: ocf_msdummy:3 allocation score on c001n08: -INFINITY
-native_color: ocf_msdummy:4 allocation score on c001n02: 0
+native_color: ocf_msdummy:3 allocation score on c001n08: 0
+native_color: ocf_msdummy:4 allocation score on c001n02: -INFINITY
 native_color: ocf_msdummy:4 allocation score on c001n03: -INFINITY
-native_color: ocf_msdummy:4 allocation score on c001n04: 0
+native_color: ocf_msdummy:4 allocation score on c001n04: -INFINITY
 native_color: ocf_msdummy:4 allocation score on c001n05: -INFINITY
-native_color: ocf_msdummy:4 allocation score on c001n06: 0
-native_color: ocf_msdummy:4 allocation score on c001n07: 0
+native_color: ocf_msdummy:4 allocation score on c001n06: -INFINITY
+native_color: ocf_msdummy:4 allocation score on c001n07: -INFINITY
 native_color: ocf_msdummy:4 allocation score on c001n08: 1
-native_color: ocf_msdummy:5 allocation score on c001n02: 0
+native_color: ocf_msdummy:5 allocation score on c001n02: -INFINITY
 native_color: ocf_msdummy:5 allocation score on c001n03: -INFINITY
-native_color: ocf_msdummy:5 allocation score on c001n04: 0
+native_color: ocf_msdummy:5 allocation score on c001n04: -INFINITY
 native_color: ocf_msdummy:5 allocation score on c001n05: -INFINITY
-native_color: ocf_msdummy:5 allocation score on c001n06: 0
-native_color: ocf_msdummy:5 allocation score on c001n07: 0
+native_color: ocf_msdummy:5 allocation score on c001n06: -INFINITY
+native_color: ocf_msdummy:5 allocation score on c001n07: -INFINITY
 native_color: ocf_msdummy:5 allocation score on c001n08: 1
 native_color: ocf_msdummy:6 allocation score on c001n02: -INFINITY
 native_color: ocf_msdummy:6 allocation score on c001n03: -INFINITY
diff --git a/pengine/test10/stonith-1.scores b/pengine/test10/stonith-1.scores
index 130bee0..7422355 100644
--- a/pengine/test10/stonith-1.scores
+++ b/pengine/test10/stonith-1.scores
@@ -72,10 +72,10 @@ group_color: r192.168.100.183 allocation score on sles-2: 0
 group_color: r192.168.100.183 allocation score on sles-3: 0
 group_color: r192.168.100.183 allocation score on sles-4: 0
 native_color: child_DoFencing:0 allocation score on sles-1: 1
-native_color: child_DoFencing:0 allocation score on sles-2: -INFINITY
+native_color: child_DoFencing:0 allocation score on sles-2: 0
 native_color: child_DoFencing:0 allocation score on sles-3: -INFINITY
 native_color: child_DoFencing:0 allocation score on sles-4: 0
-native_color: child_DoFencing:1 allocation score on sles-1: 0
+native_color: child_DoFencing:1 allocation score on sles-1: -INFINITY
 native_color: child_DoFencing:1 allocation score on sles-2: 1
 native_color: child_DoFencing:1 allocation score on sles-3: -INFINITY
 native_color: child_DoFencing:1 allocation score on sles-4: 0
diff --git a/pengine/test10/stonith-2.scores b/pengine/test10/stonith-2.scores
index 74a8f41..e1dd011 100644
--- a/pengine/test10/stonith-2.scores
+++ b/pengine/test10/stonith-2.scores
@@ -144,30 +144,30 @@ group_color: r192.168.100.183 allocation score on sles-4: 0
 group_color: r192.168.100.183 allocation score on sles-5: 0
 group_color: r192.168.100.183 allocation score on sles-6: 0
 native_color: child_DoFencing:0 allocation score on sles-1: 1
-native_color: child_DoFencing:0 allocation score on sles-2: -INFINITY
-native_color: child_DoFencing:0 allocation score on sles-3: -INFINITY
-native_color: child_DoFencing:0 allocation score on sles-4: -INFINITY
+native_color: child_DoFencing:0 allocation score on sles-2: 0
+native_color: child_DoFencing:0 allocation score on sles-3: 0
+native_color: child_DoFencing:0 allocation score on sles-4: 0
 native_color: child_DoFencing:0 allocation score on sles-5: -INFINITY
-native_color: child_DoFencing:0 allocation score on sles-6: -INFINITY
-native_color: child_DoFencing:1 allocation score on sles-1: 0
+native_color: child_DoFencing:0 allocation score on sles-6: 0
+native_color: child_DoFencing:1 allocation score on sles-1: -INFINITY
 native_color: child_DoFencing:1 allocation score on sles-2: 1
 native_color: child_DoFencing:1 allocation score on sles-3: 0
-native_color: child_DoFencing:1 allocation score on sles-4: -INFINITY
+native_color: child_DoFencing:1 allocation score on sles-4: 0
 native_color: child_DoFencing:1 allocation score on sles-5: -INFINITY
 native_color: child_DoFencing:1 allocation score on sles-6: 0
-native_color: child_DoFencing:2 allocation score on sles-1: 0
+native_color: child_DoFencing:2 allocation score on sles-1: -INFINITY
 native_color: child_DoFencing:2 allocation score on sles-2: -INFINITY
 native_color: child_DoFencing:2 allocation score on sles-3: 1
-native_color: child_DoFencing:2 allocation score on sles-4: -INFINITY
+native_color: child_DoFencing:2 allocation score on sles-4: 0
 native_color: child_DoFencing:2 allocation score on sles-5: -INFINITY
 native_color: child_DoFencing:2 allocation score on sles-6: 0
-native_color: child_DoFencing:3 allocation score on sles-1: 0
-native_color: child_DoFencing:3 allocation score on sles-2: 0
-native_color: child_DoFencing:3 allocation score on sles-3: 0
+native_color: child_DoFencing:3 allocation score on sles-1: -INFINITY
+native_color: child_DoFencing:3 allocation score on sles-2: -INFINITY
+native_color: child_DoFencing:3 allocation score on sles-3: -INFINITY
 native_color: child_DoFencing:3 allocation score on sles-4: 1
 native_color: child_DoFencing:3 allocation score on sles-5: -INFINITY
 native_color: child_DoFencing:3 allocation score on sles-6: 0
-native_color: child_DoFencing:4 allocation score on sles-1: 0
+native_color: child_DoFencing:4 allocation score on sles-1: -INFINITY
 native_color: child_DoFencing:4 allocation score on sles-2: -INFINITY
 native_color: child_DoFencing:4 allocation score on sles-3: -INFINITY
 native_color: child_DoFencing:4 allocation score on sles-4: -INFINITY
@@ -192,9 +192,9 @@ native_color: migrator allocation score on sles-4: 0
 native_color: migrator allocation score on sles-5: 0
 native_color: migrator allocation score on sles-6: 0
 native_color: ocf_msdummy:0 allocation score on sles-1: 0
-native_color: ocf_msdummy:0 allocation score on sles-2: -INFINITY
+native_color: ocf_msdummy:0 allocation score on sles-2: 0
 native_color: ocf_msdummy:0 allocation score on sles-3: 1
-native_color: ocf_msdummy:0 allocation score on sles-4: -INFINITY
+native_color: ocf_msdummy:0 allocation score on sles-4: 0
 native_color: ocf_msdummy:0 allocation score on sles-5: -INFINITY
 native_color: ocf_msdummy:0 allocation score on sles-6: 0
 native_color: ocf_msdummy:1 allocation score on sles-1: 0
@@ -206,30 +206,30 @@ native_color: ocf_msdummy:1 allocation score on sles-6: 0
 native_color: ocf_msdummy:10 allocation score on sles-1: 0
 native_color: ocf_msdummy:10 allocation score on sles-2: 1
 native_color: ocf_msdummy:10 allocation score on sles-3: 0
-native_color: ocf_msdummy:10 allocation score on sles-4: -INFINITY
+native_color: ocf_msdummy:10 allocation score on sles-4: 0
 native_color: ocf_msdummy:10 allocation score on sles-5: -INFINITY
 native_color: ocf_msdummy:10 allocation score on sles-6: 0
 native_color: ocf_msdummy:11 allocation score on sles-1: 0
-native_color: ocf_msdummy:11 allocation score on sles-2: -INFINITY
+native_color: ocf_msdummy:11 allocation score on sles-2: 0
 native_color: ocf_msdummy:11 allocation score on sles-3: 1
-native_color: ocf_msdummy:11 allocation score on sles-4: -INFINITY
+native_color: ocf_msdummy:11 allocation score on sles-4: 0
 native_color: ocf_msdummy:11 allocation score on sles-5: -INFINITY
 native_color: ocf_msdummy:11 allocation score on sles-6: 0
 native_color: ocf_msdummy:2 allocation score on sles-1: 0
 native_color: ocf_msdummy:2 allocation score on sles-2: 0
-native_color: ocf_msdummy:2 allocation score on sles-3: 0
+native_color: ocf_msdummy:2 allocation score on sles-3: -INFINITY
 native_color: ocf_msdummy:2 allocation score on sles-4: 1
 native_color: ocf_msdummy:2 allocation score on sles-5: -INFINITY
 native_color: ocf_msdummy:2 allocation score on sles-6: 0
 native_color: ocf_msdummy:3 allocation score on sles-1: 1
-native_color: ocf_msdummy:3 allocation score on sles-2: -INFINITY
+native_color: ocf_msdummy:3 allocation score on sles-2: 0
 native_color: ocf_msdummy:3 allocation score on sles-3: -INFINITY
 native_color: ocf_msdummy:3 allocation score on sles-4: -INFINITY
 native_color: ocf_msdummy:3 allocation score on sles-5: -INFINITY
-native_color: ocf_msdummy:3 allocation score on sles-6: -INFINITY
+native_color: ocf_msdummy:3 allocation score on sles-6: 0
 native_color: ocf_msdummy:4 allocation score on sles-1: 0
 native_color: ocf_msdummy:4 allocation score on sles-2: 1
-native_color: ocf_msdummy:4 allocation score on sles-3: 0
+native_color: ocf_msdummy:4 allocation score on sles-3: -INFINITY
 native_color: ocf_msdummy:4 allocation score on sles-4: -INFINITY
 native_color: ocf_msdummy:4 allocation score on sles-5: -INFINITY
 native_color: ocf_msdummy:4 allocation score on sles-6: 0
@@ -238,7 +238,7 @@ native_color: ocf_msdummy:5 allocation score on sles-2: -INFINITY
 native_color: ocf_msdummy:5 allocation score on sles-3: -INFINITY
 native_color: ocf_msdummy:5 allocation score on sles-4: -INFINITY
 native_color: ocf_msdummy:5 allocation score on sles-5: -INFINITY
-native_color: ocf_msdummy:5 allocation score on sles-6: -INFINITY
+native_color: ocf_msdummy:5 allocation score on sles-6: 0
 native_color: ocf_msdummy:6 allocation score on sles-1: -INFINITY
 native_color: ocf_msdummy:6 allocation score on sles-2: -INFINITY
 native_color: ocf_msdummy:6 allocation score on sles-3: -INFINITY
@@ -251,13 +251,13 @@ native_color: ocf_msdummy:7 allocation score on sles-3: -INFINITY
 native_color: ocf_msdummy:7 allocation score on sles-4: -INFINITY
 native_color: ocf_msdummy:7 allocation score on sles-5: -INFINITY
 native_color: ocf_msdummy:7 allocation score on sles-6: -INFINITY
-native_color: ocf_msdummy:8 allocation score on sles-1: 0
+native_color: ocf_msdummy:8 allocation score on sles-1: -INFINITY
 native_color: ocf_msdummy:8 allocation score on sles-2: -INFINITY
 native_color: ocf_msdummy:8 allocation score on sles-3: -INFINITY
 native_color: ocf_msdummy:8 allocation score on sles-4: -INFINITY
 native_color: ocf_msdummy:8 allocation score on sles-5: -INFINITY
 native_color: ocf_msdummy:8 allocation score on sles-6: 1
-native_color: ocf_msdummy:9 allocation score on sles-1: 0
+native_color: ocf_msdummy:9 allocation score on sles-1: -INFINITY
 native_color: ocf_msdummy:9 allocation score on sles-2: -INFINITY
 native_color: ocf_msdummy:9 allocation score on sles-3: -INFINITY
 native_color: ocf_msdummy:9 allocation score on sles-4: -INFINITY
diff --git a/pengine/test10/ticket-clone-12.scores b/pengine/test10/ticket-clone-12.scores
index c548662..3dc1851 100644
--- a/pengine/test10/ticket-clone-12.scores
+++ b/pengine/test10/ticket-clone-12.scores
@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0
 clone_color: rsc1:1 allocation score on node1: 0
 clone_color: rsc1:1 allocation score on node2: 0
 native_color: rsc1:0 allocation score on node1: 0
-native_color: rsc1:0 allocation score on node2: -INFINITY
-native_color: rsc1:1 allocation score on node1: 0
+native_color: rsc1:0 allocation score on node2: 0
+native_color: rsc1:1 allocation score on node1: -INFINITY
 native_color: rsc1:1 allocation score on node2: 0
 native_color: rsc_stonith allocation score on node1: 0
 native_color: rsc_stonith allocation score on node2: 0
diff --git a/pengine/test10/ticket-clone-24.scores b/pengine/test10/ticket-clone-24.scores
index c548662..3dc1851 100644
--- a/pengine/test10/ticket-clone-24.scores
+++ b/pengine/test10/ticket-clone-24.scores
@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0
 clone_color: rsc1:1 allocation score on node1: 0
 clone_color: rsc1:1 allocation score on node2: 0
 native_color: rsc1:0 allocation score on node1: 0
-native_color: rsc1:0 allocation score on node2: -INFINITY
-native_color: rsc1:1 allocation score on node1: 0
+native_color: rsc1:0 allocation score on node2: 0
+native_color: rsc1:1 allocation score on node1: -INFINITY
 native_color: rsc1:1 allocation score on node2: 0
 native_color: rsc_stonith allocation score on node1: 0
 native_color: rsc_stonith allocation score on node2: 0
diff --git a/pengine/test10/ticket-master-11.scores b/pengine/test10/ticket-master-11.scores
index c770fd5..f608505 100644
--- a/pengine/test10/ticket-master-11.scores
+++ b/pengine/test10/ticket-master-11.scores
@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0
 clone_color: rsc1:1 allocation score on node1: 0
 clone_color: rsc1:1 allocation score on node2: 1
 native_color: rsc1:0 allocation score on node1: 1
-native_color: rsc1:0 allocation score on node2: -INFINITY
-native_color: rsc1:1 allocation score on node1: 0
+native_color: rsc1:0 allocation score on node2: 0
+native_color: rsc1:1 allocation score on node1: -INFINITY
 native_color: rsc1:1 allocation score on node2: 1
 native_color: rsc_stonith allocation score on node1: 0
 native_color: rsc_stonith allocation score on node2: 0
diff --git a/pengine/test10/ticket-master-12.scores b/pengine/test10/ticket-master-12.scores
index 2dbf74e..d2b050f 100644
--- a/pengine/test10/ticket-master-12.scores
+++ b/pengine/test10/ticket-master-12.scores
@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0
 clone_color: rsc1:1 allocation score on node1: 0
 clone_color: rsc1:1 allocation score on node2: 1
 native_color: rsc1:0 allocation score on node1: 0
-native_color: rsc1:0 allocation score on node2: -INFINITY
-native_color: rsc1:1 allocation score on node1: 0
+native_color: rsc1:0 allocation score on node2: 0
+native_color: rsc1:1 allocation score on node1: -INFINITY
 native_color: rsc1:1 allocation score on node2: 1
 native_color: rsc_stonith allocation score on node1: 0
 native_color: rsc_stonith allocation score on node2: 0
diff --git a/pengine/test10/ticket-master-16.scores b/pengine/test10/ticket-master-16.scores
index a55ffe8..e392554 100644
--- a/pengine/test10/ticket-master-16.scores
+++ b/pengine/test10/ticket-master-16.scores
@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0
 clone_color: rsc1:1 allocation score on node1: 0
 clone_color: rsc1:1 allocation score on node2: 1
 native_color: rsc1:0 allocation score on node1: 1
-native_color: rsc1:0 allocation score on node2: -INFINITY
-native_color: rsc1:1 allocation score on node1: 0
+native_color: rsc1:0 allocation score on node2: 0
+native_color: rsc1:1 allocation score on node1: -INFINITY
 native_color: rsc1:1 allocation score on node2: 1
 native_color: rsc_stonith allocation score on node1: 0
 native_color: rsc_stonith allocation score on node2: 0
diff --git a/pengine/test10/ticket-master-17.scores b/pengine/test10/ticket-master-17.scores
index a55ffe8..e392554 100644
--- a/pengine/test10/ticket-master-17.scores
+++ b/pengine/test10/ticket-master-17.scores
@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0
 clone_color: rsc1:1 allocation score on node1: 0
 clone_color: rsc1:1 allocation score on node2: 1
 native_color: rsc1:0 allocation score on node1: 1
-native_color: rsc1:0 allocation score on node2: -INFINITY
-native_color: rsc1:1 allocation score on node1: 0
+native_color: rsc1:0 allocation score on node2: 0
+native_color: rsc1:1 allocation score on node1: -INFINITY
 native_color: rsc1:1 allocation score on node2: 1
 native_color: rsc_stonith allocation score on node1: 0
 native_color: rsc_stonith allocation score on node2: 0
diff --git a/pengine/test10/ticket-master-18.scores b/pengine/test10/ticket-master-18.scores
index a55ffe8..e392554 100644
--- a/pengine/test10/ticket-master-18.scores
+++ b/pengine/test10/ticket-master-18.scores
@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0
 clone_color: rsc1:1 allocation score on node1: 0
 clone_color: rsc1:1 allocation score on node2: 1
 native_color: rsc1:0 allocation score on node1: 1
-native_color: rsc1:0 allocation score on node2: -INFINITY
-native_color: rsc1:1 allocation score on node1: 0
+native_color: rsc1:0 allocation score on node2: 0
+native_color: rsc1:1 allocation score on node1: -INFINITY
 native_color: rsc1:1 allocation score on node2: 1
 native_color: rsc_stonith allocation score on node1: 0
 native_color: rsc_stonith allocation score on node2: 0
diff --git a/pengine/test10/ticket-master-19.scores b/pengine/test10/ticket-master-19.scores
index a55ffe8..e392554 100644
--- a/pengine/test10/ticket-master-19.scores
+++ b/pengine/test10/ticket-master-19.scores
@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0
 clone_color: rsc1:1 allocation score on node1: 0
 clone_color: rsc1:1 allocation score on node2: 1
 native_color: rsc1:0 allocation score on node1: 1
-native_color: rsc1:0 allocation score on node2: -INFINITY
-native_color: rsc1:1 allocation score on node1: 0
+native_color: rsc1:0 allocation score on node2: 0
+native_color: rsc1:1 allocation score on node1: -INFINITY
 native_color: rsc1:1 allocation score on node2: 1
 native_color: rsc_stonith allocation score on node1: 0
 native_color: rsc_stonith allocation score on node2: 0
diff --git a/pengine/test10/ticket-master-20.scores b/pengine/test10/ticket-master-20.scores
index a55ffe8..e392554 100644
--- a/pengine/test10/ticket-master-20.scores
+++ b/pengine/test10/ticket-master-20.scores
@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0
 clone_color: rsc1:1 allocation score on node1: 0
 clone_color: rsc1:1 allocation score on node2: 1
 native_color: rsc1:0 allocation score on node1: 1
-native_color: rsc1:0 allocation score on node2: -INFINITY
-native_color: rsc1:1 allocation score on node1: 0
+native_color: rsc1:0 allocation score on node2: 0
+native_color: rsc1:1 allocation score on node1: -INFINITY
 native_color: rsc1:1 allocation score on node2: 1
 native_color: rsc_stonith allocation score on node1: 0
 native_color: rsc_stonith allocation score on node2: 0
diff --git a/pengine/test10/ticket-master-22.scores b/pengine/test10/ticket-master-22.scores
index a55ffe8..e392554 100644
--- a/pengine/test10/ticket-master-22.scores
+++ b/pengine/test10/ticket-master-22.scores
@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0
 clone_color: rsc1:1 allocation score on node1: 0
 clone_color: rsc1:1 allocation score on node2: 1
 native_color: rsc1:0 allocation score on node1: 1
-native_color: rsc1:0 allocation score on node2: -INFINITY
-native_color: rsc1:1 allocation score on node1: 0
+native_color: rsc1:0 allocation score on node2: 0
+native_color: rsc1:1 allocation score on node1: -INFINITY
 native_color: rsc1:1 allocation score on node2: 1
 native_color: rsc_stonith allocation score on node1: 0
 native_color: rsc_stonith allocation score on node2: 0
diff --git a/pengine/test10/ticket-master-23.scores b/pengine/test10/ticket-master-23.scores
index a55ffe8..e392554 100644
--- a/pengine/test10/ticket-master-23.scores
+++ b/pengine/test10/ticket-master-23.scores
@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0
 clone_color: rsc1:1 allocation score on node1: 0
 clone_color: rsc1:1 allocation score on node2: 1
 native_color: rsc1:0 allocation score on node1: 1
-native_color: rsc1:0 allocation score on node2: -INFINITY
-native_color: rsc1:1 allocation score on node1: 0
+native_color: rsc1:0 allocation score on node2: 0
+native_color: rsc1:1 allocation score on node1: -INFINITY
 native_color: rsc1:1 allocation score on node2: 1
 native_color: rsc_stonith allocation score on node1: 0
 native_color: rsc_stonith allocation score on node2: 0
diff --git a/pengine/test10/ticket-master-24.scores b/pengine/test10/ticket-master-24.scores
index 2dbf74e..d2b050f 100644
--- a/pengine/test10/ticket-master-24.scores
+++ b/pengine/test10/ticket-master-24.scores
@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0
 clone_color: rsc1:1 allocation score on node1: 0
 clone_color: rsc1:1 allocation score on node2: 1
 native_color: rsc1:0 allocation score on node1: 0
-native_color: rsc1:0 allocation score on node2: -INFINITY
-native_color: rsc1:1 allocation score on node1: 0
+native_color: rsc1:0 allocation score on node2: 0
+native_color: rsc1:1 allocation score on node1: -INFINITY
 native_color: rsc1:1 allocation score on node2: 1
 native_color: rsc_stonith allocation score on node1: 0
 native_color: rsc_stonith allocation score on node2: 0
diff --git a/pengine/test10/ticket-master-5.scores b/pengine/test10/ticket-master-5.scores
index c770fd5..f608505 100644
--- a/pengine/test10/ticket-master-5.scores
+++ b/pengine/test10/ticket-master-5.scores
@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0
 clone_color: rsc1:1 allocation score on node1: 0
 clone_color: rsc1:1 allocation score on node2: 1
 native_color: rsc1:0 allocation score on node1: 1
-native_color: rsc1:0 allocation score on node2: -INFINITY
-native_color: rsc1:1 allocation score on node1: 0
+native_color: rsc1:0 allocation score on node2: 0
+native_color: rsc1:1 allocation score on node1: -INFINITY
 native_color: rsc1:1 allocation score on node2: 1
 native_color: rsc_stonith allocation score on node1: 0
 native_color: rsc_stonith allocation score on node2: 0
diff --git a/pengine/test10/ticket-master-6.scores b/pengine/test10/ticket-master-6.scores
index a55ffe8..e392554 100644
--- a/pengine/test10/ticket-master-6.scores
+++ b/pengine/test10/ticket-master-6.scores
@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0
 clone_color: rsc1:1 allocation score on node1: 0
 clone_color: rsc1:1 allocation score on node2: 1
 native_color: rsc1:0 allocation score on node1: 1
-native_color: rsc1:0 allocation score on node2: -INFINITY
-native_color: rsc1:1 allocation score on node1: 0
+native_color: rsc1:0 allocation score on node2: 0
+native_color: rsc1:1 allocation score on node1: -INFINITY
 native_color: rsc1:1 allocation score on node2: 1
 native_color: rsc_stonith allocation score on node1: 0
 native_color: rsc_stonith allocation score on node2: 0
diff --git a/pengine/test10/ticket-master-8.scores b/pengine/test10/ticket-master-8.scores
index c770fd5..f608505 100644
--- a/pengine/test10/ticket-master-8.scores
+++ b/pengine/test10/ticket-master-8.scores
@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0
 clone_color: rsc1:1 allocation score on node1: 0
 clone_color: rsc1:1 allocation score on node2: 1
 native_color: rsc1:0 allocation score on node1: 1
-native_color: rsc1:0 allocation score on node2: -INFINITY
-native_color: rsc1:1 allocation score on node1: 0
+native_color: rsc1:0 allocation score on node2: 0
+native_color: rsc1:1 allocation score on node1: -INFINITY
 native_color: rsc1:1 allocation score on node2: 1
 native_color: rsc_stonith allocation score on node1: 0
 native_color: rsc_stonith allocation score on node2: 0
diff --git a/pengine/test10/ticket-rsc-sets-10.scores b/pengine/test10/ticket-rsc-sets-10.scores
index b2d25ba..221b49a 100644
--- a/pengine/test10/ticket-rsc-sets-10.scores
+++ b/pengine/test10/ticket-rsc-sets-10.scores
@@ -28,8 +28,8 @@ native_color: rsc4:0 allocation score on node2: -INFINITY
 native_color: rsc4:1 allocation score on node1: -INFINITY
 native_color: rsc4:1 allocation score on node2: -INFINITY
 native_color: rsc5:0 allocation score on node1: 1
-native_color: rsc5:0 allocation score on node2: -INFINITY
-native_color: rsc5:1 allocation score on node1: 0
+native_color: rsc5:0 allocation score on node2: 0
+native_color: rsc5:1 allocation score on node1: -INFINITY
 native_color: rsc5:1 allocation score on node2: 1
 native_color: rsc_stonith allocation score on node1: 0
 native_color: rsc_stonith allocation score on node2: 0
diff --git a/pengine/test10/ticket-rsc-sets-11.scores b/pengine/test10/ticket-rsc-sets-11.scores
index b2d25ba..221b49a 100644
--- a/pengine/test10/ticket-rsc-sets-11.scores
+++ b/pengine/test10/ticket-rsc-sets-11.scores
@@ -28,8 +28,8 @@ native_color: rsc4:0 allocation score on node2: -INFINITY
 native_color: rsc4:1 allocation score on node1: -INFINITY
 native_color: rsc4:1 allocation score on node2: -INFINITY
 native_color: rsc5:0 allocation score on node1: 1
-native_color: rsc5:0 allocation score on node2: -INFINITY
-native_color: rsc5:1 allocation score on node1: 0
+native_color: rsc5:0 allocation score on node2: 0
+native_color: rsc5:1 allocation score on node1: -INFINITY
 native_color: rsc5:1 allocation score on node2: 1
 native_color: rsc_stonith allocation score on node1: 0
 native_color: rsc_stonith allocation score on node2: 0
diff --git a/pengine/test10/ticket-rsc-sets-12.scores b/pengine/test10/ticket-rsc-sets-12.scores
index b2d25ba..221b49a 100644
--- a/pengine/test10/ticket-rsc-sets-12.scores
+++ b/pengine/test10/ticket-rsc-sets-12.scores
@@ -28,8 +28,8 @@ native_color: rsc4:0 allocation score on node2: -INFINITY
 native_color: rsc4:1 allocation score on node1: -INFINITY
 native_color: rsc4:1 allocation score on node2: -INFINITY
 native_color: rsc5:0 allocation score on node1: 1
-native_color: rsc5:0 allocation score on node2: -INFINITY
-native_color: rsc5:1 allocation score on node1: 0
+native_color: rsc5:0 allocation score on node2: 0
+native_color: rsc5:1 allocation score on node1: -INFINITY
 native_color: rsc5:1 allocation score on node2: 1
 native_color: rsc_stonith allocation score on node1: 0
 native_color: rsc_stonith allocation score on node2: 0
diff --git a/pengine/test10/ticket-rsc-sets-13.scores b/pengine/test10/ticket-rsc-sets-13.scores
index b2d25ba..221b49a 100644
--- a/pengine/test10/ticket-rsc-sets-13.scores
+++ b/pengine/test10/ticket-rsc-sets-13.scores
@@ -28,8 +28,8 @@ native_color: rsc4:0 allocation score on node2: -INFINITY
 native_color: rsc4:1 allocation score on node1: -INFINITY
 native_color: rsc4:1 allocation score on node2: -INFINITY
 native_color: rsc5:0 allocation score on node1: 1
-native_color: rsc5:0 allocation score on node2: -INFINITY
-native_color: rsc5:1 allocation score on node1: 0
+native_color: rsc5:0 allocation score on node2: 0
+native_color: rsc5:1 allocation score on node1: -INFINITY
 native_color: rsc5:1 allocation score on node2: 1
 native_color: rsc_stonith allocation score on node1: 0
 native_color: rsc_stonith allocation score on node2: 0
diff --git a/pengine/test10/ticket-rsc-sets-14.scores b/pengine/test10/ticket-rsc-sets-14.scores
index b2d25ba..221b49a 100644
--- a/pengine/test10/ticket-rsc-sets-14.scores
+++ b/pengine/test10/ticket-rsc-sets-14.scores
@@ -28,8 +28,8 @@ native_color: rsc4:0 allocation score on node2: -INFINITY
 native_color: rsc4:1 allocation score on node1: -INFINITY
 native_color: rsc4:1 allocation score on node2: -INFINITY
 native_color: rsc5:0 allocation score on node1: 1
-native_color: rsc5:0 allocation score on node2: -INFINITY
-native_color: rsc5:1 allocation score on node1: 0
+native_color: rsc5:0 allocation score on node2: 0
+native_color: rsc5:1 allocation score on node1: -INFINITY
 native_color: rsc5:1 allocation score on node2: 1
 native_color: rsc_stonith allocation score on node1: 0
 native_color: rsc_stonith allocation score on node2: 0
diff --git a/pengine/test10/ticket-rsc-sets-2.scores b/pengine/test10/ticket-rsc-sets-2.scores
index 43331cc..a7ea85a 100644
--- a/pengine/test10/ticket-rsc-sets-2.scores
+++ b/pengine/test10/ticket-rsc-sets-2.scores
@@ -28,8 +28,8 @@ native_color: rsc4:0 allocation score on node2: 0
 native_color: rsc4:1 allocation score on node1: 0
 native_color: rsc4:1 allocation score on node2: -INFINITY
 native_color: rsc5:0 allocation score on node1: 1
-native_color: rsc5:0 allocation score on node2: -INFINITY
-native_color: rsc5:1 allocation score on node1: 0
+native_color: rsc5:0 allocation score on node2: 0
+native_color: rsc5:1 allocation score on node1: -INFINITY
 native_color: rsc5:1 allocation score on node2: 1
 native_color: rsc_stonith allocation score on node1: 0
 native_color: rsc_stonith allocation score on node2: 0
diff --git a/pengine/test10/ticket-rsc-sets-3.scores b/pengine/test10/ticket-rsc-sets-3.scores
index b2d25ba..221b49a 100644
--- a/pengine/test10/ticket-rsc-sets-3.scores
+++ b/pengine/test10/ticket-rsc-sets-3.scores
@@ -28,8 +28,8 @@ native_color: rsc4:0 allocation score on node2: -INFINITY
 native_color: rsc4:1 allocation score on node1: -INFINITY
 native_color: rsc4:1 allocation score on node2: -INFINITY
 native_color: rsc5:0 allocation score on node1: 1
-native_color: rsc5:0 allocation score on node2: -INFINITY
-native_color: rsc5:1 allocation score on node1: 0
+native_color: rsc5:0 allocation score on node2: 0
+native_color: rsc5:1 allocation score on node1: -INFINITY
 native_color: rsc5:1 allocation score on node2: 1
 native_color: rsc_stonith allocation score on node1: 0
 native_color: rsc_stonith allocation score on node2: 0
diff --git a/pengine/test10/ticket-rsc-sets-5.scores b/pengine/test10/ticket-rsc-sets-5.scores
index db259b3..c13c2e7 100644
--- a/pengine/test10/ticket-rsc-sets-5.scores
+++ b/pengine/test10/ticket-rsc-sets-5.scores
@@ -28,8 +28,8 @@ native_color: rsc4:0 allocation score on node2: -INFINITY
 native_color: rsc4:1 allocation score on node1: -INFINITY
 native_color: rsc4:1 allocation score on node2: -INFINITY
 native_color: rsc5:0 allocation score on node1: 1
-native_color: rsc5:0 allocation score on node2: -INFINITY
-native_color: rsc5:1 allocation score on node1: 0
+native_color: rsc5:0 allocation score on node2: 0
+native_color: rsc5:1 allocation score on node1: -INFINITY
 native_color: rsc5:1 allocation score on node2: 1
 native_color: rsc_stonith allocation score on node1: 0
 native_color: rsc_stonith allocation score on node2: 0
diff --git a/pengine/test10/ticket-rsc-sets-6.scores b/pengine/test10/ticket-rsc-sets-6.scores
index 43331cc..a7ea85a 100644
--- a/pengine/test10/ticket-rsc-sets-6.scores
+++ b/pengine/test10/ticket-rsc-sets-6.scores
@@ -28,8 +28,8 @@ native_color: rsc4:0 allocation score on node2: 0
 native_color: rsc4:1 allocation score on node1: 0
 native_color: rsc4:1 allocation score on node2: -INFINITY
 native_color: rsc5:0 allocation score on node1: 1
-native_color: rsc5:0 allocation score on node2: -INFINITY
-native_color: rsc5:1 allocation score on node1: 0
+native_color: rsc5:0 allocation score on node2: 0
+native_color: rsc5:1 allocation score on node1: -INFINITY
 native_color: rsc5:1 allocation score on node2: 1
 native_color: rsc_stonith allocation score on node1: 0
 native_color: rsc_stonith allocation score on node2: 0
diff --git a/pengine/test10/ticket-rsc-sets-7.scores b/pengine/test10/ticket-rsc-sets-7.scores
index b2d25ba..221b49a 100644
--- a/pengine/test10/ticket-rsc-sets-7.scores
+++ b/pengine/test10/ticket-rsc-sets-7.scores
@@ -28,8 +28,8 @@ native_color: rsc4:0 allocation score on node2: -INFINITY
 native_color: rsc4:1 allocation score on node1: -INFINITY
 native_color: rsc4:1 allocation score on node2: -INFINITY
 native_color: rsc5:0 allocation score on node1: 1
-native_color: rsc5:0 allocation score on node2: -INFINITY
-native_color: rsc5:1 allocation score on node1: 0
+native_color: rsc5:0 allocation score on node2: 0
+native_color: rsc5:1 allocation score on node1: -INFINITY
 native_color: rsc5:1 allocation score on node2: 1
 native_color: rsc_stonith allocation score on node1: 0
 native_color: rsc_stonith allocation score on node2: 0
diff --git a/pengine/test10/ticket-rsc-sets-8.scores b/pengine/test10/ticket-rsc-sets-8.scores
index b2d25ba..221b49a 100644
--- a/pengine/test10/ticket-rsc-sets-8.scores
+++ b/pengine/test10/ticket-rsc-sets-8.scores
@@ -28,8 +28,8 @@ native_color: rsc4:0 allocation score on node2: -INFINITY
 native_color: rsc4:1 allocation score on node1: -INFINITY
 native_color: rsc4:1 allocation score on node2: -INFINITY
 native_color: rsc5:0 allocation score on node1: 1
-native_color: rsc5:0 allocation score on node2: -INFINITY
-native_color: rsc5:1 allocation score on node1: 0
+native_color: rsc5:0 allocation score on node2: 0
+native_color: rsc5:1 allocation score on node1: -INFINITY
 native_color: rsc5:1 allocation score on node2: 1
 native_color: rsc_stonith allocation score on node1: 0
 native_color: rsc_stonith allocation score on node2: 0
diff --git a/pengine/test10/ticket-rsc-sets-9.scores b/pengine/test10/ticket-rsc-sets-9.scores
index b2d25ba..221b49a 100644
--- a/pengine/test10/ticket-rsc-sets-9.scores
+++ b/pengine/test10/ticket-rsc-sets-9.scores
@@ -28,8 +28,8 @@ native_color: rsc4:0 allocation score on node2: -INFINITY
 native_color: rsc4:1 allocation score on node1: -INFINITY
 native_color: rsc4:1 allocation score on node2: -INFINITY
 native_color: rsc5:0 allocation score on node1: 1
-native_color: rsc5:0 allocation score on node2: -INFINITY
-native_color: rsc5:1 allocation score on node1: 0
+native_color: rsc5:0 allocation score on node2: 0
+native_color: rsc5:1 allocation score on node1: -INFINITY
 native_color: rsc5:1 allocation score on node2: 1
 native_color: rsc_stonith allocation score on node1: 0
 native_color: rsc_stonith allocation score on node2: 0
diff --git a/pengine/test10/unfence-definition.scores b/pengine/test10/unfence-definition.scores
index a4b5fb1..d9fa9bb 100644
--- a/pengine/test10/unfence-definition.scores
+++ b/pengine/test10/unfence-definition.scores
@@ -56,10 +56,10 @@ native_color: clvmd:3 allocation score on virt-2: -INFINITY
 native_color: clvmd:3 allocation score on virt-3: -INFINITY
 native_color: clvmd:3 allocation score on virt-4: -INFINITY
 native_color: dlm:0 allocation score on virt-1: 1
-native_color: dlm:0 allocation score on virt-2: -INFINITY
+native_color: dlm:0 allocation score on virt-2: 0
 native_color: dlm:0 allocation score on virt-3: 0
 native_color: dlm:0 allocation score on virt-4: -INFINITY
-native_color: dlm:1 allocation score on virt-1: 0
+native_color: dlm:1 allocation score on virt-1: -INFINITY
 native_color: dlm:1 allocation score on virt-2: 1
 native_color: dlm:1 allocation score on virt-3: 0
 native_color: dlm:1 allocation score on virt-4: -INFINITY
diff --git a/pengine/test10/unfence-parameters.scores b/pengine/test10/unfence-parameters.scores
index a4b5fb1..d9fa9bb 100644
--- a/pengine/test10/unfence-parameters.scores
+++ b/pengine/test10/unfence-parameters.scores
@@ -56,10 +56,10 @@ native_color: clvmd:3 allocation score on virt-2: -INFINITY
 native_color: clvmd:3 allocation score on virt-3: -INFINITY
 native_color: clvmd:3 allocation score on virt-4: -INFINITY
 native_color: dlm:0 allocation score on virt-1: 1
-native_color: dlm:0 allocation score on virt-2: -INFINITY
+native_color: dlm:0 allocation score on virt-2: 0
 native_color: dlm:0 allocation score on virt-3: 0
 native_color: dlm:0 allocation score on virt-4: -INFINITY
-native_color: dlm:1 allocation score on virt-1: 0
+native_color: dlm:1 allocation score on virt-1: -INFINITY
 native_color: dlm:1 allocation score on virt-2: 1
 native_color: dlm:1 allocation score on virt-3: 0
 native_color: dlm:1 allocation score on virt-4: -INFINITY
diff --git a/pengine/test10/unfence-startup.scores b/pengine/test10/unfence-startup.scores
index a4b5fb1..d9fa9bb 100644
--- a/pengine/test10/unfence-startup.scores
+++ b/pengine/test10/unfence-startup.scores
@@ -56,10 +56,10 @@ native_color: clvmd:3 allocation score on virt-2: -INFINITY
 native_color: clvmd:3 allocation score on virt-3: -INFINITY
 native_color: clvmd:3 allocation score on virt-4: -INFINITY
 native_color: dlm:0 allocation score on virt-1: 1
-native_color: dlm:0 allocation score on virt-2: -INFINITY
+native_color: dlm:0 allocation score on virt-2: 0
 native_color: dlm:0 allocation score on virt-3: 0
 native_color: dlm:0 allocation score on virt-4: -INFINITY
-native_color: dlm:1 allocation score on virt-1: 0
+native_color: dlm:1 allocation score on virt-1: -INFINITY
 native_color: dlm:1 allocation score on virt-2: 1
 native_color: dlm:1 allocation score on virt-3: 0
 native_color: dlm:1 allocation score on virt-4: -INFINITY
diff --git a/pengine/test10/unrunnable-2.scores b/pengine/test10/unrunnable-2.scores
index 6ec65c9..d54a99e 100644
--- a/pengine/test10/unrunnable-2.scores
+++ b/pengine/test10/unrunnable-2.scores
@@ -472,15 +472,15 @@ native_color: galera:0 allocation score on overcloud-controller-1: INFINITY
 native_color: galera:0 allocation score on overcloud-controller-2: 0
 native_color: galera:1 allocation score on overcloud-controller-0: INFINITY
 native_color: galera:1 allocation score on overcloud-controller-1: -INFINITY
-native_color: galera:1 allocation score on overcloud-controller-2: -INFINITY
-native_color: galera:2 allocation score on overcloud-controller-0: 0
+native_color: galera:1 allocation score on overcloud-controller-2: 0
+native_color: galera:2 allocation score on overcloud-controller-0: -INFINITY
 native_color: galera:2 allocation score on overcloud-controller-1: -INFINITY
 native_color: galera:2 allocation score on overcloud-controller-2: INFINITY
-native_color: haproxy:0 allocation score on overcloud-controller-0: -INFINITY
+native_color: haproxy:0 allocation score on overcloud-controller-0: 0
 native_color: haproxy:0 allocation score on overcloud-controller-1: INFINITY
 native_color: haproxy:0 allocation score on overcloud-controller-2: 0
 native_color: haproxy:1 allocation score on overcloud-controller-0: INFINITY
-native_color: haproxy:1 allocation score on overcloud-controller-1: 0
+native_color: haproxy:1 allocation score on overcloud-controller-1: -INFINITY
 native_color: haproxy:1 allocation score on overcloud-controller-2: 0
 native_color: haproxy:2 allocation score on overcloud-controller-0: -INFINITY
 native_color: haproxy:2 allocation score on overcloud-controller-1: -INFINITY
@@ -505,18 +505,18 @@ native_color: memcached:0 allocation score on overcloud-controller-1: INFINITY
 native_color: memcached:0 allocation score on overcloud-controller-2: 0
 native_color: memcached:1 allocation score on overcloud-controller-0: INFINITY
 native_color: memcached:1 allocation score on overcloud-controller-1: -INFINITY
-native_color: memcached:1 allocation score on overcloud-controller-2: -INFINITY
-native_color: memcached:2 allocation score on overcloud-controller-0: 0
+native_color: memcached:1 allocation score on overcloud-controller-2: 0
+native_color: memcached:2 allocation score on overcloud-controller-0: -INFINITY
 native_color: memcached:2 allocation score on overcloud-controller-1: -INFINITY
 native_color: memcached:2 allocation score on overcloud-controller-2: INFINITY
-native_color: mongod:0 allocation score on overcloud-controller-0: -INFINITY
+native_color: mongod:0 allocation score on overcloud-controller-0: 0
 native_color: mongod:0 allocation score on overcloud-controller-1: INFINITY
-native_color: mongod:0 allocation score on overcloud-controller-2: -INFINITY
+native_color: mongod:0 allocation score on overcloud-controller-2: 0
 native_color: mongod:1 allocation score on overcloud-controller-0: INFINITY
-native_color: mongod:1 allocation score on overcloud-controller-1: 0
-native_color: mongod:1 allocation score on overcloud-controller-2: -INFINITY
-native_color: mongod:2 allocation score on overcloud-controller-0: 0
-native_color: mongod:2 allocation score on overcloud-controller-1: 0
+native_color: mongod:1 allocation score on overcloud-controller-1: -INFINITY
+native_color: mongod:1 allocation score on overcloud-controller-2: 0
+native_color: mongod:2 allocation score on overcloud-controller-0: -INFINITY
+native_color: mongod:2 allocation score on overcloud-controller-1: -INFINITY
 native_color: mongod:2 allocation score on overcloud-controller-2: INFINITY
 native_color: neutron-dhcp-agent:0 allocation score on overcloud-controller-0: 0
 native_color: neutron-dhcp-agent:0 allocation score on overcloud-controller-1: 0
@@ -545,14 +545,14 @@ native_color: neutron-metadata-agent:1 allocation score on overcloud-controller-
 native_color: neutron-metadata-agent:2 allocation score on overcloud-controller-0: -INFINITY
 native_color: neutron-metadata-agent:2 allocation score on overcloud-controller-1: -INFINITY
 native_color: neutron-metadata-agent:2 allocation score on overcloud-controller-2: 0
-native_color: neutron-netns-cleanup:0 allocation score on overcloud-controller-0: -INFINITY
+native_color: neutron-netns-cleanup:0 allocation score on overcloud-controller-0: 0
 native_color: neutron-netns-cleanup:0 allocation score on overcloud-controller-1: INFINITY
-native_color: neutron-netns-cleanup:0 allocation score on overcloud-controller-2: -INFINITY
+native_color: neutron-netns-cleanup:0 allocation score on overcloud-controller-2: 0
 native_color: neutron-netns-cleanup:1 allocation score on overcloud-controller-0: INFINITY
-native_color: neutron-netns-cleanup:1 allocation score on overcloud-controller-1: 0
-native_color: neutron-netns-cleanup:1 allocation score on overcloud-controller-2: -INFINITY
-native_color: neutron-netns-cleanup:2 allocation score on overcloud-controller-0: 0
-native_color: neutron-netns-cleanup:2 allocation score on overcloud-controller-1: 0
+native_color: neutron-netns-cleanup:1 allocation score on overcloud-controller-1: -INFINITY
+native_color: neutron-netns-cleanup:1 allocation score on overcloud-controller-2: 0
+native_color: neutron-netns-cleanup:2 allocation score on overcloud-controller-0: -INFINITY
+native_color: neutron-netns-cleanup:2 allocation score on overcloud-controller-1: -INFINITY
 native_color: neutron-netns-cleanup:2 allocation score on overcloud-controller-2: INFINITY
 native_color: neutron-openvswitch-agent:0 allocation score on overcloud-controller-0: 0
 native_color: neutron-openvswitch-agent:0 allocation score on overcloud-controller-1: 0
@@ -563,14 +563,14 @@ native_color: neutron-openvswitch-agent:1 allocation score on overcloud-controll
 native_color: neutron-openvswitch-agent:2 allocation score on overcloud-controller-0: -INFINITY
 native_color: neutron-openvswitch-agent:2 allocation score on overcloud-controller-1: 0
 native_color: neutron-openvswitch-agent:2 allocation score on overcloud-controller-2: -INFINITY
-native_color: neutron-ovs-cleanup:0 allocation score on overcloud-controller-0: -INFINITY
+native_color: neutron-ovs-cleanup:0 allocation score on overcloud-controller-0: 0
 native_color: neutron-ovs-cleanup:0 allocation score on overcloud-controller-1: INFINITY
-native_color: neutron-ovs-cleanup:0 allocation score on overcloud-controller-2: -INFINITY
+native_color: neutron-ovs-cleanup:0 allocation score on overcloud-controller-2: 0
 native_color: neutron-ovs-cleanup:1 allocation score on overcloud-controller-0: INFINITY
-native_color: neutron-ovs-cleanup:1 allocation score on overcloud-controller-1: 0
-native_color: neutron-ovs-cleanup:1 allocation score on overcloud-controller-2: -INFINITY
-native_color: neutron-ovs-cleanup:2 allocation score on overcloud-controller-0: 0
-native_color: neutron-ovs-cleanup:2 allocation score on overcloud-controller-1: 0
+native_color: neutron-ovs-cleanup:1 allocation score on overcloud-controller-1: -INFINITY
+native_color: neutron-ovs-cleanup:1 allocation score on overcloud-controller-2: 0
+native_color: neutron-ovs-cleanup:2 allocation score on overcloud-controller-0: -INFINITY
+native_color: neutron-ovs-cleanup:2 allocation score on overcloud-controller-1: -INFINITY
 native_color: neutron-ovs-cleanup:2 allocation score on overcloud-controller-2: INFINITY
 native_color: neutron-server:0 allocation score on overcloud-controller-0: 0
 native_color: neutron-server:0 allocation score on overcloud-controller-1: 0
@@ -590,11 +590,11 @@ native_color: openstack-aodh-evaluator:1 allocation score on overcloud-controlle
 native_color: openstack-aodh-evaluator:2 allocation score on overcloud-controller-0: -INFINITY
 native_color: openstack-aodh-evaluator:2 allocation score on overcloud-controller-1: 0
 native_color: openstack-aodh-evaluator:2 allocation score on overcloud-controller-2: -INFINITY
-native_color: openstack-aodh-listener:0 allocation score on overcloud-controller-0: -INFINITY
+native_color: openstack-aodh-listener:0 allocation score on overcloud-controller-0: 0
 native_color: openstack-aodh-listener:0 allocation score on overcloud-controller-1: INFINITY
 native_color: openstack-aodh-listener:0 allocation score on overcloud-controller-2: 0
 native_color: openstack-aodh-listener:1 allocation score on overcloud-controller-0: INFINITY
-native_color: openstack-aodh-listener:1 allocation score on overcloud-controller-1: 0
+native_color: openstack-aodh-listener:1 allocation score on overcloud-controller-1: -INFINITY
 native_color: openstack-aodh-listener:1 allocation score on overcloud-controller-2: 0
 native_color: openstack-aodh-listener:2 allocation score on overcloud-controller-0: -INFINITY
 native_color: openstack-aodh-listener:2 allocation score on overcloud-controller-1: -INFINITY
@@ -635,11 +635,11 @@ native_color: openstack-ceilometer-collector:1 allocation score on overcloud-con
 native_color: openstack-ceilometer-collector:2 allocation score on overcloud-controller-0: -INFINITY
 native_color: openstack-ceilometer-collector:2 allocation score on overcloud-controller-1: 0
 native_color: openstack-ceilometer-collector:2 allocation score on overcloud-controller-2: -INFINITY
-native_color: openstack-ceilometer-notification:0 allocation score on overcloud-controller-0: -INFINITY
+native_color: openstack-ceilometer-notification:0 allocation score on overcloud-controller-0: 0
 native_color: openstack-ceilometer-notification:0 allocation score on overcloud-controller-1: INFINITY
 native_color: openstack-ceilometer-notification:0 allocation score on overcloud-controller-2: 0
 native_color: openstack-ceilometer-notification:1 allocation score on overcloud-controller-0: INFINITY
-native_color: openstack-ceilometer-notification:1 allocation score on overcloud-controller-1: 0
+native_color: openstack-ceilometer-notification:1 allocation score on overcloud-controller-1: -INFINITY
 native_color: openstack-ceilometer-notification:1 allocation score on overcloud-controller-2: 0
 native_color: openstack-ceilometer-notification:2 allocation score on overcloud-controller-0: -INFINITY
 native_color: openstack-ceilometer-notification:2 allocation score on overcloud-controller-1: -INFINITY
@@ -782,11 +782,11 @@ native_color: openstack-sahara-api:1 allocation score on overcloud-controller-2:
 native_color: openstack-sahara-api:2 allocation score on overcloud-controller-0: -INFINITY
 native_color: openstack-sahara-api:2 allocation score on overcloud-controller-1: -INFINITY
 native_color: openstack-sahara-api:2 allocation score on overcloud-controller-2: 0
-native_color: openstack-sahara-engine:0 allocation score on overcloud-controller-0: -INFINITY
+native_color: openstack-sahara-engine:0 allocation score on overcloud-controller-0: 0
 native_color: openstack-sahara-engine:0 allocation score on overcloud-controller-1: INFINITY
 native_color: openstack-sahara-engine:0 allocation score on overcloud-controller-2: 0
 native_color: openstack-sahara-engine:1 allocation score on overcloud-controller-0: INFINITY
-native_color: openstack-sahara-engine:1 allocation score on overcloud-controller-1: 0
+native_color: openstack-sahara-engine:1 allocation score on overcloud-controller-1: -INFINITY
 native_color: openstack-sahara-engine:1 allocation score on overcloud-controller-2: 0
 native_color: openstack-sahara-engine:2 allocation score on overcloud-controller-0: -INFINITY
 native_color: openstack-sahara-engine:2 allocation score on overcloud-controller-1: -INFINITY
@@ -796,8 +796,8 @@ native_color: rabbitmq:0 allocation score on overcloud-controller-1: INFINITY
 native_color: rabbitmq:0 allocation score on overcloud-controller-2: 0
 native_color: rabbitmq:1 allocation score on overcloud-controller-0: INFINITY
 native_color: rabbitmq:1 allocation score on overcloud-controller-1: -INFINITY
-native_color: rabbitmq:1 allocation score on overcloud-controller-2: -INFINITY
-native_color: rabbitmq:2 allocation score on overcloud-controller-0: 0
+native_color: rabbitmq:1 allocation score on overcloud-controller-2: 0
+native_color: rabbitmq:2 allocation score on overcloud-controller-0: -INFINITY
 native_color: rabbitmq:2 allocation score on overcloud-controller-1: -INFINITY
 native_color: rabbitmq:2 allocation score on overcloud-controller-2: INFINITY
 native_color: redis:0 allocation score on overcloud-controller-0: 0
@@ -805,8 +805,8 @@ native_color: redis:0 allocation score on overcloud-controller-1: INFINITY
 native_color: redis:0 allocation score on overcloud-controller-2: 0
 native_color: redis:1 allocation score on overcloud-controller-0: INFINITY
 native_color: redis:1 allocation score on overcloud-controller-1: -INFINITY
-native_color: redis:1 allocation score on overcloud-controller-2: -INFINITY
-native_color: redis:2 allocation score on overcloud-controller-0: 0
+native_color: redis:1 allocation score on overcloud-controller-2: 0
+native_color: redis:2 allocation score on overcloud-controller-0: -INFINITY
 native_color: redis:2 allocation score on overcloud-controller-1: -INFINITY
 native_color: redis:2 allocation score on overcloud-controller-2: INFINITY
 redis:0 promotion score on overcloud-controller-1: 1
diff --git a/pengine/test10/whitebox-fail1.scores b/pengine/test10/whitebox-fail1.scores
index 756bc78..4fbbf29 100644
--- a/pengine/test10/whitebox-fail1.scores
+++ b/pengine/test10/whitebox-fail1.scores
@@ -56,17 +56,17 @@ native_color: M:0 allocation score on lxc1: 0
 native_color: M:0 allocation score on lxc2: 0
 native_color: M:1 allocation score on 18node1: -INFINITY
 native_color: M:1 allocation score on 18node2: 100
-native_color: M:1 allocation score on 18node3: -INFINITY
+native_color: M:1 allocation score on 18node3: 0
 native_color: M:1 allocation score on lxc1: 0
-native_color: M:1 allocation score on lxc2: -INFINITY
+native_color: M:1 allocation score on lxc2: 0
 native_color: M:2 allocation score on 18node1: -INFINITY
-native_color: M:2 allocation score on 18node2: 0
+native_color: M:2 allocation score on 18node2: -INFINITY
 native_color: M:2 allocation score on 18node3: 100
 native_color: M:2 allocation score on lxc1: 0
-native_color: M:2 allocation score on lxc2: -INFINITY
+native_color: M:2 allocation score on lxc2: 0
 native_color: M:3 allocation score on 18node1: -INFINITY
-native_color: M:3 allocation score on 18node2: 0
-native_color: M:3 allocation score on 18node3: 0
+native_color: M:3 allocation score on 18node2: -INFINITY
+native_color: M:3 allocation score on 18node3: -INFINITY
 native_color: M:3 allocation score on lxc1: 0
 native_color: M:3 allocation score on lxc2: 100
 native_color: M:4 allocation score on 18node1: -INFINITY
diff --git a/pengine/test10/whitebox-fail2.scores b/pengine/test10/whitebox-fail2.scores
index 756bc78..4fbbf29 100644
--- a/pengine/test10/whitebox-fail2.scores
+++ b/pengine/test10/whitebox-fail2.scores
@@ -56,17 +56,17 @@ native_color: M:0 allocation score on lxc1: 0
 native_color: M:0 allocation score on lxc2: 0
 native_color: M:1 allocation score on 18node1: -INFINITY
 native_color: M:1 allocation score on 18node2: 100
-native_color: M:1 allocation score on 18node3: -INFINITY
+native_color: M:1 allocation score on 18node3: 0
 native_color: M:1 allocation score on lxc1: 0
-native_color: M:1 allocation score on lxc2: -INFINITY
+native_color: M:1 allocation score on lxc2: 0
 native_color: M:2 allocation score on 18node1: -INFINITY
-native_color: M:2 allocation score on 18node2: 0
+native_color: M:2 allocation score on 18node2: -INFINITY
 native_color: M:2 allocation score on 18node3: 100
 native_color: M:2 allocation score on lxc1: 0
-native_color: M:2 allocation score on lxc2: -INFINITY
+native_color: M:2 allocation score on lxc2: 0
 native_color: M:3 allocation score on 18node1: -INFINITY
-native_color: M:3 allocation score on 18node2: 0
-native_color: M:3 allocation score on 18node3: 0
+native_color: M:3 allocation score on 18node2: -INFINITY
+native_color: M:3 allocation score on 18node3: -INFINITY
 native_color: M:3 allocation score on lxc1: 0
 native_color: M:3 allocation score on lxc2: 100
 native_color: M:4 allocation score on 18node1: -INFINITY
diff --git a/pengine/test10/whitebox-move.scores b/pengine/test10/whitebox-move.scores
index 7f38afe..b268be3 100644
--- a/pengine/test10/whitebox-move.scores
+++ b/pengine/test10/whitebox-move.scores
@@ -41,22 +41,22 @@ native_color: M:0 allocation score on lxc1: 0
 native_color: M:0 allocation score on lxc2: 0
 native_color: M:1 allocation score on 18node1: -INFINITY
 native_color: M:1 allocation score on 18node2: 100
-native_color: M:1 allocation score on 18node3: -INFINITY
-native_color: M:1 allocation score on lxc1: -INFINITY
-native_color: M:1 allocation score on lxc2: -INFINITY
+native_color: M:1 allocation score on 18node3: 0
+native_color: M:1 allocation score on lxc1: 0
+native_color: M:1 allocation score on lxc2: 0
 native_color: M:2 allocation score on 18node1: -INFINITY
-native_color: M:2 allocation score on 18node2: 0
+native_color: M:2 allocation score on 18node2: -INFINITY
 native_color: M:2 allocation score on 18node3: 100
-native_color: M:2 allocation score on lxc1: -INFINITY
-native_color: M:2 allocation score on lxc2: -INFINITY
+native_color: M:2 allocation score on lxc1: 0
+native_color: M:2 allocation score on lxc2: 0
 native_color: M:3 allocation score on 18node1: -INFINITY
-native_color: M:3 allocation score on 18node2: 0
-native_color: M:3 allocation score on 18node3: 0
+native_color: M:3 allocation score on 18node2: -INFINITY
+native_color: M:3 allocation score on 18node3: -INFINITY
 native_color: M:3 allocation score on lxc1: 100
 native_color: M:3 allocation score on lxc2: 0
 native_color: M:4 allocation score on 18node1: -INFINITY
-native_color: M:4 allocation score on 18node2: 0
-native_color: M:4 allocation score on 18node3: 0
+native_color: M:4 allocation score on 18node2: -INFINITY
+native_color: M:4 allocation score on 18node3: -INFINITY
 native_color: M:4 allocation score on lxc1: -INFINITY
 native_color: M:4 allocation score on lxc2: 100
 native_color: container1 allocation score on 18node1: -INFINITY
diff --git a/pengine/test10/whitebox-ms-ordering-move.scores b/pengine/test10/whitebox-ms-ordering-move.scores
index 290d160..8953542 100644
--- a/pengine/test10/whitebox-ms-ordering-move.scores
+++ b/pengine/test10/whitebox-ms-ordering-move.scores
@@ -245,27 +245,27 @@ native_color: ping-1:1 allocation score on rhel7-1: 1
 native_color: ping-1:1 allocation score on rhel7-2: 0
 native_color: ping-1:1 allocation score on rhel7-3: -INFINITY
 native_color: ping-1:1 allocation score on rhel7-4: 0
-native_color: ping-1:1 allocation score on rhel7-5: -INFINITY
+native_color: ping-1:1 allocation score on rhel7-5: 0
 native_color: ping-1:2 allocation score on lxc1: -INFINITY
 native_color: ping-1:2 allocation score on lxc2: -INFINITY
 native_color: ping-1:2 allocation score on rhel7-1: -INFINITY
 native_color: ping-1:2 allocation score on rhel7-2: 1
 native_color: ping-1:2 allocation score on rhel7-3: -INFINITY
 native_color: ping-1:2 allocation score on rhel7-4: 0
-native_color: ping-1:2 allocation score on rhel7-5: -INFINITY
+native_color: ping-1:2 allocation score on rhel7-5: 0
 native_color: ping-1:3 allocation score on lxc1: -INFINITY
 native_color: ping-1:3 allocation score on lxc2: -INFINITY
 native_color: ping-1:3 allocation score on rhel7-1: -INFINITY
 native_color: ping-1:3 allocation score on rhel7-2: -INFINITY
 native_color: ping-1:3 allocation score on rhel7-3: -INFINITY
 native_color: ping-1:3 allocation score on rhel7-4: 1
-native_color: ping-1:3 allocation score on rhel7-5: -INFINITY
+native_color: ping-1:3 allocation score on rhel7-5: 0
 native_color: ping-1:4 allocation score on lxc1: -INFINITY
 native_color: ping-1:4 allocation score on lxc2: -INFINITY
-native_color: ping-1:4 allocation score on rhel7-1: 0
-native_color: ping-1:4 allocation score on rhel7-2: 0
+native_color: ping-1:4 allocation score on rhel7-1: -INFINITY
+native_color: ping-1:4 allocation score on rhel7-2: -INFINITY
 native_color: ping-1:4 allocation score on rhel7-3: -INFINITY
-native_color: ping-1:4 allocation score on rhel7-4: 0
+native_color: ping-1:4 allocation score on rhel7-4: -INFINITY
 native_color: ping-1:4 allocation score on rhel7-5: 1
 native_color: ping-1:5 allocation score on lxc1: -INFINITY
 native_color: ping-1:5 allocation score on lxc2: -INFINITY
@@ -343,27 +343,27 @@ native_color: stateful-1:1 allocation score on rhel7-1: 6
 native_color: stateful-1:1 allocation score on rhel7-2: 0
 native_color: stateful-1:1 allocation score on rhel7-3: -INFINITY
 native_color: stateful-1:1 allocation score on rhel7-4: 0
-native_color: stateful-1:1 allocation score on rhel7-5: -INFINITY
+native_color: stateful-1:1 allocation score on rhel7-5: 0
 native_color: stateful-1:2 allocation score on lxc1: -INFINITY
 native_color: stateful-1:2 allocation score on lxc2: -INFINITY
 native_color: stateful-1:2 allocation score on rhel7-1: -INFINITY
 native_color: stateful-1:2 allocation score on rhel7-2: 6
 native_color: stateful-1:2 allocation score on rhel7-3: -INFINITY
 native_color: stateful-1:2 allocation score on rhel7-4: 0
-native_color: stateful-1:2 allocation score on rhel7-5: -INFINITY
+native_color: stateful-1:2 allocation score on rhel7-5: 0
 native_color: stateful-1:3 allocation score on lxc1: -INFINITY
 native_color: stateful-1:3 allocation score on lxc2: -INFINITY
 native_color: stateful-1:3 allocation score on rhel7-1: -INFINITY
 native_color: stateful-1:3 allocation score on rhel7-2: -INFINITY
 native_color: stateful-1:3 allocation score on rhel7-3: -INFINITY
 native_color: stateful-1:3 allocation score on rhel7-4: 6
-native_color: stateful-1:3 allocation score on rhel7-5: -INFINITY
+native_color: stateful-1:3 allocation score on rhel7-5: 0
 native_color: stateful-1:4 allocation score on lxc1: -INFINITY
 native_color: stateful-1:4 allocation score on lxc2: -INFINITY
-native_color: stateful-1:4 allocation score on rhel7-1: 0
-native_color: stateful-1:4 allocation score on rhel7-2: 0
+native_color: stateful-1:4 allocation score on rhel7-1: -INFINITY
+native_color: stateful-1:4 allocation score on rhel7-2: -INFINITY
 native_color: stateful-1:4 allocation score on rhel7-3: -INFINITY
-native_color: stateful-1:4 allocation score on rhel7-4: 0
+native_color: stateful-1:4 allocation score on rhel7-4: -INFINITY
 native_color: stateful-1:4 allocation score on rhel7-5: 6
 stateful-1:0 promotion score on rhel7-3: 10
 stateful-1:1 promotion score on rhel7-1: 5
diff --git a/pengine/test10/whitebox-orphan-ms.scores b/pengine/test10/whitebox-orphan-ms.scores
index d968052..764407b 100644
--- a/pengine/test10/whitebox-orphan-ms.scores
+++ b/pengine/test10/whitebox-orphan-ms.scores
@@ -59,12 +59,12 @@ native_color: migrator allocation score on 18node1: 1
 native_color: migrator allocation score on 18node2: 0
 native_color: migrator allocation score on 18node3: 0
 native_color: ping-1:0 allocation score on 18node1: 1
-native_color: ping-1:0 allocation score on 18node2: -INFINITY
-native_color: ping-1:0 allocation score on 18node3: -INFINITY
-native_color: ping-1:1 allocation score on 18node1: 0
+native_color: ping-1:0 allocation score on 18node2: 0
+native_color: ping-1:0 allocation score on 18node3: 0
+native_color: ping-1:1 allocation score on 18node1: -INFINITY
 native_color: ping-1:1 allocation score on 18node2: 1
 native_color: ping-1:1 allocation score on 18node3: 0
-native_color: ping-1:2 allocation score on 18node1: 0
+native_color: ping-1:2 allocation score on 18node1: -INFINITY
 native_color: ping-1:2 allocation score on 18node2: -INFINITY
 native_color: ping-1:2 allocation score on 18node3: 1
 native_color: r192.168.122.87 allocation score on 18node1: 11
@@ -86,16 +86,16 @@ native_color: rsc_18node3 allocation score on 18node1: 0
 native_color: rsc_18node3 allocation score on 18node2: 0
 native_color: rsc_18node3 allocation score on 18node3: 100
 native_color: stateful-1:0 allocation score on 18node1: 11
-native_color: stateful-1:0 allocation score on 18node2: -INFINITY
-native_color: stateful-1:0 allocation score on 18node3: -INFINITY
+native_color: stateful-1:0 allocation score on 18node2: 0
+native_color: stateful-1:0 allocation score on 18node3: 0
 native_color: stateful-1:0 allocation score on lxc1: -INFINITY
 native_color: stateful-1:0 allocation score on lxc2: -INFINITY
-native_color: stateful-1:1 allocation score on 18node1: 0
+native_color: stateful-1:1 allocation score on 18node1: -INFINITY
 native_color: stateful-1:1 allocation score on 18node2: 6
 native_color: stateful-1:1 allocation score on 18node3: 0
 native_color: stateful-1:1 allocation score on lxc1: -INFINITY
 native_color: stateful-1:1 allocation score on lxc2: -INFINITY
-native_color: stateful-1:2 allocation score on 18node1: 0
+native_color: stateful-1:2 allocation score on 18node1: -INFINITY
 native_color: stateful-1:2 allocation score on 18node2: -INFINITY
 native_color: stateful-1:2 allocation score on 18node3: 6
 native_color: stateful-1:2 allocation score on lxc1: -INFINITY
diff --git a/pengine/test10/whitebox-orphaned.scores b/pengine/test10/whitebox-orphaned.scores
index d2378af..7f303b8 100644
--- a/pengine/test10/whitebox-orphaned.scores
+++ b/pengine/test10/whitebox-orphaned.scores
@@ -42,15 +42,15 @@ native_color: M:0 allocation score on 18node3: 0
 native_color: M:0 allocation score on lxc2: 0
 native_color: M:1 allocation score on 18node1: -INFINITY
 native_color: M:1 allocation score on 18node2: 100
-native_color: M:1 allocation score on 18node3: -INFINITY
-native_color: M:1 allocation score on lxc2: -INFINITY
+native_color: M:1 allocation score on 18node3: 0
+native_color: M:1 allocation score on lxc2: 0
 native_color: M:2 allocation score on 18node1: -INFINITY
-native_color: M:2 allocation score on 18node2: 0
+native_color: M:2 allocation score on 18node2: -INFINITY
 native_color: M:2 allocation score on 18node3: 100
-native_color: M:2 allocation score on lxc2: -INFINITY
+native_color: M:2 allocation score on lxc2: 0
 native_color: M:3 allocation score on 18node1: -INFINITY
-native_color: M:3 allocation score on 18node2: 0
-native_color: M:3 allocation score on 18node3: 0
+native_color: M:3 allocation score on 18node2: -INFINITY
+native_color: M:3 allocation score on 18node3: -INFINITY
 native_color: M:3 allocation score on lxc2: 100
 native_color: container2 allocation score on 18node1: 0
 native_color: container2 allocation score on 18node2: 200
diff --git a/pengine/test10/whitebox-start.scores b/pengine/test10/whitebox-start.scores
index 1f0f273..338ce74 100644
--- a/pengine/test10/whitebox-start.scores
+++ b/pengine/test10/whitebox-start.scores
@@ -51,22 +51,22 @@ native_color: D allocation score on lxc1: 0
 native_color: D allocation score on lxc2: 0
 native_color: M:0 allocation score on 18node1: 100
 native_color: M:0 allocation score on 18node2: 0
-native_color: M:0 allocation score on 18node3: -INFINITY
+native_color: M:0 allocation score on 18node3: 0
 native_color: M:0 allocation score on lxc1: 0
-native_color: M:0 allocation score on lxc2: -INFINITY
+native_color: M:0 allocation score on lxc2: 0
 native_color: M:1 allocation score on 18node1: -INFINITY
 native_color: M:1 allocation score on 18node2: 100
-native_color: M:1 allocation score on 18node3: -INFINITY
+native_color: M:1 allocation score on 18node3: 0
 native_color: M:1 allocation score on lxc1: 0
-native_color: M:1 allocation score on lxc2: -INFINITY
-native_color: M:2 allocation score on 18node1: 0
-native_color: M:2 allocation score on 18node2: 0
+native_color: M:1 allocation score on lxc2: 0
+native_color: M:2 allocation score on 18node1: -INFINITY
+native_color: M:2 allocation score on 18node2: -INFINITY
 native_color: M:2 allocation score on 18node3: 100
 native_color: M:2 allocation score on lxc1: 0
-native_color: M:2 allocation score on lxc2: -INFINITY
-native_color: M:3 allocation score on 18node1: 0
-native_color: M:3 allocation score on 18node2: 0
-native_color: M:3 allocation score on 18node3: 0
+native_color: M:2 allocation score on lxc2: 0
+native_color: M:3 allocation score on 18node1: -INFINITY
+native_color: M:3 allocation score on 18node2: -INFINITY
+native_color: M:3 allocation score on 18node3: -INFINITY
 native_color: M:3 allocation score on lxc1: 0
 native_color: M:3 allocation score on lxc2: 100
 native_color: M:4 allocation score on 18node1: -INFINITY
diff --git a/pengine/test10/whitebox-stop.scores b/pengine/test10/whitebox-stop.scores
index 0f97c14..12b38dd 100644
--- a/pengine/test10/whitebox-stop.scores
+++ b/pengine/test10/whitebox-stop.scores
@@ -56,17 +56,17 @@ native_color: M:0 allocation score on lxc1: -INFINITY
 native_color: M:0 allocation score on lxc2: 0
 native_color: M:1 allocation score on 18node1: -INFINITY
 native_color: M:1 allocation score on 18node2: 100
-native_color: M:1 allocation score on 18node3: -INFINITY
+native_color: M:1 allocation score on 18node3: 0
 native_color: M:1 allocation score on lxc1: -INFINITY
-native_color: M:1 allocation score on lxc2: -INFINITY
+native_color: M:1 allocation score on lxc2: 0
 native_color: M:2 allocation score on 18node1: -INFINITY
-native_color: M:2 allocation score on 18node2: 0
+native_color: M:2 allocation score on 18node2: -INFINITY
 native_color: M:2 allocation score on 18node3: 100
 native_color: M:2 allocation score on lxc1: -INFINITY
-native_color: M:2 allocation score on lxc2: -INFINITY
+native_color: M:2 allocation score on lxc2: 0
 native_color: M:3 allocation score on 18node1: -INFINITY
-native_color: M:3 allocation score on 18node2: 0
-native_color: M:3 allocation score on 18node3: 0
+native_color: M:3 allocation score on 18node2: -INFINITY
+native_color: M:3 allocation score on 18node3: -INFINITY
 native_color: M:3 allocation score on lxc1: -INFINITY
 native_color: M:3 allocation score on lxc2: 100
 native_color: M:4 allocation score on 18node1: -INFINITY
diff --git a/pengine/utilization.c b/pengine/utilization.c
index db41b21..e3996e2 100644
--- a/pengine/utilization.c
+++ b/pengine/utilization.c
@@ -317,7 +317,7 @@ find_colocated_rscs(GListPtr colocated_rscs, resource_t * rsc, resource_t * orig
             continue;
         }
 
-        if (rsc_lh->variant <= pe_group && rsc->variant > pe_group) {
+        if (rsc_lh->variant <= pe_group && rsc->variant >= pe_clone) {
             /* We do not know if rsc_lh will be colocated with orig_rsc in this case */
             continue;
         }
diff --git a/pengine/utils.c b/pengine/utils.c
index ca25d4a..755f1c8 100644
--- a/pengine/utils.c
+++ b/pengine/utils.c
@@ -242,13 +242,24 @@ native_assign_node(resource_t * rsc, GListPtr nodes, node_t * chosen, gboolean f
 {
     CRM_ASSERT(rsc->variant == pe_native);
 
-    if (force == FALSE
-        && chosen != NULL && (can_run_resources(chosen) == FALSE || chosen->weight < 0)) {
-        crm_debug("All nodes for resource %s are unavailable"
-                  ", unclean or shutting down (%s: %d, %d)",
-                  rsc->id, chosen->details->uname, can_run_resources(chosen), chosen->weight);
-        rsc->next_role = RSC_ROLE_STOPPED;
-        chosen = NULL;
+    if (force == FALSE && chosen != NULL) {
+        bool unset = FALSE;
+
+        if(chosen->weight < 0) {
+            unset = TRUE;
+
+            // Allow the graph to assume that the remote resource will come up
+        } else if(can_run_resources(chosen) == FALSE && !is_container_remote_node(chosen)) {
+            unset = TRUE;
+        }
+
+        if(unset) {
+            crm_debug("All nodes for resource %s are unavailable"
+                      ", unclean or shutting down (%s: %d, %d)",
+                      rsc->id, chosen->details->uname, can_run_resources(chosen), chosen->weight);
+            rsc->next_role = RSC_ROLE_STOPPED;
+            chosen = NULL;
+        }
     }
 
     /* todo: update the old node for each resource to reflect its
@@ -271,10 +282,10 @@ native_assign_node(resource_t * rsc, GListPtr nodes, node_t * chosen, gboolean f
 
             crm_debug("Processing %s", op->uuid);
             if(safe_str_eq(RSC_STOP, op->task)) {
-                update_action_flags(op, pe_action_optional | pe_action_clear, __FUNCTION__);
+                update_action_flags(op, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__);
 
             } else if(safe_str_eq(RSC_START, op->task)) {
-                update_action_flags(op, pe_action_runnable | pe_action_clear, __FUNCTION__);
+                update_action_flags(op, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__);
                 /* set_bit(rsc->flags, pe_rsc_block); */
 
             } else if(interval && safe_str_neq(interval, "0")) {
@@ -283,7 +294,7 @@ native_assign_node(resource_t * rsc, GListPtr nodes, node_t * chosen, gboolean f
 
                 } else {
                     /* Normal monitor operation, cancel it */
-                    update_action_flags(op, pe_action_runnable | pe_action_clear, __FUNCTION__);
+                    update_action_flags(op, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__);
                 }
             }
         }
diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c
index 4f3a2fc..67640c1 100644
--- a/tools/crm_resource_runtime.c
+++ b/tools/crm_resource_runtime.c
@@ -1109,7 +1109,7 @@ cli_resource_restart(resource_t * rsc, const char *host, int timeout_ms, cib_t *
     attr_set_type = XML_TAG_META_SETS;
 
     rsc_id = strdup(rsc->id);
-    if(rsc->variant > pe_group) {
+    if(rsc->variant >= pe_clone) {
         is_clone = TRUE;
     }
 
@@ -1624,7 +1624,7 @@ cli_resource_move(const char *rsc_id, const char *host_name, cib_t * cib, pe_wor
             count = g_list_length(rsc->running_on);
         }
 
-    } else if (rsc->variant > pe_group) {
+    } else if (rsc->variant >= pe_clone) {
         count = g_list_length(rsc->running_on);
 
     } else if (g_list_length(rsc->running_on) > 1) {
diff --git a/xml/resources-2.8.rng b/xml/resources-2.8.rng
new file mode 100644
index 0000000..f41f84d
--- /dev/null
+++ b/xml/resources-2.8.rng
@@ -0,0 +1,300 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0"
+         datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+  <start>
+      <ref name="element-resources"/>
+  </start>
+
+  <define name="element-resources">
+    <element name="resources">
+      <zeroOrMore>
+        <choice>
+          <ref name="element-primitive"/>
+          <ref name="element-template"/>
+          <ref name="element-group"/>
+          <ref name="element-clone"/>
+          <ref name="element-master"/>
+          <ref name="element-bucket"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+
+  <define name="element-primitive">
+    <element name="primitive">
+      <interleave>
+        <attribute name="id"><data type="ID"/></attribute>
+        <choice>
+          <group>
+            <ref name="element-resource-class"/>
+            <attribute name="type"><text/></attribute>
+          </group>
+          <attribute name="template"><data type="IDREF"/></attribute>
+        </choice>
+        <optional>
+          <attribute name="description"><text/></attribute>
+        </optional>
+        <ref name="element-resource-extra"/>
+        <ref name="element-operations"/>
+        <zeroOrMore>
+          <element name="utilization">
+            <externalRef href="nvset-1.3.rng"/>
+          </element>
+        </zeroOrMore>
+      </interleave>
+    </element>
+  </define>
+
+  <define name="element-template">
+    <element name="template">
+      <interleave>
+        <attribute name="id"><data type="ID"/></attribute>
+        <ref name="element-resource-class"/>
+        <attribute name="type"><text/></attribute>
+        <optional>
+          <attribute name="description"><text/></attribute>
+        </optional>
+        <ref name="element-resource-extra"/>
+        <ref name="element-operations"/>
+        <zeroOrMore>
+          <element name="utilization">
+            <externalRef href="nvset-1.3.rng"/>
+          </element>
+        </zeroOrMore>
+      </interleave>
+    </element>
+  </define>
+
+
+  <define name="element-bucket">
+    <element name="bucket">
+	<attribute name="id"><data type="ID"/></attribute>
+	<optional>
+          <attribute name="description"><text/></attribute>
+	</optional>
+        <choice>
+	  <group>
+	    <element name="docker">
+	      <attribute name="image"><text/></attribute>
+	      <optional>
+		<attribute name="replicas"><data type="integer"/></attribute>
+	      </optional>
+	      <optional>
+		<attribute name="replicas-per-host"><data type="integer"/></attribute>
+	      </optional>
+	      <optional>
+		<attribute name="masters"><data type="integer"/></attribute>
+	      </optional>
+	      <optional>
+		<attribute name="pcmk-remote-bin"> <text/></attribute>
+	      </optional>
+	      <optional>
+		<attribute name="options"><text/></attribute>
+	      </optional>
+	    </element>
+	  </group>
+	</choice>
+	<optional>
+	  <element name="network">
+	    <optional>
+	      <attribute name="ip-range-start"><text/></attribute>
+	    </optional>
+	    <optional>
+	      <attribute name="host-network"><text/></attribute>
+	    </optional>
+	    <optional>
+	      <attribute name="host-netmask"><data type="integer"/></attribute>
+	    </optional>
+	    <optional>
+	      <attribute name="docker-network"><text/></attribute>
+	    </optional>
+	    <zeroOrMore>
+	      <element name="port-mapping">
+		<attribute name="id"><data type="ID"/></attribute>
+		<choice>
+		  <attribute name="port"><data type="integer"/></attribute>
+		  <attribute name="range">
+		    <data type="string">
+		      <param name="pattern">([0-9\-]+)</param>
+		    </data>
+		  </attribute>
+		</choice>
+	      </element>
+	    </zeroOrMore>
+	  </element>
+	</optional>
+	<optional>
+	  <element name="storage">
+	    <zeroOrMore>
+	      <element name="storage-mapping">
+		<attribute name="id"><data type="ID"/></attribute>
+		<choice>
+		  <attribute name="source-dir"><text/></attribute>
+		  <attribute name="source-dir-root"><text/></attribute>
+		</choice>
+		<attribute name="target-dir"><text/></attribute>
+		<optional>
+		  <attribute name="options"><text/></attribute>
+		</optional>
+	      </element>
+	    </zeroOrMore>
+	  </element>
+	</optional>
+	<optional>
+          <ref name="element-primitive"/>
+	</optional>
+    </element>
+  </define>
+
+  <define name="element-group">
+    <element name="group">
+      <attribute name="id"><data type="ID"/></attribute>
+      <optional>
+        <attribute name="description"><text/></attribute>
+      </optional>
+      <interleave>
+        <ref name="element-resource-extra"/>
+        <oneOrMore>
+          <ref name="element-primitive"/>
+        </oneOrMore>
+      </interleave>
+    </element>
+  </define>
+
+  <define name="element-clone">
+    <element name="clone">
+      <attribute name="id"><data type="ID"/></attribute>
+      <optional>
+        <attribute name="description"><text/></attribute>
+      </optional>
+      <interleave>
+        <ref name="element-resource-extra"/>
+        <choice>
+          <ref name="element-primitive"/>
+          <ref name="element-group"/>
+        </choice>
+      </interleave>
+    </element>
+  </define>
+
+  <define name="element-master">
+    <element name="master">
+      <attribute name="id"><data type="ID"/></attribute>
+      <optional>
+        <attribute name="description"><text/></attribute>
+      </optional>
+      <interleave>
+        <ref name="element-resource-extra"/>
+        <choice>
+          <ref name="element-primitive"/>
+          <ref name="element-group"/>
+        </choice>
+      </interleave>
+    </element>
+  </define>
+
+  <define name="element-resource-extra">
+      <zeroOrMore>
+        <choice>
+          <element name="meta_attributes">
+            <externalRef href="nvset-1.3.rng"/>
+          </element>
+          <element name="instance_attributes">
+            <externalRef href="nvset-1.3.rng"/>
+          </element>
+        </choice>
+      </zeroOrMore>
+  </define>
+
+  <define name="element-operations">
+    <optional>
+      <element name="operations">
+        <optional>
+          <attribute name="id"><data type="ID"/></attribute>
+        </optional>
+        <optional>
+          <attribute name="id-ref"><data type="IDREF"/></attribute>
+        </optional>
+        <zeroOrMore>
+          <element name="op">
+            <attribute name="id"><data type="ID"/></attribute>
+            <attribute name="name"><text/></attribute>
+            <attribute name="interval"><text/></attribute>
+            <optional>
+              <attribute name="description"><text/></attribute>
+            </optional>
+            <optional>
+              <choice>
+                <attribute name="start-delay"><text/></attribute>
+                <attribute name="interval-origin"><text/></attribute>
+              </choice>
+            </optional>
+            <optional>
+              <attribute name="timeout"><text/></attribute>
+            </optional>
+            <optional>
+              <attribute name="enabled"><data type="boolean"/></attribute>
+            </optional>
+            <optional>
+              <attribute name="record-pending"><data type="boolean"/></attribute>
+            </optional>
+            <optional>
+              <attribute name="role">
+                <choice>
+                  <value>Stopped</value>
+                  <value>Started</value>
+                  <value>Slave</value>
+                  <value>Master</value>
+                </choice>
+              </attribute>
+            </optional>
+            <optional>
+              <attribute name="requires">
+                <choice>
+                  <value>nothing</value>
+                  <value>quorum</value>
+                  <value>fencing</value>
+                  <value>unfencing</value>
+                </choice>
+              </attribute>
+            </optional>
+            <optional>
+              <attribute name="on-fail">
+                <choice>
+                  <value>ignore</value>
+                  <value>block</value>
+                  <value>stop</value>
+                  <value>restart</value>
+                  <value>standby</value>
+                  <value>fence</value>
+                  <value>restart-container</value>
+                </choice>
+              </attribute>
+            </optional>
+            <ref name="element-resource-extra"/>
+          </element>
+        </zeroOrMore>
+      </element>
+    </optional>
+  </define>
+
+  <define name="element-resource-class">
+    <choice>
+      <group>
+        <attribute name="class"><value>ocf</value></attribute>
+        <attribute name="provider"><text/></attribute>
+      </group>
+      <attribute name="class">
+        <choice>
+          <value>lsb</value>
+          <value>heartbeat</value>
+          <value>stonith</value>
+          <value>upstart</value>
+          <value>service</value>
+          <value>systemd</value>
+          <value>nagios</value>
+        </choice>
+      </attribute>
+    </choice>
+  </define>
+</grammar>
-- 
1.8.3.1