diff options
Diffstat (limited to 'vespaclient/src/perl/lib/Yahoo/Vespa/ContentNodeSelection.pm')
-rw-r--r-- | vespaclient/src/perl/lib/Yahoo/Vespa/ContentNodeSelection.pm | 145 |
1 files changed, 0 insertions, 145 deletions
diff --git a/vespaclient/src/perl/lib/Yahoo/Vespa/ContentNodeSelection.pm b/vespaclient/src/perl/lib/Yahoo/Vespa/ContentNodeSelection.pm deleted file mode 100644 index 0886cb50da0..00000000000 --- a/vespaclient/src/perl/lib/Yahoo/Vespa/ContentNodeSelection.pm +++ /dev/null @@ -1,145 +0,0 @@ -# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -# -# This module implements a way to select a subset of nodes from a Vespa -# application. -# - -package Yahoo::Vespa::ContentNodeSelection; - -use strict; -use warnings; -use Yahoo::Vespa::ArgParser; -use Yahoo::Vespa::ConsoleOutput; -use Yahoo::Vespa::Utils; -use Yahoo::Vespa::VespaModel; - -BEGIN { # - Declare exports and dependency aliases for module - use base 'Exporter'; - our @EXPORT = qw( - NO_LOCALHOST_CONSTRAINT - CLUSTER_ONLY_LIMITATION - ); - # Package aliases - *VespaModel:: = *Yahoo::Vespa::VespaModel:: ; -} - -my $CLUSTER; -my $NODE_TYPE; -my $INDEX; -my $FORCE = 0; -our $LOCALHOST; - -use constant NO_LOCALHOST_CONSTRAINT => 1; -use constant CLUSTER_ONLY_LIMITATION => 2; - -return 1; - -######################## Externally usable functions ####################### - -sub registerCommandLineArguments { # (Flags) - my ($flags) = @_; - if (!defined $flags) { $flags = 0; } - if (($flags & NO_LOCALHOST_CONSTRAINT) == 0) { - $LOCALHOST = getHostname(); - } else { - $LOCALHOST = undef; - } - if (($flags & CLUSTER_ONLY_LIMITATION) == 0) { - setOptionHeader("Node selection options. By default, nodes running " - . "locally will be selected:"); - } - setStringOption( - ['c', 'cluster'], - \$CLUSTER, - 'Cluster name. ' - . 'If unspecified, and vespa is installed on current node, ' - . 'information will be attempted auto-extracted'); - setFlagOption( - ['f', 'force'], - \$FORCE, - 'Force execution'); - if (($flags & CLUSTER_ONLY_LIMITATION) == 0) { - setStringOption( - ['t', 'type'], - \$NODE_TYPE, - 'Node type - can either be \'storage\' or ' - . '\'distributor\'. If not specified, the operation will use ' - . 'state for both types.'); - setIntegerOption( - ['i', 'index'], - \$INDEX, - 'Node index. If not specified, all nodes ' - . 'found running on this host will be used.'); - } -} -sub visit { # (Callback) - my ($callback) = @_; - printDebug "Visiting selected services: " - . "Cluster " . (defined $CLUSTER ? $CLUSTER : 'undef') - . " node type " . (defined $NODE_TYPE ? $NODE_TYPE : 'undef') - . " index " . (defined $INDEX ? $INDEX : 'undef') - . " localhost only ? " . ($LOCALHOST ? "true" : "false") . "\n"; - VespaModel::visitServices(sub { - my ($info) = @_; - $$info{'type'} = &convertType($$info{'type'}); - if (!&validType($$info{'type'})) { return; } - if (defined $CLUSTER && $CLUSTER ne $$info{'cluster'}) { return; } - if (defined $NODE_TYPE && $NODE_TYPE ne $$info{'type'}) { return; } - if (defined $INDEX && $INDEX ne $$info{'index'}) { return; } - if (!defined $INDEX && defined $LOCALHOST - && $LOCALHOST ne $$info{'host'}) - { - return; - } - # printResult "Ok $$info{'cluster'} $$info{'type'} $$info{'index'}\n"; - &$callback($info); - }); -} -sub showSettings { # () - printDebug "Visiting selected services: " - . "Cluster " . (defined $CLUSTER ? $CLUSTER : 'undef') - . " node type " . (defined $NODE_TYPE ? $NODE_TYPE : 'undef') - . " index " . (defined $INDEX ? $INDEX : 'undef') - . " localhost only ? " . ($LOCALHOST ? "true" : "false") . "\n"; -} - -sub validateCommandLineArguments { # (WantedState) - my ($wanted_state) = @_; - - if (defined $NODE_TYPE) { - if ($NODE_TYPE !~ /^(distributor|storage)$/) { - printWarning "Invalid value '$NODE_TYPE' given for node type.\n"; - return 0; - } - } - - if (!$FORCE && - (!defined $NODE_TYPE || $NODE_TYPE eq "distributor") && - $wanted_state eq "maintenance") { - printWarning "Setting the distributor to maintenance mode may have " - . "severe consequences for feeding!\n" - . "Please specify -t storage to only set the storage node to " - . "maintenance mode, or -f to override this error.\n"; - return 0; - } - - printDebug "Command line arguments validates ok\n"; - return 1; -} - -sub hasClusterSelection { - return defined $CLUSTER; -} - -############## Utility functions - Not intended for external use ############# - -sub validType { # (ServiceType) -> Bool - my ($type) = @_; - return $type =~ /^(?:distributor|storage)$/; -} -sub convertType { # (ServiceType) -> Bool - my ($type) = @_; - if ($type eq 'storagenode') { return 'storage'; } - return $type; -} - |