class Phper::Agent

Public Class Methods

new() click to toggle source
# File lib/phper/agent.rb, line 7
def initialize
  @login = false
end

Public Instance Methods

base_url() click to toggle source
# File lib/phper/agent.rb, line 167
def base_url
  ENV["PHPERJP_URL"] || "https://phper.jp"
end
delete(url,data = {},format=:json) click to toggle source
# File lib/phper/agent.rb, line 163
def delete(url,data = {},format=:json)
  call(:delete,url,data,format)
end
exec(project, command) click to toggle source
# File lib/phper/agent.rb, line 69
def exec project, command
  post("/projects/#{project}/exec", {:command => command})
end
files(project,host,name = nil) click to toggle source
# File lib/phper/agent.rb, line 139
def files project,host,name = nil 
  if name
    get("/projects/%s/hosts/%s/files/%s" % [project,host,encode(name)])
  else
    get("/projects/%s/hosts/%s/files" % [project,host])
  end
end
get(url,data = {},format=:json) click to toggle source
# File lib/phper/agent.rb, line 155
def get(url,data = {},format=:json)
  call(:get,url,data,format)
end
hosts(project) click to toggle source
# File lib/phper/agent.rb, line 135
def hosts project
  get("/projects/%s/hosts" % project)
end
keys() click to toggle source
# File lib/phper/agent.rb, line 53
def keys
  get("/keys")
end
keys_create(key) click to toggle source
# File lib/phper/agent.rb, line 86
def keys_create key
  param = {}
  param[:public_key] = key if key
  post("/keys",{:key => param})
end
keys_delete(name) click to toggle source
# File lib/phper/agent.rb, line 92
def keys_delete name
  count = 0
  keys.each { |key|
    if name == name_of_key(key["key"]["public_key"])
      delete("/keys/%i" % key["key"]["id"])
      count += 1
    end
  }
  count
end
keys_delete_all() click to toggle source
# File lib/phper/agent.rb, line 103
def keys_delete_all
  count = 0
  keys.each { |key|
    delete("/keys/%i" % key["key"]["id"])
    count += 1
  }
  count
end
log(dest) click to toggle source
# File lib/phper/agent.rb, line 11
def log dest
  RestClient.log = dest
end
login(u,p) click to toggle source
# File lib/phper/agent.rb, line 15
def login(u,p)
  @auth = {:user => u, :password => p}
  begin
    projects
    @login = true
  rescue => e
    puts e
    @login = false
  end
end
login?() click to toggle source
# File lib/phper/agent.rb, line 26
def login?
  @login
end
logs(project, server) click to toggle source
# File lib/phper/agent.rb, line 57
def logs project, server
  get("/projects/%s/servers/%s/logs" % [project,server["server"]["id"]])
end
logs_tail(project,server,name) click to toggle source
# File lib/phper/agent.rb, line 73
def logs_tail project,server,name
  get("/projects/%s/servers/%s/logs/%s" %
      [project,server["server"]["id"],name])
end
post(url,data = {},format=:json) click to toggle source
# File lib/phper/agent.rb, line 151
def post(url,data = {},format=:json)
  call(:post,url,data,format)
end
project_from_git(git) click to toggle source

gitリポジトリ名からprojectを返す

# File lib/phper/agent.rb, line 31
def project_from_git git
  get("/gits/#{git}")
end
projects(id = nil) click to toggle source
# File lib/phper/agent.rb, line 35
def projects id = nil
  if id
    get("/projects/%s" % id)
  else
    get("/projects")
  end
end
projects_create(name) click to toggle source
# File lib/phper/agent.rb, line 43
def projects_create name
  param = {}
  param[:name] = name if name
  post("/projects",{:project => param})
end
projects_delete(name) click to toggle source
# File lib/phper/agent.rb, line 49
def projects_delete name
  delete("/projects/#{name}")
end
projects_deploy(project) click to toggle source
# File lib/phper/agent.rb, line 78
def projects_deploy project
  get("/projects/%s/deploy" % project)
end
projects_init_db(project) click to toggle source
# File lib/phper/agent.rb, line 82
def projects_init_db project
  get("/projects/%s/db/initialize" % project)
end
put(url,data = {},format=:json) click to toggle source
# File lib/phper/agent.rb, line 159
def put(url,data = {},format=:json)
  call(:put,url,data,format)
end
servers(project) click to toggle source
# File lib/phper/agent.rb, line 112
def servers project
  get("/projects/%s/servers" % project)
end
servers_create(project,param) click to toggle source
# File lib/phper/agent.rb, line 116
def servers_create project,param
  defaults = get("/projects/%s/servers/new" % project)["server"]
  param[:name] = defaults["name"] unless param.has_key?(:name)
  param[:fqdn] = defaults["fqdn"] unless param.has_key?(:fqdn)
  post("/projects/%s/servers" % project ,{:server => param})
end
servers_delete(project,name) click to toggle source
# File lib/phper/agent.rb, line 124
def servers_delete project,name
  count = 0;
  servers(project).each { |s|
    if s["server"]["fqdn"] == name or s["server"]["name"] == name
      delete("/projects/%s/servers/%s"%[project,s["server"]["id"]])
      count += 1
    end
  }
  count
end
version_set(project, ver) click to toggle source
# File lib/phper/agent.rb, line 65
def version_set project, ver
  put("/projects/#{project}/versions", {:version => ver})
end
versions(project) click to toggle source
# File lib/phper/agent.rb, line 61
def versions project
  get("/projects/%s/versions" % [project])
end

Protected Instance Methods

call(method,url,data,format) click to toggle source
# File lib/phper/agent.rb, line 172
def call(method,url,data,format)
  url = "%s%s.%s" % [base_url,url,format.to_s]
  resource = RestClient::Resource.new(url,:user => @auth[:user], :password => @auth[:password],:timeout => -1)
  parse(resource.send(method.to_s,data),format)
end
parse(data,format) click to toggle source
# File lib/phper/agent.rb, line 178
def parse(data,format)
  return "" if data.length == 0
  if format == :json
    data = "{}" if data.length < 2
    return JSON.parse(data)
  end
  raise format + "is not support formats."
end