Class: Fog::AWS::EC2::Instance

Inherits:
Model
  • Object
show all
Defined in:
lib/fog/aws/models/ec2/instance.rb

Instance Method Summary collapse

Methods inherited from Model

aliases, attribute, attributes, #attributes, #initialize, #inspect, #merge_attributes

Constructor Details

This class inherits a constructor from Fog::Model

Instance Method Details

#addressObject



26
27
28
# File 'lib/fog/aws/models/ec2/instance.rb', line 26

def address
  connection.addresses.select {|address| address.instance_id == @instance_id}.first
end

#address=(new_address) ⇒ Object



30
31
32
33
# File 'lib/fog/aws/models/ec2/instance.rb', line 30

def address=(new_address)
  new_address.instance_id = @instance_id
  connection.associate_address(@instance_id, new_address.public_ip)
end

#destroyObject



35
36
37
38
# File 'lib/fog/aws/models/ec2/instance.rb', line 35

def destroy
  connection.terminate_instances(@instance_id)
  true
end

#instancesObject



56
57
58
# File 'lib/fog/aws/models/ec2/instance.rb', line 56

def instances
  @instances
end

#key_pairObject

def security_group

connection.security_groups.all(@group_id)

end

def security_group=(new_security_group)

@group_id = new_security_group.name

end



48
49
50
# File 'lib/fog/aws/models/ec2/instance.rb', line 48

def key_pair
  connection.keypairs.all(@key_name).first
end

#key_pair=(new_keypair) ⇒ Object



52
53
54
# File 'lib/fog/aws/models/ec2/instance.rb', line 52

def key_pair=(new_keypair)
  @key_name = new_keypair.name
end

#monitoring=(new_monitoring) ⇒ Object



60
61
62
63
64
65
66
# File 'lib/fog/aws/models/ec2/instance.rb', line 60

def monitoring=(new_monitoring)
  if new_monitoring.is_a?(Hash)
    @monitoring = new_monitoring['state']
  else
    @monitoring = new_monitoring
  end
end

#placement=(new_placement) ⇒ Object



68
69
70
71
72
73
74
# File 'lib/fog/aws/models/ec2/instance.rb', line 68

def placement=(new_placement)
  if placement.is_a?(Hash)
    @availability_zone = new_placement['availabilityZone']
  else
    @availability_zone = new_placement
  end
end

#reloadObject



76
77
78
79
# File 'lib/fog/aws/models/ec2/instance.rb', line 76

def reload
  new_attributes = instances.all(@instance_id).first.attributes
  merge_attributes(new_attributes)
end

#saveObject



81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/fog/aws/models/ec2/instance.rb', line 81

def save
  options = {}
  if @availability_zone
    options['Placement.AvailabilityZone'] = @availability_zone
  end
  if @group_id
    options['groupId'] = @group_id
  end
  if @instance_type
    options['instanceType'] = @instance_type
  end
  if @kernel_id
    options['KernelId'] = @kernel_id
  end
  if @key_name
    options['KeyName'] = @key_name
  end
  if @monitoring
    options['Monitoring.Enabled'] = @monitoring
  end
  if @ramdisk_id
    options['RamdiskId'] = @ramdisk_id
  end
  if @user_data
    options['UserData'] = @user_data
  end
  data = connection.run_instances(@image_id, 1, 1, options)
  merge_attributes(data.body['instancesSet'].first)
  true
end

#volume=(new_volume) ⇒ Object



116
117
118
119
# File 'lib/fog/aws/models/ec2/instance.rb', line 116

def volume=(new_volume)
  new_volume.instance_id = @instance_id
  connection.attach_volume(@instance_id, new_volume.volume_id, new_volume.device)
end

#volumesObject



112
113
114
# File 'lib/fog/aws/models/ec2/instance.rb', line 112

def volumes
  connection.volumes.all.select {|volume| volume.instance_id == @instance_id}
end