mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
116 lines
2.5 KiB
Ruby
116 lines
2.5 KiB
Ruby
require 'fog/compute/models/server'
|
|
module Fog
|
|
module Compute
|
|
class Joyent
|
|
|
|
class Server < Fog::Compute::Server
|
|
identity :id
|
|
|
|
attribute :name
|
|
attribute :state
|
|
attribute :type
|
|
attribute :dataset
|
|
attribute :ips
|
|
attribute :memory
|
|
attribute :disk
|
|
attribute :metadata
|
|
|
|
attribute :created, :type => :time
|
|
attribute :updated, :type => :time
|
|
|
|
def ready?
|
|
self.state == 'running'
|
|
end
|
|
|
|
def stopped?
|
|
requires :id
|
|
self.state == 'stopped'
|
|
end
|
|
|
|
def destroy
|
|
requires :id
|
|
self.connection.delete_machine(id)
|
|
true
|
|
end
|
|
|
|
def start
|
|
requires :id
|
|
self.connection.start_machine(id)
|
|
self.wait_for { ready? }
|
|
true
|
|
end
|
|
|
|
def stop
|
|
requires :id
|
|
self.connection.stop_machine(id)
|
|
self.wait_for { stopped? }
|
|
true
|
|
end
|
|
|
|
def resize(flavor)
|
|
requires :id
|
|
self.connection.resize_machine(id, flavor)
|
|
true
|
|
end
|
|
|
|
def reboot
|
|
requires :id
|
|
self.connection.reboot_machine(id)
|
|
true
|
|
end
|
|
|
|
def snapshots
|
|
requires :id
|
|
self.connection.snapshots.all(id)
|
|
end
|
|
|
|
def update_metadata(data = {})
|
|
requires :id
|
|
self.connection.update_machine_metadata(self.id, data)
|
|
self.reload
|
|
true
|
|
end
|
|
|
|
def delete_metadata(keyname)
|
|
raise ArgumentError, "Must provide a key name to delete" if keyname.nil? || keyname.empty?
|
|
requires :id
|
|
|
|
self.connection.delete_machine_metadata(self.id, keyname)
|
|
true
|
|
end
|
|
|
|
def delete_all_metadata
|
|
requires :id
|
|
self.connection.delete_all_machine_metadata(self.id)
|
|
true
|
|
end
|
|
|
|
def tags
|
|
requires :id
|
|
self.connection.list_machine_tags(id).body
|
|
end
|
|
|
|
def add_tags(tags_hash = {})
|
|
requires :id
|
|
self.connection.add_machine_tags(self.id, tags_hash).body
|
|
end
|
|
|
|
def delete_tag(tagname)
|
|
requires :id
|
|
|
|
raise ArgumentError, "Must provide a tag name to delete" if tagname.nil? || tagname.empty?
|
|
self.connection.delete_machine_tag(self.id, tagname)
|
|
true
|
|
end
|
|
|
|
def delete_all_tags
|
|
requires :id
|
|
|
|
self.connection.delete_all_machine_tags(self.id)
|
|
true
|
|
end
|
|
|
|
end
|
|
end
|
|
end
|
|
end
|