class Fleet::Client

Public Class Methods

new(options={}) click to toggle source
# File lib/fleet/client.rb, line 14
def initialize(options={})
  options = Fleet.options.merge(options)
  Configuration::VALID_OPTIONS_KEYS.each do |key|
    send("#{key}=", options[key])
  end
end

Public Instance Methods

destroy(name) click to toggle source
# File lib/fleet/client.rb, line 95
def destroy(name)
  delete_unit(name)
end
get_unit_state(name) click to toggle source
# File lib/fleet/client.rb, line 103
def get_unit_state(name)
  options = { unitName: name }
  states = list_states(options)
  if states["states"]
    states["states"].first
  else
    fail NotFound, "Unit '#{name}' not found"
  end
end
list() click to toggle source
# File lib/fleet/client.rb, line 28
def list
  machines = list_machines['machines'] || []
  machine_ips = machines.each_with_object({}) do |machine, h|
    h[machine['id']] = machine['primaryIP']
  end

  states = list_states['states'] || []
  states.map do |service|
    {
      name: service['name'],
      load_state: service['systemdLoadState'],
      active_state: service['systemdActiveState'],
      sub_state: service['systemdSubState'],
      machine_id: service['machineID'],
      machine_ip: machine_ips[service['machineID']]
    }
  end
end
list_fleet_machines() click to toggle source
# File lib/fleet/client.rb, line 51
def list_fleet_machines
  list_machines['machines'] || []
end
list_unit_states() click to toggle source
# File lib/fleet/client.rb, line 47
def list_unit_states
  list_states['states'] || []
end
load(name, service_def=nil) click to toggle source
# File lib/fleet/client.rb, line 70
def load(name, service_def=nil)

  if service_def
    submit(name, service_def)
  end

  opts = { 'desiredState' => 'loaded', 'name' => name }
  update_unit(name, opts)
end
start(name) click to toggle source
# File lib/fleet/client.rb, line 80
def start(name)
  opts = { 'desiredState' => 'launched', 'name' => name }
  update_unit(name, opts)
end
status(name) click to toggle source
# File lib/fleet/client.rb, line 99
def status(name)
  get_unit(name)["currentState"].to_sym
end
stop(name) click to toggle source
# File lib/fleet/client.rb, line 85
def stop(name)
  opts = { 'desiredState' => 'loaded', 'name' => name }
  update_unit(name, opts)
end
submit(name, service_def) click to toggle source
# File lib/fleet/client.rb, line 55
def submit(name, service_def)
  unless name =~ /\A[a-zA-Z0-9:_.@-]+\Z/
    raise ArgumentError, 'name may only contain [a-zA-Z0-9:_.@-]'
  end

  unless service_def.is_a?(ServiceDefinition)
    service_def = ServiceDefinition.new(service_def)
  end

  begin
    create_unit(name, service_def.to_unit(name))
  rescue Fleet::PreconditionFailed
  end
end
unload(name) click to toggle source
# File lib/fleet/client.rb, line 90
def unload(name)
  opts = { 'desiredState' => 'inactive', 'name' => name }
  update_unit(name, opts)
end

Protected Instance Methods

resource_path(resource, *parts) click to toggle source
# File lib/fleet/client.rb, line 115
def resource_path(resource, *parts)
  parts.unshift('fleet', fleet_api_version, resource).join('/')
end