Data-AnyXfer
view release on metacpan or search on metacpan
lib/Data/AnyXfer/Elastic/ServerDict.pm view on Meta::CPAN
package Data::AnyXfer::Elastic::ServerDict;
use Modern::Perl;
use Carp;
use Moo;
use MooX::Types::MooseLike::Base qw(:all);
use Data::AnyXfer::Elastic::ServerDefinition ();
=head1 NAME
Data::AnyXfer::Elastic::ServerDict - Logic for server selection and metadata lookup
=head1 SYNOPSIS
use Data::AnyXfer::Elastic::ServerDict ();
# Create dictionary from env
my $dict = Data::AnyXfer::Elastic::ServerDict->from_env;
# Or manually add server definitions
my $dict = Data::AnyXfer::Elastic::ServerDict->new;
$dict->add_server_definition($def);
# Now lookup information needed for connecting or importing
#Â data
my @nodes = $dict->all_testing_nodes;
my @nodes = $dict->all_development_nodes;
my @nodes = $dict->get_silo_nodes('public_data');
=head1 DESCRIPTION
This class provides the metadata and connection info lookup logic for
L<Data::AnyXfer::Elastic> to locate or populate your Elasticsearch instances.
=cut
use constant CURRENT_ENV_VARNAME => 'DATA_ANYXFER_ES_CURRENT_ENV';
has server_definitions => (
is => 'ro',
isa => ArrayRef[InstanceOf['Data::AnyXfer::Elastic::ServerDefinition']],
default => sub { return [] },
);
has current_env => (
is => 'ro',
isa => Maybe[Str],
default => sub {
return $ENV{CURRENT_ENV_VARNAME()} || undef;
},
);
has _stash_outdated => (
is => 'rw',
isa => Bool,
default => 0,
);
has _lookup_cache => (
( run in 1.667 second using v1.01-cache-2.11-cpan-437f7b0c052 )