Sha256: aa289117b6cb9599ec545b0d9ab32b94ca5cab9625218689d3bd7af7ecbeb822

Contents?: true

Size: 1.2 KB

Versions: 3

Compression:

Stored size: 1.2 KB

Contents

$:.unshift(File.join(File.dirname(__FILE__)))
require "poolparty"
require "poolpartycl"

module PoolParty
  module Capistrano
    
    $cap_clouds = {}
    
    def set_poolparty_file(file)
      load_pool file
    end
    
    def set_cloud(name)
      cld = PoolParty::Cloud.cloud(name)
      if cld && !cloud_retrieved_already?
        $cap_clouds[name] = cld
        @cloud = cld
        instance_eval <<-EOE
  ssh_options[:keys] = [ '#{cld.full_keypair_path}' ]
  set :user, '#{cld.user}'
  set :username, "#{cld.user}"
  ssh_options[:forward_agent] = true
  EOE
      end
      cld
    end
    
    def cloud_retrieved_already?
      $cap_clouds.key?(name)
    end
    def get_cloud(name)
      set_cloud(name)
    end
    
    # Get the master ip for the cloud to set in the deploy.rb file
    def cloud_master(name)
      get_cloud(name).ip
    end
    
    def set_role_for_all_instances(role, name)
      ips = get_cloud(name).nodes(:status => "running").map {|ri| ri.ip }
      ips.each {|ip| send :role, role.to_sym, "#{ip}"}
    end
  end
end

module Capistrano
  class Configuration
    include ::PoolParty::Capistrano
        
    # Dir["#{::File.dirname(__FILE__)}/capistrano/*.rb"].each {|f| pload f }
  end
end

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
auser-poolparty-1.1.6 lib/poolparty/capistrano.rb
auser-poolparty-1.1.7 lib/poolparty/capistrano.rb
fairchild-poolparty-1.1.5 lib/poolparty/capistrano.rb