Class: Rbeapi::Client::Config

Inherits:
IniFile
  • Object
show all
Defined in:
lib/rbeapi/client.rb

Overview

The Config class holds the loaded configuration file data. It is a subclass of IniFile.

Constant Summary collapse

CONFIG_SEARCH_PATH =
['/mnt/flash/eapi.conf'].freeze

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ Config

The Config class will automatically search for a filename to load (if none provided) and load the data when the object is instantiated.

Parameters:

  • opts (Hash) (defaults to: {})

    The initialization parameters.

Options Hash (opts):

  • filename (String)

    The full path to the filename to load. If the filename is not provided, then this class will attempt to find a valid conf file using the CONFIG_SEARCH_PATH.



180
181
182
183
184
# File 'lib/rbeapi/client.rb', line 180

def initialize(opts = {})
  super(parameter: ':')
  @filename = opts.fetch(:filename, nil)
  autoload
end

Instance Method Details

#add_connection(name, values) ⇒ Object

Adds a new connection section to the current configuration.

Parameters:

  • name (String)

    The name of the connection to add to the configuration.

  • values (Hash)

    The properties for the connection.



283
284
285
286
# File 'lib/rbeapi/client.rb', line 283

def add_connection(name, values)
  self["connection:#{name}"] = values
  nil
end

#get_connection(name) ⇒ nil, Hash<String, String> Returns a hash of the connection properties from the loaded config. This method will return nil if the connection name is not found.

Returns the configuration for the connection specified. If a connection is not found matching the name and if a default connection has been specified then return the default connection.

Parameters:

  • name (String)

    The name of the connection to return from the configuration. This should be the string right of the : in the config section header.

Returns:

  • (nil, Hash<String, String> Returns a hash of the connection properties from the loaded config. This method will return nil if the connection name is not found.)

    nil, Hash<String, String> Returns a hash of the connection properties from the loaded config. This method will return nil if the connection name is not found.



269
270
271
272
273
274
# File 'lib/rbeapi/client.rb', line 269

def get_connection(name)
  return self["connection:#{name}"] \
    if sections.include? "connection:#{name}"
  return self['connection:*'] if sections.include? 'connection:*'
  nil
end

#read(filename) ⇒ Object

This method will read the specified filename and load its contents into the instance. It will also add the default localhost entry if it doesn’t exist in the conf file.

Parameters:

  • filename (String)

    The full path to the filename to load.



220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
# File 'lib/rbeapi/client.rb', line 220

def read(filename)
  begin
    super(filename: filename)
  rescue IniFile::Error => exc
    Rbeapi::Utils.syslog_warning("#{exc}: in eapi conf file: #{filename}")
    return
  end

  # For each section, if the host parameter is omitted then the
  # connection name is used.
  has_default = has_section?('DEFAULT')
  sections.each do |name|
    next unless name.start_with?('connection:')
    conn = self[name.to_s]
    conn['host'] = name.split(':')[1] unless conn['host']

    # Merge in the default values into the connections
    conn.merge!(self['DEFAULT']) { |_key, v1, _v2| v1 } if has_default
  end

  return if get_connection 'localhost'
  add_connection('localhost', transport: 'socket')
end

#reload(opts = {}) ⇒ Object

This method will cause the config to be loaded. The process of finding the configuration will be repeated so it is possible a different conf file could be chosen if the original file was removed or a new file added higher on the search priority list.

Parameters:

  • opts (Hash) (defaults to: {})

    The options for specifying the message.

Options Hash (opts):

  • filename (String)

    The full path to the file to load.



253
254
255
# File 'lib/rbeapi/client.rb', line 253

def reload(opts = {})
  autoload opts
end