Sha256: 1647467f448ed1fec514b23d5b3dd87410fc6c7ee33f3fdda73590fdf756222a

Contents?: true

Size: 1.86 KB

Versions: 8

Compression:

Stored size: 1.86 KB

Contents

module Hugo; end
  
class Hugo::Cloud
  include Singleton
  include Hugo::Mixin::ParamsValidate
  
                      
  def initialize

  end

  def database(db_name, &block)
    database = Hugo::Database.instance
    
    database.db_security_group name
    database.server name
    database.name db_name
    
    database.instance_eval(&block) if block_given? 
    db database.deploy 
    
    
  end
  
  def balancer(&block)
    balancer = Hugo::Balancer.instance
    balancer.name name
    balancer.instance_eval(&block) if block_given? 
    lb balancer.deploy 
  end
  
  def app(name, &block)
    app_info = Hugo::App.instance
    app_info.name name
    app_info.lb lb
    app_info.db db
    app_info.cloud_name name
    app_info.instance_eval(&block) if block_given? 
    cloud_app app_info
    
  end
  
  def deploy
    if cloud_app
      cloud_app.setup
      cloud_app.deploy
    end
    
  end
  
  def delete
    [db, cloud_app, lb].each do |s|
      s.destroy if s
    end
  end
  
  
    
  def print
    if db
      puts <<REPORT
------------------------    
DATABASE: #{db.db}
  User: #{db.user}
  Password: #{db.password}
  Uri: #{db.uri}
REPORT
    end
    
    if lb
      puts <<REPORT
-----------------------  
Balancer: #{lb.name}
  Uri: #{lb.uri}
  Servers: #{lb.instances.length}
REPORT
  
      lb.instances.each do |i|
        ec2 = Hugo::Aws::Ec2.find(i)
        puts <<REPORT
-----------------------      
Id: #{ec2.name}
Uri: #{ec2.uri}
Type: #{ec2.type}
Zone: #{ec2.zone}

REPORT
      end
    end

  end

  def name(arg=nil)
    set_or_return(:name, arg, :kind_of => [String])
  end
  
  def db(arg=nil)
    set_or_return(:db, arg, :kind_of => [Hugo::Aws::Rds])
  end
  
  def lb(arg=nil)
    set_or_return(:lb, arg, :kind_of => [Hugo::Aws::Elb])    
  end

  def cloud_app(arg=nil)
    set_or_return(:cloud_app, arg, :kind_of => [Hugo::App])    
  end
  
  
  


end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
hugo-0.1.10 lib/hugo/cloud.rb
hugo-0.1.9 lib/hugo/cloud.rb
hugo-0.1.6 lib/hugo/cloud.rb
hugo-0.1.5 lib/hugo/cloud.rb
hugo-0.1.4 lib/hugo/cloud.rb
hugo-0.1.2 lib/hugo/cloud.rb
hugo-0.1.1 lib/hugo/cloud.rb
hugo-0.1.0 lib/hugo/cloud.rb