Gitweb:
http://git.fedorahosted.org/git/?p=fence-agents.git;a=commitdiff;h=8bb87b...
Commit: 8bb87b1704ddb923228d3306380250a0908a8877
Parent: dd0e31de6cd4dd6926effaee8824eccc79bbf2a1
Author: Marek 'marx' Grac <mgrac(a)redhat.com>
AuthorDate: Thu Oct 18 11:35:15 2012 +0200
Committer: Marek 'marx' Grac <mgrac(a)redhat.com>
CommitterDate: Thu Oct 25 10:35:51 2012 +0200
fence_na: Add support for XML metadata output
Adding a skelet for XML metadata output so fence_na can be used with corosync.
Resolves: rhbz#864028
---
fence/agents/node_assassin/fence_na.lib.in | 57 ++++++++++++++++++++++++++++
fence/agents/node_assassin/fence_na.pl | 6 +++
2 files changed, 63 insertions(+), 0 deletions(-)
diff --git a/fence/agents/node_assassin/fence_na.lib.in
b/fence/agents/node_assassin/fence_na.lib.in
index 67d5367..dec734a 100644
--- a/fence/agents/node_assassin/fence_na.lib.in
+++ b/fence/agents/node_assassin/fence_na.lib.in
@@ -918,4 +918,61 @@ sub _make_hash_reference
_add_hash_reference($href, $_href);
}
+sub show_metadata
+{
+ print <<METADATA;
+<?xml version="1.0" ?>
+<resource-agent name="fence_na.py" shortdesc="Fence agent for Node
Assassin over telnet" >
+<longdesc>fence_na is an I/O Fencing agent which can be used with the Node Assassin
network power switch. It logs into device via telnet and reboots a specified outlet.
Lengthy telnet/ssh connections should be avoided while a GFS cluster is running because
the connection will block any necessary fencing actions.</longdesc>
+<vendor-url>http://www.altavee.ca/w/Node_Assassin_v1.1.4</vendor-url>
+<parameters>
+ <parameter name="action" unique="0" required="1">
+ <getopt mixed="-o <action>" />
+ <content type="string" default="reboot" />
+ <shortdesc lang="en">Fencing Action</shortdesc>
+ </parameter>
+ <parameter name="ipaddr" unique="0" required="1">
+ <getopt mixed="-a <ip>" />
+ <content type="string" />
+ <shortdesc lang="en">IP Address or Hostname</shortdesc>
+ </parameter>
+ <parameter name="login" unique="0" required="1">
+ <getopt mixed="-l <name>" />
+ <content type="string" />
+ <shortdesc lang="en">Login Name</shortdesc>
+ </parameter>
+ <parameter name="passwd" unique="0" required="0">
+ <getopt mixed="-p <password>" />
+ <content type="string" />
+ <shortdesc lang="en">Login password or passphrase</shortdesc>
+ </parameter>
+ <parameter name="port" unique="0" required="1">
+ <getopt mixed="-n;" />
+ <content type="string" />
+ <shortdesc lang="en">Physical plug number</shortdesc>
+ </parameter>
+ <parameter name="version" unique="0" required="0">
+ <getopt mixed="-V" />
+ <content type="boolean" />
+ <shortdesc lang="en">Display version information and
exit</shortdesc>
+ </parameter>
+ <parameter name="help" unique="0" required="0">
+ <getopt mixed="-h" />
+ <content type="boolean" />
+ <shortdesc lang="en">Display help and exit</shortdesc>
+ </parameter>
+</parameters>
+<actions>
+ <action name="on" />
+ <action name="off" />
+ <action name="reboot" />
+ <action name="status" />
+ <action name="list" />
+ <action name="monitor" />
+ <action name="metadata" />
+</actions>
+</resource-agent>
+METADATA
+}
+
1;
diff --git a/fence/agents/node_assassin/fence_na.pl
b/fence/agents/node_assassin/fence_na.pl
index bc7fb00..bdcaf69 100644
--- a/fence/agents/node_assassin/fence_na.pl
+++ b/fence/agents/node_assassin/fence_na.pl
@@ -106,6 +106,12 @@ foreach my $i (1..$conf->{'system'}{na_num})
}
die "Exiting on errors.\n" if $bad;
+
+if ($conf->{na}{action} eq "metadata") {
+ show_metadata();
+ do_exit($conf, $log, 0);
+}
+
my @ny=("no", "yes");
record($conf, $log, "Node Assassin: . [$conf->{na}{ipaddr}].\n");
record($conf, $log, "TCP Port: ...... [$conf->{na}{tcp_port}].\n");