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
********************************************