From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19427 invoked by alias); 24 Aug 2009 13:27:43 -0000 Received: (qmail 19420 invoked by alias); 24 Aug 2009 13:27:43 -0000 X-SWARE-Spam-Status: No, hits=-2.1 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS X-Spam-Status: No, hits=-2.1 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS X-Spam-Check-By: sourceware.org X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bastion2.fedora.phx.redhat.com Subject: rgmanager: master - rgmanager: Fix referencing bug To: cluster-cvs-relay@redhat.com X-Project: Cluster Project X-Git-Module: rgmanager.git X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 52ae93b6f6f90893b550eb7eba3cb5e84bdad499 X-Git-Newrev: 66ce9f84a4634282968cd8a4e2bb4dbe19a5844a From: Lon Hohberger Message-Id: <20090824132715.C3636120107@lists.fedorahosted.org> Date: Mon, 24 Aug 2009 13:27:00 -0000 X-Scanned-By: MIMEDefang 2.67 on 10.5.11.18 Mailing-List: contact cluster-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: cluster-cvs-owner@sourceware.org X-SW-Source: 2009-q3/txt/msg00238.txt.bz2 Gitweb: http://git.fedorahosted.org/git/rgmanager.git?p=rgmanager.git;a=commitdiff;h=66ce9f84a4634282968cd8a4e2bb4dbe19a5844a Commit: 66ce9f84a4634282968cd8a4e2bb4dbe19a5844a Parent: 52ae93b6f6f90893b550eb7eba3cb5e84bdad499 Author: Lon Hohberger AuthorDate: Fri Aug 21 10:28:25 2009 -0400 Committer: Lon Hohberger CommitterDate: Mon Aug 24 09:27:01 2009 -0400 rgmanager: Fix referencing bug If you placed a resource in the block and it did not have a primary="1" attribute in the resource agent metadata, rgmanager would ignore it in the resource tree when you tried to address it using the ref="" keyword. Signed-off-by: Lon Hohberger --- rgmanager/src/daemons/reslist.c | 13 ++++++++----- 1 files changed, 8 insertions(+), 5 deletions(-) diff --git a/rgmanager/src/daemons/reslist.c b/rgmanager/src/daemons/reslist.c index 4656e43..57504da 100644 --- a/rgmanager/src/daemons/reslist.c +++ b/rgmanager/src/daemons/reslist.c @@ -259,7 +259,8 @@ resource_t * find_resource_by_ref(resource_t **reslist, const char *type, const char *ref) { resource_t *curr; - int x; + resource_t *first_possible = NULL; + int x, flags = RA_UNIQUE|RA_REQUIRED; list_do(reslist, curr) { if (strcmp(curr->r_rule->rr_type, type)) @@ -271,16 +272,18 @@ find_resource_by_ref(resource_t **reslist, const char *type, const char *ref) */ for (x = 0; curr->r_attrs && curr->r_attrs[x].ra_name; x++) { - if (!(curr->r_attrs[x].ra_flags & RA_PRIMARY)) - continue; if (strcmp(ref, curr->r_attrs[x].ra_value)) continue; - + if (((curr->r_attrs[x].ra_flags & flags) == flags) && + !first_possible) + first_possible = curr; + if (!(curr->r_attrs[x].ra_flags & RA_PRIMARY)) + continue; return curr; } } while (!list_done(reslist, curr)); - return NULL; + return first_possible; }