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