class DeisClient
Constants
- REQUEST_TIMEOUT
- VERIFY_SSL
Attributes
user_token[R]
Public Class Methods
new(controller_uri, username, password, mock=false)
click to toggle source
# File lib/deis_client.rb, line 13 def initialize(controller_uri, username, password, mock=false) @mock = mock raise DeisError.new("No username or password detected!") if username.nil? || password.nil? raise DeisError.new("You must specify a URI for Deis controller!") unless controller_uri =~ /\A#{URI::regexp}\z/ @deis_controller = controller_uri login(username, password) self end
Public Instance Methods
app_create(app_name)
click to toggle source
# File lib/deis_client.rb, line 33 def app_create(app_name) if @mock {} else payload = app_name.nil? ? Hash.new : {"id" => app_name} response = RestClient::Request.execute(:method => :post, :url => apps_url, :payload => payload.to_json, :timeout => REQUEST_TIMEOUT, :verify_ssl => VERIFY_SSL, :headers => headers) JSON.parse response.body end end
app_destroy(app_name)
click to toggle source
# File lib/deis_client.rb, line 43 def app_destroy(app_name) raise DeisError.new("App name is required") if app_name.nil? if @mock {} else response = RestClient::Request.execute(:method => :delete, :url => app_url(app_name), :timeout => REQUEST_TIMEOUT, :verify_ssl => VERIFY_SSL, :headers => headers) response.code == 204 end end
app_restart(app_name)
click to toggle source
# File lib/deis_client.rb, line 67 def app_restart(app_name) raise DeisError.new("App name is required") if app_name.nil? if @mock false else response = RestClient::Request.execute(:method => :post, :url => app_restart_url(app_name), :payload => {}.to_json, :timeout => REQUEST_TIMEOUT, :verify_ssl => VERIFY_SSL, :headers => headers) response.code == 200 end end
app_scale(app_name, process_type, process_count)
click to toggle source
# File lib/deis_client.rb, line 53 def app_scale(app_name, process_type, process_count) raise DeisError.new("App name is required") if app_name.nil? raise DeisError.new("Process type is required. Supported values are 'web' or 'worker'") unless ["web", "worker"].include? process_type raise DeisError.new("Process count is required") unless process_count.is_a? Fixnum raise DeisError.new("Process count cannnot be negative") if process_count < 0 if @mock false else payload = {process_type => process_count} response = RestClient::Request.execute(:method => :post, :url => scale_url(app_name), :payload => payload.to_json, :timeout => REQUEST_TIMEOUT, :verify_ssl => VERIFY_SSL, :headers => headers) response.code == 204 end end
cert_add(common_name, certificate, private_key)
click to toggle source
# File lib/deis_client.rb, line 90 def cert_add(common_name, certificate, private_key) raise DeisError.new("Common name is required") if common_name.nil? raise DeisError.new("Certificate name is required") if certificate.nil? raise DeisError.new("Private key is required") if private_key.nil? if @mock {} else payload = {"common_name" => common_name, "certificate" => certificate, "key" => private_key} response = RestClient::Request.execute(:method => :post, :url => certs_url, :payload => payload.to_json, :timeout => REQUEST_TIMEOUT, :verify_ssl => VERIFY_SSL, :headers => headers) JSON.parse response.body end end
cert_remove(common_name)
click to toggle source
# File lib/deis_client.rb, line 103 def cert_remove(common_name) raise DeisError.new("Common name is required") if common_name.nil? if @mock {} else url = "#{certs_url}#{common_name}" response = RestClient::Request.execute(:method => :delete, :url => url, :timeout => REQUEST_TIMEOUT, :verify_ssl => VERIFY_SSL, :headers => headers) response.code == 204 end end
command_run(app_name, command, timeout_in_seconds=REQUEST_TIMEOUT)
click to toggle source
# File lib/deis_client.rb, line 169 def command_run(app_name, command, timeout_in_seconds=REQUEST_TIMEOUT) raise DeisError.new("App name is required") if app_name.nil? raise DeisError.new("Command string is required") if command.nil? if @mock {} else payload = {"command" => command} response = RestClient::Request.execute(:method => :post, :url => command_run_url(app_name), :payload => payload.to_json, :timeout => timeout_in_seconds, :verify_ssl => VERIFY_SSL, :headers => headers) JSON.parse response.body end end
config_get(app_name)
click to toggle source
# File lib/deis_client.rb, line 149 def config_get(app_name) raise DeisError.new("App name is required") if app_name.nil? if @mock {} else response = RestClient::Request.execute(:method => :get, :url => config_url(app_name), :timeout => REQUEST_TIMEOUT, :verify_ssl => VERIFY_SSL, :headers => headers) hash = JSON.parse response.body hash["values"] end end
config_set(app_name, config_hash={})
click to toggle source
# File lib/deis_client.rb, line 138 def config_set(app_name, config_hash={}) raise DeisError.new("App name is required") if app_name.nil? if @mock || config_hash.empty? {} else payload = {"values" => config_hash} response = RestClient::Request.execute(:method => :post, :url => config_url(app_name), :payload => payload.to_json, :timeout => REQUEST_TIMEOUT, :verify_ssl => VERIFY_SSL, :headers => headers) JSON.parse response.body end end
domain_add(app_name, domain_name)
click to toggle source
# File lib/deis_client.rb, line 114 def domain_add(app_name, domain_name) raise DeisError.new("App name is required") if app_name.nil? raise DeisError.new("Domain name is required") if domain_name.nil? if @mock {} else payload = {"domain" => domain_name} response = RestClient::Request.execute(:method => :post, :url => domains_url(app_name), :payload => payload.to_json, :timeout => REQUEST_TIMEOUT, :verify_ssl => VERIFY_SSL, :headers => headers) JSON.parse response.body end end
domain_remove(app_name, domain_name)
click to toggle source
# File lib/deis_client.rb, line 126 def domain_remove(app_name, domain_name) raise DeisError.new("App name is required") if app_name.nil? raise DeisError.new("Domain name is required") if domain_name.nil? if @mock {} else url = "#{domains_url(app_name)}#{domain_name}" response = RestClient::Request.execute(:method => :delete, :url => url, :timeout => REQUEST_TIMEOUT, :verify_ssl => VERIFY_SSL, :headers => headers) response.code == 204 end end
key_add(user_name, ssh_public_key)
click to toggle source
# File lib/deis_client.rb, line 78 def key_add(user_name, ssh_public_key) raise DeisError.new("Username is required") if user_name.nil? raise DeisError.new("SSH key is required") if ssh_public_key.nil? if @mock {} else payload = {"id" => user_name, "public" => ssh_public_key} response = RestClient::Request.execute(:method => :post, :url => keys_url, :payload => payload.to_json, :timeout => REQUEST_TIMEOUT, :verify_ssl => VERIFY_SSL, :headers => headers) JSON.parse response.body end end
login(username, password)
click to toggle source
# File lib/deis_client.rb, line 22 def login(username, password) if @mock @user_token = "ABC123" else payload = {"username" => username, "password" => password} response = RestClient::Request.execute(:method => :post, :url => login_url, :payload => payload.to_json, :timeout => REQUEST_TIMEOUT, :verify_ssl => VERIFY_SSL, :headers => {:content_type => :json, :accept => :json}) body = JSON.parse response.body @user_token = body.fetch('token') end end
logs_get(app_name)
click to toggle source
# File lib/deis_client.rb, line 160 def logs_get(app_name) raise DeisError.new("App name is required") if app_name.nil? if @mock {} else RestClient::Request.execute(:method => :get, :url => log_url(app_name), :timeout => REQUEST_TIMEOUT, :verify_ssl => VERIFY_SSL, :headers => headers) end end
Private Instance Methods
app_restart_url(app_name)
click to toggle source
# File lib/deis_client.rb, line 199 def app_restart_url(app_name) "#{app_url(app_name)}containers/restart/" end
app_url(app_name)
click to toggle source
# File lib/deis_client.rb, line 195 def app_url(app_name) "#{apps_url}#{app_name}/" end
apps_url()
click to toggle source
# File lib/deis_client.rb, line 187 def apps_url "#{@deis_controller}/v1/apps/" end
certs_url()
click to toggle source
# File lib/deis_client.rb, line 219 def certs_url "#{@deis_controller}/v1/certs/" end
command_run_url(app_name)
click to toggle source
# File lib/deis_client.rb, line 215 def command_run_url(app_name) "#{app_url(app_name)}run/" end
config_url(app_name)
click to toggle source
# File lib/deis_client.rb, line 203 def config_url(app_name) "#{app_url(app_name)}config/" end
domains_url(app_name)
click to toggle source
# File lib/deis_client.rb, line 191 def domains_url(app_name) "#{app_url(app_name)}domains/" end
headers()
click to toggle source
# File lib/deis_client.rb, line 227 def headers {:Authorization => "token #{@user_token}", :content_type => :json, :accept => :json} end
keys_url()
click to toggle source
# File lib/deis_client.rb, line 223 def keys_url "#{@deis_controller}/v1/keys/" end
log_url(app_name)
click to toggle source
# File lib/deis_client.rb, line 211 def log_url(app_name) "#{app_url(app_name)}logs/" end
login_url()
click to toggle source
# File lib/deis_client.rb, line 183 def login_url "#{@deis_controller}/v1/auth/login/" end
scale_url(app_name)
click to toggle source
# File lib/deis_client.rb, line 207 def scale_url(app_name) "#{app_url(app_name)}scale/" end