class Fog::Compute::Terremark::Server

Attributes

size[W]
type[W]

Public Instance Methods

PublicIpAddress() click to toggle source
# File lib/fog/compute/terremark/models/server.rb, line 43
def PublicIpAddress
  @PublicIpAddress ||=
      if internet_services.size > 0
        internet_services[0].PublicIpAddress["Name"]
      end
  @PublicIpAddress
end
create_internet_services(internet_spec) click to toggle source
# File lib/fog/compute/terremark/models/server.rb, line 128
def create_internet_services(internet_spec)
  public_ip_info = nil
  internet_service_id = nil
  internet_spec.each do |proto, ports|
    for port in ports
      if not public_ip_info
        #Create the first internet service and allocate public IP
        inet_services = service.internetservices.create({
                                                            "Name" => self.name,
                                                            "Protocol" => proto,
                                                            "Port" => port,
                                                        })
        internet_service_id = inet_services.Id
        public_ip_info = inet_services.PublicIpAddress

      else
        #create additional services to existing Public IP
        inet_services = service.internetservices.create({
                                                            "public_ip_address_id" => public_ip_info["Id"],
                                                            "Name" => self.name,
                                                            "Protocol" => proto,
                                                            "Port" => port,
                                                        }
        )
        internet_service_id = inet_services.Id
      end

      #Create the associate node service to the server
      service.nodeservices.create({"Name" => self.name,
                                   "IpAddress" => self.IpAddress,
                                   "Port" => port,
                                   "InternetServiceId" => internet_service_id
                                  })
    end
  end
  true
end
delete_internet_services() click to toggle source
# File lib/fog/compute/terremark/models/server.rb, line 55
def delete_internet_services
  #Find the internet service

  while (inet_service = internet_services.pop) do

    nodes = service.nodeservices.all(inet_service.Id)
    #Delete all the associated nodes
    nodes.select { |item| item.destroy }
    #Clear out the services
    inet_service.destroy(delete_public_ip = !(internet_services.size > 0))
  end
  true
end
destroy() click to toggle source
# File lib/fog/compute/terremark/models/server.rb, line 29
def destroy
  case self.status
    when VAppStatus::BEING_CREATED, VAppStatus::BEING_DEPLOYED
      return false
    when VAppStatus::POWERED_ON
      service.power_off(self.id).body
      wait_for { off? }
  end
  #Failsafe .. Always check if we are ready
  wait_for { ready? }
  service.delete_vapp(self.id)
  true
end
graceful_restart() click to toggle source
# File lib/fog/compute/terremark/models/server.rb, line 121
def graceful_restart
  requires :id
  shutdown
  wait_for { off? }
  power_on
end
internet_services() click to toggle source
# File lib/fog/compute/terremark/models/server.rb, line 51
def internet_services
  @internet_services ||= service.internetservices.all.select { |item| item.Name == self.name }
end
off?() click to toggle source
# File lib/fog/compute/terremark/models/server.rb, line 78
def off?
  status == VAppStatus::POWERED_OFF
end
on?() click to toggle source
# File lib/fog/compute/terremark/models/server.rb, line 74
def on?
  status == VAppStatus::POWERED_ON
end
power_off() click to toggle source
# File lib/fog/compute/terremark/models/server.rb, line 93
def power_off
  requires :id
  begin
    service.power_off(id)
  rescue Excon::Errors::InternalServerError => e
    # Frankly we shoudln't get here ...
    raise e unless e.to_s =~ /because it is already powered off/
  end
  true
end
power_on(_options = {}) click to toggle source
# File lib/fog/compute/terremark/models/server.rb, line 82
def power_on(_options = {})
  requires :id
  begin
    service.power_on(id)
  rescue Excon::Errors::InternalServerError => e
    # Frankly we shoudln't get here ...
    raise e unless e.to_s =~ /because it is already powered on/
  end
  true
end
power_reset() click to toggle source
# File lib/fog/compute/terremark/models/server.rb, line 115
def power_reset
  requires :id
  service.power_reset(id)
  true
end
ready?() click to toggle source

{ “0” => “Being created”, “2” => “Powered Off”, “4” => “Powered On”}

# File lib/fog/compute/terremark/models/server.rb, line 70
def ready?
  status == VAppStatus::POWERED_OFF
end
reload() click to toggle source
# File lib/fog/compute/terremark/models/server.rb, line 25
def reload
  merge_attributes(service.get_vapp(id).body)
end
save() click to toggle source
# File lib/fog/compute/terremark/models/server.rb, line 166
def save
  requires :name
  if powerOn
  end
  data = service.instantiate_vapp_template(
      server_name=name,
      vapp_template=image,
      options={
        "ssh_key_fingerprint" => sshkeyFingerPrint,
        "cpus" => vcpus,
        "memory" => memory
      })

  merge_attributes(data.body)
  wait_for { ready? }

  #Optional, incase further configuration required.
  if powerOn
    power_on
    wait_for { ready? }
  end

  true
end
shutdown() click to toggle source
# File lib/fog/compute/terremark/models/server.rb, line 104
def shutdown
  requires :id
  begin
    service.power_shutdown(id)
  rescue Excon::Errors::InternalServerError => e
    # Frankly we shoudln't get here ...
    raise e unless e.to_s =~ /because it is already powered off/
  end
  true
end

Private Instance Methods

href=(new_href) click to toggle source
# File lib/fog/compute/terremark/models/server.rb, line 195
def href=(new_href)
  self.id = new_href.split("/").last.to_i
end