Author: fapeeler
Date: Wed Nov 30 19:53:47 2011
New Revision: 1208737
URL: http://svn.apache.org/viewvc?rev=1208737&view=rev
Log:
VCL-468
Modified healthcheck to make use of datastructure.
Minor updates to provisionin modules
Modified:
incubator/vcl/trunk/managementnode/bin/S99vcld.linux
incubator/vcl/trunk/managementnode/etc/vcl/vcld.conf
incubator/vcl/trunk/managementnode/lib/VCL/DataStructure.pm
incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/Lab.pm
incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/VMware/VMware.pm
incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT.pm
incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT2.pm
incubator/vcl/trunk/managementnode/lib/VCL/healthcheck.pm
incubator/vcl/trunk/managementnode/lib/VCL/utils.pm
Modified: incubator/vcl/trunk/managementnode/bin/S99vcld.linux
URL:
http://svn.apache.org/viewvc/incubator/vcl/trunk/managementnode/bin/S99vcld.linux?rev=1208737&r1=1208736&r2=1208737&view=diff
==============================================================================
--- incubator/vcl/trunk/managementnode/bin/S99vcld.linux (original)
+++ incubator/vcl/trunk/managementnode/bin/S99vcld.linux Wed Nov 30 19:53:47
2011
@@ -22,15 +22,16 @@
# description: VCL management node daemon
# DAEMON: Name of the daemon executable
-DAEMON=vcld
+DAEMON=vcldfap
# DAEMON_PATH: Path to the daemon, no trailing '/'
-DAEMON_PATH=/usr/local/vcl/bin
+DAEMON_PATH=/usr/local/vcldev/fap/managementnode/bin
# DAEMON_OPTIONS: options for the daemon, these can be overridden by
# setting DAEMON_OPTIONS in /etc/sysconfig/$DAEMON
-DAEMON_OPTIONS='-v -conf=/etc/vcl/vcld.conf'
+DAEMON_OPTIONS='-v
-conf=/usr/local/vcldev/fap/managementnode/etc/vcl/vcld.conf'
+cp /dev/null /usr/local/vcldev/fap/managementnode/vcldfap.log
# You shouldn't need to edit anything below here
# --------------------------------------------------------------------
Modified: incubator/vcl/trunk/managementnode/etc/vcl/vcld.conf
URL:
http://svn.apache.org/viewvc/incubator/vcl/trunk/managementnode/etc/vcl/vcld.conf?rev=1208737&r1=1208736&r2=1208737&view=diff
==============================================================================
--- incubator/vcl/trunk/managementnode/etc/vcl/vcld.conf (original)
+++ incubator/vcl/trunk/managementnode/etc/vcl/vcld.conf Wed Nov 30 19:53:47
2011
@@ -34,31 +34,31 @@
# FQDN: DNS name of the management node
# Example: mgtnode1.hpc.someschool.edu
-FQDN=
+FQDN=vcl00mn.hpc.ncsu.edu
# processname: name to call VCL daemon process
# Default: vcld
-processname=vcld
+processname=vcldfap
# log: log file location
# Default: /var/log/vcld.log
# If left undefined it will be named according to the above processname
# i.e. /var/log/$PROCESSNAME.log
-log=/var/log/vcld.log
+log=/usr/local/vcldev/fap/managementnode/vcldfap.log
# pidfile: process id file location
-# Default: /var/run/vcld.pid
+# Default: /var/run/vcldfap.pid
# If left undefined it will be named according to the above processname
# i.e. /var/run/$PROCESSNAME.pid
-pidfile=/var/run/vcld.pid
+pidfile=/var/run/vcldfap.pid
# Database connection information
# database: name of MySQL database (required)
-database=vcl
+database=vcldev
# server: IP address or FQDN of the database server (required)
-server=
+server=152.7.98.108
# LockerWrtUser: MySQL user account name with write privileges (required)
LockerWrtUser=vcl-wrt
@@ -66,7 +66,7 @@ LockerWrtUser=vcl-wrt
# wrtPass: MySQL password of the above LockerWrtUser (required)
# Any length is supported by MySQL
# Must be a string of characters: A-Z a-z 0-9
-wrtPass=
+wrtPass=iM5jNOPWyStu6
# xml-rpc username password and url information
# Required for block reservation processing
@@ -76,9 +76,9 @@ wrtPass=
# for example, if you install the VCL web code at
https://vcl.example.org/vcl/
# set xmlrpc_url to https://vcl.example.org/vcl/index.php?mode=xmlrpccall
-xmlrpc_username=vclsystem
-xmlrpc_pass=insecureDefault
-xmlrpc_url=
+xmlrpc_username=admin@local
+xmlrpc_pass=vclc1-5devserver
+xmlrpc_url=https://vcldev.csc.ncsu.edu/vcl/index.php?mode=xmlrpccall
######### END REQUIRED Configuration settings ##############
Modified: incubator/vcl/trunk/managementnode/lib/VCL/DataStructure.pm
URL:
http://svn.apache.org/viewvc/incubator/vcl/trunk/managementnode/lib/VCL/DataStructure.pm?rev=1208737&r1=1208736&r2=1208737&view=diff
==============================================================================
--- incubator/vcl/trunk/managementnode/lib/VCL/DataStructure.pm (original)
+++ incubator/vcl/trunk/managementnode/lib/VCL/DataStructure.pm Wed Nov 30
19:53:47 2011
@@ -618,7 +618,13 @@ sub _initialize : Init {
# Set the request and reservation IDs in the request data hash if they
are undefined
$self->request_data->{id} = ($self->request_id || 0) if
(!defined($self->request_data->{id}));
$self->request_data->{RESERVATIONID} = ($self->reservation_id || 0) if
(!defined($self->request_data->{RESERVATIONID}));
-
+ if ($self->request_data->{RESERVATIONID} == 0) {
+ $self->request_data->{reservation}{0}{serverrequest}{id} = 0;
+ $self->request_data->{forimaging} = 0;
+ $self->request_data->{state}{name} = "available";
+
+ }
+
my $computer_id = $self->computer_id;
my $image_id = $self->image_id;
my $imagerevision_id = $self->imagerevision_id;
@@ -656,13 +662,26 @@ sub _initialize : Init {
elsif ($computer_id) {
$imagerevision_id =
$self->get_computer_imagerevision_id();
if (defined($imagerevision_id)) {
- notify($ERRORS{'DEBUG'}, 0, "computer ID
argument was specified ($computer_id) but image and imagerevision ID arguments
were not, DataStructure object will contain image information for the
computer's current imagerevision ID: $imagerevision_id");
+ notify($ERRORS{'OK'}, 0, "computer ID argument
was specified ($computer_id) but image and imagerevision ID arguments were not,
DataStructure object will contain image information for the computer's current
imagerevision ID: $imagerevision_id");
+ if(!$imagerevision_id) {
+ notify($ERRORS{'OK'}, 0,
"computer ID argument was specified ($computer_id) imagerevision_id is set to
$imagerevision_id");
+ $image_id =
$self->get_computer_currentimage_id();
+ if(defined($image_id)) {
+ $imagerevision_info =
get_production_imagerevision_info($image_id);
+ }
+ else {
+
Exception::Class::Base->throw( error => "DataStructure object could not be
initialized, computer's current imagerevision ID could not be retrieved from
the current DataStructure data:\n" . format_data($self->get_request_data));
+ return;
+ }
+ }
+ else {
+ $imagerevision_info =
get_imagerevision_info($imagerevision_id);
+ }
}
else {
Exception::Class::Base->throw( error =>
"DataStructure object could not be initialized, computer's current
imagerevision ID could not be retrieved from the current DataStructure data:\n"
. format_data($self->get_request_data));
- return;
+ return;
}
- $imagerevision_info =
get_imagerevision_info($imagerevision_id);
}
if ($imagerevision_info) {
Modified: incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/Lab.pm
URL:
http://svn.apache.org/viewvc/incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/Lab.pm?rev=1208737&r1=1208736&r2=1208737&view=diff
==============================================================================
--- incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/Lab.pm
(original)
+++ incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/Lab.pm Wed
Nov 30 19:53:47 2011
@@ -154,12 +154,12 @@ sub node_status {
notify($ERRORS{'DEBUG'}, 0, "self is a array
reference");
}
- $computer_node_name = $self->{computer}->{hostname};
+ $computer_node_name = $self->{hostname};
$management_node_os_name = $self->{managementnode}->{OSNAME};
$management_node_keys = $self->{managementnode}->{keys};
- $computer_host_name = $self->{computer}->{hostname};
- $computer_ip_address = $self->{computer}->{IPaddress};
- $image_os_name = $self->{image}->{OS}->{name};
+ $computer_host_name = $self->{hostname};
+ $computer_ip_address = $self->{IPaddress};
+ $image_os_name = $self->{currentimage}->{OS}->{name};
$log = 0 if !$log;
$computer_short_name = $1 if ($computer_node_name =~
/([-_a-zA-Z0-9]*)(\.?)/);
Modified:
incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/VMware/VMware.pm
URL:
http://svn.apache.org/viewvc/incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/VMware/VMware.pm?rev=1208737&r1=1208736&r2=1208737&view=diff
==============================================================================
---
incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/VMware/VMware.pm
(original)
+++
incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/VMware/VMware.pm
Wed Nov 30 19:53:47 2011
@@ -1036,7 +1036,7 @@ sub node_status {
my $computer_id;
if (ref($argument)) {
# Hash reference was passed
- $computer_id = $argument->{computer}{id};
+ $computer_id = $argument->{id};
}
elsif ($argument =~ /^\d+$/) {
# Computer ID was passed
@@ -1048,10 +1048,10 @@ sub node_status {
}
if ($computer_id) {
- notify($ERRORS{'DEBUG'}, 0, "computer ID:
$computer_id");
+ notify($ERRORS{'OK'}, 0, "computer ID: $computer_id");
}
else {
- notify($ERRORS{'DEBUG'}, 0, "unable to determine
computer ID from argument:\n" . format_data($argument));
+ notify($ERRORS{'OK'}, 0, "unable to determine computer
ID from argument:\n" . format_data($argument));
return;
}
@@ -1094,7 +1094,7 @@ sub node_status {
my $image_name = $self->data->get_image_name();
my $request_forimaging = $self->data->get_request_forimaging();
- notify($ERRORS{'DEBUG'}, 0, "attempting to check the status of computer
$computer_name, image: $image_name");
+ notify($ERRORS{'OK'}, 0, "attempting to check the status of computer
$computer_name, image: $image_name");
# Create a hash reference and populate it with the default values
my $status;
@@ -1110,24 +1110,27 @@ sub node_status {
# Skip the ping and power status checks for a normal reservation to
speed things up
if (!$reservation_id) {
if (_pingnode($computer_name)) {
- notify($ERRORS{'DEBUG'}, 0, "VM $computer_name is
pingable");
+ notify($ERRORS{'OK'}, 0, "VM $computer_name is
pingable");
$status->{ping} = 1;
}
else {
- notify($ERRORS{'DEBUG'}, 0, "VM $computer_name is not
pingable");
+ notify($ERRORS{'OK'}, 0, "VM $computer_name is not
pingable");
$status->{ping} = 0;
}
$status->{vmstate} = $self->power_status();
+ if (!defined($status->{vmstate})) {
+ $status->{vmstate} = "off";
+ }
}
# Check if SSH is available
if ($self->os->is_ssh_responding()) {
- notify($ERRORS{'DEBUG'}, 0, "VM $computer_name is responding to
SSH");
+ notify($ERRORS{'OK'}, 0, "VM $computer_name is responding to
SSH");
$status->{ssh} = 1;
}
else {
- notify($ERRORS{'DEBUG'}, 0, "VM $computer_name is not
responding to SSH, returning 'RELOAD'");
+ notify($ERRORS{'OK'}, 0, "VM $computer_name is not responding
to SSH, returning 'RELOAD'");
$status->{status} = 'RELOAD';
$status->{ssh} = 0;
@@ -1140,15 +1143,15 @@ sub node_status {
$status->{currentimage} = $current_image_name;
if (!$current_image_name) {
- notify($ERRORS{'DEBUG'}, 0, "unable to retrieve image name from
currentimage.txt on VM $computer_name, returning 'RELOAD'");
+ notify($ERRORS{'OK'}, 0, "unable to retrieve image name from
currentimage.txt on VM $computer_name, returning 'RELOAD'");
return $status;
}
elsif ($current_image_name eq $image_name) {
- notify($ERRORS{'DEBUG'}, 0, "currentimage.txt image
($current_image_name) matches requested image name ($image_name) on VM
$computer_name");
+ notify($ERRORS{'OK'}, 0, "currentimage.txt image
($current_image_name) matches requested image name ($image_name) on VM
$computer_name");
$status->{image_match} = 1;
}
else {
- notify($ERRORS{'DEBUG'}, 0, "currentimage.txt image
($current_image_name) does not match requested image name ($image_name) on VM
$computer_name, returning 'RELOAD'");
+ notify($ERRORS{'OK'}, 0, "currentimage.txt image
($current_image_name) does not match requested image name ($image_name) on VM
$computer_name, returning 'RELOAD'");
return $status;
}
@@ -1196,7 +1199,7 @@ sub node_status {
return $status;
}
- notify($ERRORS{'DEBUG'}, 0, "vmdk file path used by the VM
already loaded: $vmdk_file_path, mode: $vmdk_mode");
+ notify($ERRORS{'OK'}, 0, "vmdk file path used by the VM already
loaded: $vmdk_file_path, mode: $vmdk_mode");
# Can't use if nonpersistent
if ($vmdk_mode =~ /nonpersistent/i) {
@@ -1210,18 +1213,18 @@ sub node_status {
return $status;
}
else {
- notify($ERRORS{'DEBUG'}, 0, "VM already loaded
may be used, the vmdk does NOT appear to be shared");
+ notify($ERRORS{'OK'}, 0, "VM already loaded may
be used, the vmdk does NOT appear to be shared");
}
}
}
# Check if the OS post_load tasks have run
if ($self->os->get_vcld_post_load_status()) {
- notify($ERRORS{'DEBUG'}, 0, "OS module post_load tasks have
been completed on VM $computer_name");
+ notify($ERRORS{'OK'}, 0, "OS module post_load tasks have been
completed on VM $computer_name");
$status->{status} = 'READY';
}
else {
- notify($ERRORS{'DEBUG'}, 0, "OS module post_load tasks have not
been completed on VM $computer_name, returning 'POST_LOAD'");
+ notify($ERRORS{'OK'}, 0, "OS module post_load tasks have not
been completed on VM $computer_name, returning 'POST_LOAD'");
$status->{status} = 'POST_LOAD';
}
Modified: incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT.pm
URL:
http://svn.apache.org/viewvc/incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT.pm?rev=1208737&r1=1208736&r2=1208737&view=diff
==============================================================================
--- incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT.pm
(original)
+++ incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT.pm Wed
Nov 30 19:53:47 2011
@@ -2052,32 +2052,34 @@ sub _fix_rpower {
sub node_status {
my $self = shift;
- my ($computer_node_name, $log);
+ my ($log);
my $management_node_os_name = 0;
my $management_node_keys = 0;
my $computer_host_name = 0;
my $computer_short_name = 0;
+ my $computer_node_name = 0;
my $computer_ip_address = 0;
my $image_os_name = 0;
my $image_name = 0;
my $image_os_type = 0;
+
# Check if subroutine was called as a class method
if (ref($self) !~ /xcat/i) {
if (ref($self) eq 'HASH') {
$log = $self->{logfile};
- notify($ERRORS{'DEBUG'}, $log, "self is a hash
reference");
+ notify($ERRORS{'OK'}, $log, "self is a hash reference");
- $computer_node_name =
$self->{computer}->{hostname};
+ $computer_node_name = $self->{hostname};
$management_node_os_name =
$self->{managementnode}->{OSNAME};
$management_node_keys =
$self->{managementnode}->{keys};
- $computer_host_name =
$self->{computer}->{hostname};
- $computer_ip_address =
$self->{computer}->{IPaddress};
- $image_os_name = $self->{image}->{OS}->{name};
- $image_name =
$self->{imagerevision}->{imagename};
- $image_os_type = $self->{image}->{OS}->{type};
+ $computer_host_name = $self->{hostname};
+ $computer_ip_address = $self->{IPaddress};
+ $image_os_name =
$self->{currentimage}->{OS}->{name};
+ $image_name =
$self->{currentimagerevision}->{name};
+ $image_os_type =
$self->{currentimage}->{OS}->{type};
} ## end if (ref($self) eq 'HASH')
# Check if node_status returned an array ref
@@ -2109,15 +2111,15 @@ sub node_status {
notify($ERRORS{'WARNING'}, 0, "node name could not be
determined");
return;
}
- notify($ERRORS{'DEBUG'}, $log, "checking status of node:
$computer_node_name");
- notify($ERRORS{'DEBUG'}, $log, "computer_short_name=
$computer_short_name ");
- notify($ERRORS{'DEBUG'}, $log, "computer_node_name= $computer_node_name
");
- notify($ERRORS{'DEBUG'}, $log, "image_os_name= $image_os_name");
- notify($ERRORS{'DEBUG'}, $log, "management_node_os_name=
$management_node_os_name");
- notify($ERRORS{'DEBUG'}, $log, "computer_ip_address=
$computer_ip_address");
- notify($ERRORS{'DEBUG'}, $log, "management_node_keys=
$management_node_keys");
- notify($ERRORS{'DEBUG'}, $log, "image_name= $image_name");
- notify($ERRORS{'DEBUG'}, $log, "image_os_type= $image_os_type");
+ notify($ERRORS{'OK'}, $log, "checking status of node:
$computer_node_name");
+ notify($ERRORS{'OK'}, $log, "computer_short_name= $computer_short_name
");
+ notify($ERRORS{'OK'}, $log, "computer_node_name= $computer_node_name ");
+ notify($ERRORS{'OK'}, $log, "image_os_name= $image_os_name");
+ notify($ERRORS{'OK'}, $log, "management_node_os_name=
$management_node_os_name");
+ notify($ERRORS{'OK'}, $log, "computer_ip_address=
$computer_ip_address");
+ notify($ERRORS{'OK'}, $log, "management_node_keys=
$management_node_keys");
+ notify($ERRORS{'OK'}, $log, "image_name= $image_name");
+ notify($ERRORS{'OK'}, $log, "image_os_type= $image_os_type");
# Create a hash to store status components
Modified:
incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT2.pm
URL:
http://svn.apache.org/viewvc/incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT2.pm?rev=1208737&r1=1208736&r2=1208737&view=diff
==============================================================================
--- incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT2.pm
(original)
+++ incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT2.pm Wed
Nov 30 19:53:47 2011
@@ -1710,21 +1710,21 @@ sub node_status {
if (ref($self) !~ /xcat/i) {
if (ref($self) eq 'HASH') {
$log = $self->{logfile};
- notify($ERRORS{'DEBUG'}, $log, "self is a hash
reference");
+ notify($ERRORS{'OK'}, $log, "self is a hash reference");
- $computer_node_name =
$self->{computer}->{hostname};
+ $computer_node_name = $self->{hostname};
$management_node_os_name =
$self->{managementnode}->{OSNAME};
$management_node_keys =
$self->{managementnode}->{keys};
- $computer_host_name =
$self->{computer}->{hostname};
- $computer_ip_address =
$self->{computer}->{IPaddress};
- $image_os_name = $self->{image}->{OS}->{name};
- $image_name =
$self->{imagerevision}->{imagename};
- $image_os_type = $self->{image}->{OS}->{type};
+ $computer_host_name = $self->{hostname};
+ $computer_ip_address = $self->{IPaddress};
+ $image_os_name =
$self->{currentimage}->{OS}->{name};
+ $image_name =
$self->{currentimagerevision}->{imagename};
+ $image_os_type =
$self->{currentimage}->{OS}->{type};
} ## end if (ref($self) eq 'HASH')
# Check if node_status returned an array ref
elsif (ref($self) eq 'ARRAY') {
- notify($ERRORS{'DEBUG'}, 0, "self is a array
reference");
+ notify($ERRORS{'OK'}, 0, "self is a array reference");
}
$log = 0 if !$log;
@@ -1749,7 +1749,7 @@ sub node_status {
notify($ERRORS{'WARNING'}, 0, "node name could not be
determined");
return;
}
- notify($ERRORS{'DEBUG'}, 0, "checking status of node:
$computer_node_name");
+ notify($ERRORS{'OK'}, 0, "checking status of node:
$computer_node_name");
@@ -1766,14 +1766,14 @@ sub node_status {
$status{ssh} = 0;
# Check the profile in the nodetype table
- notify($ERRORS{'DEBUG'}, $log, "checking the current image listed in
nodetype table for $computer_short_name");
+ notify($ERRORS{'OK'}, $log, "checking the current image listed in
nodetype table for $computer_short_name");
if (open(NODELS, "$XCAT_ROOT/bin/nodels $computer_short_name
nodetype.profile 2>&1 |")) {
my @file = <NODELS>;
close(NODELS);
foreach my $l (@file) {
if ($l =~ /^$computer_short_name:\s+(.+)/) {
my $nodetype_image_name = $1;
- notify($ERRORS{'DEBUG'}, 0, "found image for
$computer_short_name in nodetype table: $nodetype_image_name");
+ notify($ERRORS{'OK'}, 0, "found image for
$computer_short_name in nodetype table: $nodetype_image_name");
$status{nodetype} = $nodetype_image_name;
}
}
@@ -1784,7 +1784,7 @@ sub node_status {
}
# Check if node is pingable
- notify($ERRORS{'DEBUG'}, $log, "checking if $computer_host_name is
pingable");
+ notify($ERRORS{'OK'}, $log, "checking if $computer_host_name is
pingable");
if (_pingnode($computer_host_name)) {
$status{ping} = 1;
notify($ERRORS{'OK'}, $log, "$computer_host_name is pingable
($status{ping})");
@@ -1795,7 +1795,7 @@ sub node_status {
}
# Check the rpower status
- notify($ERRORS{'DEBUG'}, $log, "checking $computer_short_name xCAT
rpower status");
+ notify($ERRORS{'OK'}, $log, "checking $computer_short_name xCAT rpower
status");
my $rpower_status = $self->_rpower($computer_short_name, "stat");
if ($rpower_status =~ /on/i) {
$status{rpower} = 1;
@@ -1806,22 +1806,22 @@ sub node_status {
notify($ERRORS{'OK'}, $log, "$computer_short_name rpower status:
$rpower_status ($status{rpower})");
# Check the xCAT nodeset status
- notify($ERRORS{'DEBUG'}, $log, "checking $computer_short_name xCAT
nodeset status");
+ notify($ERRORS{'OK'}, $log, "checking $computer_short_name xCAT nodeset
status");
my $nodeset_status = _nodeset($computer_short_name);
notify($ERRORS{'OK'}, $log, "$computer_short_name nodeset status:
$nodeset_status");
$status{nodeset} = $nodeset_status;
# Check the sshd status
- notify($ERRORS{'DEBUG'}, $log, "checking if $computer_short_name sshd
service is accessible");
+ notify($ERRORS{'OK'}, $log, "checking if $computer_short_name sshd
service is accessible");
my $sshd_status = _sshd_status($computer_short_name, $status{nodetype},
$log);
# If sshd is accessible, perform sshd-dependent checks
if ($sshd_status =~ /on/) {
$status{ssh} = 1;
- notify($ERRORS{'DEBUG'}, $log, "$computer_short_name sshd
service is accessible, performing dependent checks");
+ notify($ERRORS{'OK'}, $log, "$computer_short_name sshd service
is accessible, performing dependent checks");
# Check the currentimage.txt file on the node
- notify($ERRORS{'DEBUG'}, $log, "checking image specified in
currentimage.txt file on $computer_short_name");
+ notify($ERRORS{'OK'}, $log, "checking image specified in
currentimage.txt file on $computer_short_name");
my $status_currentimage =
_getcurrentimage($computer_short_name);
if ($status_currentimage) {
notify($ERRORS{'OK'}, $log, "$computer_short_name
currentimage.txt has: $status_currentimage");
@@ -1881,11 +1881,11 @@ sub node_status {
# Check if the OS post_load tasks have run
if ($self->os->get_vcld_post_load_status()) {
- notify($ERRORS{'DEBUG'}, 0, "OS module post_load tasks
have been completed on $computer_short_name");
+ notify($ERRORS{'OK'}, 0, "OS module post_load tasks
have been completed on $computer_short_name");
$status{status} = 'READY';
}
else {
- notify($ERRORS{'DEBUG'}, 0, "OS module post_load tasks
have not been completed on $computer_short_name, returning 'POST_LOAD'");
+ notify($ERRORS{'OK'}, 0, "OS module post_load tasks
have not been completed on $computer_short_name, returning 'POST_LOAD'");
$status{status} = 'POST_LOAD';
}
}
Modified: incubator/vcl/trunk/managementnode/lib/VCL/healthcheck.pm
URL:
http://svn.apache.org/viewvc/incubator/vcl/trunk/managementnode/lib/VCL/healthcheck.pm?rev=1208737&r1=1208736&r2=1208737&view=diff
==============================================================================
--- incubator/vcl/trunk/managementnode/lib/VCL/healthcheck.pm (original)
+++ incubator/vcl/trunk/managementnode/lib/VCL/healthcheck.pm Wed Nov 30
19:53:47 2011
@@ -54,6 +54,8 @@ use diagnostics;
use English qw( -no_match_vars );
use VCL::utils;
+use VCL::DataStructure;
+#use VCL::Module::Provisioning::xCAT2;
use DBI;
##############################################################################
@@ -112,7 +114,7 @@ sub _initialize {
notify($ERRORS{'OK'}, $LOG, "retrieved management node
information from database");
}
else {
- notify($ERRORS{'CRITICAL'}, $LOG, "unable to retrieve
management node information from database");
+ notify($ERRORS{'WARNING'}, $LOG, "unable to retrieve management
node information from database");
exit;
}
@@ -121,21 +123,10 @@ sub _initialize {
notify($ERRORS{'OK'}, $LOG, "retrieved management node resource
groups from database");
}
else {
- notify($ERRORS{'CRITICAL'}, $LOG, "unable to retrieve
management node resource groups from database");
+ notify($ERRORS{'WARNING'}, $LOG, "unable to retrieve management
node resource groups from database");
exit;
}
- foreach my $cid (keys %{$info->{computertable}}) {
- #notify($ERRORS{'OK'}, $LOGFILE, "computer_id=
$info->{computertable}->{$cid}->{computer_id}");
- #get computer information
- if ($info->{computertable}->{$cid} = get_computer_info($cid)) {
-
- }
- else {
- delete $info->{computertable}->{$cid};
- }
- } ## end foreach my $cid (keys %{$info->{computertable}})
-
} ### end sub _initialize
#////////////////////////////////////////////////////////////////////////////////
@@ -154,9 +145,10 @@ sub process {
$info->{"globalmsg"}->{"body"} = "Summary of VCL node monitoring
system:\n\n";
my $mn_hostname = $info->{managementnode}->{hostname};
+ my $last_check;
if($powerdownstage =~ /^(available|all)$/){
- notify($ERRORS{'CRITICAL'}, $LOG, "ALERT: powerdown stage
triggered,placing MN $mn_hostname in maintenance");
+ notify($ERRORS{'WARNING'}, $LOG, "ALERT: powerdown stage
triggered,placing MN $mn_hostname in maintenance");
if (set_managementnode_state($info->{managementnode},
"maintenance")) {
notify($ERRORS{'OK'}, $LOG, "Successfully set
$mn_hostname into maintenance");
}
@@ -165,7 +157,7 @@ sub process {
}
}
elsif($powerdownstage =~ /^restore/){
- notify($ERRORS{'CRITICAL'}, $LOG, "ALERT: Environment OK:
restoring state of MN $mn_hostname in available");
+ notify($ERRORS{'WARNING'}, $LOG, "ALERT: Environment OK:
restoring state of MN $mn_hostname in available");
if (set_managementnode_state($info->{managementnode},
"available")) {
notify($ERRORS{'OK'}, $LOG, "Successfully set
$mn_hostname into available");
}
@@ -177,36 +169,106 @@ sub process {
#proceed standard checks
}
+
+
foreach my $cid (keys %{$info->{computertable}}) {
#set some local variables
- my $comp_hostname =
$info->{computertable}->{$cid}->{computer}->{hostname};
- my $comp_type =
$info->{computertable}->{$cid}->{computer}->{type};
- my $comp_state =
$info->{computertable}->{$cid}->{computer}->{state}->{name};
- my $provisioning_perl_package =
$info->{computertable}->{$cid}->{computer}->{provisioning}->{module}->{perlpackage};
- my $last_check =
$info->{computertable}->{$cid}->{computer}->{lastcheck};
- my $image_os_name =
$info->{computertable}->{$cid}->{image}->{OS}->{name};
- my $comp_id = $cid;
-
- #next if ($comp_type eq "lab");
- #next if($comp_type eq "blade");
- #next if ($comp_type eq "virtualmachine");
+ #notify($ERRORS{'OK'}, $LOG, " dumping data for computer id
$cid\n" . format_data($info->{computertable}->{$cid}));
+ # Create a DataStructure object containing data for the
computer specified as the argument
+ my $data;
+ my $self;
+ my $computer_id = $cid;
+ eval {
+ $data= new VCL::DataStructure({computer_id =>
$computer_id});
+ };
+ if ($EVAL_ERROR) {
+ notify($ERRORS{'WARNING'}, 0, "failed to create
DataStructure object for computer ID: $computer_id, error: $EVAL_ERROR");
+ return;
+ }
+ elsif (!$data) {
+ notify($ERRORS{'WARNING'}, 0, "failed to create
DataStructure object for computer ID: $computer_id, DataStructure object is not
defined");
+ return;
+ }
+ else {
+
#notify($ERRORS{'OK'}, 0, "created DataStructure object for computer ID:
$computer_id\n". format_data($data->get_request_data));
+ }
+
+ my $computer_state = $data->get_computer_state_name();
+ $last_check = $data->get_computer_lastcheck_time();
+ my $computer_currentimage_name =
$data->get_computer_currentimage_name();
+
+ #Only preform actions on available or failed computers
+ #skip if is inuse, maintenance, tovmhost, etc.
+ if ($computer_state !~ /available|failed/) {
+
+ notify($ERRORS{'OK'}, $LOG, "NODE computer_id
$computer_id is in computer_state $computer_state skipping");
+ $info->{computers}->{$cid}->{"skip"} = 1;
+ $info->{"computersskipped"} += 1;
+ next;
+ }
+
+ #check lastcheck
+ if (defined($last_check) && $computer_state !~ /failed/) {
+ my $lastcheckepoch =
convert_to_epoch_seconds($last_check);
+ my $currentimeepoch = convert_to_epoch_seconds();
+ my $delta = ($currentimeepoch -
$lastcheckepoch);
+
+ my $delta_minutes = round($delta / 60);
+
+ if ($delta_minutes <= (60)) {
+ notify($ERRORS{'OK'}, $LOG, "NODE $computer_id
recently checked $delta_minutes minutes ago skipping");
+ #this node was recently checked
+ $info->{computers}->{$cid}->{"skip"} = 1;
+ $info->{"computersskipped"} += 1;
+ next;
+ }
+ $info->{"computerschecked"} += 1;
+ } ## end if (defined($last_check) && $computer_state !~...
+
+ my $object_type =
$data->get_computer_provisioning_module_perl_package();
+ notify($ERRORS{'OK'}, 0, "
object_type= $object_type" );
+ eval "use $object_type";
+
+ # Create a provisioning object
+ if ($self = ($object_type)->new({data_structure => $data})) {
+ #notify($ERRORS{'OK'}, 0, "created $object_type object
to check the status of computer ID: $computer_id\n" . format_data($self));
+ }
+ else {
+ notify($ERRORS{'WARNING'}, 0, "failed to create
$object_type object to check the status of computer ID: $computer_id");
+ next;
+ }
+
+
+
+
+ my $computer_hostname =
$data->get_computer_host_name();
+ my $computer_type = $data->get_computer_type();
+
+ #next if ($computer_type eq "lab");
+ #next if($computer_type eq "blade");
+ #next if ($computer_type eq "virtualmachine");
#need to pass some of the management node info to provisioing
module node_status
$info->{computertable}->{$cid}->{"managementnode"} =
$info->{managementnode};
$info->{computertable}->{$cid}->{"logfile"} =
$info->{logfile};
- notify($ERRORS{'DEBUG'}, $LOG, "cid= $cid");
- notify($ERRORS{'DEBUG'}, $LOG, "comp_hostname= $comp_hostname");
- notify($ERRORS{'DEBUG'}, $LOG, "comp_type= $comp_type");
- notify($ERRORS{'DEBUG'}, $LOG, "comp_state= $comp_state");
- notify($ERRORS{'DEBUG'}, $LOG, "provisioning_perl_package=
$provisioning_perl_package");
- notify($ERRORS{'DEBUG'}, $LOG, "image_os_name= $image_os_name");
+ notify($ERRORS{'OK'}, $LOG, "cid= $cid");
+ notify($ERRORS{'OK'}, $LOG, "computer_hostname=
$computer_hostname");
+ notify($ERRORS{'OK'}, $LOG, "computer_type= $computer_type");
+ notify($ERRORS{'OK'}, $LOG, "computer_state= $computer_state");
my ($datestring, $node_status_string);
+ my $node_status;
+
+ # Create an OS object for the VMware object to access
+ if (!$self->create_os_object()) {
+ notify($ERRORS{'WARNING'}, 0, "failed
to create OS object");
+ next;
+ }
# Collect current state of node - it could have changed since
we started
if (my $comp_current_state =
get_computer_current_state_name($cid)) {
$info->{computertable}->{$cid}->{computer}->{state}->{name} =
$comp_current_state;
- $comp_state = $comp_current_state;
+ $computer_state = $comp_current_state;
}
else {
#could not get it, use existing data
@@ -217,10 +279,10 @@ sub process {
if($powerdownstage =~ /^(available|all)$/){
$info->{computertable}->{$cid}->{"powerdownstage"} =
$powerdownstage;
if(powerdown_event($info->{computertable}->{$cid})){
- notify($ERRORS{'OK'}, $LOG, "Successfully
powered down $comp_hostname");
+ notify($ERRORS{'OK'}, $LOG, "Successfully
powered down $computer_hostname");
}
else {
- #notify($ERRORS{'OK'}, $LOG, "Could not
powerdown $comp_hostname");
+ #notify($ERRORS{'OK'}, $LOG, "Could not
powerdown $computer_hostname");
}
next;
}
@@ -228,97 +290,106 @@ sub process {
#proceed as normal
}
- #Only preform actions on these available or failed computer
states
- #skip if is inuse, maintenance, tovmhost, etc.
- if ($comp_state !~ /available|failed/) {
-
- notify($ERRORS{'OK'}, $LOG, "NODE $comp_hostname
$comp_state skipping");
- $info->{computers}->{$cid}->{"skip"} = 1;
- $info->{"computersskipped"} += 1;
- next;
- }
+ if ($self->can("node_status")) {
+ notify($ERRORS{'OK'}, 0, "calling " . ref($self) .
"->node_status()");
+
+ # Call node_status(), check the return value
+ $node_status = $self->node_status();
- #check lastcheck
- if (defined($last_check) && $comp_state !~ /failed/) {
- my $lastcheckepoch =
convert_to_epoch_seconds($last_check);
- my $currentimeepoch = convert_to_epoch_seconds();
- my $delta = ($currentimeepoch -
$lastcheckepoch);
-
- my $delta_minutes = round($delta / 60);
-
- if ($delta_minutes <= (60)) {
- notify($ERRORS{'OK'}, $LOG, "NODE
$comp_hostname recently checked $delta_minutes minutes ago skipping");
- #this node was recently checked
- $info->{computers}->{$cid}->{"skip"} = 1;
- $info->{"computersskipped"} += 1;
+ # Make sure a return value is defined, an error
occurred if it is undefined
+ if (!defined($node_status)) {
+ notify($ERRORS{'WARNING'}, 0, ref($self) .
"->node_status() returned an undefined value, returning");
next;
}
- $info->{"computerschecked"} += 1;
- } ## end if (defined($last_check) && $comp_state !~...
- #count the nodes processed
- $info->{"computercount"} += 1;
- eval "use $provisioning_perl_package";
- if ($EVAL_ERROR) {
- notify($ERRORS{'WARNING'}, $LOG,
"$provisioning_perl_package module could not be loaded");
- notify($ERRORS{'OK'}, $LOG, "returning 0");
- return 0;
- }
+ # Check what node_status returned and try to get the
"status" string
+ # First see if it returned a hashref
+ if (ref($node_status) eq 'HASH') {
+ notify($ERRORS{'OK'}, 0, "node_status returned
a hash reference");
+
+ # Check if the hash contains a key called
"status"
+ if (defined $node_status->{status}) {
+ $node_status_string =
$node_status->{status};
+ notify($ERRORS{'OK'}, 0, "node_status
hash reference contains key {status}=$node_status_string");
+ }
+ else {
+ notify($ERRORS{'OK'}, 0, "node_status
hash reference does not contain a key called 'status'");
+ }
+ } ## end if (ref($node_status) eq 'HASH')
- my $node_status = eval "&$provisioning_perl_package" .
'::node_status($info->{computertable}->{$cid});';
- if (!$EVAL_ERROR) {
- notify($ERRORS{'OK'}, $LOG, "loaded
$provisioning_perl_package");
- }
- else {
- notify($ERRORS{'WARNING'}, $LOG,
"$provisioning_perl_package module could not be loaded $@");
- }
+ # Check if node_status returned an array ref
+ elsif (ref($node_status) eq 'ARRAY') {
+ notify($ERRORS{'OK'}, 0, "node_status returned
an array reference");
+
+ # Check if the hash contains a key called
"status"
+ if (defined((@{$node_status})[0])) {
+ $node_status_string =
(@{$node_status})[0];
+ notify($ERRORS{'OK'}, 0, "node_status
array reference contains index [0]=$node_status_string");
+ }
+ else {
+ notify($ERRORS{'OK'}, 0, "node_status
array reference is empty");
+ }
+ } ## end elsif (ref($node_status) eq 'ARRAY') [ if
(ref($node_status) eq 'HASH')
- if (defined $node_status->{status}) {
- $node_status_string = $node_status->{status};
- notify($ERRORS{'DEBUG'}, $LOG, "node_status hash
reference contains key {status}=$node_status_string");
- }
+ # Check if node_status didn't return a reference
+ # Assume string was returned
+ elsif (!ref($node_status)) {
+ # Use scalar value of node_status's return value
+ $node_status_string = $node_status;
+ notify($ERRORS{'OK'}, 0, "node_status returned a
scalar: $node_status");
+ }
+ else {
+ notify($ERRORS{'WARNING'}, 0, ref($self->provisioner)
. "->node_status() returned an unsupported reference type: " .
ref($node_status) . ", returning");
+ next;
+ }
+ } ## end if ($self->provisioner->can("node_status"))
else {
- notify($ERRORS{'DEBUG'}, $LOG, "node_status hash
reference does not contain a key called 'status'");
- }
+ notify($ERRORS{'OK'}, 0, "node status
not checked, node_status() not implemented by " . ref($self->provisioner) . ",
assuming load=true ");
+ next;
+ }
- if ($node_status_string =~ /^ready/i) {
+ #count the nodes processed
+ $info->{"computercount"} += 1;
+
+ if ($node_status_string =~ /(^ready)|(post_load)/i) {
#proceed
- notify($ERRORS{'OK'}, $LOG, "nodestatus reports
$node_status_string for $comp_hostname");
+ notify($ERRORS{'OK'}, $LOG, "nodestatus reports
$node_status_string for $computer_hostname");
#update lastcheck datetime
$datestring = makedatestring;
- if (update_computer_lastcheck($comp_id, $datestring,
$LOG)) {
- notify($ERRORS{'OK'}, $LOG, "updated
lastcheckin for $comp_hostname");
+ if (update_computer_lastcheck($computer_id,
$datestring, $LOG)) {
+ notify($ERRORS{'OK'}, $LOG, "updated
lastcheckin for $computer_hostname");
}
#udpate state to available if old state is failed
- if ($comp_state =~ /failed/i) {
- if (update_computer_state($comp_id,
"available", $LOG)) {
- notify($ERRORS{'OK'}, $LOG, "updated
state to available for $comp_hostname");
+ if ($computer_state =~ /failed/i) {
+ if (update_computer_state($computer_id,
"available", $LOG)) {
+ notify($ERRORS{'OK'}, $LOG, "updated
state to available for $computer_hostname");
}
}
} ## end if ($node_status_string =~ /^ready/i)
elsif ($node_status_string =~ /^reload/i) {
$info->{computertable}->{$cid}->{node_status} =
\%{$node_status};
+
$info->{computertable}->{$cid}->{"computer_currentimage_name"} =
$computer_currentimage_name;
- notify($ERRORS{'OK'}, $LOG, "nodestatus reports
$node_status_string for $comp_hostname");
+ notify($ERRORS{'OK'}, $LOG, "nodestatus reports
$node_status_string for $computer_hostname");
#additional steps
my $node_available = 0;
- if ($comp_type eq "lab") {
+ if ($computer_type eq "lab") {
#no additional checks required for lab type
#if(lab_investigator($info->{computertable}->{$cid})){
# $node_available =1;
#}
}
- elsif ($comp_type eq "virtualmachine") {
+ elsif ($computer_type eq "virtualmachine") {
if
(_virtualmachine_investigator($info->{computertable}->{$cid})) {
$node_available = 1;
}
}
- elsif ($comp_type eq "blade") {
+ elsif ($computer_type eq "blade") {
if
(_blade_investigator($info->{computertable}->{$cid})) {
$node_available = 1;
}
@@ -326,22 +397,22 @@ sub process {
if ($node_available) {
#update state to available
- if (update_computer_state($comp_id,
"available", $LOG)) {
- notify($ERRORS{'OK'}, $LOG, "updated
state to available for $comp_hostname");
+ if (update_computer_state($computer_id,
"available", $LOG)) {
+ notify($ERRORS{'OK'}, $LOG, "updated
state to available for $computer_hostname");
}
#update lastcheck datetime
$datestring = makedatestring;
- if (update_computer_lastcheck($comp_id,
$datestring, $LOG)) {
- notify($ERRORS{'OK'}, $LOG, "updated
lastcheckin for $comp_hostname");
+ if (update_computer_lastcheck($computer_id,
$datestring, $LOG)) {
+ notify($ERRORS{'OK'}, $LOG, "updated
lastcheckin for $computer_hostname");
}
} ## end if ($node_available)
else{
- $info->{globalmsg}->{failedbody} .=
"$comp_hostname type= $comp_type offline\n";
+ $info->{globalmsg}->{failedbody} .=
"$computer_hostname type= $computer_type offline\n";
}
} ## end elsif ($node_status_string =~ /^reload/i) [ if
($node_status_string =~ /^ready/i)
else {
- notify($ERRORS{'OK'}, $LOG, "node_status reports
unknown value for $comp_hostname node_status_string= $node_status_string ");
+ notify($ERRORS{'OK'}, $LOG, "node_status reports
unknown value for $computer_hostname node_status_string= $node_status_string ");
}
@@ -368,9 +439,9 @@ sub _blade_investigator {
my ($self) = @_;
my $retval = 0;
- my $comp_hostname = $self->{computer}->{hostname};
- my $comp_imagename = $self->{imagerevision}->{imagename};
- my $comp_id = $self->{computer}->{id};
+ my $computer_hostname = $self->{computer}->{hostname};
+ my $comp_imagename = $self->{computer_currentimage_name};
+ my $computer_id = $self->{computer_id};
my $nodestatus_status = $self->{node_status}->{status};
my $nodestatus_nodetype = $self->{node_status}->{nodetype};
my $nodestatus_currentimage = $self->{node_status}->{currentimage};
@@ -379,18 +450,18 @@ sub _blade_investigator {
my $nodestatus_nodeset = $self->{node_status}->{nodeset};
my $nodestatus_ssh = $self->{node_status}->{ssh};
- notify($ERRORS{'OK'}, $LOG, "comp_hostname= $comp_hostname
node_status_status= $nodestatus_status");
+ notify($ERRORS{'OK'}, $LOG, "computer_hostname= $computer_hostname
node_status_status= $nodestatus_status");
#If can ping and can ssh into it, compare loaded image with database
imagename
if ($nodestatus_ping && $nodestatus_ssh) {
- if (_image_revision_check($comp_id, $comp_imagename,
$nodestatus_currentimage)) {
+ if (_image_revision_check($computer_id, $comp_imagename,
$nodestatus_currentimage)) {
#return success
- notify($ERRORS{'OK'}, $LOG, "comp_hostname=
$comp_hostname imagename updated");
+ notify($ERRORS{'OK'}, $LOG, "computer_hostname=
$computer_hostname imagename updated");
$retval = 1;
}
}
else {
- notify($ERRORS{'OK'}, $LOG, "comp_hostname= $comp_hostname is
confirmed down");
+ notify($ERRORS{'OK'}, $LOG, "computer_hostname=
$computer_hostname is confirmed down");
}
return $retval;
@@ -414,12 +485,11 @@ sub powerdown_event {
my $computer_host_name = $self->{computer}->{hostname};
my $computer_short_name = 0;
my $computer_ip_address = $self->{computer}->{IPaddress};
- my $image_os_name = $self->{image}->{OS}->{name};
my $image_name = $self->{imagerevision}->{imagename};
my $image_os_type = $self->{image}->{OS}->{type};
my $provisioning_perl_package =
$self->{computer}->{provisioning}->{module}->{perlpackage};
- my $comp_type = $self->{computer}->{type};
- my $comp_state =
$self->{computer}->{state}->{name};
+ my $computer_type = $self->{computer}->{type};
+ my $computer_state =
$self->{computer}->{state}->{name};
my $computer_node_name = $self->{computer}->{hostname};
my $power_down_stage =
$self->{powerdownstage};
@@ -428,7 +498,7 @@ sub powerdown_event {
#If blade or vm and available|failed|maintenance - simply power-off
#If blade and vmhostinuse - check vms, if available power-down all
- if(($comp_type =~ /blade/) && ($comp_state =~
/^(available|failed|maintenance)/)){
+ if(($computer_type =~ /blade/) && ($computer_state =~
/^(available|failed|maintenance)/)){
notify($ERRORS{'OK'}, $LOG, "calling provision module
$provisioning_perl_package power_off routine $computer_short_name");
eval "use $provisioning_perl_package";
@@ -446,7 +516,7 @@ sub powerdown_event {
return 0;
}
else{
- notify($ERRORS{'OK'}, $LOG, "SKIPPING $computer_short_name
comp_type= $comp_type in comp_state= $comp_state");
+ notify($ERRORS{'OK'}, $LOG, "SKIPPING $computer_short_name
computer_type= $computer_type in computer_state= $computer_state");
return 0;
}
@@ -468,9 +538,9 @@ sub _virtualmachine_investigator {
my ($self) = @_;
my $retval = 0;
- my $comp_hostname = $self->{computer}->{hostname};
- my $comp_imagename = $self->{imagerevision}->{imagename};
- my $comp_id = $self->{computer}->{id};
+ my $computer_hostname = $self->{computer}->{hostname};
+ my $comp_imagename = $self->{computer_currentimage_name};
+ my $computer_id = $self->{computer_id};
my $nodestatus_status = $self->{node_status}->{status};
my $nodestatus_currentimage = $self->{node_status}->{currentimage};
my $nodestatus_ping = $self->{node_status}->{ping};
@@ -485,14 +555,14 @@ sub _virtualmachine_investigator {
}
if ($nodestatus_currentimage && $nodestatus_ssh) {
- if (_image_revision_check($comp_id, $comp_imagename,
$nodestatus_currentimage)) {
+ if (_image_revision_check($computer_id, $comp_imagename,
$nodestatus_currentimage)) {
#return success
- notify($ERRORS{'OK'}, $LOG, "comp_hostname=
$comp_hostname imagename updated");
+ notify($ERRORS{'OK'}, $LOG, "computer_hostname=
$computer_hostname imagename updated");
$retval = 1;
}
}
else {
- notify($ERRORS{'OK'}, $LOG, "comp_hostname= $comp_hostname is
confirmed down nodestatus_vmstate= $nodestatus_vmstate nodestatus_ssh=
$nodestatus_ssh");
+ notify($ERRORS{'OK'}, $LOG, "computer_hostname=
$computer_hostname is confirmed down nodestatus_vmstate= $nodestatus_vmstate
nodestatus_ssh= $nodestatus_ssh");
}
return $retval;
@@ -512,13 +582,13 @@ sub _virtualmachine_investigator {
sub _image_revision_check {
- my ($comp_id, $comp_imagename, $nodestatus_currentimage) = @_;
+ my ($computer_id, $comp_imagename, $nodestatus_currentimage) = @_;
my $retval = 1;
#Return retval=1 only if update_computer_imagename fails
if ($comp_imagename !~ /$nodestatus_currentimage/) {
#update computer entry
- if (update_computer_imagename($comp_id,
$nodestatus_currentimage, $LOG)) {
+ if (update_computer_imagename($computer_id,
$nodestatus_currentimage, $LOG)) {
$retval = 1;
}
else {
@@ -527,6 +597,9 @@ sub _image_revision_check {
$retval = 0;
}
} ## end if ($comp_imagename !~ /$nodestatus_currentimage/)
+ else {
+ notify($ERRORS{'OK'}, $LOG, " image revisions match - no update
required");
+ }
return $retval;
Modified: incubator/vcl/trunk/managementnode/lib/VCL/utils.pm
URL:
http://svn.apache.org/viewvc/incubator/vcl/trunk/managementnode/lib/VCL/utils.pm?rev=1208737&r1=1208736&r2=1208737&view=diff
==============================================================================
--- incubator/vcl/trunk/managementnode/lib/VCL/utils.pm (original)
+++ incubator/vcl/trunk/managementnode/lib/VCL/utils.pm Wed Nov 30 19:53:47 2011
@@ -106,7 +106,6 @@ our @EXPORT = qw(
delete_request
disablesshd
escape_file_path
- firewall_compare_update
format_data
format_number
get_affiliation_info
@@ -301,6 +300,7 @@ INIT {
$CONF_FILE_PATH = "/etc/vcl/vcld.conf";
}
}
+#$CONF_FILE_PATH ="/usr/local/vcldev/fap/managementnode/etc/vcl/vcld.conf";
# Store the command line options in hash
our %OPTIONS;
@@ -5224,7 +5224,7 @@ EOF
$select_statement .= "imagerevision.id =
'$imagerevision_identifier'";
}
else{
- $select_statement .= "imagerevision.imagename =
'$imagerevision_identifier'";
+ $select_statement .= "imagerevision.imagename =
\'$imagerevision_identifier\'";
}
# Call the database select subroutine
@@ -5233,7 +5233,7 @@ EOF
# Check to make sure 1 row was returned
if (!@selected_rows) {
- notify($ERRORS{'DEBUG'}, 0, "imagerevision
'$imagerevision_identifier' was not found in the database, 0 rows were returned
from database select statement:\n$select_statement");
+ notify($ERRORS{'WARNING'}, 0, "imagerevision
'$imagerevision_identifier' was not found in the database, 0 rows were returned
from database select statement:\n$select_statement");
return;
}
elsif (scalar @selected_rows > 1) {
@@ -8098,12 +8098,15 @@ sub get_computer_grp_members {
FROM
resourcegroupmembers,
resourcetype,
- resource
+ resource,
+ computer
WHERE
resourcegroupmembers.resourceid = resource.id
AND resourcetype.id = resource.resourcetypeid
AND resourcetype.name = 'computer'
AND resourcegroupmembers.resourcegroupid = $computer_grp_id
+ AND computer.deleted != '1'
+ AND computer.id = resource.subid
";
# Call the database select subroutine
@@ -8466,7 +8469,7 @@ EOF
# If the computer identifier is all digits match it to computer.id
# Otherwise, match computer.hostname
if ($computer_identifier =~ /^\d+$/) {
- $select_statement .= "computer.id = $computer_identifier";
+ $select_statement .= "computer.id = \'$computer_identifier\'";
}
else {
$select_statement .= "computer.hostname REGEXP
'$computer_identifier(\\\\.|\$)'";
@@ -8550,6 +8553,8 @@ EOF
my $next_image_id = $computer_info->{nextimageid};
if ($next_image_id && (my $nextimage_info =
get_image_info($next_image_id))) {
my $next_image_name = $nextimage_info->{name};
+ #trim trailing white space
+ $next_image_name =~ s/\s+$//;
my $next_imagerevision_info =
get_imagerevision_info($next_image_name);
if ($next_imagerevision_info) {
@@ -8557,7 +8562,7 @@ EOF
$computer_info->{nextimage} =
$next_imagerevision_info->{image};
}
else {
- notify($ERRORS{'WARNING'}, 0, "failed to retrieve
nextimage info for $computer_hostname, nextimageid=$next_image_id");
+ notify($ERRORS{'WARNING'}, 0, "failed to retrieve
nextimage info for $computer_hostname, nextimageid=$next_image_id
next_image_name=$next_image_name");
}
}