diff --git a/docs/source/advanced/goconserver/quickstart.rst b/docs/source/advanced/goconserver/quickstart.rst index e53aa0ed6..bf4b873e9 100644 --- a/docs/source/advanced/goconserver/quickstart.rst +++ b/docs/source/advanced/goconserver/quickstart.rst @@ -1,25 +1,29 @@ Quickstart ========== -To enable ``goconserver`` +#. For refresh xCAT installation, run the command below to start and configure ``goconserver`` -#. For switching from ``conserver``, shall stop it first + makegocons - #. stop ``conserver`` + The new console logs will start logging to ``/var/log/consoles/.log`` + +#. For xCAT updating, and use ``conserver`` before, following the step below to enable ``goconserver`` + + #. stop ``conserver`` on management node systemctl stop conserver.service - #. (Optional) for service nodes: - - chdef -t group -o service setupconserver=2 + #. For hierarchical cluster, shall also stop ``conserver`` on **service nodes**, and config ``goconserver`` as console server: xdsh service 'systemctl stop conserver.service' -#. To start and configure ``goconserver`` + chdef -t group -o service setupconserver=2 + + #. start and configure ``goconserver`` makegocons - The new console logs will start logging to ``/var/log/consoles/.log`` + The new console logs will start logging to ``/var/log/consoles/.log`` #. To check the console status of nodes, use: diff --git a/docs/source/advanced/networks/onie_switches/os_cumulus/install.rst b/docs/source/advanced/networks/onie_switches/os_cumulus/install.rst index 4be0107b8..ca7dcdf76 100644 --- a/docs/source/advanced/networks/onie_switches/os_cumulus/install.rst +++ b/docs/source/advanced/networks/onie_switches/os_cumulus/install.rst @@ -86,7 +86,7 @@ To ease in the management of the switch, xCAT provides a script to help configur Execute the following to sync the xCAT keys to the switch: :: - /opt/xcat/share/xcat/scripts/configonie --switches frame01sw1 --ssh + rspconfig frame01sw1 sshcfg Validate the ssh keys are correctly configured by running a ``xdsh`` command: :: diff --git a/docs/source/conf.py b/docs/source/conf.py index 9592b9db5..4402d6d7f 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -59,7 +59,7 @@ author = u'IBM Corporation' # The short X.Y version. version = '2' # The full version, including alpha/beta/rc tags. -release = '2.14.2' +release = '2.14.3' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/docs/source/overview/xcat2_release.rst b/docs/source/overview/xcat2_release.rst index dc55d75e0..486faf10e 100644 --- a/docs/source/overview/xcat2_release.rst +++ b/docs/source/overview/xcat2_release.rst @@ -14,8 +14,14 @@ xCAT 2.14.x |xCAT |New OS |New |New Feature | |Version | |Hardware | | +=================================+===============+=============+==================================+ -|| xCAT 2.14.2 2018/7/13 |- Ubuntu 18.04 | | | +|| xCAT 2.14.3 2018/8/24 |- SLES12.3 | |- OpenBMC rflash enhancement | || | | | | +| `2.14.3 Release Notes `_ | | |- goconserver v0.3.1 | ++---------------------------------+---------------+-------------+----------------------------------+ +|| xCAT 2.14.2 2018/7/13 |- Ubuntu 18.04 | | | +|| |- RHEL6.10 | | | | `2.14.2 Release Notes `_ | | | | diff --git a/perl-xCAT/xCAT/Client.pm b/perl-xCAT/xCAT/Client.pm index bc090c890..888c9242a 100644 --- a/perl-xCAT/xCAT/Client.pm +++ b/perl-xCAT/xCAT/Client.pm @@ -174,6 +174,7 @@ sub submit_request { # Load plugins from either specified or default dir require xCAT::Table; + populate_site_hash(); my %cmd_handlers; my @plugins_dirs = split('\:', $ENV{XCATBYPASS}); if (-d $plugins_dirs[0]) { @@ -192,8 +193,6 @@ sub submit_request { scan_plugins(); } - populate_site_hash(); - # don't do XML transformation -- assume request is well-formed # my $xmlreq=XMLout($request,RootName=>xcatrequest,NoAttr=>1,KeyAttr=>[]); # $request = XMLin($xmlreq,SuppressEmpty=>undef,ForceArray=>1) ; diff --git a/perl-xCAT/xCAT/Table.pm b/perl-xCAT/xCAT/Table.pm index 99bf2210c..103f8a09a 100644 --- a/perl-xCAT/xCAT/Table.pm +++ b/perl-xCAT/xCAT/Table.pm @@ -2312,10 +2312,6 @@ sub setNodesAttribs { #-------------------------------------------------------------------------------- sub getNodesAttribs { my $self = shift; - if ($dbworkerpid > 0) { - return dbc_call($self, 'getNodesAttribs', @_); - } - $self->trace_db(START_TYPE); my $nodelist = shift; unless ($nodelist) { $nodelist = []; } #common to be invoked with undef seemingly my %options = (); @@ -2326,6 +2322,21 @@ sub getNodesAttribs { } else { @attribs = @_; } + + if (!exists($options{hierarchy_attrs})) { + my @hierarchy_attrs = (); + my $hierarchy_field = xCAT::TableUtils->get_site_attribute("hierarchicalattrs"); + if ($hierarchy_field) { + @hierarchy_attrs = split(/,/, $hierarchy_field); + } + $options{hierarchy_attrs} = \@hierarchy_attrs; + } + + if ($dbworkerpid > 0) { + return dbc_call($self, 'getNodesAttribs', $nodelist, \@attribs, %options); + } + + $self->trace_db(START_TYPE); my @realattribs = @attribs; #store off the requester attribute list, the cached columns may end up being a superset and we shouldn't return more than asked #it should also be the case that cache will be used if it already is in play even if below cache threshold. This would be desired behavior if (scalar(@$nodelist) > $cachethreshold) { @@ -2348,12 +2359,12 @@ sub getNodesAttribs { $self->{nodelist}->{_use_cache} = 1; } my $rethash; - my @hierarchy_attrs = (); - my $hierarchy_field = xCAT::TableUtils->get_site_attribute("hierarchicalattrs"); - if ($hierarchy_field) { - @hierarchy_attrs = split(/,/, $hierarchy_field); - } - $options{hierarchy_attrs} = \@hierarchy_attrs; + #my @hierarchy_attrs = (); + #my $hierarchy_field = xCAT::TableUtils->get_site_attribute("hierarchicalattrs"); + #if ($hierarchy_field) { + # @hierarchy_attrs = split(/,/, $hierarchy_field); + #} + #$options{hierarchy_attrs} = \@hierarchy_attrs; foreach (@$nodelist) { my @nodeentries = $self->getNodeAttribs($_, \@realattribs, %options); $rethash->{$_} = \@nodeentries; #$self->getNodeAttribs($_,\@attribs); @@ -2732,20 +2743,10 @@ sub transRegexAttrs sub getNodeAttribs { my $self = shift; - if ($dbworkerpid > 0) { #TODO: should this be moved outside of the DB worker entirely? I'm thinking so, but I don't dare do so right now... - #the benefit would be the potentially computationally intensive substitution logic would be moved out and less time inside limited - #db worker scope - return dbc_call($self, 'getNodeAttribs', @_); - } - $self->trace_db(START_TYPE); - - if (!defined($self->{dbh})) { - xCAT::MsgUtils->message("S", "xcatd: DBI is missing, Please check the db access process."); - return undef; - } my $node = shift; - my @attribs; + my %options = (); + my @attribs; if (ref $_[0]) { @attribs = @{ shift() }; %options = @_; @@ -2761,6 +2762,17 @@ sub getNodeAttribs } $options{hierarchy_attrs} = \@hierarchy_attrs; } + if ($dbworkerpid > 0) { #TODO: should this be moved outside of the DB worker entirely? I'm thinking so, but I don't dare do so right now... + #the benefit would be the potentially computationally intensive substitution logic would be moved out and less time inside limited + #db worker scope + return dbc_call($self, 'getNodeAttribs', $node, \@attribs, %options); + } + $self->trace_db(START_TYPE); + + if (!defined($self->{dbh})) { + xCAT::MsgUtils->message("S", "xcatd: DBI is missing, Please check the db access process."); + return undef; + } my $datum; my $oldusecache; diff --git a/perl-xCAT/xCAT/TableUtils.pm b/perl-xCAT/xCAT/TableUtils.pm index 8fde01aa3..472a2aedc 100755 --- a/perl-xCAT/xCAT/TableUtils.pm +++ b/perl-xCAT/xCAT/TableUtils.pm @@ -1261,27 +1261,28 @@ sub getAppStatus get_site_attribute Arguments: - + $attribute -- the attribute you want to get + $dvalue -- Optional, the default string value if the attribute does not exist Returns: The value of the attribute requested from the site table - Globals: - none - Error: - undef - Example: - @attr=xCAT::TableUtils->get_site_attribute($attribute); - Comments: - none + Globals: + %::XCATSITEVALS + Error: + undef + Example: + @attr=xCAT::TableUtils->get_site_attribute($attribute); + Comments: + none =cut #------------------------------------------------------------------------ sub get_site_attribute { - my ($class, $attr) = @_; + my ($class, $attr, $dvalue) = @_; my $values; - if (defined($::XCATSITEVALS{$attr})) { + if (%::XCATSITEVALS) { $values = ($::XCATSITEVALS{$attr}); } else { my $sitetab = xCAT::Table->new('site'); @@ -1300,7 +1301,8 @@ sub get_site_attribute } } - return $values; + return $values if ( defined $values); + return $dvalue; } diff --git a/xCAT-server/lib/xcat/plugins/onie.pm b/xCAT-server/lib/xcat/plugins/onie.pm index 18c2f2919..817c4d8eb 100644 --- a/xCAT-server/lib/xcat/plugins/onie.pm +++ b/xCAT-server/lib/xcat/plugins/onie.pm @@ -107,6 +107,8 @@ sub process_request { my $subcmd = $exargs[0]; if ($subcmd eq 'sshcfg') { process_sshcfg($nodes, $callback); + } else { + xCAT::MsgUtils->message("I", { data => ["The rspconfig command $subcmd is not supported"] }, $callback); } } diff --git a/xCAT-server/lib/xcat/plugins/openbmc.pm b/xCAT-server/lib/xcat/plugins/openbmc.pm index 9cec2c352..10b11257c 100644 --- a/xCAT-server/lib/xcat/plugins/openbmc.pm +++ b/xCAT-server/lib/xcat/plugins/openbmc.pm @@ -4646,10 +4646,10 @@ sub rflash_response { $version_num ++; my $flash_success_msg = "$node: $firm_msg activation successful."; push @{ $rsp->{data} },$flash_success_msg; + print RFLASH_LOG_FILE_HANDLE "$flash_success_msg\n"; # Activation state of active and priority of 0 indicates the activation has been completed if ( $length == $version_num ) { xCAT::MsgUtils->message("I", $rsp, $callback) if ($rsp); - print RFLASH_LOG_FILE_HANDLE "$flash_success_msg\n"; $node_info{$node}{rst} = "$flash_success_msg"; if (!$::UPLOAD_ACTIVATE_STREAM) { $wait_node_num--; diff --git a/xCAT-server/lib/xcat/plugins/sles.pm b/xCAT-server/lib/xcat/plugins/sles.pm index e3fac8e27..7470483b1 100644 --- a/xCAT-server/lib/xcat/plugins/sles.pm +++ b/xCAT-server/lib/xcat/plugins/sles.pm @@ -1632,7 +1632,6 @@ sub copycd { my $dinfo; open($dinfo, $mntpath . "/content"); - my $darch; while (<$dinfo>) { if (m/^DEFAULTBASE\s+(\S+)/) diff --git a/xCAT-server/lib/xcat/plugins/switch.pm b/xCAT-server/lib/xcat/plugins/switch.pm index 1639b3be0..94b1ba96a 100644 --- a/xCAT-server/lib/xcat/plugins/switch.pm +++ b/xCAT-server/lib/xcat/plugins/switch.pm @@ -420,9 +420,12 @@ sub process_switch_config { xCAT::MellanoxIB::setConfig($nodes, $callback, $subreq, $subcommand, $argument); } } else { - my $rsp = {}; - $rsp->{error}->[0] = "The following '$t' switches are unsuppored:\n@$nodes"; - $callback->($rsp); + #onie switch will processed in the onie plug in + unless ($t =~ /onie/i) { + my $rsp = {}; + $rsp->{error}->[0] = "The following '$t' switches are not supported:\n@$nodes"; + $callback->($rsp); + } } } } diff --git a/xCAT-server/sbin/xcatd b/xCAT-server/sbin/xcatd index 7a037e2e1..b9729d12c 100755 --- a/xCAT-server/sbin/xcatd +++ b/xCAT-server/sbin/xcatd @@ -970,6 +970,10 @@ if (defined $pid_init) { %cmd_handlers = %{ fd_retrieve($readpipe) }; } else { $$progname = "xcatd: plugin initialization"; + if (xCAT::Utils->isServiceNode()) { + # Cache the site hash to accelerate the speed of init_plugins on SN + populate_site_hash(); + } scan_plugins($writepipe); exit(0); }