From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30363 invoked by alias); 6 Feb 2009 09:08:14 -0000 Received: (qmail 30357 invoked by alias); 6 Feb 2009 09:08:14 -0000 X-SWARE-Spam-Status: No, hits=-1.1 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_43,J_CHICKENPOX_64,SPF_HELO_PASS X-Spam-Status: No, hits=-1.1 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_43,J_CHICKENPOX_64,SPF_HELO_PASS X-Spam-Check-By: sourceware.org X-Spam-Checker-Version: SpamAssassin 3.2.4 (2008-01-01) on bastion.fedora.phx.redhat.com Subject: cluster: master - config: add more fence info and -i to cman-mkconf To: cluster-cvs-relay@redhat.com X-Project: Cluster Project X-Git-Module: cluster.git X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 71fd5650faa08a94aed6f2824b231e1d05b4b883 X-Git-Newrev: 05b74a2cf746360758713cc9eec147576eae470d From: Christine Caulfield Message-Id: <20090206090751.7347FC024D@lists.fedorahosted.org> Date: Fri, 06 Feb 2009 09:08: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-q1/txt/msg00395.txt.bz2 Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=05b74a2cf746360758713cc9eec147576eae470d Commit: 05b74a2cf746360758713cc9eec147576eae470d Parent: 71fd5650faa08a94aed6f2824b231e1d05b4b883 Author: Christine Caulfield AuthorDate: Fri Feb 6 09:07:13 2009 +0000 Committer: Christine Caulfield CommitterDate: Fri Feb 6 09:07:13 2009 +0000 config: add more fence info and -i to cman-mkconf Signed-off-by: Christine Caulfield --- config/tools/mkconf/mkconf.c | 51 +++++++++++++++++++++++++++++++++++------ 1 files changed, 43 insertions(+), 8 deletions(-) diff --git a/config/tools/mkconf/mkconf.c b/config/tools/mkconf/mkconf.c index a4cc71b..f583242 100644 --- a/config/tools/mkconf/mkconf.c +++ b/config/tools/mkconf/mkconf.c @@ -5,6 +5,8 @@ #include #include #include +#include +#include #include #include @@ -33,6 +35,27 @@ static char *node_name(corosync_cfg_node_address_t *addr) return name; } +static char *ip_address(corosync_cfg_node_address_t *addr) +{ + static char name[256]; + struct sockaddr *sa = (struct sockaddr *)addr->address; + char *addrpart; + + if (sa->sa_family == AF_INET) { + struct sockaddr_in *sin = (struct sockaddr_in *)sa; + addrpart = (char *)&sin->sin_addr; + } + else { + struct sockaddr_in6 *sin = (struct sockaddr_in6 *)sa; + addrpart = (char *)&sin->sin6_addr; + } + + if (inet_ntop(sa->sa_family, addrpart, name, sizeof(name))) + return name; + else + return NULL; +} + static void quorum_notification_callback( quorum_handle_t handle, uint32_t quorate, @@ -52,7 +75,7 @@ static void quorum_notification_callback( } -static int refresh_node_list(void) +static int refresh_node_list(int use_ip_addrs) { int error; int i; @@ -84,10 +107,12 @@ static int refresh_node_list(void) for (i=0; i < node_list_size; i++) { - error = corosync_cfg_get_node_addrs(cfg_handle, node_list[i].nodeid, max_addrs, &num_addrs, addrs); if (error == CS_OK) { - name = node_name(&addrs[0]); + if (use_ip_addrs) + name = ip_address(&addrs[0]); + else + name = node_name(&addrs[0]); } if (name) { sprintf(node_list[i].name, "%s", name); @@ -136,10 +161,11 @@ int main(int argc, char *argv[]) char *cluster_name = NULL; char *fence_type = "default"; char *fence_param = "ipaddr"; + char *fence_agent = "fence_manual"; /* Parse options... */ do { - optchar = getopt(argc, argv, "?hNn:if:F:v:"); + optchar = getopt(argc, argv, "?hNn:if:F:v:a:"); switch (optchar) { case 'N': seq_nodeids=1; @@ -153,6 +179,9 @@ int main(int argc, char *argv[]) case 'f': fence_type = strdup(optarg); break; + case 'a': + fence_agent = strdup(optarg); + break; case 'F': fence_param = strdup(optarg); break; @@ -171,7 +200,7 @@ int main(int argc, char *argv[]) /* Get the list of nodes and names */ - if (refresh_node_list()){ + if (refresh_node_list(use_ip_addrs)){ fprintf(stderr, "Unable to get node information from corosync\n"); return 1; } @@ -185,12 +214,10 @@ int main(int argc, char *argv[]) } } - /* TODO more ccs keys as a filled in by NOCONFIG ... */ - /* Print config file header */ printf("\n"); printf("\n", cluster_name); - printf(" \n"); + printf(" \n\n"); for (i=0; i\n", node_list[i].name, seq_nodeids?++nodeid:node_list[i].nodeid); @@ -204,6 +231,14 @@ int main(int argc, char *argv[]) } printf(" \n"); + /* Make up something for fence devices */ + printf("\n"); + + printf(" agent=\"%s\"/>\n", fence_type, fence_agent); + + printf("\n"); + + printf("\n"); ccs_disconnect(ccs_handle);