Data-AnyXfer

 view release on metacpan or  search on metacpan

lib/Data/AnyXfer/Elastic/ServerDefinition.pm  view on Meta::CPAN

package Data::AnyXfer::Elastic::ServerDefinition;

use Modern::Perl;
use Moo;
use MooX::Types::MooseLike::Base qw(:all);

use Carp;

use Data::AnyXfer ();
use Data::AnyXfer::JSON ();

=head1 NAME

Data::AnyXfer::Elastic::ServerDefinition - Stores node and cluster information

=head1 SYNOPSIS

    use Data::AnyXfer::Elastic::ServerDefinition ();

    # Load definitions...
    # from a path
    my @definitions =
      Data::AnyXfer::Elastic::ServerDefinition
      ->load_json_file('servers.json');

    # or from an open handle
    open(my $open_fh, '<:encoding(UTF-8)', 'servers.json')
      || croak "Failed to open server definitions file ($!)";

    my @definitions =
      Data::AnyXfer::Elastic::ServerDefinition
      ->load_json_handle($open_fh);

    # Or define them programatically...
    my $definition = Data::AnyXfer::Elastic::ServerDefinition->new(
          name              => 'testserver',
          env               =>  'live',
          installed_version => '6.4.0',
          silos             => ["public_data"],
          standalone_nodes  => ["test-es-1.example.com:9200"],
          cluser_nodes      => ["test-es-1.example.com:9201"],
        }
    );

=head1 DESCRIPTION

The class represents the information required to interact with
an Elasticsearch server.

This can consist of a traditional cluster, or a number of seperate instances
acting as a cluster.

These definitions will usually be L<loaded/load> from a JSON file.

=head1 CONSTANTS

=over 12

=item C<ENV_VARNAME>

This is the ENV variable name which L</load_env> will use to source and load
as a server definition JSON file.



( run in 2.014 seconds using v1.01-cache-2.11-cpan-437f7b0c052 )