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