Module: Rbeapi::Client

Defined in:
lib/rbeapi/client.rb

Overview

Rbeapi::Client

Defined Under Namespace

Classes: Config, Node

Constant Summary collapse

DEFAULT_TRANSPORT =
'http'
TRANSPORTS =
{ 'http' => 'Rbeapi::Eapilib::HttpEapiConnection',
'https' => 'Rbeapi::Eapilib::HttpsEapiConnection',
'http_local' => 'Rbeapi::Eapilib::HttpLocalEapiConenction',
'socket' => 'Rbeapi::Eapilib::SocketEapiConnection' }

Class Method Summary collapse

Class Method Details

.configConfig

Returns the currently loaded config object. This function will create a new instance of the config object if one doesn't already exist

Returns:

  • (Config)

    Returns an instance of Config used for working with the eapi.conf file


61
62
63
64
65
# File 'lib/rbeapi/client.rb', line 61

def config
  return @config if @config
  @config = Config.new()
  return @config
end

.config_for(name) ⇒ Hash?

Returns the configuration options for the named connection from the the loaded configuuration. The configuration name is specified as the string right of the colon in the section name.

Parameters:

  • :name (String)

    The connection name to return from the loaded configuration

Returns:

  • (Hash, nil)

    This method will return the configuration hash for the named configuration if found. If the name is not found, then nil is returned


90
91
92
# File 'lib/rbeapi/client.rb', line 90

def config_for(name)
  return config.get_connection(name)
end

.connect(opts = {}) ⇒ Rbeapi::Connection

Builds a connection object to a remote node using the specified options and return an instance of Rbeapi::Connection. All configuration options can be passed via the :opts param or can be overridden using environment variables. Environment variables are specified by prepending EAPI to the option name. For instance to override the host param use EAPI_HOST.

Parameters:

  • :opts (Hash)

    the options to create a message with

Returns:

  • (Rbeapi::Connection)

    Returns an instance of Rbeapi::Connection using the specified configuration options


136
137
138
139
# File 'lib/rbeapi/client.rb', line 136

def connect(opts = {})
  transport = opts.fetch(:transport, DEFAULT_TRANSPORT)
  make_connection(transport, opts)
end

.connect_to(name) ⇒ Rbeapi::Node?

Retrieves the node config form the loaded configuration file and returns a Rbeapi::Node instance for working with the remote node.

Parameters:

  • :name (String)

    The named configuration to use for creating the connection to the remote node

Returns:

  • (Rbeapi::Node, nil)

    Returns an instance of Rbeapi::Node. If the named configuration is not found then nil is returned


103
104
105
106
107
108
109
# File 'lib/rbeapi/client.rb', line 103

def connect_to(name)
  config = config_for(name)
  return nil unless config
  config = Rbeapi::Utils.transform_keys_to_symbols(config)
  connection = connect config
  Node.new(connection)
end

.load_config(conf) ⇒ Object

load_config overrides the default conf file loaded in the config instances using the supplied conf argument as the conf file. This method will clear out an previously loaded configuration and replace all entries with the contects of the supplied file.

Parameters:

  • :conf (String)

    The full path to the conf file to load into the config instance.


75
76
77
# File 'lib/rbeapi/client.rb', line 75

def load_config(conf)
  config.read(conf)
end

.make_connection(transport, opts = {}) ⇒ Rbeapi::EapiConnection

Creates a connection instance that can either be used directly or passed to a Node instance.

Returns:

  • (Rbeapi::EapiConnection)

    A instance of a connection object


149
150
151
152
153
# File 'lib/rbeapi/client.rb', line 149

def make_connection(transport, opts = {})
  klass = TRANSPORTS.fetch(transport)
  cls = Rbeapi::Utils.class_from_string(klass)
  cls.new(opts)
end