class Singularity::Deployer

Public Class Methods

new(uri, file, release) click to toggle source
# File lib/singularity.rb, line 16
def initialize(uri, file, release)
  @uri = uri
  @file = file
  @release = release
  @config = ERB.new(open(file).read)
  @r = Request.new
  @r.release = @release
  @data = JSON.parse(@config.result(@r.get_binding))
  print @data['id']
end

Public Instance Methods

deploy() click to toggle source
# File lib/singularity.rb, line 37
def deploy
  begin
    if is_paused()
      puts " PAUSED, SKIPPING".yellow
      return
    else
      # create or update the request
      resp = RestClient.post "#{@uri}/api/requests", @data.to_json, :content_type => :json
    end
    # deploy the request
    @data['requestId'] = @data['id']
    @data['id'] = "#{@release}.#{Time.now.to_i}"
    deploy = {
     'deploy' => @data,
     'user' => `whoami`.chomp,
     'unpauseOnSuccessfulDeploy' => false
    }
    resp = RestClient.post "#{@uri}/api/deploys", deploy.to_json, :content_type => :json
    puts " DEPLOYED".green
  rescue Exception => e
    puts " #{e.response}".red
  end
end
is_paused() click to toggle source
# File lib/singularity.rb, line 27
def is_paused
  begin
    resp = RestClient.get "#{@uri}/api/requests/request/#{@data['id']}"
    JSON.parse(resp)['state'] == 'PAUSED'
  rescue
    print " CREATING...".blue
    false
  end
end