class Fog::AWS::Compute::Server
Attributes
architecture[RW]
iam_instance_profile_arn[W]
iam_instance_profile_name[W]
instance_initiated_shutdown_behavior[RW]
password[RW]
Public Class Methods
new(attributes={})
click to toggle source
Calls superclass method
# File lib/fog/aws/models/compute/server.rb, line 61 def initialize(attributes={}) self.groups ||= ["default"] unless (attributes[:subnet_id] || attributes[:security_group_ids] || attributes[:network_interfaces]) self.flavor_id ||= 't1.micro' # Old 'connection' is renamed as service and should be used instead prepare_service_value(attributes) self.image_id ||= begin self.username ||= 'ubuntu' case @service.instance_variable_get(:@region) # Ubuntu 10.04 LTS 64bit (EBS) when 'ap-northeast-1' 'ami-5e0fa45f' when 'ap-southeast-1' 'ami-f092eca2' when 'ap-southeast-2' 'ami-fb8611c1' # Ubuntu 12.04 LTS 64bit (EBS) when 'eu-west-1' 'ami-3d1f2b49' when 'sa-east-1' 'ami-d0429ccd' when 'us-east-1' 'ami-3202f25b' when 'us-west-1' 'ami-f5bfefb0' when 'us-west-2' 'ami-e0ec60d0' end end super end
Public Instance Methods
addresses()
click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 92 def addresses requires :id service.addresses(:server => self) end
console_output()
click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 98 def console_output requires :id service.get_console_output(id) end
destroy()
click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 104 def destroy requires :id service.terminate_instances(id) true end
flavor()
click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 120 def flavor @flavor ||= service.flavors.all.find {|flavor| flavor.id == flavor_id} end
flavor=(new_flavor)
click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 116 def flavor=(new_flavor) @flavor = new_flavor end
flavor_id()
click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 112 def flavor_id @flavor && @flavor.id || attributes[:flavor_id] end
key_pair()
click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 124 def key_pair requires :key_name service.key_pairs.all({'key-name' => key_name}).first end
key_pair=(new_keypair)
click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 129 def key_pair=(new_keypair) self.key_name = new_keypair && new_keypair.name end
monitor=(new_monitor)
click to toggle source
I tried to call it monitoring= and be smart with attributes[] but in save
a merge_attribute is called after run_instance thus making an un-necessary request. Use this until finding a clever solution
# File lib/fog/aws/models/compute/server.rb, line 248 def monitor=(new_monitor) if persisted? case new_monitor when true response = service.monitor_instances(identity) when false response = service.unmonitor_instances(identity) else raise ArgumentError.new("only Boolean allowed here") end end self.monitoring = new_monitor end
ready?()
click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 133 def ready? state == 'running' end
reboot()
click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 137 def reboot requires :id service.reboot_instances(id) true end
run_instance_options()
click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 143 def run_instance_options raise Fog::Errors::Error.new('Resaving an existing object may create a duplicate') if persisted? requires :image_id options = { 'BlockDeviceMapping' => block_device_mapping, 'HibernationOptions' => hibernation_options, 'NetworkInterfaces' => network_interfaces, 'ClientToken' => client_token, 'DisableApiTermination' => disable_api_termination, 'EbsOptimized' => ebs_optimized, 'IamInstanceProfile.Arn' => @iam_instance_profile_arn, 'IamInstanceProfile.Name' => @iam_instance_profile_name, 'InstanceInitiatedShutdownBehavior' => instance_initiated_shutdown_behavior, 'InstanceType' => flavor_id, 'KernelId' => kernel_id, 'KeyName' => key_name, 'Monitoring.Enabled' => monitoring, 'Placement.AvailabilityZone' => availability_zone, 'Placement.GroupName' => placement_group, 'Placement.Tenancy' => tenancy, 'PrivateIpAddress' => private_ip_address, 'RamdiskId' => ramdisk_id, 'SecurityGroup' => groups, 'SecurityGroupId' => security_group_ids, 'SubnetId' => subnet_id, 'UserData' => user_data, 'TagSpecifications' => tag_specifications, } options.delete_if {|key, value| value.nil?} # If subnet is defined then this is a Virtual Private Cloud. # subnet & security group cannot co-exist. Attempting to specify # both subnet and groups will cause an error. Instead please make # use of Security Group Ids when working in a VPC. if subnet_id options.delete('SecurityGroup') if associate_public_ip options['NetworkInterface.0.DeviceIndex'] = 0 options['NetworkInterface.0.AssociatePublicIpAddress'] = associate_public_ip options['NetworkInterface.0.SubnetId'] = options['SubnetId'] options.delete('SubnetId') if options['SecurityGroupId'].kind_of?(Array) options['SecurityGroupId'].each {|id| options["NetworkInterface.0.SecurityGroupId.#{options['SecurityGroupId'].index(id)}"] = id } else options["NetworkInterface.0.SecurityGroupId.0"] = options['SecurityGroupId'] end options.delete('SecurityGroupId') if private_ip_address options.delete('PrivateIpAddress') options['NetworkInterface.0.PrivateIpAddress'] = private_ip_address end end else options.delete('SubnetId') end options end
save()
click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 204 def save servers = service.servers.save_many(self, 1, 1) merge_attributes(servers.first.attributes) true end
setup(credentials = {})
click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 210 def setup(credentials = {}) requires :ssh_ip_address, :username commands = [ %{mkdir .ssh}, %{passwd -l #{username}}, %{echo "#{Fog::JSON.encode(Fog::JSON.sanitize(attributes))}" >> ~/attributes.json} ] if public_key commands << %{echo "#{public_key}" >> ~/.ssh/authorized_keys} end # wait for aws to be ready wait_for { sshable?(credentials) } Fog::SSH.new(ssh_ip_address, username, credentials).run(commands) end
start()
click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 228 def start requires :id service.start_instances(id) true end
stop(options = {})
click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 234 def stop(options = {}) requires :id service.stop_instances(id, options) true end
volumes()
click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 240 def volumes requires :id service.volumes(:server => self) end
Private Instance Methods
placement=(new_placement)
click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 264 def placement=(new_placement) if new_placement.is_a?(Hash) merge_attributes(new_placement) else self.attributes[:placement] = new_placement end end