class ProxyAPI::Salt

def autosign_create(name)

def autosign_create(name)
  parse(post('', "autosign/#{CGI.escape(name)}"))
rescue StandardError => e
  raise ProxyException.new(url, e, N_('Unable to set Salt autosign hostname for %s'), name)
end

def autosign_create_key(key)

def autosign_create_key(key)
  parse(post('', "autosign_key/#{CGI.escape(key)}"))
rescue StandardError => e
  raise ProxyException.new(url, e, N_('Unable to create Salt autosign key %s'), key)
end

def autosign_list

def autosign_list
  parse(get('autosign'))
rescue StandardError => e
  raise ProxyException.new(url, e, N_('Unable to fetch autosign list'))
end

def autosign_remove(name)

def autosign_remove(name)
  parse(delete("autosign/#{CGI.escape(name)}"))
rescue RestClient::ResourceNotFound
  true # entry doesn't exists anyway
rescue StandardError => e
  raise ProxyException.new(url, e, N_('Unable to delete Salt autosign hostname for %s'), name)
end

def autosign_remove_key(key)

def autosign_remove_key(key)
  parse(delete("autosign_key/#{CGI.escape(key)}"))
rescue RestClient::ResourceNotFound
  true # entry doesn't exists anyway
rescue StandardError => e
  raise ProxyException.new(url, e, N_('Unable to delete Salt autosign key %s'), key)
end

def environments_list

def environments_list
  parse(get('environments'))
rescue StandardError => e
  raise ProxyException.new(url, e, N_('Unable to fetch Salt environments list'))
end

def highstate(name)

def highstate(name)
  parse(post('', "highstate/#{name}"))
rescue StandardError => e
  raise ProxyException.new(url, e, N_('Unable to run Salt state.highstate for %s'), name)
end

def initialize(args)

def initialize(args)
  @url = "#{args[:url]}/salt/"
  super args
end

def key_accept(name)

def key_accept(name)
  parse(post('', "key/#{name}"))
rescue StandardError => e
  raise ProxyException.new(url, e, N_('Unable to accept Salt key for %s'), name)
end

def key_delete(name)

def key_delete(name)
  parse(delete("key/#{name}"))
rescue RestClient::ResourceNotFound
  true
rescue StandardError => e
  raise ProxyException.new(url, e, N_('Unable to delete Salt key for %s'), name)
end

def key_list

def key_list
  parse(get('key'))
rescue StandardError => e
  raise ProxyException.new(url, e, N_('Unable to fetch Salt key list'))
end

def key_reject(name)

def key_reject(name)
  parse(delete("key/reject/#{name}"))
rescue StandardError => e
  raise ProxyException.new(url, e, N_('Unable to reject Salt key for %s'), name)
end

def states_list

def states_list
  states = {}
  environments_list.each do |environment|
    states[environment] = parse(get("environments/#{CGI.escape(environment)}"))
  end
  states
rescue StandardError => e
  raise ProxyException.new(url, e, N_('Unable to fetch Salt states list'))
end