class Fog::Compute::DigitalOcean::Servers
Public Instance Methods
Returns list of servers @return [Fog::Compute::DigitalOcean::Servers] Retrieves a list of servers. @raise [Fog::Compute::DigitalOcean::NotFound] - HTTP 404 @raise [Fog::Compute::DigitalOcean::BadRequest] - HTTP 400 @raise [Fog::Compute::DigitalOcean::InternalServerError] - HTTP 500 @raise [Fog::Compute::DigitalOcean::ServiceError] @see developers.digitalocean.com/v1/droplets/
# File lib/fog/digitalocean/models/compute/servers.rb, line 17 def all(filters = {}) data = service.list_servers.body['droplets'] load(data) end
Creates a new server and populates ssh keys
@return [Fog::Compute::DigitalOcean::Server] @raise [Fog::Compute::DigitalOcean::NotFound] - HTTP 404 @raise [Fog::Compute::DigitalOcean::BadRequest] - HTTP 400 @raise [Fog::Compute::DigitalOcean::InternalServerError] - HTTP 500 @raise [Fog::Compute::DigitalOcean::ServiceError] @note This creates an SSH public key object and assigns it to the server on creation @example
service.servers.bootstrap :name => 'bootstrap-server', :flavor_ref => service.flavors.first.id, :image_ref => service.images.find {|img| img.name =~ /Ubuntu/}.id, :public_key_path => '~/.ssh/fog_rsa.pub', :private_key_path => '~/.ssh/fog_rsa'
# File lib/fog/digitalocean/models/compute/servers.rb, line 37 def bootstrap(new_attributes = {}) server = new(new_attributes) check_keys(new_attributes) credential = Fog.respond_to?(:credential) && Fog.credential || :default name = "fog_#{credential}" ssh_key = service.ssh_keys.find { |key| key.name == name } if ssh_key.nil? ssh_key = service.ssh_keys.create( :name => name, :ssh_pub_key => (new_attributes[:public_key] || File.read(new_attributes[:public_key_path])) ) end server.ssh_keys = [ssh_key] server.save server.wait_for { ready? } if new_attributes[:private_key] server.setup :key_data => [new_attributes[:private_key]] else server.setup :keys => [new_attributes[:private_key_path]] end server end
Retrieves server @param [String] id for server to be returned @return [Fog::Compute::DigitalOcean:Server] @raise [Fog::Compute::DigitalOcean::NotFound] - HTTP 404 @raise [Fog::Compute::DigitalOcean::BadRequest] - HTTP 400 @raise [Fog::Compute::DigitalOcean::InternalServerError] - HTTP 500 @raise [Fog::Compute::DigitalOcean::ServiceError] @see developers.digitalocean.com/v1/droplets/
# File lib/fog/digitalocean/models/compute/servers.rb, line 73 def get(id) server = service.get_server_details(id).body['droplet'] new(server) if server rescue Fog::Errors::NotFound nil end
Protected Instance Methods
# File lib/fog/digitalocean/models/compute/servers.rb, line 87 def check_key(name, data, path) if [data, path].all?(&:nil?) raise ArgumentError, "either #{name}_key or #{name}_key_path is required to configure the server" end end
# File lib/fog/digitalocean/models/compute/servers.rb, line 82 def check_keys(attributes) check_key :public, attributes[:public_key], attributes[:public_key_path] check_key :private, attributes[:private_key], attributes[:private_key_path] end