Class/Module Index [+]

Quicksearch

Fog::Compute::AWS::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
# File lib/fog/aws/models/compute/server.rb, line 53
def initialize(attributes={})
  self.groups     ||= ["default"] unless (attributes[:subnet_id] || attributes[:security_group_ids])
  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 84
def addresses
  requires :id

  service.addresses(:server => self)
end
console_output() click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 90
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 96
def destroy
  requires :id

  service.terminate_instances(id)
  true
end
flavor() click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 112
def flavor
  @flavor ||= service.flavors.all.detect {|flavor| flavor.id == flavor_id}
end
flavor=(new_flavor) click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 108
def flavor=(new_flavor)
  @flavor = new_flavor
end
flavor_id() click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 104
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 116
def key_pair
  requires :key_name

  service.key_pairs.all(key_name).first
end
key_pair=(new_keypair) click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 122
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 230
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 126
def ready?
  state == 'running'
end
reboot() click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 130
def reboot
  requires :id
  service.reboot_instances(id)
  true
end
save() click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 136
def save
  raise Fog::Errors::Error.new('Resaving an existing object may create a duplicate') if persisted?
  requires :image_id

  options = {
    'BlockDeviceMapping'          => block_device_mapping,
    'ClientToken'                 => client_token,
    '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,
  }
  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')
  else
    options.delete('SubnetId')
  end

  data = service.run_instances(image_id, 1, 1, options)
  merge_attributes(data.body['instancesSet'].first)

  if tags = self.tags
    # expect eventual consistency
    Fog.wait_for { self.reload rescue nil }
    for key, value in (self.tags = tags)
      service.tags.create(
        :key          => key,
        :resource_id  => self.identity,
        :value        => value
      )
    end
  end

  true
end
setup(credentials = {}) click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 191
def setup(credentials = {})
  requires :public_ip_address, :username
  require 'net/ssh'

  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(public_ip_address, username, credentials).run(commands)
end
start() click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 210
def start
  requires :id
  service.start_instances(id)
  true
end
stop(force = false) click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 216
def stop(force = false)
  requires :id
  service.stop_instances(id, force)
  true
end
volumes() click to toggle source
# File lib/fog/aws/models/compute/server.rb, line 222
def volumes
  requires :id
  service.volumes(:server => self)
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.