Class: Fog::Compute::AWS::SpotRequest
- Inherits:
-
Model
- Object
- Model
- Fog::Compute::AWS::SpotRequest
show all
- Defined in:
- lib/fog/aws/models/compute/spot_request.rb
Instance Attribute Summary collapse
Attributes inherited from Model
#collection, #connection
Instance Method Summary
collapse
Methods inherited from Model
#inspect, #reload, #symbolize_keys, #to_json, #wait_for
#_load, #aliases, #attribute, #attributes, #identity, #ignore_attributes, #ignored_attributes
#_dump, #attributes, #dup, #identity, #identity=, #merge_attributes, #new_record?, #requires, #requires_one
Constructor Details
#initialize(attributes = {}) ⇒ SpotRequest
Returns a new instance of SpotRequest.
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
# File 'lib/fog/aws/models/compute/spot_request.rb', line 40
def initialize(attributes={})
self.groups ||= ["default"]
self.flavor_id ||= 't1.micro'
self.image_id ||= begin
self.username = 'ubuntu'
case attributes[:connection].instance_variable_get(:@region) when 'ap-northeast-1'
'ami-5e0fa45f'
when 'ap-southeast-1'
'ami-f092eca2'
when 'eu-west-1'
'ami-3d1f2b49'
when 'us-east-1'
'ami-3202f25b'
when 'us-west-1'
'ami-f5bfefb0'
end
end
super
end
|
Instance Attribute Details
#private_key ⇒ Object
83
84
85
|
# File 'lib/fog/aws/models/compute/spot_request.rb', line 83
def private_key
@private_key ||= private_key_path && File.read(private_key_path)
end
|
#private_key_path ⇒ Object
78
79
80
81
|
# File 'lib/fog/aws/models/compute/spot_request.rb', line 78
def private_key_path
@private_key_path ||= Fog.credentials[:private_key_path]
@private_key_path &&= File.expand_path(@private_key_path)
end
|
#public_key ⇒ Object
92
93
94
|
# File 'lib/fog/aws/models/compute/spot_request.rb', line 92
def public_key
@public_key ||= public_key_path && File.read(public_key_path)
end
|
#public_key_path ⇒ Object
87
88
89
90
|
# File 'lib/fog/aws/models/compute/spot_request.rb', line 87
def public_key_path
@public_key_path ||= Fog.credentials[:public_key_path]
@public_key_path &&= File.expand_path(@public_key_path)
end
|
#username=(value) ⇒ Object
Sets the attribute username
38
39
40
|
# File 'lib/fog/aws/models/compute/spot_request.rb', line 38
def username=(value)
@username = value
end
|
Instance Method Details
#destroy ⇒ Object
61
62
63
64
65
66
|
# File 'lib/fog/aws/models/compute/spot_request.rb', line 61
def destroy
requires :id
connection.cancel_spot_instance_requests(id)
true
end
|
#key_pair ⇒ Object
68
69
70
71
72
|
# File 'lib/fog/aws/models/compute/spot_request.rb', line 68
def key_pair
requires :key_name
connection.key_pairs.all(key_name).first
end
|
#key_pair=(new_keypair) ⇒ Object
74
75
76
|
# File 'lib/fog/aws/models/compute/spot_request.rb', line 74
def key_pair=(new_keypair)
self.key_name = new_keypair && new_keypair.name
end
|
#ready? ⇒ Boolean
96
97
98
|
# File 'lib/fog/aws/models/compute/spot_request.rb', line 96
def ready?
state == 'active'
end
|
#save ⇒ Object
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
# File 'lib/fog/aws/models/compute/spot_request.rb', line 100
def save
requires :image_id, :flavor_id, :price
options = {
'AvailabilityZoneGroup' => availability_zone_group,
'InstanceCount' => instance_count,
'LaunchGroup' => launch_group,
'LaunchSpecification.BlockDeviceMapping' => block_device_mapping,
'LaunchSpecification.KeyName' => key_name,
'LaunchSpecification.Monitoring.Enabled' => monitoring,
'LaunchSpecification.Placement.AvailabilityZone' => availability_zone,
'LaunchSpecification.SecurityGroup' => groups,
'LaunchSpecification.UserData' => user_data,
'LaunchSpecification.SubnetId' => subnet_id,
'Type' => request_type,
'ValidFrom' => valid_from,
'ValidUntil' => valid_until }
options.delete_if {|key, value| value.nil?}
if subnet_id
options.delete('LaunchSpecification.SecurityGroup')
else
options.delete('LaunchSpecification.SubnetId')
end
data = connection.request_spot_instances(image_id, flavor_id, price, options).body
spot_instance_request = data['spotInstanceRequestSet'].first
spot_instance_request['launchSpecification'].each do |name,value|
spot_instance_request['LaunchSpecification.' + name[0,1].upcase + name[1..-1]] = value
end
spot_instance_request.merge(:groups => spot_instance_request['LaunchSpecification.GroupSet'])
spot_instance_request.merge(options)
merge_attributes( spot_instance_request )
end
|