NAME

Data::AnyXfer::Elastic::ServerDict - Logic for server selection and metadata lookup

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');

DESCRIPTION

This class provides the metadata and connection info lookup logic for Data::AnyXfer::Elastic to locate or populate your Elasticsearch instances.

METHODS

from_env

# Create dictionary from env
my $dict = Data::AnyXfer::Elastic::ServerDict->from_env;

Creates a server dict using "load_from_env" in Data::AnyXfer::Elastic::ServerDefinition.

Returns a new Data::AnyXfer::Elastic::ServerDict instance.

add_server_definition

$dict->add_server_definition(
  Data::AnyXfer::Elastic::ServerDefinition->new( ... )
);

Adds a server definition to the

LOOKUP METHODS

all_production_nodes

my @nodes = $dict->all_production_nodes;

Return connection details for all elasticsearch nodes in the production environment.

all_development_nodes

my @nodes = $dict->all_development_nodes;

Return connection details for all elasticsearch nodes in the development environment.

all_testing_nodes

my $nodes = $dict->all_testing_nodes;

Return connection details for all elasticsearch nodes in the testing environment.

list_silos

my @silo_names = $dict->list_silos;

Retrieves all known silo names..

get_silo_nodes

my @node_groups = $dict->get_silo_nodes($silo_name);

Retrieves groups of nodes assigned to clusters tagged with the given silo.

get_silo_write_nodes

my @node_groups = $dict->get_silo_write_nodes($silo_name);

Retrieves groups of nodes assigned to clusters tagged with the given silo, like get_silo_nodes but looks for a cluser_nodes definition, before falling back to nodes.

get_node_version

my $version = $dict->get_node_version('test-es-1.example.com:9200');

Returns the target node's elasticsearch version as defined by all matching Data::AnyXfer::Elastic::ServerDefinition instances belonging to this ServerDict.

COPYRIGHT

This software is copyright (c) 2019, Anthony Lucas.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

1 POD Error

The following errors were encountered while parsing the POD:

Around line 27:

Non-ASCII character seen before =encoding in '# data'. Assuming UTF-8