diff --git a/xCAT-probe/subcmds/osdeploy b/xCAT-probe/subcmds/osdeploy index bbcbd1914..144f31cea 100755 --- a/xCAT-probe/subcmds/osdeploy +++ b/xCAT-probe/subcmds/osdeploy @@ -53,7 +53,7 @@ $::USAGE = "Usage: $program_name -n <node_range> -r <roll_back_duration> [-p <level>] [-V] Description: - Probe operating system provision process. Supports two modes - 'Realtime monitor' and 'Replay history'. + Probe operating system provision process. Supports two modes - 'Realtime monitor' and 'Replay history'. Realtime monitor: This is a default. This tool with monitor provision state of the node. Trigger 'Realtime monitor' before rebooting target node to do provisioning. Replay history: Used after provisioning is finished to probe the previously completed provisioning. @@ -61,7 +61,7 @@ Description: Options: -h : Get usage information of $program_name - -V : Output more information + -V : Output more information -n : The range of nodes to be monitored or replayed. -t : The maximum time to wait when doing monitor, unit is minutes. default is 60. -r : Trigger 'Replay history' mode. Follow the duration of rolling back. Units are 'h' (hour) or 'm' (minute) @@ -231,11 +231,11 @@ sub do_pre_check { =head3 Description: Obtain the network interface of provision - Arguments: + Arguments: installnic_ref: (output attribute) the reference of scalar which save the provision network interface. return_error_ref: (output attribute) the reference of array which save the error information. Returns: - 0: success + 0: success 1: failed =cut @@ -266,9 +266,9 @@ sub obtain_install_nic { =head3 Description: Check if the definition of all nodes are valid - If all nodes definition are valid, initialize below global attributes which will be used as a map in "Monitor" or "Replay" + If all nodes definition are valid, initialize below global attributes which will be used as a map in "Monitor" or "Replay" %macmap, %ipnodemap - + Arguments: node_range: node range Returns: @@ -355,15 +355,15 @@ sub check_noderange { =head3 Description: - Initailize a very important hash "%node_state" which will save the state information of every node + Initailize a very important hash "%node_state" which will save the state information of every node Arguments: noderange: (input attribute) The range of node - node_state_ref: (output attribute) the reference of hash "%node_state" + node_state_ref: (output attribute) the reference of hash "%node_state" The strucuture of hash "%node_state" are : - $node_state{<node>}{statehistory} Array. save the latest loop provision states - $node_state{<node>}{done} Scalar. the flag of if the node have finished the provision - $node_state{<node>}{allstatehistory} Array. save the history states before the latest loop provision. Used in debug mode. - $node_state{<node>}{log} Array. save all related logs of node. Used in debug mode. + $node_state{<node>}{statehistory} Array. save the latest loop provision states + $node_state{<node>}{done} Scalar. the flag of if the node have finished the provision + $node_state{<node>}{allstatehistory} Array. save the history states before the latest loop provision. Used in debug mode. + $node_state{<node>}{log} Array. save all related logs of node. Used in debug mode. Returns: NULL =cut @@ -391,9 +391,9 @@ sub init_node_state { noderange : the range of node start_time_of_replay: the start time point of scaning log end_time_of_replay: the end time point of scaning log - + Returns: - 0: success + 0: success 1: failed =cut @@ -429,7 +429,7 @@ sub do_replay { my $rst = $log_parse->obtain_one_second_logs($start_time_of_replay, \@valid_one_second_log_set); if ($rst) { probe_utils->send_msg("stdout", "d", "Failed to obtain logs from log files"); - $rc = 1; + $rc = 1; last; } @@ -438,7 +438,7 @@ sub do_replay { } $start_time_of_replay = $log_parse->obtain_next_second(); - + # receive terminal signal from customer if ($terminal) { probe_utils->send_msg("stdout", "d", "Get INT or TERM signal!!!"); @@ -518,8 +518,8 @@ sub conclusion_report { # Cover limited non-privision error when replay # 1 if power on target node successfully and there is 'running postbootscript' in node state history, but without "installing" state, # It is very possible to just do reboot process - # 2 if there isn't reboot operation for target node during the rollback time window - # That means there isn't provision process happened + # 2 if there isn't reboot operation for target node during the rollback time window + # That means there isn't provision process happened unless ($monitor) { if (! $start_rpower) { @@ -606,14 +606,14 @@ sub performance_calculation { my @time_content; # print table's first line # @status_for_time: the status that needed to calculate time - + my @title_lines = ( [qw/NODE ELAPSED/], [qw/NODE SVRBOOT INSTALL POST POSTBOOT ELAPSED/], [qw/NODE RPOWER DHCP BOOTLOADER KERNEL INITRD INSTALL POST POSTBOOT COMPLETED/], [qw/NODE RPOWER DHCP BOOTLOADER KERNEL INITRD NETBOOTING ROOTIMG POSTBOOT COMPLETED/], [qw/NODE DHCP BOOTLOADER KERNEL INITRD NETBOOTING ROOTIMG POSTBOOT ELAPSED/]); - + if ($performance eq "compact") { push @time_content, "Provision Time"; push @time_content, $title_lines[0]; @@ -659,9 +659,9 @@ sub performance_calculation { # If there is start time of kernel, but dhcp or bootloader's time value larger than kernel. It means dhcp and bootloader is after kernel, not the value we wanted. } elsif ($node_status_time{$node}{$status}{start_time} > $node_status_time{$node}{$::STATE_KERNEL}{start_time}) { push @timeinfo, "NULL"; - $isnull = 1; + $isnull = 1; } else { - push @timeinfo, $node_status_time{$node}{$status}{time_point}; + push @timeinfo, $node_status_time{$node}{$status}{time_point}; } } elsif ($status >= $::STATE_INSTALLRPM and (!$node_status_time{$node}{$status-1}{start_time} and !$node_status_time{$node}{$status-1}{end_time})) { push @timeinfo, "NULL"; @@ -706,7 +706,7 @@ sub performance_calculation { $isnull = 1; } else { push @timeinfo, probe_utils->convert_second_to_time($tmp_end_time - $tmp_start_time); - } + } } else { push @timeinfo, "NULL"; $isnull = 1; @@ -745,7 +745,7 @@ sub performance_calculation { Implement the monitor feature Arguments: noderange : the range of node - maxwaittime: the max waiting time for monitor. + maxwaittime: the max waiting time for monitor. Returns: 0: success 1: failed @@ -930,8 +930,8 @@ sub all_monitor_node_done { Description: Handle one line DHCP log Arguments: - log_ref: (input attribute) the reference of hash which save one line dhcp log. - node_state_ref: (output attribute), the reference of hash "%node_state". refer to function "init_node_state" for the structure of "%node_state" + log_ref: (input attribute) the reference of hash which save one line dhcp log. + node_state_ref: (output attribute), the reference of hash "%node_state". refer to function "init_node_state" for the structure of "%node_state" Returns: NULL =cut @@ -965,7 +965,7 @@ sub handle_dhcp_msg { my $ip = $1; my $mac = $2; my $nic = $3; - + if (exists $macmap{$mac}) { my $node = $macmap{$mac}{"node"}; my $record = $log_ref->{msg}; @@ -1225,7 +1225,7 @@ sub handle_cluster_msg { } } elsif ($status eq "failed") { $node_state_ref->{$node}{done} = 1; - } + } } } } @@ -1302,10 +1302,10 @@ sub handle_compute_msg { =head3 Description: - Dispatch log to related handler + Dispatch log to related handler Arguments: log_ref: (input attribute) the reference of hash which save one line log comes from computes.log. - candidate_mn_hostname_in_log_ref: (input attribute) The reference of array which save the candidate host name of MN + candidate_mn_hostname_in_log_ref: (input attribute) The reference of array which save the candidate host name of MN node_state_ref: (output attribute), the reference of hash "%node_state". refer to function "init_node_state" for the structure of "%node_state" Returns: NULL @@ -1340,7 +1340,7 @@ sub dispatch_log_to_handler { Arguments: node_state_ref: (input/output attribute), the reference of hash "%node_state". refer to function "init_node_state" for the structure of "%node_state" node : (input attribute) The node name - newstate : (input attribute) The new state of node + newstate : (input attribute) The new state of node Returns: NULL =cut