Class: Rubber::Cloud::Vagrant

Inherits:
Generic show all
Defined in:
lib/rubber/cloud/vagrant.rb

Constant Summary

Constants inherited from Generic

Generic::MUTEX

Instance Attribute Summary

Attributes inherited from Base

#capistrano, #env

Instance Method Summary collapse

Methods inherited from Generic

add_instance, #create_instance, #initialize, instances

Methods inherited from Fog

#after_create_volume, #after_destroy_volume, #attach_static_ip, #before_create_volume, #before_destroy_volume, #compute_provider, #create_image, #create_instance, #create_static_ip, #create_volume, #describe_images, #describe_load_balancers, #describe_static_ips, #destroy_image, #destroy_spot_instance_request, #destroy_static_ip, #destroy_volume, #detach_static_ip, #initialize, #reboot_instance, #should_destroy_volume_when_instance_destroyed?, #storage, #storage_provider, #table_store

Methods inherited from Base

#after_create_instance, #after_refresh_instance, #after_start_instance, #after_stop_instance, #before_refresh_instance, #before_start_instance, #before_stop_instance, #describe_security_groups, #initialize, #inject_auto_security_groups, #isolate_group_name, #isolate_groups, #isolate_prefix, #setup_security_groups, #setup_vpc, #should_disable_password_based_ssh_login?

Constructor Details

This class inherits a constructor from Rubber::Cloud::Generic

Instance Method Details

#active_stateObject



7
8
9
# File 'lib/rubber/cloud/vagrant.rb', line 7

def active_state
  'running'
end

#before_create_instance(instance) ⇒ Object



15
16
17
18
19
# File 'lib/rubber/cloud/vagrant.rb', line 15

def before_create_instance(instance)
  unless ENV.has_key?('RUN_FROM_VAGRANT')
    capistrano.fatal "Since you are using the 'vagrant' provider, you must create instances by running `vagrant up #{instance.instance_alias}`."
  end
end

#describe_instances(instance_id = nil) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/rubber/cloud/vagrant.rb', line 21

def describe_instances(instance_id=nil)
  output = `vagrant status #{instance_id}`

  output =~ /#{instance_id}\s+(\w+)/m
  state = $1

  if Generic.instances
    Generic.instances.each do |instance|
      if instance[:id] == instance_id
        instance[:state] = state
        instance[:provider] = 'vagrant'
      end
    end

    Generic.instances
  else
    instance = {}
    instance[:id] = instance_id
    instance[:state] = state
    instance[:external_ip] = capistrano.rubber.get_env('EXTERNAL_IP', "External IP address for host '#{instance_id}'", true)
    instance[:internal_ip] = capistrano.rubber.get_env('INTERNAL_IP', "Internal IP address for host '#{instance_id}'", true, instance[:external_ip])
    instance[:provider] = 'vagrant'

    [instance]
  end
end

#destroy_instance(instance_id) ⇒ Object



48
49
50
51
52
53
# File 'lib/rubber/cloud/vagrant.rb', line 48

def destroy_instance(instance_id)
  # If it's being run from vagrant, then 'vagrant destroy' must have been called already, so no need for us to do it.
  unless ENV.has_key?('RUN_FROM_VAGRANT')
    system("vagrant destroy #{instance_id} --force")
  end
end

#start_instance(instance) ⇒ Object



59
60
61
# File 'lib/rubber/cloud/vagrant.rb', line 59

def start_instance(instance)
  system("vagrant resume #{instance.instance_id}")
end

#stop_instance(instance, force = false) ⇒ Object



55
56
57
# File 'lib/rubber/cloud/vagrant.rb', line 55

def stop_instance(instance, force=false)
  system("vagrant suspend #{instance.instance_id}")
end

#stopped_stateObject



11
12
13
# File 'lib/rubber/cloud/vagrant.rb', line 11

def stopped_state
  'saved'
end