Skip to content

Instantly share code, notes, and snippets.

@coderforhire
Created October 4, 2012 19:45
Show Gist options
  • Save coderforhire/3835931 to your computer and use it in GitHub Desktop.
Save coderforhire/3835931 to your computer and use it in GitHub Desktop.
def create
plan = params[:subscription][:plan]
params[:subscription].delete(:plan)
@subscription = Subscription.new(params[:subscription])
@subscription.plan = plan
@user = User.new(params[:user])
respond_to do |format|
if @subscription.save_with_payment(@subscription.plan, @user.email) && @user.save
@subscription.user_id = @user.id
@subscription.save
@server = Server.new
@server.user_id = @user.id
@server.save
Resque.enqueue(ProvisionServer, @server.id, @subscription.plan)
format.html { redirect_to thankyou_url }
else
format.html { render action: "new" }
end
end
end
Worker
Desktop:2266 on provision_server at just now
Class
ProvisionServer
Arguments
11
4
Exception
ActiveRecord::RecordNotFound
Error
Couldn't find Server with id=11
/home/afresta/.rvm/gems/ruby-1.9.3-rc1/gems/activerecord-3.2.3/lib/active_record/relation/finder_methods.rb:340:in `find_one'
/home/afresta/.rvm/gems/ruby-1.9.3-rc1/gems/activerecord-3.2.3/lib/active_record/relation/finder_methods.rb:311:in `find_with_ids'
/home/afresta/.rvm/gems/ruby-1.9.3-rc1/gems/activerecord-3.2.3/lib/active_record/relation/finder_methods.rb:107:in `find'
/home/afresta/.rvm/gems/ruby-1.9.3-rc1/gems/activerecord-3.2.3/lib/active_record/querying.rb:5:in `find'
/home/afresta/rails_projects/CLOUD_POKER_DB/app/jobs/provision_server.rb:6:in `perform'
module ProvisionServer
@queue = :provision_server
def self.perform(server_id, plan)
@server = Server.find_by_id(server_id)
@provisioned_server = @server.create_server(plan)
while @provisioned_server.status == 'BUILD'
@provisioned_server.refresh
sleep 5
end
if plan == 1 || plan == 4
external_ip = @provisioned_server.addresses[:public]
internal_ip = @provisioned_server.addresses[:private]
@server.update_attributes(
:domain_name => @provisioned_server.name,
:external_ip => @provisioned_server.addresses[:public][0],
:internal_ip => @provisioned_server.addresses[:private][0],
)
else
@server.update_attributes(
:domain_name => @provisioned_server.name,
:external_ip => @provisioned_server.accessipv4,
:internal_ip => @provisioned_server.addresses[:private][0].address
)
end
system "knife bootstrap #{@server.external_ip} -x root -P #{@provisioned_server.adminPass}"
@node = Spice.get("/nodes/#{@server.domain_name}")
@node["run_list"] << "recipe[chef-client]"
@node["run_list"] << "recipe[postgresql]"
Spice.put("/nodes/#{@server.domain_name}", @node)
dns = CloudDns::Client.new(:username => RACKSPACE_USER_NAME_US, :api_key => RACKSPACE_API_KEY_US, :location=> :us)
domain = dns.domain("3392521")
domain.a(:name => "#{@server.domain_name}.cloudpokerdb.com", :data => "#{@server.external_ip}", :ttl => 360)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment