Class: Rbeapi::Api::Ntp

Inherits:
Entity
  • Object
show all
Defined in:
lib/rbeapi/api/ntp.rb

Overview

The Ntp class provides an intstance for working with the nodes NTP configuraiton.

Constant Summary collapse

DEFAULT_SRC_INTF =
''

Instance Attribute Summary

Attributes inherited from Entity

#config, #error, #node

Instance Method Summary collapse

Methods inherited from Entity

#configure, #get_block, #initialize, instance

Constructor Details

This class inherits a constructor from Rbeapi::Api::Entity

Instance Method Details

#add_server(server, prefer = false) ⇒ Boolean

add_server configures a new ntp server destination hostname or ip address to the list of ntp destinations. The optional prefer argument configures the server as a preferred (true) or not (false) ntp destination.

Parameters:

  • :server (String)

    The IP address or FQDN of the NTP server to be removed from the configuration

  • :prefer (Boolean)

    Appends the prefer keyword argument to the command if this value is true

Returns:

  • (Boolean)

    returns true if the command completed successfully


152
153
154
155
156
# File 'lib/rbeapi/api/ntp.rb', line 152

def add_server(server, prefer = false)
  cmd = "ntp server #{server}"
  cmd << ' prefer' if prefer
  configure cmd
end

#getnil, Hash<Symbol, Object>

get returns the nodes current ntp configure as a resource hash

Examples:

{
  source_interface: <string>
  servers: {
    prefer: [true, false]
  }
}

Returns:

  • (nil, Hash<Symbol, Object>)

    Returns the ntp resource as a Hash.


61
62
63
64
65
66
# File 'lib/rbeapi/api/ntp.rb', line 61

def get
  response = {}
  response.merge!(parse_source_interface)
  response.merge!(parse_servers)
  response
end

#parse_serversHash<Symbol, Object>

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

parse_servers scans the nodes configuration and parses the configured ntp server host names and/or addresses. This method will also return the value of prefer. If no servers are configured, the value will be set to an empty array. The return hash is inteded to be merged into the resource hash

Returns:

  • (Hash<Symbol, Object>)

    resource hash attribute


93
94
95
96
97
98
99
# File 'lib/rbeapi/api/ntp.rb', line 93

def parse_servers
  servers = config.scan(/(?:ntp server\s)([^\s]+)\s(prefer)?/)
  values = servers.each_with_object({}) do |(srv, prefer), hsh|
    hsh[srv] = { prefer: !prefer.nil? }
  end
  { servers: values }
end

#remove_server(server) ⇒ Boolean

remove_server deletes the provided server destination from the list of ntp server destinations. If the ntp server does not exist in the list of servers, this method will return successful

Parameters:

  • :server (String)

    The IP address or FQDN of the NTP server to be removed from the configuration

Returns:

  • (Boolean)

    returns true if the command completed successfully


167
168
169
# File 'lib/rbeapi/api/ntp.rb', line 167

def remove_server(server)
  configure("no ntp server #{server}")
end

#set_prefer(srv, value) ⇒ Boolean

set_prefer will set the prefer keyword for the specified ntp server. If the server does not already exist in the configuration, it will be added and the prefer keyword will be set.

Parameters:

  • :srv (String)

    The IP address or hostname of the ntp server to configure with the prefer value

  • :value (Boolean)

    The value to configure for prefer. If true the prefer value is configured for the server. If false, then the prefer value is removed.

Returns:

  • (Boolean)

    returns true if the commands completed successfully


190
191
192
193
194
195
196
197
198
# File 'lib/rbeapi/api/ntp.rb', line 190

def set_prefer(srv, value)
  case value
  when true
    cmds = "ntp server #{srv} prefer"
  when false
    cmds = ["no ntp server #{srv} prefer", "ntp server #{srv}"]
  end
  configure cmds
end

#set_source_interface(opts = {}) ⇒ Boolean

set_source_interface configures the ntp source value in the nodes running configuration. If no value is provided in the options, then the ntp source is configured with the no keyword argument. If the default keyword argument is provided and set to true, the value is configured used the default keyword. The default keyword takes precedence over the value keyword if both optiosn are specified.

Parameters:

  • :opts (Hash)

    Optional keyword arguments

Returns:

  • (Boolean)

    returns true if the command completed successfully


125
126
127
128
129
130
131
132
133
134
135
136
137
# File 'lib/rbeapi/api/ntp.rb', line 125

def set_source_interface(opts = {})
  value = opts[:value]
  default = opts[:default] || false

  case default
  when true
    cmds = 'default ntp source'
  when false
    cmds = (value ? "ntp source #{value}" : \
                    'no ntp source')
  end
  configure(cmds)
end