App-ElasticSearch-Utilities
view release on metacpan or search on metacpan
lib/App/ElasticSearch/Utilities.pm view on Meta::CPAN
# Set defaults
%DEF = (
# Connection Options
HOST => exists $opts->{host} ? $opts->{host}
: exists $opts->{local} ? 'localhost'
: exists $_GLOBALS{host} ? $_GLOBALS{host}
: 'localhost',
PORT => exists $opts->{port} ? $opts->{port}
: exists $_GLOBALS{port} ? $_GLOBALS{port}
: 9200,
PROTO => exists $opts->{proto} ? $opts->{proto}
: exists $_GLOBALS{proto} ? $_GLOBALS{proto}
: 'http',
TIMEOUT => exists $opts->{timeout} ? $opts->{timeout}
: exists $_GLOBALS{timeout} ? $_GLOBALS{timeout}
: 10,
NOOP => exists $opts->{noop} ? $opts->{noop}
: exists $_GLOBALS{noop} ? $_GLOBALS{noop}
: undef,
NOPROXY => exists $opts->{'keep-proxy'} ? 0
: exists $_GLOBALS{'keep-proxy'} ? $_GLOBALS{'keep-proxy'}
: 1,
MASTERONLY => exists $opts->{'master-only'} ? $opts->{'master-only'} : 0,
# Index selection opts->ions
INDEX => exists $opts->{index} ? $opts->{index} : undef,
BASE => exists $opts->{base} ? lc $opts->{base}
: exists $_GLOBALS{base} ? $_GLOBALS{base}
: undef,
PATTERN => exists $opts->{pattern} ? $opts->{pattern} : '*',
DAYS => exists $opts->{days} ? $opts->{days}
: exists $_GLOBALS{days} ? $_GLOBALS{days} : 1,
# HTTP Basic Authentication
USERNAME => exists $opts->{'http-username'} ? $opts->{'http-username'}
: exists $_GLOBALS{'http-username'} ? $_GLOBALS{'http-username'}
: $ENV{USER},
PASSEXEC => exists $opts->{'password-exec'} ? $opts->{'password-exec'}
: exists $_GLOBALS{'password-exec'} ? $_GLOBALS{'password-exec'}
: undef,
# TLS Options
INSECURE => exists $opts->{insecure} ? 1
: exists $_GLOBALS{insecure} ? $_GLOBALS{insecure}
: 0,
CACERT => exists $opts->{cacert} ? 1
: exists $_GLOBALS{cacert} ? $_GLOBALS{cacert}
: undef,
CAPATH => exists $opts->{capath} ? 1
: exists $_GLOBALS{capath} ? $_GLOBALS{capath}
: undef,
CERT => exists $opts->{cert} ? 1
: exists $_GLOBALS{cert} ? $_GLOBALS{cert}
: undef,
KEY => exists $opts->{key} ? 1
: exists $_GLOBALS{key} ? $_GLOBALS{key}
: undef,
);
CLI::Helpers::override(verbose => 1) if $DEF{NOOP};
if( $DEF{NOPROXY} ) {
debug("Removing any active HTTP Proxies from ENV.");
delete $ENV{$_} for qw(http_proxy HTTP_PROXY);
}
# Build the Index Pattern
$PATTERN = $DEF{PATTERN};
my @ordered = qw(* DATE ANY);
foreach my $literal ( @ordered ) {
$PATTERN =~ s/\Q$literal\E/$PATTERN_REGEX{$literal}/g;
}
}
# Regexes for Pattern Expansion
our $CURRENT_VERSION;
my $CLUSTER_MASTER;
sub es_globals {
my ($key) = @_;
es_utils_initialize() unless keys %DEF;
return unless exists $_GLOBALS{$key};
return $_GLOBALS{$key};
}
my %_auth_cache = ();
sub es_basic_auth {
my ($host) = @_;
es_utils_initialize() unless keys %DEF;
$host ||= $DEF{HOST};
# Return the results if we've done this already
return @{ $_auth_cache{$host} }{qw(username password)}
if exists $_auth_cache{$host};
# Set the cached element
my %auth = ();
# Lookup the details netrc
my $netrc = Net::Netrc->lookup($host);
if( $DEF{HOST} eq $host ) {
%auth = map { lc($_) => $DEF{$_} } qw(USERNAME);
}
my %meta = ();
foreach my $k (qw( http-username password-exec )) {
foreach my $name ( $DEF{INDEX}, $DEF{BASE} ) {
next unless $name;
if( my $v = es_local_index_meta($k, $name) ) {
$meta{$k} = $v;
last;
}
}
}
( run in 0.511 second using v1.01-cache-2.11-cpan-71847e10f99 )