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: include by zhenh from 
      ([email protected])
   2. Linux-HA CVS: mgmt by zhenh from 
      ([email protected])
   3. Linux-HA CVS: mgmt by zhenh from 
      ([email protected])
   4. Linux-HA CVS: mgmt by zhenh from 
      ([email protected])


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

Message: 1
Date: Sun,  4 Jun 2006 23:38:57 -0600 (MDT)
From: [email protected]
Subject: [Linux-ha-cvs] Linux-HA CVS: include by zhenh from 
To: [EMAIL PROTECTED]
Message-ID: <[EMAIL PROTECTED]>

linux-ha CVS committal

Author  : zhenh
Host    : 
Project : linux-ha
Module  : include

Dir     : linux-ha/include/mgmt


Modified Files:
        mgmt_common.h 


Log Message:
add support for updating the attribute of resource
===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/include/mgmt/mgmt_common.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- mgmt_common.h       26 May 2006 03:08:54 -0000      1.10
+++ mgmt_common.h       5 Jun 2006 05:38:57 -0000       1.11
@@ -407,6 +407,18 @@
 
 /*
 description:
+       update attribute of a given resource
+format:
+       MSG_UP_RSC_ATTR resource name value
+return:
+       MSG_OK
+or
+       MSG_FAIL
+*/
+#define MSG_UP_RSC_ATTR                "up_rsc_attr"
+
+/*
+description:
        return the params of a given resource
 format:
        MSG_RSC_PARAMS resource
@@ -415,6 +427,7 @@
 or
        MSG_FAIL
 */
+
 #define MSG_RSC_PARAMS         "rsc_params"
 
 /*




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

Message: 2
Date: Sun,  4 Jun 2006 23:39:34 -0600 (MDT)
From: [email protected]
Subject: [Linux-ha-cvs] Linux-HA CVS: mgmt by zhenh from 
To: [EMAIL PROTECTED]
Message-ID: <[EMAIL PROTECTED]>

linux-ha CVS committal

Author  : zhenh
Host    : 
Project : linux-ha
Module  : mgmt

Dir     : linux-ha/mgmt/daemon


Modified Files:
        mgmt_crm.c 


Log Message:
add support for updating the attribute of resource
===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/mgmt/daemon/mgmt_crm.c,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -3 -r1.45 -r1.46
--- mgmt_crm.c  3 Jun 2006 12:58:21 -0000       1.45
+++ mgmt_crm.c  5 Jun 2006 05:39:33 -0000       1.46
@@ -74,6 +74,7 @@
 static char* on_get_rsc_type(char* argv[], int argc);
 static char* on_get_sub_rsc(char* argv[], int argc);
 static char* on_get_rsc_attrs(char* argv[], int argc);
+static char* on_update_rsc_attr(char* argv[], int argc);
 static char* on_get_rsc_running_on(char* argv[], int argc);
 static char* on_get_rsc_status(char* argv[], int argc);
 
@@ -298,6 +299,7 @@
        data_set = get_data_set();
        rsc = pe_find_resource(data_set->resources, rsc_id);    
        if (rsc == NULL) {
+               free_data_set(data_set);        
                return -1;
        }
        strncpy(rsc_tag, get_rsc_tag(rsc), MAX_STRLEN);
@@ -462,6 +464,8 @@
        reg_msg(MSG_RSC_RUNNING_ON, on_get_rsc_running_on);
        reg_msg(MSG_RSC_STATUS, on_get_rsc_status);
        reg_msg(MSG_RSC_TYPE, on_get_rsc_type);
+       reg_msg(MSG_UP_RSC_ATTR, on_update_rsc_attr);
+               
        
        reg_msg(MSG_RSC_PARAMS, on_get_rsc_params);
        reg_msg(MSG_UP_RSC_PARAMS, on_update_rsc_params);
@@ -1134,6 +1138,7 @@
 {
        resource_t* rsc;
        char* ret;
+       const char* value;
        struct ha_msg* attrs;
        pe_working_set_t* data_set;
        
@@ -1143,13 +1148,44 @@
        ret = cl_strdup(MSG_OK);
        attrs = (struct ha_msg*)rsc->xml;
        ret = mgmt_msg_append(ret, ha_msg_value(attrs, "id"));
+       ret = mgmt_msg_append(ret, ha_msg_value(attrs, "description"));
        ret = mgmt_msg_append(ret, ha_msg_value(attrs, "class"));
        ret = mgmt_msg_append(ret, ha_msg_value(attrs, "provider"));
        ret = mgmt_msg_append(ret, ha_msg_value(attrs, "type"));
+       
+       value = ha_msg_value(attrs, "is_managed");
+       ret = mgmt_msg_append(ret, value?value:"default");
+       value = ha_msg_value(attrs, "restart_type");
+       ret = mgmt_msg_append(ret, value?value:"ignore");
+       value = ha_msg_value(attrs, "multiple_active");
+       ret = mgmt_msg_append(ret, value?value:"stop_start");
+       value = ha_msg_value(attrs, "resource_stickiness");
+       ret = mgmt_msg_append(ret, value?value:"0");
+       
+       switch (rsc->variant) {
+               case pe_group:
+                       value = ha_msg_value(attrs, "ordered");
+                       ret = mgmt_msg_append(ret, value?value:"true");
+                       value = ha_msg_value(attrs, "collocated");
+                       ret = mgmt_msg_append(ret, value?value:"true");
+                       break;
+               case pe_clone:
+               case pe_master:
+                       value = ha_msg_value(attrs, "notify");
+                       ret = mgmt_msg_append(ret, value?value:"false");
+                       value = ha_msg_value(attrs, "globally_unique");
+                       ret = mgmt_msg_append(ret, value?value:"true");
+                       value = ha_msg_value(attrs, "ordered");
+                       ret = mgmt_msg_append(ret, value?value:"true");
+                       value = ha_msg_value(attrs, "interleave");
+                       ret = mgmt_msg_append(ret, value?value:"false");
+                       break;
+               default:
+                       break;
+       }
        free_data_set(data_set);
        return ret;
 }
-
 char*
 on_get_rsc_running_on(char* argv[], int argc)
 {
@@ -1319,6 +1355,39 @@
        return ret;
 }
 char*
+on_update_rsc_attr(char* argv[], int argc)
+{
+       int rc;
+       crm_data_t* msg_data = NULL;
+       crm_data_t* output;
+       pe_working_set_t* data_set;
+       resource_t* rsc;
+       
+       data_set = get_data_set();
+       rsc = pe_find_resource(data_set->resources, argv[1]);   
+       if (rsc == NULL) {
+               free_data_set(data_set);
+               return cl_strdup(MSG_FAIL);;
+       }
+       
+       msg_data = create_xml_node(NULL, get_rsc_tag(rsc));
+       crm_xml_add(msg_data, XML_ATTR_ID, argv[1]);
+       crm_xml_add(msg_data, argv[2], argv[3]);
+               
+       free_data_set(data_set);
+       
+       rc = cib_conn->cmds->modify(cib_conn, XML_CIB_TAG_RESOURCES,
+                                   msg_data, &output, cib_sync_call);
+       free_xml(msg_data);
+
+       if (rc < 0) {
+               return crm_failed_msg(output, rc);
+       }
+       free_xml(output);
+       return cl_strdup(MSG_OK);
+}
+
+char*
 on_update_rsc_params(char* argv[], int argc)
 {
        int rc, i;




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

Message: 3
Date: Mon,  5 Jun 2006 02:56:09 -0600 (MDT)
From: [email protected]
Subject: [Linux-ha-cvs] Linux-HA CVS: mgmt by zhenh from 
To: [EMAIL PROTECTED]
Message-ID: <[EMAIL PROTECTED]>

linux-ha CVS committal

Author  : zhenh
Host    : 
Project : linux-ha
Module  : mgmt

Dir     : linux-ha/mgmt/daemon


Modified Files:
        mgmt_crm.c 


Log Message:
only native has class/provider/type attrs
===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/mgmt/daemon/mgmt_crm.c,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -3 -r1.46 -r1.47
--- mgmt_crm.c  5 Jun 2006 05:39:33 -0000       1.46
+++ mgmt_crm.c  5 Jun 2006 08:56:08 -0000       1.47
@@ -1149,10 +1149,11 @@
        attrs = (struct ha_msg*)rsc->xml;
        ret = mgmt_msg_append(ret, ha_msg_value(attrs, "id"));
        ret = mgmt_msg_append(ret, ha_msg_value(attrs, "description"));
-       ret = mgmt_msg_append(ret, ha_msg_value(attrs, "class"));
-       ret = mgmt_msg_append(ret, ha_msg_value(attrs, "provider"));
-       ret = mgmt_msg_append(ret, ha_msg_value(attrs, "type"));
-       
+       if (rsc->variant == pe_native) {
+               ret = mgmt_msg_append(ret, ha_msg_value(attrs, "class"));
+               ret = mgmt_msg_append(ret, ha_msg_value(attrs, "provider"));
+               ret = mgmt_msg_append(ret, ha_msg_value(attrs, "type"));
+       }
        value = ha_msg_value(attrs, "is_managed");
        ret = mgmt_msg_append(ret, value?value:"default");
        value = ha_msg_value(attrs, "restart_type");




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

Message: 4
Date: Mon,  5 Jun 2006 03:49:49 -0600 (MDT)
From: [email protected]
Subject: [Linux-ha-cvs] Linux-HA CVS: mgmt by zhenh from 
To: [EMAIL PROTECTED]
Message-ID: <[EMAIL PROTECTED]>

linux-ha CVS committal

Author  : zhenh
Host    : 
Project : linux-ha
Module  : mgmt

Dir     : linux-ha/mgmt/client


Modified Files:
        haclient.glade haclient.py.in 


Log Message:
add attributes view of group/clone/master to GUI, using tabbed window
===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/mgmt/client/haclient.glade,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -3 -r1.13 -r1.14
--- haclient.glade      29 May 2006 04:38:19 -0000      1.13
+++ haclient.glade      5 Jun 2006 09:49:49 -0000       1.14
@@ -3834,139 +3834,173 @@
       <property name="spacing">0</property>
 
       <child>
-       <widget class="GtkFrame" id="frame17">
+       <widget class="GtkAlignment" id="alignment16">
          <property name="visible">True</property>
-         <property name="label_xalign">0</property>
-         <property name="label_yalign">0.5</property>
-         <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
+         <property name="xalign">0.5</property>
+         <property name="yalign">0.5</property>
+         <property name="xscale">1</property>
+         <property name="yscale">1</property>
+         <property name="top_padding">0</property>
+         <property name="bottom_padding">0</property>
+         <property name="left_padding">12</property>
+         <property name="right_padding">0</property>
 
          <child>
-           <widget class="GtkAlignment" id="alignment16">
+           <widget class="GtkTable" id="table12">
              <property name="visible">True</property>
-             <property name="xalign">0.5</property>
-             <property name="yalign">0.5</property>
-             <property name="xscale">1</property>
-             <property name="yscale">1</property>
-             <property name="top_padding">0</property>
-             <property name="bottom_padding">0</property>
-             <property name="left_padding">12</property>
-             <property name="right_padding">0</property>
+             <property name="n_rows">1</property>
+             <property name="n_columns">4</property>
+             <property name="homogeneous">True</property>
+             <property name="row_spacing">0</property>
+             <property name="column_spacing">10</property>
 
              <child>
-               <widget class="GtkTable" id="table12">
+               <widget class="GtkLabel" id="label185">
                  <property name="visible">True</property>
-                 <property name="n_rows">1</property>
-                 <property name="n_columns">4</property>
-                 <property name="homogeneous">True</property>
-                 <property name="row_spacing">0</property>
-                 <property name="column_spacing">10</property>
+                 <property name="label" translatable="yes">ID:</property>
+                 <property name="use_underline">False</property>
+                 <property name="use_markup">False</property>
+                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                 <property name="wrap">False</property>
+                 <property name="selectable">False</property>
+                 <property name="xalign">1</property>
+                 <property name="yalign">0.5</property>
+                 <property name="xpad">10</property>
+                 <property name="ypad">0</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">0</property>
+                 <property name="right_attach">1</property>
+                 <property name="top_attach">0</property>
+                 <property name="bottom_attach">1</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
 
-                 <child>
-                   <widget class="GtkLabel" id="label185">
-                     <property name="visible">True</property>
-                     <property name="label" translatable="yes">ID:</property>
-                     <property name="use_underline">False</property>
-                     <property name="use_markup">False</property>
-                     <property name="justify">GTK_JUSTIFY_LEFT</property>
-                     <property name="wrap">False</property>
-                     <property name="selectable">False</property>
-                     <property name="xalign">1</property>
-                     <property name="yalign">0.5</property>
-                     <property name="xpad">10</property>
-                     <property name="ypad">0</property>
-                   </widget>
-                   <packing>
-                     <property name="left_attach">0</property>
-                     <property name="right_attach">1</property>
-                     <property name="top_attach">0</property>
-                     <property name="bottom_attach">1</property>
-                     <property name="x_options">fill</property>
-                     <property name="y_options"></property>
-                   </packing>
-                 </child>
+             <child>
+               <widget class="GtkLabel" id="id">
+                 <property name="visible">True</property>
+                 <property name="label" translatable="yes"></property>
+                 <property name="use_underline">False</property>
+                 <property name="use_markup">False</property>
+                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                 <property name="wrap">False</property>
+                 <property name="selectable">False</property>
+                 <property name="xalign">0</property>
+                 <property name="yalign">0.5</property>
+                 <property name="xpad">0</property>
+                 <property name="ypad">0</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">1</property>
+                 <property name="right_attach">2</property>
+                 <property name="top_attach">0</property>
+                 <property name="bottom_attach">1</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
 
-                 <child>
-                   <widget class="GtkLabel" id="id">
-                     <property name="visible">True</property>
-                     <property name="label" translatable="yes"></property>
-                     <property name="use_underline">False</property>
-                     <property name="use_markup">False</property>
-                     <property name="justify">GTK_JUSTIFY_LEFT</property>
-                     <property name="wrap">False</property>
-                     <property name="selectable">False</property>
-                     <property name="xalign">0</property>
-                     <property name="yalign">0.5</property>
-                     <property name="xpad">0</property>
-                     <property name="ypad">0</property>
-                   </widget>
-                   <packing>
-                     <property name="left_attach">1</property>
-                     <property name="right_attach">2</property>
-                     <property name="top_attach">0</property>
-                     <property name="bottom_attach">1</property>
-                     <property name="x_options">fill</property>
-                     <property name="y_options"></property>
-                   </packing>
-                 </child>
+             <child>
+               <widget class="GtkLabel" id="label205">
+                 <property name="visible">True</property>
+                 <property name="label" translatable="yes">Type:</property>
+                 <property name="use_underline">False</property>
+                 <property name="use_markup">False</property>
+                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                 <property name="wrap">False</property>
+                 <property name="selectable">False</property>
+                 <property name="xalign">0</property>
+                 <property name="yalign">0.5</property>
+                 <property name="xpad">0</property>
+                 <property name="ypad">0</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">2</property>
+                 <property name="right_attach">3</property>
+                 <property name="top_attach">0</property>
+                 <property name="bottom_attach">1</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
 
-                 <child>
-                   <widget class="GtkLabel" id="label205">
-                     <property name="visible">True</property>
-                     <property name="label" translatable="yes">Type:</property>
-                     <property name="use_underline">False</property>
-                     <property name="use_markup">False</property>
-                     <property name="justify">GTK_JUSTIFY_LEFT</property>
-                     <property name="wrap">False</property>
-                     <property name="selectable">False</property>
-                     <property name="xalign">0</property>
-                     <property name="yalign">0.5</property>
-                     <property name="xpad">0</property>
-                     <property name="ypad">0</property>
-                   </widget>
-                   <packing>
-                     <property name="left_attach">2</property>
-                     <property name="right_attach">3</property>
-                     <property name="top_attach">0</property>
-                     <property name="bottom_attach">1</property>
-                     <property name="x_options">fill</property>
-                     <property name="y_options"></property>
-                   </packing>
-                 </child>
+             <child>
+               <widget class="GtkLabel" id="type">
+                 <property name="visible">True</property>
+                 <property name="label" translatable="yes"></property>
+                 <property name="use_underline">False</property>
+                 <property name="use_markup">False</property>
+                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                 <property name="wrap">False</property>
+                 <property name="selectable">False</property>
+                 <property name="xalign">0</property>
+                 <property name="yalign">0.5</property>
+                 <property name="xpad">0</property>
+                 <property name="ypad">0</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">3</property>
+                 <property name="right_attach">4</property>
+                 <property name="top_attach">0</property>
+                 <property name="bottom_attach">1</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+           </widget>
+         </child>
+       </widget>
+       <packing>
+         <property name="padding">0</property>
+         <property name="expand">False</property>
+         <property name="fill">False</property>
+       </packing>
+      </child>
 
-                 <child>
-                   <widget class="GtkLabel" id="type">
-                     <property name="visible">True</property>
-                     <property name="label" translatable="yes"></property>
-                     <property name="use_underline">False</property>
-                     <property name="use_markup">False</property>
-                     <property name="justify">GTK_JUSTIFY_LEFT</property>
-                     <property name="wrap">False</property>
-                     <property name="selectable">False</property>
-                     <property name="xalign">0</property>
-                     <property name="yalign">0.5</property>
-                     <property name="xpad">0</property>
-                     <property name="ypad">0</property>
-                   </widget>
-                   <packing>
-                     <property name="left_attach">3</property>
-                     <property name="right_attach">4</property>
-                     <property name="top_attach">0</property>
-                     <property name="bottom_attach">1</property>
-                     <property name="x_options">fill</property>
-                     <property name="y_options"></property>
-                   </packing>
-                 </child>
+      <child>
+       <widget class="GtkNotebook" id="notebook1">
+         <property name="visible">True</property>
+         <property name="can_focus">True</property>
+         <property name="show_tabs">True</property>
+         <property name="show_border">True</property>
+         <property name="tab_pos">GTK_POS_TOP</property>
+         <property name="scrollable">False</property>
+         <property name="enable_popup">False</property>
+
+         <child>
+           <widget class="GtkScrolledWindow" id="scrolledwindow13">
+             <property name="visible">True</property>
+             <property name="can_focus">True</property>
+             <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+             <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+             <property name="shadow_type">GTK_SHADOW_IN</property>
+             <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+             <child>
+               <widget class="GtkTreeView" id="attributes">
+                 <property name="visible">True</property>
+                 <property name="can_focus">True</property>
+                 <property name="headers_visible">True</property>
+                 <property name="rules_hint">False</property>
+                 <property name="reorderable">False</property>
+                 <property name="enable_search">True</property>
                </widget>
              </child>
            </widget>
+           <packing>
+             <property name="tab_expand">False</property>
+             <property name="tab_fill">True</property>
+           </packing>
          </child>
 
          <child>
-           <widget class="GtkLabel" id="label193">
+           <widget class="GtkLabel" id="label207">
              <property name="visible">True</property>
-             <property name="label" translatable="yes">Attributes:</property>
+             <property name="label" translatable="yes">Attributes: </property>
              <property name="use_underline">False</property>
-             <property name="use_markup">True</property>
+             <property name="use_markup">False</property>
              <property name="justify">GTK_JUSTIFY_LEFT</property>
              <property name="wrap">False</property>
              <property name="selectable">False</property>
@@ -3976,116 +4010,92 @@
              <property name="ypad">0</property>
            </widget>
            <packing>
-             <property name="type">label_item</property>
+             <property name="type">tab</property>
            </packing>
          </child>
-       </widget>
-       <packing>
-         <property name="padding">0</property>
-         <property name="expand">False</property>
-         <property name="fill">False</property>
-       </packing>
-      </child>
-
-      <child>
-       <widget class="GtkFrame" id="frame18">
-         <property name="visible">True</property>
-         <property name="label_xalign">0</property>
-         <property name="label_yalign">0.5</property>
-         <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
 
          <child>
-           <widget class="GtkAlignment" id="alignment17">
+           <widget class="GtkVBox" id="vbox17">
              <property name="visible">True</property>
-             <property name="xalign">0.5</property>
-             <property name="yalign">0.5</property>
-             <property name="xscale">1</property>
-             <property name="yscale">1</property>
-             <property name="top_padding">0</property>
-             <property name="bottom_padding">0</property>
-             <property name="left_padding">12</property>
-             <property name="right_padding">0</property>
+             <property name="homogeneous">False</property>
+             <property name="spacing">0</property>
 
              <child>
-               <widget class="GtkVBox" id="vbox17">
+               <widget class="GtkScrolledWindow" id="scrolledwindow11">
                  <property name="visible">True</property>
-                 <property name="homogeneous">False</property>
-                 <property name="spacing">0</property>
+                 <property name="can_focus">True</property>
+                 <property 
name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                 <property 
name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                 <property name="shadow_type">GTK_SHADOW_IN</property>
+                 <property 
name="window_placement">GTK_CORNER_TOP_LEFT</property>
 
                  <child>
-                   <widget class="GtkScrolledWindow" id="scrolledwindow11">
+                   <widget class="GtkTreeView" id="parameters">
                      <property name="visible">True</property>
                      <property name="can_focus">True</property>
-                     <property 
name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                     <property 
name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                     <property name="shadow_type">GTK_SHADOW_IN</property>
-                     <property 
name="window_placement">GTK_CORNER_TOP_LEFT</property>
-
-                     <child>
-                       <widget class="GtkTreeView" id="parameters">
-                         <property name="visible">True</property>
-                         <property name="can_focus">True</property>
-                         <property name="headers_visible">True</property>
-                         <property name="rules_hint">False</property>
-                         <property name="reorderable">False</property>
-                         <property name="enable_search">True</property>
-                       </widget>
-                     </child>
+                     <property name="headers_visible">True</property>
+                     <property name="rules_hint">False</property>
+                     <property name="reorderable">False</property>
+                     <property name="enable_search">True</property>
                    </widget>
-                   <packing>
-                     <property name="padding">0</property>
-                     <property name="expand">True</property>
-                     <property name="fill">True</property>
-                   </packing>
                  </child>
+               </widget>
+               <packing>
+                 <property name="padding">0</property>
+                 <property name="expand">True</property>
+                 <property name="fill">True</property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkHButtonBox" id="hbuttonbox18">
+                 <property name="visible">True</property>
+                 <property name="layout_style">GTK_BUTTONBOX_END</property>
+                 <property name="spacing">0</property>
 
                  <child>
-                   <widget class="GtkHButtonBox" id="hbuttonbox18">
+                   <widget class="GtkButton" id="addparam">
                      <property name="visible">True</property>
-                     <property name="layout_style">GTK_BUTTONBOX_END</property>
-                     <property name="spacing">0</property>
+                     <property name="can_default">True</property>
+                     <property name="can_focus">True</property>
+                     <property name="label" translatable="yes">Add 
Parameter</property>
+                     <property name="use_underline">True</property>
+                     <property name="relief">GTK_RELIEF_NORMAL</property>
+                     <property name="focus_on_click">True</property>
+                   </widget>
+                 </child>
 
-                     <child>
-                       <widget class="GtkButton" id="addparam">
-                         <property name="visible">True</property>
-                         <property name="can_default">True</property>
-                         <property name="can_focus">True</property>
-                         <property name="label" translatable="yes">Add 
Parameter</property>
-                         <property name="use_underline">True</property>
-                         <property name="relief">GTK_RELIEF_NORMAL</property>
-                         <property name="focus_on_click">True</property>
-                       </widget>
-                     </child>
-
-                     <child>
-                       <widget class="GtkButton" id="delparam">
-                         <property name="visible">True</property>
-                         <property name="can_default">True</property>
-                         <property name="can_focus">True</property>
-                         <property name="label" translatable="yes">Delete 
Parameter</property>
-                         <property name="use_underline">True</property>
-                         <property name="relief">GTK_RELIEF_NORMAL</property>
-                         <property name="focus_on_click">True</property>
-                       </widget>
-                     </child>
+                 <child>
+                   <widget class="GtkButton" id="delparam">
+                     <property name="visible">True</property>
+                     <property name="can_default">True</property>
+                     <property name="can_focus">True</property>
+                     <property name="label" translatable="yes">Delete 
Parameter</property>
+                     <property name="use_underline">True</property>
+                     <property name="relief">GTK_RELIEF_NORMAL</property>
+                     <property name="focus_on_click">True</property>
                    </widget>
-                   <packing>
-                     <property name="padding">0</property>
-                     <property name="expand">False</property>
-                     <property name="fill">True</property>
-                   </packing>
                  </child>
                </widget>
+               <packing>
+                 <property name="padding">0</property>
+                 <property name="expand">False</property>
+                 <property name="fill">True</property>
+               </packing>
              </child>
            </widget>
+           <packing>
+             <property name="tab_expand">False</property>
+             <property name="tab_fill">True</property>
+           </packing>
          </child>
 
          <child>
-           <widget class="GtkLabel" id="label194">
+           <widget class="GtkLabel" id="label208">
              <property name="visible">True</property>
-             <property name="label" translatable="yes">Parameters:</property>
+             <property name="label" translatable="yes">Parameters: </property>
              <property name="use_underline">False</property>
-             <property name="use_markup">True</property>
+             <property name="use_markup">False</property>
              <property name="justify">GTK_JUSTIFY_LEFT</property>
              <property name="wrap">False</property>
              <property name="selectable">False</property>
@@ -4095,7 +4105,7 @@
              <property name="ypad">0</property>
            </widget>
            <packing>
-             <property name="type">label_item</property>
+             <property name="type">tab</property>
            </packing>
          </child>
        </widget>
===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/mgmt/client/haclient.py.in,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -3 -r1.48 -r1.49
--- haclient.py.in      29 May 2006 04:38:19 -0000      1.48
+++ haclient.py.in      5 Jun 2006 09:49:49 -0000       1.49
@@ -239,7 +239,65 @@
        parameters = []
        actions = []
 
-
+class NVList :
+       widget = None
+       store = None
+       value_cell = None
+       options = {}
+       
+       def on_cursor_changed(self, treeview, selection) :
+               (model, iter) = selection.get_selected()
+               name = model.get_value(iter, 0)
+               if self.options != None and name in self.options.keys() :
+                       self.value_cell.set_property("model", 
self.options[name])
+       
+       def __init__(self, widget, options=None, call_back=None) :
+               self.widget = widget
+               self.store = gtk.ListStore(str, str)
+               widget.set_model(self.store)
+               
+               cell = gtk.CellRendererText()
+               tvcolumn = gtk.TreeViewColumn("name",cell,text=0)
+               widget.append_column(tvcolumn)
+               
+               if pygtk_2_6_newer():
+                       cell = gtk.CellRendererCombo()
+                       model = gtk.ListStore(str)
+                       cell.set_property("model",model);
+                       cell.set_property("text-column", 0);
+                       self.value_cell = cell
+                       widget.connect("cursor-changed", 
self.on_cursor_changed, 
+                                               widget.get_selection())
+               else :
+                       cell = gtk.CellRendererText()
+               cell.set_property('editable', True)
+               cell.connect('edited', edited_cb, (self.store, 1, call_back))
+               tvcolumn = gtk.TreeViewColumn("value",cell,text=1)
+               self.widget.append_column(tvcolumn)
+               
+               if options != None :
+                       for name in options.keys() :
+                               option_model = gtk.ListStore(str)
+                               for option in options[name] :
+                                       option_model.append([option])
+                               self.options[name]=option_model
+               
+       def insert(self, name, value) :         
+               self.store.append([name, value])
+               
+       def clear(self) :
+               self.store.clear()
+               
+       def get_data(self) :    
+               nv = {}
+               iter = self.store.get_iter_first()
+               while iter != None :
+                       name = self.store.get_value(iter,0)
+                       value = self.store.get_value(iter,1)
+                       nv[name]=value
+                       iter = self.store.iter_next(iter)
+               return nv       
+               
 class ListWithAddDel :
        add_btn = None
        del_btn = None
@@ -1095,7 +1153,9 @@
        name = "compoundrscview"
        param_list = None
        params_save = None
+       attr_list = None
        
+                       
        def on_apply(self, widget):
                glade = self.glade
                View.on_apply(self, widget)
@@ -1103,6 +1163,10 @@
                new_params = self.param_list.get_data()
                manager.update_attrs("up_rsc_params\n"+rid,"del_rsc_param",
                                   self.params_save, new_params, 
["id","name","value"]);
+                                  
+               nv = self.attr_list.get_data()
+               for n in nv.keys() :
+                       manager.update_rsc_attr(rid, n, nv[n])
                
        def update(self) :
                glade = self.glade
@@ -1117,6 +1181,12 @@
                        for param in params:
                                self.param_list.insert(param)
                
+               self.attr_list.clear()
+               attrs = manager.get_rsc_attrs(rid)
+               for key in attrs.keys() :
+                       if key != "id" :
+                               self.attr_list.insert(key, attrs[key])
+               
                View.update(self)
                
        def __init__(self, grp) :
@@ -1131,7 +1201,18 @@
                                             Field("name", _("Name"), "", None, 
False),
                                             Field("value", _("Value"), "", 
None, True)],
                                            self.on_changed)
-                                     
+                                           
+               options_dict = {"is_managed":["true","false","default"],
+                       "restart_type":["ignore","restart"],
+                       "multiple_active":["stop_start","stop_only","block"],
+                       "ordered":["true","false"], 
+                       "collocated":["true","false"], 
+                       "notify":["true","false"],
+                       "globally_unique":["true","false"],
+                       "interleave":["true","false"]}
+               
+               self.attr_list = NVList(glade.get_widget("attributes"),
+                                       options_dict, self.on_changed)
                self.update()
 
 class MainWindow :
@@ -1770,7 +1851,10 @@
                return self.query("sub_rsc\n"+rsc_id)
 
        def get_rsc_info(self, rsc) :
-               rsc_attr_names = ["id", "class", "provider","type"]
+               rsc_attr_names = ["id", "description", "class", "provider", 
+                               "type", "is_managed","restart_type",
+                               "multiple_active","resource_stickiness"]
+                               
                op_attr_names = ["id", "name", "interval","timeout"]
                param_attr_names = ["id", "name", "value"]
                
@@ -1793,6 +1877,28 @@
                raw_params = self.query("rsc_params\n%s"%rsc)
                return self.split_attr_list(raw_params, param_attr_names)
        
+       def get_rsc_attrs(self, rsc) :
+               rsc_attr_names = ["id", "description", "class", "provider",
+                               "type", "is_managed","restart_type",
+                               "multiple_active","resource_stickiness"]
+               grp_attr_names = ["id", "description", 
"is_managed","restart_type",
+                               "multiple_active","resource_stickiness",
+                               "ordered", "collocated"]
+               clone_attr_names = ["id", "description", 
"is_managed","restart_type",
+                               "multiple_active","resource_stickiness",
+                               "notify", "globally_unique", "ordered",
+                               "interleave"]
+               attr_list = self.query("rsc_attrs\n%s"%rsc)
+               attrs = {}
+               rtype = self.query("rsc_type\n"+rsc)[0]
+               if rtype == "primitive" :
+                       attrs = dict(zip(rsc_attr_names, attr_list))
+               elif rtype == "group" :                         
+                       attrs = dict(zip(grp_attr_names, attr_list))
+               elif rtype in ["clone","master"] :
+                       attrs = dict(zip(clone_attr_names, attr_list))
+               return attrs
+               
        def get_rsc_meta(self, rsc_class, rsc_type, rsc_provider) :
                lines = self.query("rsc_metadata\n%s\n%s\n%s"% \
                                (rsc_class, rsc_type, rsc_provider),True)
@@ -1893,7 +1999,9 @@
                                self.do_cmd(cmd)
                                if self.failed_reason != "" :
                                        msgbox(self.failed_reason)
-                               
+       def update_rsc_attr(self, rid, name, value) :
+               self.do_cmd("up_rsc_attr\n%s\n%s\n%s"%(rid,name,value))
+                       
        # clone functions
        def get_clone(self, clone_id) :
                attrs = manager.query("get_clone\n"+clone_id)




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

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


End of Linux-ha-cvs Digest, Vol 31, Issue 12
********************************************

Reply via email to