xcat-core/xCAT/postscripts/startsyncfiles.aix

59 lines
1.4 KiB
Perl

#!/usr/bin/env perl -w
# IBM(c) 2009 EPL license http://www.eclipse.org/legal/epl-v10.html
#####################################################
#
# xCAT post script for AIX nodes
# This script will send command "syncfiles" to the xcatd on
# management node or service node to initiate the sync file
# operation by xdcp command
#
#####################################################
use XML::Simple;
my $useSocketSSL=eval { require IO::Socket::SSL; };
if ($useSocketSSL) {
require IO::Socket::SSL;
}
my $port = "3001";
my $remote = IO::Socket::SSL->new( Proto => "tcp", PeerAddr => $ENV{MASTER}, PeerPort => $port, );
unless ($remote) {
`logger -t xCAT -p local4.err "startsyncfiles: Cannot connect to host $ENV{MASTER}"`;
exit 0;
}
# Send Syncing File request to the xcatd
print $remote "<xcatrequest>\n";
print $remote " <command>syncfiles</command>\n";
print $remote "</xcatrequest>\n";
my $response='';
my $rsp;
my $rc = 0;
while (<$remote>) {
$response .= $_;
if ($response =~ m/<\/xcatresponse>/) {
$rsp = eval { XMLin($response,SuppressEmpty=>undef,ForceArray=>1) };
if ($rsp->{errorcode}) {
$rc = $rsp->{errorcode}[0];
} elsif ($rsp->{error}) {
$rc = $rsp->{error}[0];
}
if ($rsp->{serverdone}) {
close $remote;
if ($rc) { $rc = 1; }
exit $rc;
}
$response='';
}
}
close $remote;
exit 0;