From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11861 invoked by alias); 9 Apr 2009 20:42:07 -0000 Received: (qmail 11855 invoked by alias); 9 Apr 2009 20:42:06 -0000 X-SWARE-Spam-Status: No, hits=-2.0 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS X-Spam-Status: No, hits=-2.0 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: cluster: RHEL5 - fence: Make fence_xvmd detect Xen or KVM To: cluster-cvs-relay@redhat.com X-Project: Cluster Project X-Git-Module: cluster.git X-Git-Refname: refs/heads/RHEL5 X-Git-Reftype: branch X-Git-Oldrev: a72a13f8acd9747fc63299ffd265e3176fb95b52 X-Git-Newrev: f4c13e8e1bb1c58d03f2cda7380a5173dea025f8 From: Lon Hohberger Message-Id: <20090409204128.AB3A112020E@lists.fedorahosted.org> Date: Thu, 09 Apr 2009 20:42:00 -0000 X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254 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-q2/txt/msg00061.txt.bz2 Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=f4c13e8e1bb1c58d03f2cda7380a5173dea025f8 Commit: f4c13e8e1bb1c58d03f2cda7380a5173dea025f8 Parent: a72a13f8acd9747fc63299ffd265e3176fb95b52 Author: Lon Hohberger AuthorDate: Thu Apr 9 16:17:29 2009 -0400 Committer: Lon Hohberger CommitterDate: Thu Apr 9 16:17:29 2009 -0400 fence: Make fence_xvmd detect Xen or KVM Signed-off-by: Lon Hohberger --- fence/agents/xvm/fence_xvmd.c | 36 ++++++++++++++++++++++++++++++++++-- fence/agents/xvm/options.c | 2 +- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/fence/agents/xvm/fence_xvmd.c b/fence/agents/xvm/fence_xvmd.c index 1ca9e53..3cba111 100644 --- a/fence/agents/xvm/fence_xvmd.c +++ b/fence/agents/xvm/fence_xvmd.c @@ -60,6 +60,38 @@ static int reload_key; int cleanup_xml(char *xmldesc, char **ret, size_t *retsz); + +static char *hypervisor_uris[] = { + "xen:///", + "qemu:///system", + NULL +}; + + +virConnectPtr +find_hypervisor(fence_xvm_args_t *args) +{ + virConnectPtr vp; + int x; + + if (args->uri) + return virConnectOpen(args->uri); + + for (x = 0; hypervisor_uris[x]; x++) { + vp = virConnectOpen(hypervisor_uris[x]); + if (vp) + break; + } + + if (!vp) + return NULL; + + args->uri = strdup(hypervisor_uris[x]); + + return vp; +} + + int connect_tcp(fence_req_t *req, fence_auth_type_t auth, void *key, size_t key_len) @@ -598,7 +630,7 @@ xvmd_loop(cman_handle_t ch, void *h, int fd, fence_xvm_args_t *args, virt_list_t *vl = NULL; virt_state_t *dom = NULL; - vp = virConnectOpen(args->uri); + vp = find_hypervisor(args); if (!vp) perror("virConnectOpen"); @@ -655,7 +687,7 @@ xvmd_loop(cman_handle_t ch, void *h, int fd, fence_xvm_args_t *args, continue; /* Request and/or timeout: open connection */ - vp = virConnectOpen(args->uri); + vp = find_hypervisor(args); if (!vp) { printf("NOTICE: virConnectOpen(): %s; cannot fence!\n", strerror(errno)); diff --git a/fence/agents/xvm/options.c b/fence/agents/xvm/options.c index 2c1b5be..0ba422d 100644 --- a/fence/agents/xvm/options.c +++ b/fence/agents/xvm/options.c @@ -422,7 +422,7 @@ args_init(fence_xvm_args_t *args) args->addr = NULL; args->domain = NULL; args->key_file = strdup(DEFAULT_KEY_FILE); - args->uri = strdup(DEFAULT_HYPERVISOR_URI); + args->uri = NULL; args->op = FENCE_REBOOT; args->hash = DEFAULT_HASH; args->auth = DEFAULT_AUTH;