.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "App::ClusterSSH::Cluster 3pm" .TH App::ClusterSSH::Cluster 3pm "2016-05-09" "perl v5.20.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" App::ClusterSSH::Cluster \- Object representing cluster configuration .SH "SYNOPSIS" .IX Header "SYNOPSIS" .SH "DESCRIPTION" .IX Header "DESCRIPTION" Object representing application configuration .SH "METHODS" .IX Header "METHODS" .ie n .IP "$cluster=ClusterSSH::Cluster\->\fInew()\fR;" 4 .el .IP "\f(CW$cluster\fR=ClusterSSH::Cluster\->\fInew()\fR;" 4 .IX Item "$cluster=ClusterSSH::Cluster->new();" Create a new object. Object should be common across all invocations. .ie n .IP "$cluster\->get_cluster_entries($filename);" 4 .el .IP "\f(CW$cluster\fR\->get_cluster_entries($filename);" 4 .IX Item "$cluster->get_cluster_entries($filename);" Read in /etc/clusters, \f(CW$HOME\fR/.clusterssh/clusters and any other given file name and register the tags found. .ie n .IP "@external_tags=\fIlist_external_clusters()\fR" 4 .el .IP "\f(CW@external_tags\fR=\fIlist_external_clusters()\fR" 4 .IX Item "@external_tags=list_external_clusters()" Call an external script suing \f(CW\*(C`\-L\*(C'\fR to list available tags .ie n .IP "@resolved_tags=get_external_clusters(@tags)" 4 .el .IP "\f(CW@resolved_tags\fR=get_external_clusters(@tags)" 4 .IX Item "@resolved_tags=get_external_clusters(@tags)" Use an external script to resolve \f(CW@tags\fR into hostnames. .ie n .IP "$cluster\->get_tag_entries($filename);" 4 .el .IP "\f(CW$cluster\fR\->get_tag_entries($filename);" 4 .IX Item "$cluster->get_tag_entries($filename);" Read in /etc/tags, \f(CW$HOME\fR/.clusterssh/tags and any other given file name and register the tags found. .ie n .IP "$cluster\->read_cluster_file($filename);" 4 .el .IP "\f(CW$cluster\fR\->read_cluster_file($filename);" 4 .IX Item "$cluster->read_cluster_file($filename);" Read in the given cluster file and register the tags found .ie n .IP "$cluster\->expand_filename($filename);" 4 .el .IP "\f(CW$cluster\fR\->expand_filename($filename);" 4 .IX Item "$cluster->expand_filename($filename);" Expand ~ or \f(CW$HOME\fR in a filename .ie n .IP "$cluster\->read_tag_file($filename);" 4 .el .IP "\f(CW$cluster\fR\->read_tag_file($filename);" 4 .IX Item "$cluster->read_tag_file($filename);" Read in the given tag file and register the tags found .ie n .IP "$cluster\->register_tag($tag,@hosts);" 4 .el .IP "\f(CW$cluster\fR\->register_tag($tag,@hosts);" 4 .IX Item "$cluster->register_tag($tag,@hosts);" Register the given tag name with the given host names. .ie n .IP "$cluster\->register_host($host,@tags);" 4 .el .IP "\f(CW$cluster\fR\->register_host($host,@tags);" 4 .IX Item "$cluster->register_host($host,@tags);" Register the given host on the provided tags. .ie n .IP "@entries = $cluster\->get_tag('tag');" 4 .el .IP "\f(CW@entries\fR = \f(CW$cluster\fR\->get_tag('tag');" 4 .IX Item "@entries = $cluster->get_tag('tag');" .PD 0 .ie n .IP "$entries = $cluster\->get_tag('tag');" 4 .el .IP "\f(CW$entries\fR = \f(CW$cluster\fR\->get_tag('tag');" 4 .IX Item "$entries = $cluster->get_tag('tag');" .PD Retrieve all entries for the given tag. Returns an array of hosts or the number of hosts in the array depending on context. .ie n .IP "@tags = $cluster\->\fIlist_tags()\fR;" 4 .el .IP "\f(CW@tags\fR = \f(CW$cluster\fR\->\fIlist_tags()\fR;" 4 .IX Item "@tags = $cluster->list_tags();" Return an array of all available tag names .ie n .IP "%tags = $cluster\->\fIdump_tags()\fR;" 4 .el .IP "\f(CW%tags\fR = \f(CW$cluster\fR\->\fIdump_tags()\fR;" 4 .IX Item "%tags = $cluster->dump_tags();" Returns a hash of all tag data. .ie n .IP "@tags = $cluster\->expand_glob( $type, $name, @items );" 4 .el .IP "\f(CW@tags\fR = \f(CW$cluster\fR\->expand_glob( \f(CW$type\fR, \f(CW$name\fR, \f(CW@items\fR );" 4 .IX Item "@tags = $cluster->expand_glob( $type, $name, @items );" Use shell expansion against each item in \f(CW@items\fR, where \f(CW$type\fR is either 'node', or 'tag' and \f(CW$name\fR is the node or tag name. These attributes are presented to the user in the event of an issue with the expanion to track down the source. .SH "AUTHOR" .IX Header "AUTHOR" Duncan Ferguson, \f(CW\*(C`\*(C'\fR .SH "LICENSE AND COPYRIGHT" .IX Header "LICENSE AND COPYRIGHT" Copyright 1999\-2015 Duncan Ferguson. .PP This program is free software; you can redistribute it and/or modify it under the terms of either: the \s-1GNU\s0 General Public License as published by the Free Software Foundation; or the Artistic License. .PP See http://dev.perl.org/licenses/ for more information.