class GV::Valley::App
Constants
- PORT
Public Class Methods
all()
click to toggle source
# File lib/gv/valley/app.rb, line 27 def all etcd_clt.get("/apps").children.map{ |node| find(File.basename(node.key)) } end
create(name)
click to toggle source
# File lib/gv/valley/app.rb, line 44 def create name save name, {"name" => name, "config" => default_config(name), "ps" => {}, "domains" => [default_domain(name)]} find name end
default_config(name)
click to toggle source
# File lib/gv/valley/app.rb, line 61 def default_config name config = { "SLUG_URL" => "#{GV::Valley::FileServer.service.url}/#{name}/slug.tgz", "PORT" => PORT, "RACK_ENV" => "production" } end
default_domain(name)
click to toggle source
# File lib/gv/valley/app.rb, line 69 def default_domain name "#{name}.#{self.domain}" end
delete(name)
click to toggle source
# File lib/gv/valley/app.rb, line 53 def delete name etcd_clt.delete("/apps/#{name}",{recursive: true}) rescue nil end
domain()
click to toggle source
# File lib/gv/valley/app.rb, line 57 def domain GV::Bedrock::Config.service.get("domain") end
ensure_defaults(data)
click to toggle source
# File lib/gv/valley/app.rb, line 73 def ensure_defaults data data["config"] ||= {} data["config"].update(default_config(data["name"])) data["domains"] ||= [] data["domains"] << default_domain(data["name"]) unless data["domains"].include? default_domain(data["name"]) data end
etcd_clt()
click to toggle source
# File lib/gv/valley/app.rb, line 17 def etcd_clt @@etcd_clt ||= begin server = GV::Valley::Etcd.service ::Etcd.client(config = { host: server.external_ip, port: server.port }) end end
find(name)
click to toggle source
# File lib/gv/valley/app.rb, line 31 def find name begin find! name rescue ::Etcd::KeyNotFound nil end end
find!(name)
click to toggle source
# File lib/gv/valley/app.rb, line 39 def find! name value = etcd_clt.get("/apps/#{name}").value new(ensure_defaults(JSON.load(value))) end
new(attributes = {})
click to toggle source
# File lib/gv/valley/app.rb, line 84 def initialize attributes = {} @attributes = attributes @name = @attributes['name'] @attributes = attributes end
save(name, data)
click to toggle source
# File lib/gv/valley/app.rb, line 49 def save name, data etcd_clt.set("/apps/#{name}", { value: JSON.dump(ensure_defaults(data)) }) end
Public Instance Methods
[](key)
click to toggle source
# File lib/gv/valley/app.rb, line 98 def [](key) @attributes[key] end
[]=(key,value)
click to toggle source
# File lib/gv/valley/app.rb, line 102 def []=(key,value) @attributes[key]=value end
delete()
click to toggle source
# File lib/gv/valley/app.rb, line 94 def delete self.class.delete @name end
save()
click to toggle source
# File lib/gv/valley/app.rb, line 90 def save self.class.save(@name,@attributes) end