Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 160273 Details for
Bug 248727
Don't bounce Virtual Machine when adding as a managed VM service
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
Patch
rgmanager-248727.patch (text/plain), 21.79 KB, created by
Lon Hohberger
on 2007-07-30 21:07:49 UTC
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Lon Hohberger
Created:
2007-07-30 21:07:49 UTC
Size:
21.79 KB
patch
obsolete
>Index: include/res-ocf.h >=================================================================== >RCS file: /cvs/cluster/cluster/rgmanager/include/res-ocf.h,v >retrieving revision 1.1.16.1 >diff -u -r1.1.16.1 res-ocf.h >--- include/res-ocf.h 20 Mar 2007 17:09:11 -0000 1.1.16.1 >+++ include/res-ocf.h 30 Jul 2007 21:02:38 -0000 >@@ -62,5 +62,6 @@ > #define RS_META_DATA (11) > #define RS_VALIDATE (12) > #define RS_MIGRATE (13) >+#define RS_RECONFIG (14) > > #endif >Index: include/reslist.h >=================================================================== >RCS file: /cvs/cluster/cluster/rgmanager/include/reslist.h,v >retrieving revision 1.15.2.4 >diff -u -r1.15.2.4 reslist.h >--- include/reslist.h 26 Jun 2007 21:55:45 -0000 1.15.2.4 >+++ include/reslist.h 30 Jul 2007 21:02:38 -0000 >@@ -25,10 +25,11 @@ > #include <libxml/xpath.h> > > >-#define RA_PRIMARY (1<<0) >-#define RA_UNIQUE (1<<1) >-#define RA_REQUIRED (1<<2) >-#define RA_INHERIT (1<<3) >+#define RA_PRIMARY (1<<0) /** Primary key */ >+#define RA_UNIQUE (1<<1) /** Unique for given type */ >+#define RA_REQUIRED (1<<2) /** Required (or an error if not present */ >+#define RA_INHERIT (1<<3) /** Inherit a parent resource's attr */ >+#define RA_RECONFIG (1<<4) /** Allow inline reconfiguration */ > > #define RF_INLINE (1<<0) > #define RF_DEFINED (1<<1) >@@ -37,6 +38,15 @@ > #define RF_COMMON (1<<4) /** " */ > #define RF_INDEPENDENT (1<<5) /** Define this for a resource if it is > otherwise an independent subtree */ >+#define RF_RECONFIG (1<<6) >+ >+#define RF_INIT (1<<7) /** Resource rule: Initialize this resource >+ class on startup */ >+#define RF_DESTROY (1<<8) /** Resource rule flag: Destroy this >+ resource class if you delete it from >+ the configuration */ >+ >+ > > #define RES_STOPPED (0) > #define RES_STARTED (1) >Index: src/clulib/rg_strings.c >=================================================================== >RCS file: /cvs/cluster/cluster/rgmanager/src/clulib/rg_strings.c,v >retrieving revision 1.5.2.4 >diff -u -r1.5.2.4 rg_strings.c >--- src/clulib/rg_strings.c 6 Jul 2007 18:50:22 -0000 1.5.2.4 >+++ src/clulib/rg_strings.c 30 Jul 2007 21:02:39 -0000 >@@ -106,6 +106,7 @@ > {RS_META_DATA, "meta-data"}, /* printenv */ > {RS_VALIDATE, "validate-all"}, > {RS_MIGRATE, "migrate"}, >+ {RS_RECONFIG, "reconfig"}, > {0 , NULL} > }; > >Index: src/daemons/groups.c >=================================================================== >RCS file: /cvs/cluster/cluster/rgmanager/src/daemons/groups.c,v >retrieving revision 1.25.2.10 >diff -u -r1.25.2.10 groups.c >--- src/daemons/groups.c 24 Jul 2007 13:53:08 -0000 1.25.2.10 >+++ src/daemons/groups.c 30 Jul 2007 21:02:39 -0000 >@@ -1222,6 +1222,7 @@ > do_condstops(void) > { > resource_node_t *curr; >+ struct dlm_lksb lockp; > rg_state_t svcblk; > int need_kill; > char rg[64]; >@@ -1249,6 +1250,24 @@ > clulog(LOG_DEBUG, "Removing %s\n", rg); > } > >+ if (!curr->rn_child && ((curr->rn_resource->r_rule->rr_flags & >+ RF_DESTROY) == 0) && group_migratory(rg, 0) && >+ need_kill == 1) { >+ /* Do something smart here: flip state? */ >+ clulog(LOG_NOTICE, >+ "%s removed from the config, but I am not stopping it.\n", >+ rg); >+ if (rg_lock(rg, &lockp) != 0) >+ continue; >+ if (get_rg_state(rg, &svcblk) < 0) >+ goto cont; >+ svcblk.rs_state = RG_STATE_DISABLED; >+ set_rg_state(rg, &svcblk); >+cont: >+ rg_unlock(&lockp); >+ continue; >+ } >+ > rt_enqueue_request(rg, need_kill ? RG_DISABLE : RG_CONDSTOP, > NULL, 0, 0, 0, 0); > >@@ -1282,7 +1301,8 @@ > > /* New RG. We'll need to initialize it. */ > need_init = 0; >- if (curr->rn_resource->r_flags & RF_NEEDSTART) >+ if (!(curr->rn_resource->r_flags & RF_RECONFIG) && >+ (curr->rn_resource->r_flags & RF_NEEDSTART)) > need_init = 1; > > if (!need_init) { >@@ -1305,7 +1325,17 @@ > > if (need_init) { > ++new_groups; >- clulog(LOG_DEBUG, "Initializing %s\n", rg); >+ clulog(LOG_NOTICE, "Initializing %s\n", rg); >+ } >+ >+ if (!curr->rn_child && ((curr->rn_resource->r_rule->rr_flags & >+ RF_INIT) == 0) && group_migratory(rg, 0) && >+ need_init == 1) { >+ /* Do something smart here? */ >+ clulog(LOG_NOTICE, >+ "%s was added to the config, but I am not initializing it.\n", >+ rg); >+ continue; > } > > rt_enqueue_request(rg, need_init ? RG_INIT : RG_CONDSTART, >Index: src/daemons/reslist.c >=================================================================== >RCS file: /cvs/cluster/cluster/rgmanager/src/daemons/reslist.c,v >retrieving revision 1.14.2.3 >diff -u -r1.14.2.3 reslist.c >--- src/daemons/reslist.c 26 Apr 2007 20:40:28 -0000 1.14.2.3 >+++ src/daemons/reslist.c 30 Jul 2007 21:02:39 -0000 >@@ -176,18 +176,27 @@ > /** > Compare two resources. > >+ @param left Left resource >+ @param right Right resource >+ @return -1 on different resource, 0 if the same, 1 if different, >+ 2 if different, but only safe resources are different >+ > */ > int > rescmp(resource_t *left, resource_t *right) > { >- int x, y = 0, found; >+ int x, y = 0, found = 0, ret = 0; >+ > > /* Completely different resource class... */ > if (strcmp(left->r_rule->rr_type, right->r_rule->rr_type)) { >- //printf("Er, wildly different resource type! "); > return -1; > } > >+ printf("Comparing %s:%s to %s:%s\n", >+ left->r_rule->rr_type, left->r_attrs[0].ra_value, >+ right->r_rule->rr_type, right->r_attrs[0].ra_value); >+ > for (x = 0; left->r_attrs && left->r_attrs[x].ra_name; x++) { > > found = 0; >@@ -203,35 +212,46 @@ > left->r_attrs[x].ra_flags) { > /* Flags are different. Change in > resource agents? */ >- //printf("flags differ "); >+ printf("* flags differ %08x vs %08x\n", >+ left->r_attrs[x].ra_flags, >+ right->r_attrs[y].ra_flags); > return 1; > } > > if (strcmp(right->r_attrs[y].ra_value, > left->r_attrs[x].ra_value)) { > /* Different attribute value. */ >- //printf("different value for attr '%s' ", >- //right->r_attrs[y].ra_name); >- return 1; >+ printf("* different value for attr '%s':" >+ " '%s' vs '%s'", >+ right->r_attrs[y].ra_name, >+ left->r_attrs[x].ra_value, >+ right->r_attrs[y].ra_value); >+ if (left->r_attrs[x].ra_flags & RA_RECONFIG) { >+ printf(" [SAFE]\n"); >+ ret = 2; >+ } else { >+ printf("\n"); >+ return 1; >+ } > } > } > > /* Attribute missing -> different attribute value. */ > if (!found) { >- //printf("Attribute %s deleted ", >- //left->r_attrs[x].ra_name); >+ printf("* Attribute '%s' deleted\n", >+ left->r_attrs[x].ra_name); > return 1; > } > } > > /* Different attribute count */ > if (x != y) { >- //printf("Attribute count differ (attributes added!) "); >+ printf("* Attribute count differ (attributes added!) "); > return 1; > } > > /* All the same */ >- return 0; >+ return ret; > } > > >@@ -288,7 +308,7 @@ > resource_t *curr; > char ref_buf[128]; > char *type; >- char *name; >+ char *name = ref; > int x; > > snprintf(ref_buf, sizeof(ref_buf), "%s", ref); >@@ -300,6 +320,7 @@ > } else { > /* Default type */ > type = "service"; >+ name = ref; > } > > list_do(reslist, curr) { >@@ -543,6 +564,8 @@ > printf(" [NEEDSTOP]"); > if (res->r_flags & RF_COMMON) > printf(" [COMMON]"); >+ if (res->r_flags & RF_RECONFIG) >+ printf(" [RECONFIG]"); > printf("\n"); > > if (res->r_rule->rr_maxrefs) >@@ -578,6 +601,8 @@ > printf(" unique"); > if (res->r_attrs[x].ra_flags & RA_REQUIRED) > printf(" required"); >+ if (res->r_attrs[x].ra_flags & RA_RECONFIG) >+ printf(" reconfig"); > if (res->r_attrs[x].ra_flags & RA_INHERIT) > printf(" inherit(\"%s\")", res->r_attrs[x].ra_value); > printf(" ]\n"); >Index: src/daemons/resrules.c >=================================================================== >RCS file: /cvs/cluster/cluster/rgmanager/src/daemons/resrules.c,v >retrieving revision 1.16.2.6 >diff -u -r1.16.2.6 resrules.c >--- src/daemons/resrules.c 26 Jun 2007 21:55:46 -0000 1.16.2.6 >+++ src/daemons/resrules.c 30 Jul 2007 21:02:39 -0000 >@@ -163,6 +163,36 @@ > > > /** >+ Get and store a bit field. >+ >+ @param doc Pre-parsed XML document pointer. >+ @param ctx Pre-allocated XML XPath context pointer. >+ @param base XPath prefix to search >+ @param rr Resource rule to store new information in. >+ */ >+void >+_get_rule_flag(xmlDocPtr doc, xmlXPathContextPtr ctx, char *base, >+ resource_rule_t *rr, char *flag, int bit) >+{ >+ char xpath[256]; >+ char *ret = NULL; >+ >+ snprintf(xpath, sizeof(xpath), >+ "%s/attributes/@%s", >+ base, flag); >+ ret = xpath_get_one(doc, ctx, xpath); >+ if (ret) { >+ if (atoi(ret)) { >+ rr->rr_flags |= bit; >+ } else { >+ rr->rr_flags &= ~bit; >+ } >+ free(ret); >+ } >+} >+ >+ >+/** > Get and store the version > > @param doc Pre-parsed XML document pointer. >@@ -516,6 +546,17 @@ > printf("Max instances: %d\n", rr->rr_maxrefs); > if (rr->rr_agent) > printf("Agent: %s\n", basename(rr->rr_agent)); >+ >+ printf("Flags: "); >+ if (rr->rr_flags) { >+ if (rr->rr_flags & RF_INIT) >+ printf("init_on_add "); >+ if (rr->rr_flags & RF_DESTROY) >+ printf("destroy_on_delete "); >+ } else { >+ printf("(none)"); >+ } >+ printf("\n"); > > printf("Attributes:\n"); > if (!rr->rr_attrs) { >@@ -531,18 +572,25 @@ > continue; > } > >- printf(" ["); >- if (rr->rr_attrs[x].ra_flags & RA_PRIMARY) >- printf(" primary"); >- if (rr->rr_attrs[x].ra_flags & RA_UNIQUE) >- printf(" unique"); >- if (rr->rr_attrs[x].ra_flags & RA_REQUIRED) >- printf(" required"); >- if (rr->rr_attrs[x].ra_flags & RA_INHERIT) >- printf(" inherit"); >- else if (rr->rr_attrs[x].ra_value) >- printf(" default=\"%s\"", rr->rr_attrs[x].ra_value); >- printf(" ]\n"); >+ if (rr->rr_attrs[x].ra_flags) { >+ printf(" ["); >+ if (rr->rr_attrs[x].ra_flags & RA_PRIMARY) >+ printf(" primary"); >+ if (rr->rr_attrs[x].ra_flags & RA_UNIQUE) >+ printf(" unique"); >+ if (rr->rr_attrs[x].ra_flags & RA_REQUIRED) >+ printf(" required"); >+ if (rr->rr_attrs[x].ra_flags & RA_INHERIT) >+ printf(" inherit"); >+ if (rr->rr_attrs[x].ra_flags & RA_RECONFIG) >+ printf(" reconfig"); >+ printf(" ]"); >+ } >+ >+ if (rr->rr_attrs[x].ra_value) >+ printf(" default=\"%s\"\n", rr->rr_attrs[x].ra_value); >+ else >+ printf("\n"); > } > > actions: >@@ -678,6 +726,18 @@ > } > > /* >+ See if this can be reconfigured on the fly without a >+ stop/start >+ */ >+ snprintf(xpath, sizeof(xpath), "%s/parameter[%d]/@reconfig", >+ base, x); >+ if ((ret = xpath_get_one(doc,ctx,xpath))) { >+ if ((atoi(ret) != 0) || (ret[0] == 'y')) >+ flags |= RA_RECONFIG; >+ free(ret); >+ } >+ >+ /* > See if this is supposed to be inherited > */ > snprintf(xpath, sizeof(xpath), "%s/parameter[%d]/@inherit", >@@ -942,6 +1002,7 @@ > break; > memset(rr,0,sizeof(*rr)); > >+ rr->rr_flags = RF_INIT | RF_DESTROY; > rr->rr_type = type; > snprintf(base, sizeof(base), "/resource-agent[%d]", ruleid); > >@@ -954,6 +1015,8 @@ > "/resource-agent[%d]/special[@tag=\"rgmanager\"]", > ruleid); > _get_maxparents(doc, ctx, base, rr); >+ _get_rule_flag(doc, ctx, base, rr, "init_on_add", RF_INIT); >+ _get_rule_flag(doc, ctx, base, rr, "destroy_on_delete", RF_DESTROY); > rr->rr_agent = strdup(filename); > > /* >Index: src/daemons/restree.c >=================================================================== >RCS file: /cvs/cluster/cluster/rgmanager/src/daemons/restree.c,v >retrieving revision 1.23.2.8 >diff -u -r1.23.2.8 restree.c >--- src/daemons/restree.c 26 Jun 2007 21:55:46 -0000 1.23.2.8 >+++ src/daemons/restree.c 30 Jul 2007 21:02:39 -0000 >@@ -1186,9 +1186,15 @@ > > /* Start starts before children */ > if (me && (op == RS_START)) { >- node->rn_flags &= ~RF_NEEDSTART; > >- rv = res_exec(node, op, NULL, 0); >+ if (node->rn_flags & RF_RECONFIG && >+ realop == RS_CONDSTART) { >+ rv = res_exec(node, RS_RECONFIG, NULL, 0); >+ op = realop; /* reset to CONDSTART */ >+ } else { >+ rv = res_exec(node, op, NULL, 0); >+ } >+ node->rn_flags &= ~(RF_NEEDSTART | RF_RECONFIG); > if (rv != 0) { > node->rn_state = RES_FAILED; > return SFL_FAILURE; >@@ -1408,6 +1414,7 @@ > resource_delta(resource_t **leftres, resource_t **rightres) > { > resource_t *lc, *rc; >+ int ret; > > list_do(leftres, lc) { > rc = find_resource_by_ref(rightres, lc->r_rule->rr_type, >@@ -1420,10 +1427,25 @@ > } > > /* Ok, see if the resource is the same */ >- if (rescmp(lc, rc) == 0) { >+ ret = rescmp(lc, rc); >+ if (ret == 0) { > rc->r_flags |= RF_COMMON; > continue; > } >+ >+ if (ret == 2) { >+ /* return of 2 from rescmp means >+ the two resources differ only >+ by reconfigurable bits */ >+ /* Do nothing on condstop phase; >+ do a "reconfig" instead of >+ "start" on conststart phase */ >+ rc->r_flags |= RF_COMMON; >+ rc->r_flags |= RF_NEEDSTART; >+ rc->r_flags |= RF_RECONFIG; >+ continue; >+ } >+ > rc->r_flags |= RF_COMMON; > > /* Resource has changed. Flag it. */ >@@ -1485,12 +1507,17 @@ > or is new), then we don't really care about its > children. > */ >+ > if (rn->rn_resource->r_flags & RF_NEEDSTART) { > rn->rn_flags |= RF_NEEDSTART; >- continue; >+ if ((rn->rn_resource->r_flags & RF_RECONFIG) == 0) >+ continue; > } > >- if (rc == 0) { >+ if (rc == 0 || rc == 2) { >+ if (rc == 2) >+ rn->rn_flags |= RF_NEEDSTART | RF_RECONFIG; >+ > /* Ok, same resource. Recurse. */ > ln->rn_flags |= RF_COMMON; > rn->rn_flags |= RF_COMMON; >Index: src/daemons/test.c >=================================================================== >RCS file: /cvs/cluster/cluster/rgmanager/src/daemons/test.c,v >retrieving revision 1.6.2.4 >diff -u -r1.6.2.4 test.c >--- src/daemons/test.c 27 Jun 2007 14:03:20 -0000 1.6.2.4 >+++ src/daemons/test.c 30 Jul 2007 21:02:40 -0000 >@@ -32,6 +32,50 @@ > #error "Can not be built with CCS support." > #endif > >+/** >+ Tells us if a resource group can be migrated. >+ */ >+int >+group_migratory(resource_t **resources, resource_node_t **tree, char *groupname) >+{ >+ resource_node_t *rn; >+ resource_t *res; >+ int migrate = 0, x, ret = 0; >+ >+ res = find_root_by_ref(resources, groupname); >+ if (!res) { >+ /* Nonexistent or non-TL RG cannot be migrated */ >+ return 0; >+ } >+ >+ for (x = 0; res->r_rule->rr_actions[x].ra_name; x++) { >+ if (!strcmp(res->r_rule->rr_actions[x].ra_name, >+ "migrate")) { >+ migrate = 1; >+ break; >+ } >+ } >+ >+ if (!migrate) >+ goto out_unlock; >+ >+ list_do(tree, rn) { >+ if (rn->rn_resource == res && rn->rn_child) { >+ /* TL service w/ children cannot be migrated */ >+ goto out_unlock; >+ } >+ } while (!list_done(tree, rn)); >+ >+ >+ /* Ok, we have a migrate option to the resource group, >+ the resource group has no children, and the resource >+ group exists. We're all good */ >+ ret = 1; >+ >+out_unlock: >+ return ret; >+} >+ > #define shift() {++argv; --argc;} > > #define USAGE_TEST \ >@@ -217,7 +261,9 @@ > resource_rule_t *rulelist = NULL, *currule, *rulelist2 = NULL; > resource_t *reslist = NULL, *curres, *reslist2 = NULL; > resource_node_t *tree = NULL, *tree2 = NULL; >- int ccsfd, ret = 0; >+ resource_node_t *tn; >+ int ccsfd, ret = 0, need_init, need_kill; >+ char rg[64]; > > if (argc < 2) { > printf("Operation requires two arguments\n"); >@@ -276,6 +322,57 @@ > print_resource_tree(&tree); > printf("=== New Resource Tree ===\n"); > print_resource_tree(&tree2); >+ printf("=== Operations (down-phase) ===\n"); >+ list_do(&tree, tn) { >+ res_build_name(rg, sizeof(rg), tn->rn_resource); >+ /* Set state to uninitialized if we're killing a RG */ >+ need_init = 0; >+ >+ /* Set state to uninitialized if we're killing a RG */ >+ need_kill = 0; >+ if (tn->rn_resource->r_flags & RF_NEEDSTOP) { >+ need_kill = 1; >+ printf("[kill] "); >+ } >+ >+ if (!tn->rn_child && ((tn->rn_resource->r_rule->rr_flags & >+ RF_DESTROY) == 0) && group_migratory(&reslist, &tree, rg) && >+ need_kill == 1) { >+ /* Do something smart here: flip state? */ >+ printf("[no-op] %s was removed from the config, but I am not stopping it.\n", >+ rg); >+ continue; >+ } >+ >+ res_condstop(&tn, tn->rn_resource, NULL); >+ } while (!list_done(&tree, tn)); >+ printf("=== Operations (up-phase) ===\n"); >+ list_do(&tree2, tn) { >+ res_build_name(rg, sizeof(rg), tn->rn_resource); >+ /* New RG. We'll need to initialize it. */ >+ need_init = 0; >+ if (!(tn->rn_resource->r_flags & RF_RECONFIG) && >+ (tn->rn_resource->r_flags & RF_NEEDSTART)) >+ need_init = 1; >+ >+ if (need_init) { >+ printf("[init] "); >+ } >+ >+ if (!tn->rn_child && ((tn->rn_resource->r_rule->rr_flags & >+ RF_INIT) == 0) && group_migratory(&reslist2, &tree2, rg) && >+ need_init == 1) { >+ /* Do something smart here? */ >+ printf("[noop] %s was added, but I am not initializing it\n", rg); >+ continue; >+ } >+ >+ if (need_init) { >+ res_stop(&tn, tn->rn_resource, NULL); >+ } else { >+ res_condstart(&tn, tn->rn_resource, NULL); >+ } >+ } while (!list_done(&tree2, tn)); > > out: > destroy_resource_tree(&tree2); >@@ -331,6 +428,7 @@ > goto out; > } else if (!strcmp(argv[1], "delta")) { > shift(); >+ _no_op_mode(1); > ret = tree_delta_test(argc, argv); > goto out; > } else { >Index: src/resources/ra-api-1-modified.dtd >=================================================================== >RCS file: /cvs/cluster/cluster/rgmanager/src/resources/ra-api-1-modified.dtd,v >retrieving revision 1.4 >diff -u -r1.4 ra-api-1-modified.dtd >--- src/resources/ra-api-1-modified.dtd 18 Aug 2006 15:26:22 -0000 1.4 >+++ src/resources/ra-api-1-modified.dtd 30 Jul 2007 21:02:40 -0000 >@@ -24,6 +24,7 @@ > name CDATA #REQUIRED > primary (1|0) "0" > required (1|0) "0" >+ reconfig (1|0) "0" > inherit CDATA "" > unique (1|0) "0" > reconfig (1|0) "0"> >@@ -43,7 +44,7 @@ > > <!ELEMENT action EMPTY> > <!ATTLIST action >- name (start|stop|recover|status|reconfig|monitor|reload|meta-data|verify-all|migrate) #REQUIRED >+ name (start|stop|recover|status|reconfig|monitor|reload|meta-data|verify-all|migrate|reconfig) #REQUIRED > timeout CDATA #REQUIRED > interval CDATA #IMPLIED > start-delay CDATA #IMPLIED >@@ -56,7 +57,6 @@ > > <!ELEMENT attributes EMPTY> > <!ATTLIST attributes >- root (1|0) "0" > maxinstances CDATA "0"> > > <!ELEMENT child EMPTY> >Index: src/resources/service.sh >=================================================================== >RCS file: /cvs/cluster/cluster/rgmanager/src/resources/service.sh,v >retrieving revision 1.7.2.4 >diff -u -r1.7.2.4 service.sh >--- src/resources/service.sh 2 May 2007 18:28:52 -0000 1.7.2.4 >+++ src/resources/service.sh 30 Jul 2007 21:02:40 -0000 >@@ -56,7 +58,7 @@ > <content type="string"/> > </parameter> > >- <parameter name="domain"> >+ <parameter name="domain" reconfig="1"> > <longdesc lang="en"> > Fail over domains define lists of cluster members > to try in the event that a resource group fails. >@@ -67,7 +69,7 @@ > <content type="string"/> > </parameter> > >- <parameter name="autostart"> >+ <parameter name="autostart" reconfig="1"> > <longdesc lang="en"> > If set to yes, this resource group will automatically be started > after the cluster forms a quorum. If set to no, this resource >@@ -80,7 +82,7 @@ > <content type="boolean"/> > </parameter> > >- <parameter name="hardrecovery"> >+ <parameter name="hardrecovery" reconfig="1"> > <longdesc lang="en"> > If set to yes, the last owner will reboot if this resource > group fails to stop cleanly, thus allowing the resource >@@ -128,7 +130,7 @@ > <content type="boolean"/> > </parameter> > >- <parameter name="recovery"> >+ <parameter name="recovery" reconfig="1"> > <longdesc lang="en"> > This currently has three possible options: "restart" tries > to restart failed parts of this resource group locally before >@@ -164,10 +166,11 @@ > <action name="status" timeout="5" interval="1h"/> > <action name="monitor" timeout="5" interval="1h"/> > >+ <action name="reconfig" timeout="5"/> > <action name="recover" timeout="5"/> > <action name="reload" timeout="5"/> > <action name="meta-data" timeout="5"/> >- <action name="verify-all" timeout="5"/> >+ <action name="validate-all" timeout="5"/> > </actions> > > <special tag="rgmanager"> >@@ -224,7 +240,10 @@ > meta_data > exit 0 > ;; >- verify-all) >+ validate-all) >+ exit 0 >+ ;; >+ reconfig) > exit 0 > ;; > *) >Index: src/resources/vm.sh >=================================================================== >RCS file: /cvs/cluster/cluster/rgmanager/src/resources/vm.sh,v >retrieving revision 1.1.2.5 >diff -u -r1.1.2.5 vm.sh >--- src/resources/vm.sh 11 Jul 2007 19:35:06 -0000 1.1.2.5 >+++ src/resources/vm.sh 30 Jul 2007 21:02:40 -0000 >@@ -51,7 +51,7 @@ > <content type="string"/> > </parameter> > >- <parameter name="domain"> >+ <parameter name="domain" reconfig="1"> > <longdesc lang="en"> > Fail over domains define lists of cluster members > to try in the event that the host of the virtual machine >@@ -63,7 +63,7 @@ > <content type="string"/> > </parameter> > >- <parameter name="autostart"> >+ <parameter name="autostart" reconfig="1"> > <longdesc lang="en"> > If set to yes, this resource group will automatically be started > after the cluster forms a quorum. If set to no, this virtual >@@ -193,12 +193,16 @@ > <action name="migrate" timeout="10m"/> > > <action name="meta-data" timeout="5"/> >- <action name="verify-all" timeout="5"/> >+ <action name="validate-all" timeout="5"/> > > </actions> > > <special tag="rgmanager"> >- <attributes maxinstances="1"/> >+ <!-- Destroy_on_delete / init_on_add are currently only >+ supported for migratory resources (no children >+ and the 'migrate' action; see above. Do not try this >+ with normal services --> >+ <attributes maxinstances="1" destroy_on_delete="0" init_on_add="0"/> > </special> > </resource-agent> > EOT >@@ -417,12 +421,12 @@ > meta_data > exit 0 > ;; >- verify-all) >+ validate-all) > verify_all > exit $? > ;; > *) >- echo "usage: $0 {start|stop|restart|status|reload|reconfig|meta-data|verify-all}" >+ echo "usage: $0 {start|stop|restart|status|reload|reconfig|meta-data|validate-all}" > exit 1 > ;; > esac
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 248727
:
160273
|
160275