Class: Provider::Ec2::Image

Inherits:
Object
  • Object
show all
Defined in:
lib/providers/ec2/image.rb

Instance Method Summary collapse

Constructor Details

#initialize(ec2, role, owner_id, ami_name) ⇒ Image

Returns a new instance of Image.



5
6
7
8
9
10
11
# File 'lib/providers/ec2/image.rb', line 5

def initialize(ec2, role, owner_id, ami_name)
  @ec2 = ec2
  @role = role
  @ami_name = ami_name
  @owner_id = owner_id
  @logger = Veronic::Deployer.new().logger
end

Instance Method Details

#detroyObject



19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/providers/ec2/image.rb', line 19

def detroy
  @logger.info "Destroying image #{@ami_name} ..."
  if get_image
    begin
      get_image.deregister
      sleep 5
      @logger.info "Image #{@ami_name} destroyed"
    rescue
      return false
    end
  end
  return true
end

#exists?Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/providers/ec2/image.rb', line 33

def exists?
  get_image
end

#get_imageObject



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/providers/ec2/image.rb', line 37

def get_image
  @get_image || AWS.memoize do
       @logger.info "Getting image #{@ami_name}"
    my_image = @ec2.images.with_owner(@owner_id).select {|x| x.name == @ami_name}.first
    unless my_image
      my_image = @ec2.images[@ami_name]
      unless my_image.exists?
           @logger.info "Unabled to found image #{@ami_name}"
        return false
      end
    else
      while my_image.exists? == false && my_image.state != :failed
        @logger.info "."
        sleep 1
      end
      while my_image.state == :pending && my_image.state != :failed
        @logger.info "."
        sleep 1
      end
      @logger.info ""
    end
       @get_image = my_image
    return @get_image
  end
end

#idObject



13
14
15
16
17
# File 'lib/providers/ec2/image.rb', line 13

def id
  if get_image
    get_image.id
  end
end