Skip to content

Commit

Permalink
Merge pull request #17 from fog/clean_servers_collection
Browse files Browse the repository at this point in the history
Cleaned up Servers Collection!
  • Loading branch information
plribeiro3000 committed Jul 9, 2014
2 parents ba2a559 + 7be02a8 commit ebd5619
Show file tree
Hide file tree
Showing 8 changed files with 114 additions and 35 deletions.
20 changes: 20 additions & 0 deletions lib/fog/collection.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,25 @@ def get(ref)
rescue Fog::XenServer::NotFound
nil
end

def get_by_name(name)
ref = service.get_by_name(name, model.provider_class)
return nil if ref.nil?
get(ref)
rescue Fog::XenServer::NotFound
nil
end

alias_method :find_by_name, :get_by_name

def get_by_uuid(uuid)
ref = service.get_by_uuid(uuid, model.provider_class)
return nil if ref.nil?
get(ref)
rescue Fog::XenServer::NotFound
nil
end

alias_method :find_by_uuid, :get_by_uuid
end
end
3 changes: 3 additions & 0 deletions lib/fog/compute/xen_server.rb
Original file line number Diff line number Diff line change
Expand Up @@ -86,13 +86,16 @@ class XenServer < Fog::Service
collection :consoles

request_path 'fog/compute/xen_server/requests'
request :builtin_templates
request :create_server
request :create_vif
request :create_vdi
request :create_vbd
request :custom_templates
request :destroy_vif
request :clone_server
request :destroy_server
request :templates
request :unplug_vbd
request :eject_vbd
request :insert_vbd
Expand Down
31 changes: 6 additions & 25 deletions lib/fog/compute/xen_server/models/servers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,18 @@ class Servers < Fog::Collection
model Fog::Compute::XenServer::Models::Server

def templates
data = service.get_records 'VM'
data.delete_if do |vm|
!vm[:is_a_template]
end
load(data)
warn 'This method is DEPRECATED. Call #templates directly on the connection instead.'
service.templates
end

def custom_templates
data = service.get_records 'VM'
data.delete_if do |vm|
!vm[:is_a_template] or !vm[:other_config]['default_template'].nil?
end
load(data)
warn 'This method is DEPRECATED. Call #custom_templates directly on the connection instead.'
service.custom_templates
end

def builtin_templates
data = service.get_records 'VM'
data.delete_if do |vm|
!vm[:is_a_template] or vm[:other_config]['default_template'].nil?
end
load(data)
warn 'This method is DEPRECATED. Call #builtin_templates directly on the connection instead.'
service.builtin_templates
end

def all(options = {})
Expand All @@ -40,16 +31,6 @@ def all(options = {})
data.delete_if { |vm| options[:name_equals] and (vm[:name_label] != options[:name_equals] ) }
load(data)
end

def get_by_name(name)
ref = service.get_vm_by_name(name)
get ref
end

def get_by_uuid(uuid)
ref = service.get_vm_by_uuid(uuid)
get ref
end
end
end
end
Expand Down
21 changes: 21 additions & 0 deletions lib/fog/compute/xen_server/requests/builtin_templates.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
module Fog
module Compute
class XenServer
class Real
def builtin_templates
data = @connection.request(:parser => Fog::Parsers::XenServer::GetRecords.new, :method => "VM.get_all_records")
data.keep_if { |vm| vm[:is_a_template] && !vm[:other_config]['default_template'].nil? }
servers.load(data)
rescue Fog::XenServer::RequestFailed => e
[]
end
end

class Mock
def builtin_templates
Fog::Mock.not_implemented
end
end
end
end
end
8 changes: 0 additions & 8 deletions lib/fog/compute/xen_server/requests/create_server.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,6 @@ module Fog
module Compute
class XenServer
class Real
def get_vm_by_name(label)
@connection.request({:parser => Fog::Parsers::XenServer::Base.new, :method => 'VM.get_by_name_label' }, label)
end

def get_vm_by_uuid(uuid)
@connection.request({:parser => Fog::Parsers::XenServer::Base.new, :method => 'VM.get_by_uuid' }, uuid)
end

def create_server_raw(config = {})
config[:name_label] = config[:name] if config[:name]
config.delete :name
Expand Down
21 changes: 21 additions & 0 deletions lib/fog/compute/xen_server/requests/custom_templates.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
module Fog
module Compute
class XenServer
class Real
def custom_templates
data = @connection.request(:parser => Fog::Parsers::XenServer::GetRecords.new, :method => "VM.get_all_records")
data.keep_if { |vm| vm[:is_a_template] && vm[:other_config]['default_template'].nil? }
servers.load(data)
rescue Fog::XenServer::RequestFailed => e
[]
end
end

class Mock
def custom_templates
Fog::Mock.not_implemented
end
end
end
end
end
24 changes: 22 additions & 2 deletions lib/fog/compute/xen_server/requests/get_record.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,39 @@ module Fog
module Compute
class XenServer
class Real
def get_record( ref, klass, options = {} )
def get_record(ref, klass, options = {})
get_record_by_ref ref, klass, options
end

def get_record_by_ref( ref, klass, options = {} )
def get_record_by_ref(ref, klass, options = {})
@connection.request({:parser => Fog::Parsers::XenServer::Base.new, :method => "#{klass}.get_record"}, ref).merge(:reference => ref)
end

def get_by_name(name, provider_class)
@connection.request({ :parser => Fog::Parsers::XenServer::Base.new, :method => "#{provider_class}.get_by_name_label" }, name)
end

def get_by_uuid(uuid, provider_class)
@connection.request({ :parser => Fog::Parsers::XenServer::Base.new, :method => "#{provider_class}.get_by_uuid" }, uuid)
end
end

class Mock
def get_record
Fog::Mock.not_implemented
end

def get_record_by_ref
Fog::Mock.not_implemented
end

def get_by_name
Fog::Mock.not_implemented
end

def get_by_uuid
Fog::Mock.not_implemented
end
end
end
end
Expand Down
21 changes: 21 additions & 0 deletions lib/fog/compute/xen_server/requests/templates.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
module Fog
module Compute
class XenServer
class Real
def templates
data = @connection.request(:parser => Fog::Parsers::XenServer::GetRecords.new, :method => "VM.get_all_records")
data.keep_if { |vm| vm[:is_a_template] }
servers.load(data)
rescue Fog::XenServer::RequestFailed => e
[]
end
end

class Mock
def templates
Fog::Mock.not_implemented
end
end
end
end
end

0 comments on commit ebd5619

Please sign in to comment.