Send Linux-ha-cvs mailing list submissions to
        [email protected]

To subscribe or unsubscribe via the World Wide Web, visit
        http://lists.community.tummy.com/mailman/listinfo/linux-ha-cvs
or, via email, send a message with subject or body 'help' to
        [EMAIL PROTECTED]

You can reach the person managing the list at
        [EMAIL PROTECTED]

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Linux-ha-cvs digest..."


Today's Topics:

   1. Linux-HA CVS: crm by andrew from 
      ([email protected])
   2. Linux-HA CVS: crm by andrew from 
      ([email protected])
   3. Linux-HA CVS: lib by andrew from 
      ([email protected])
   4. Linux-HA CVS: crm by andrew from 
      ([email protected])


----------------------------------------------------------------------

Message: 1
Date: Mon, 27 Mar 2006 08:51:58 -0700 (MST)
From: [email protected]
Subject: [Linux-ha-cvs] Linux-HA CVS: crm by andrew from 
To: [EMAIL PROTECTED]
Message-ID: <[EMAIL PROTECTED]>

linux-ha CVS committal

Author  : andrew
Host    : 
Project : linux-ha
Module  : crm

Dir     : linux-ha/crm/pengine


Modified Files:
        unpack.c 


Log Message:
Dont derstoy the params list when checking for changed parameters
Keep processing when rc == OCF_RUNNING_MASTER

===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/crm/pengine/unpack.c,v
retrieving revision 1.169
retrieving revision 1.170
diff -u -3 -r1.169 -r1.170
--- unpack.c    27 Mar 2006 05:44:24 -0000      1.169
+++ unpack.c    27 Mar 2006 15:51:58 -0000      1.170
@@ -1,4 +1,4 @@
-/* $Id: unpack.c,v 1.169 2006/03/27 05:44:24 andrew Exp $ */
+/* $Id: unpack.c,v 1.170 2006/03/27 15:51:58 andrew Exp $ */
 /* 
  * Copyright (C) 2004 Andrew Beekhof <[EMAIL PROTECTED]>
  * 
@@ -1128,7 +1128,7 @@
 
 static gboolean
 check_action_definition(resource_t *rsc, node_t *node, crm_data_t *xml_op,
-                         pe_working_set_t *data_set)
+                       pe_working_set_t *data_set)
 {
        int lpc = 0;
        gboolean did_change = FALSE;
@@ -1143,7 +1143,7 @@
                                         TRUE, FALSE, data_set);
 
        crm_data_t *params = find_xml_node(xml_op, XML_TAG_PARAMS, TRUE);
-       
+       crm_data_t *local_params = copy_xml(params);
        
        const char *attr_filter[] = {
                XML_ATTR_TE_TARGET_RC,
@@ -1199,10 +1199,10 @@
        
        for(lpc = 0; lpc < DIMOF(attr_filter); lpc++) {
                xml_remove_prop(pnow, attr_filter[lpc]); 
-               xml_remove_prop(params, attr_filter[lpc]); 
+               xml_remove_prop(local_params, attr_filter[lpc]); 
        }
        
-       pdiff = diff_xml_object(params, pnow, TRUE);
+       pdiff = diff_xml_object(local_params, pnow, TRUE);
        if(pdiff != NULL) {
                did_change = TRUE;
                crm_info("Parameters to %s action changed", id);
@@ -1216,6 +1216,7 @@
        crm_free(action);
        free_xml(pnow);
        free_xml(pdiff);
+       free_xml(local_params);
        
        g_hash_table_destroy(local_rsc_params);
 
@@ -1267,9 +1268,9 @@
                /* safe to ignore these */
                return TRUE;
        }
-       
+
        crm_debug_2("Unpacking task %s/%s (call_id=%s, status=%s) on %s 
(role=%s)",
-                   rsc->id, task, task_id, task_status, node->details->uname,
+                   id, task, task_id, task_status, node->details->uname,
                    role2text(rsc->role));
 
        if(params != NULL) {
@@ -1379,7 +1380,7 @@
        if(params != NULL) {
                target_rc = crm_element_value(params, XML_ATTR_TE_TARGET_RC);
        }
-
+       
        actual_rc = crm_element_value(xml_op, XML_LRM_ATTR_RC);
        CRM_CHECK(actual_rc != NULL, return FALSE);
 
@@ -1406,7 +1407,6 @@
                rsc->role = RSC_ROLE_MASTER;
                if(safe_str_eq(task, CRMD_ACTION_STATUS)) {
                        crm_info("%s: resource %s is a master", id, rsc->id);
-                       return TRUE;
                }
 
        } else if(EXECRA_FAILED_MASTER == actual_rc_i) {




------------------------------

Message: 2
Date: Mon, 27 Mar 2006 08:53:10 -0700 (MST)
From: [email protected]
Subject: [Linux-ha-cvs] Linux-HA CVS: crm by andrew from 
To: [EMAIL PROTECTED]
Message-ID: <[EMAIL PROTECTED]>

linux-ha CVS committal

Author  : andrew
Host    : 
Project : linux-ha
Module  : crm

Dir     : linux-ha/crm/crmd


Modified Files:
        lrm.c 


Log Message:
Master/slave is now tested and apparently works





------------------------------

Message: 3
Date: Mon, 27 Mar 2006 08:53:10 -0700 (MST)
From: [email protected]
Subject: [Linux-ha-cvs] Linux-HA CVS: lib by andrew from 
To: [EMAIL PROTECTED]
Message-ID: <[EMAIL PROTECTED]>

linux-ha CVS committal

Author  : andrew
Host    : 
Project : linux-ha
Module  : lib

Dir     : linux-ha/lib/plugins/lrm


Modified Files:
        raexecocf.c 


Log Message:
Master/slave is now tested and apparently works

===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/lib/plugins/lrm/raexecocf.c,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -3 -r1.55 -r1.56
--- raexecocf.c 20 Oct 2005 16:34:44 -0000      1.55
+++ raexecocf.c 27 Mar 2006 15:53:10 -0000      1.56
@@ -193,7 +193,7 @@
          * no actual mapping except validating, which ensure the return code
          * will be in the range 0 to 7. Too strict?
          */
-        if (ret_execra < 0 || ret_execra > 7) {
+        if (ret_execra < 0 || ret_execra > 9) {
                 cl_log(LOG_WARNING, "mapped the invalid return code %d."
                         , ret_execra);
                 ret_execra = EXECRA_UNKNOWN_ERROR;




------------------------------

Message: 4
Date: Mon, 27 Mar 2006 08:53:10 -0700 (MST)
From: [email protected]
Subject: [Linux-ha-cvs] Linux-HA CVS: crm by andrew from 
To: [EMAIL PROTECTED]
Message-ID: <[EMAIL PROTECTED]>

linux-ha CVS committal

Author  : andrew
Host    : 
Project : linux-ha
Module  : crm

Dir     : linux-ha/crm/pengine


Modified Files:
        native.c regression.sh 


Log Message:
Master/slave is now tested and apparently works

===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/crm/pengine/native.c,v
retrieving revision 1.119
retrieving revision 1.120
diff -u -3 -r1.119 -r1.120
--- native.c    27 Mar 2006 10:03:55 -0000      1.119
+++ native.c    27 Mar 2006 15:53:10 -0000      1.120
@@ -1,4 +1,4 @@
-/* $Id: native.c,v 1.119 2006/03/27 10:03:55 andrew Exp $ */
+/* $Id: native.c,v 1.120 2006/03/27 15:53:10 andrew Exp $ */
 /* 
  * Copyright (C) 2004 Andrew Beekhof <[EMAIL PROTECTED]>
  * 
@@ -387,6 +387,7 @@
        char *key = NULL;
        const char *name = NULL;
        const char *value = NULL;
+       const char *interval = NULL;
        const char *node_uname = NULL;
 
        int interval_ms = 0;
@@ -401,25 +402,15 @@
        
        xml_child_iter_filter(
                rsc->ops_xml, operation, "op",
-
+               
                name = crm_element_value(operation, "name");
-               value = crm_element_value(operation, "interval");
-               interval_ms = crm_get_msec(value);
+               interval = crm_element_value(operation, "interval");
+               interval_ms = crm_get_msec(interval);
 
                if(interval_ms <= 0) {
                        continue;
                }
 
-               value = crm_element_value(operation, "role");
-               if(start != NULL && value != NULL
-                  && text2role(value) != start->rsc->next_role) {
-                       crm_debug_2("Skipping action %s::%s(%s) : %s",
-                                   start->rsc->id, name, value,
-                                   role2text(start->rsc->next_role));
-                       continue;
-               }
-               
-               
                key = generate_op_key(rsc->graph_name, name, interval_ms);
                if(start != NULL) {
                        crm_debug_3("Marking %s %s due to %s",
@@ -437,6 +428,40 @@
                        is_optional = FALSE;
                        crm_debug_3("Marking %s manditory: not active", key);
                }
+
+               value = crm_element_value(operation, "role");
+               if((rsc->next_role == RSC_ROLE_MASTER && value == NULL)
+                  || (value != NULL && text2role(value) != rsc->next_role)) {
+                       int log_level = LOG_DEBUG_2;
+                       const char *foo = "Ignoring";
+                       if(is_optional) {
+                               log_level = LOG_INFO;
+                               foo = "Cancelling";
+                               /* its running : cancel it */
+
+                               mon = custom_action(
+                                       rsc, crm_strdup(key), 
CRMD_ACTION_CANCEL, node,
+                                       FALSE, TRUE, data_set);
+
+                               mon->task = CRMD_ACTION_CANCEL;
+                               add_hash_param(mon->extra, "interval", 
interval);
+                               add_hash_param(mon->extra, "task", name);
+                               
+                               custom_action_order(
+                                       rsc, NULL, mon,
+                                       rsc, promote_key(rsc), NULL,
+                                       pe_ordering_optional, data_set);
+
+                               mon = NULL;
+                       }
+                       
+                       crm_log_maybe(log_level, "%s action %s (%s vs. %s)",
+                                     foo , key, 
value?value:role2text(RSC_ROLE_SLAVE),
+                                     role2text(rsc->next_role));
+                       crm_free(key);
+                       key = NULL;
+                       continue;
+               }               
                
                mon = custom_action(rsc, key, name, node,
                                    is_optional, TRUE, data_set);
@@ -461,9 +486,20 @@
                } else if(mon->optional == FALSE) {
                        crm_notice("%s\t   %s", crm_str(node_uname),mon->uuid);
                }
+
                custom_action_order(rsc, start_key(rsc), NULL,
                                    NULL, crm_strdup(key), mon,
                                    pe_ordering_restart, data_set);
+
+               if(rsc->next_role == RSC_ROLE_MASTER) {
+                       char *running_master = crm_itoa(EXECRA_RUNNING_MASTER);
+                       add_hash_param(mon->extra, XML_ATTR_TE_TARGET_RC, 
running_master);
+                       custom_action_order(
+                               rsc, promote_key(rsc), NULL,
+                               rsc, NULL, mon,
+                               pe_ordering_optional, data_set);
+                       crm_free(running_master);
+               }               
                );      
 }
 
@@ -961,13 +997,15 @@
                             desc?": ":"", desc?desc:"");
 
        } else {
-               status_print("%s%s (%s%s%s:%s):\t%s%s",
+               status_print("%s%s (%s%s%s:%s):\t%s %s%s",
                             pre_text?pre_text:"", rsc->id,
                             prov?prov:"", prov?"::":"",
                             crm_element_value(rsc->xml, XML_AGENT_ATTR_CLASS),
                             crm_element_value(rsc->xml, XML_ATTR_TYPE),
-                            (rsc->variant!=pe_native)?"":node==NULL?"NOT 
ACTIVE":node->details->uname,
+                            (rsc->variant!=pe_native)?"":role2text(rsc->role),
+                            
(rsc->variant!=pe_native)?"":node!=NULL?node->details->uname:"",
                             rsc->is_managed?"":" (unmanaged) ");
+               
 #if CURSES_ENABLED
                if(options & pe_print_ncurses) {
                        move(-1, 0);
===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/crm/pengine/regression.sh,v
retrieving revision 1.73
retrieving revision 1.74
diff -u -3 -r1.73 -r1.74
--- regression.sh       8 Mar 2006 22:30:42 -0000       1.73
+++ regression.sh       27 Mar 2006 15:53:10 -0000      1.74
@@ -57,6 +57,9 @@
 do_test master-1 "Stopped -> Promote"
 do_test master-2 "Stopped -> Promote : notify"
 do_test master-3 "Stopped -> Promote : master location"
+do_test master-4 "Started -> Promote : master location"
+do_test master-5 "Promoted -> Promoted"
+do_test master-6 "Promoted -> Promoted (2)"
 
 echo ""
 do_test rsc_dep1 "Must not     "




------------------------------

_______________________________________________
Linux-ha-cvs mailing list
[email protected]
http://lists.community.tummy.com/mailman/listinfo/linux-ha-cvs


End of Linux-ha-cvs Digest, Vol 28, Issue 71
********************************************

Reply via email to