diff --git a/lib/fog/glesys/models/compute/ips.rb b/lib/fog/glesys/models/compute/ips.rb index 1aeacf6b4..c955deef9 100644 --- a/lib/fog/glesys/models/compute/ips.rb +++ b/lib/fog/glesys/models/compute/ips.rb @@ -69,7 +69,7 @@ module Fog ip = new data if options[:attach] && serverid - server.attach_ip ip + server.ips.attach ip, serverid ip.serverid = serverid end diff --git a/lib/fog/glesys/models/compute/server.rb b/lib/fog/glesys/models/compute/server.rb index 8c58abb13..f1b5edb3a 100644 --- a/lib/fog/glesys/models/compute/server.rb +++ b/lib/fog/glesys/models/compute/server.rb @@ -14,11 +14,8 @@ module Fog attribute :cpucores attribute :memorysize attribute :disksize - attribute :cpu - attribute :memory - attribute :disk - attribute :uptime attribute :transfer + attribute :uptime attribute :templatename attribute :managedhosting attribute :platform @@ -27,6 +24,7 @@ module Fog attribute :state attribute :iplist attribute :description + attribute :usage attribute :glera_enabled, :aliases => "gleraenabled" attribute :supported_features, :aliases => "supportedfeatures" diff --git a/lib/fog/glesys/models/compute/servers.rb b/lib/fog/glesys/models/compute/servers.rb index 6a4b26e93..ae959d120 100644 --- a/lib/fog/glesys/models/compute/servers.rb +++ b/lib/fog/glesys/models/compute/servers.rb @@ -24,8 +24,14 @@ module Fog if details.empty? || status.empty? nil else - status['server'].merge!({ :serverid => identifier}) + details['server']['usage'] = Hash.new + + %w|cpu memory disk transfer|.each do |attr| + details['server']['usage'][attr] = status['server'].delete(attr) + end + details['server'].merge!(status['server']) + new(details['server']) end rescue diff --git a/lib/fog/glesys/models/compute/template.rb b/lib/fog/glesys/models/compute/template.rb index b8eac3579..4d0ebdee4 100644 --- a/lib/fog/glesys/models/compute/template.rb +++ b/lib/fog/glesys/models/compute/template.rb @@ -1,25 +1,16 @@ require 'fog/core/model' module Fog - module Glesys - class Compute - + module Compute + class Glesys class Template < Fog::Model - extend Fog::Deprecation - identity :name - attribute :platform attribute :operating_system, :aliases => "operatingsystem" attribute :minimum_memory_size, :aliases => "minimummemorysize" attribute :minimum_disk_size, :aliases => "minimumdisksize" attribute :instance_cost, :aliases => "instancecost" attribute :license_cost, :aliases => "licensecost" - - def list - service.template_list - end - end end end diff --git a/lib/fog/glesys/models/compute/templates.rb b/lib/fog/glesys/models/compute/templates.rb index 42ab4c0b0..322d2bd57 100644 --- a/lib/fog/glesys/models/compute/templates.rb +++ b/lib/fog/glesys/models/compute/templates.rb @@ -4,22 +4,34 @@ require 'fog/glesys/models/compute/template' module Fog module Compute class Glesys - class Templates < Fog::Collection - model Fog::Glesys::Compute::Template + model Fog::Compute::Glesys::Template def all - request = service.template_list.body - templates = request['response']['templates'] - # Only select OpenVZ and Xen platforms # Glesys only offers Xen and OpenVZ but they have other platforms in the list - templates = templates.select do |platform, templates| - %w|openvz xen|.include?(platform.downcase) - end.collect{|platform, templates| templates}.flatten + images = platform :openvz, :xen + load(images) + end - load(templates) + def openvz + images = platform :openvz + load(images) + end + + def xen + images = platform :xen + load(images) + end + + private + + def platform(*platforms) + images = service.template_list.body['response']['templates'] + images.select do |platform, images| + platforms.include?(platform.downcase.to_sym) + end.collect{|platform, images| images}.flatten end end diff --git a/lib/fog/rackspace/models/storage/file.rb b/lib/fog/rackspace/models/storage/file.rb index b04859537..34132b9f3 100644 --- a/lib/fog/rackspace/models/storage/file.rb +++ b/lib/fog/rackspace/models/storage/file.rb @@ -120,21 +120,21 @@ module Fog def header_to_key(opt) opt.gsub(metadata_prefix, '').split('-').map {|k| k[0, 1].downcase + k[1..-1]}.join('_').to_sym end - + def metadata_to_headers - header_map = header_mapping - Hash[metadata.map {|k, v| [header_map[k], v] }] - end + hash = {} + metadata.each_pair do |k,v| + key = metakey(k,v) + hash[key] = v + end + hash + end - def header_mapping - header_map = metadata.dup - header_map.each_pair {|k, v| header_map[k] = key_to_header(k)} + def metakey(key, value) + prefix = value.nil? ? "X-Remove-Object-Meta-" : "X-Object-Meta-" + prefix + key.to_s.split(/[-_]/).map(&:capitalize).join('-') end - - def key_to_header(key) - metadata_prefix + key.to_s.split(/[-_]/).map(&:capitalize).join('-') - end - + def metadata_attributes if last_modified headers = service.head_object(directory.key, self.key).headers diff --git a/tests/rackspace/models/storage/file_tests.rb b/tests/rackspace/models/storage/file_tests.rb index 8d2172185..62c8a2af0 100644 --- a/tests/rackspace/models/storage/file_tests.rb +++ b/tests/rackspace/models/storage/file_tests.rb @@ -3,7 +3,7 @@ Shindo.tests('Fog::Rackspace::Storage | file', ['rackspace']) do pending if Fog.mocking? def object_meta_attributes - @instance.connection.head_object(@directory.key, @instance.key).headers.reject {|k, v| !(k =~ /X-Object-Meta-/)} + @instance.service.head_object(@directory.key, @instance.key).headers.reject {|k, v| !(k =~ /X-Object-Meta-/)} end def clear_metadata @@ -64,8 +64,20 @@ Shindo.tests('Fog::Rackspace::Storage | file', ['rackspace']) do @instance.metadata[:foo] = nil @instance.save object_meta_attributes - end + end + tests("removes one key while leaving the other") do + @instance.metadata[:color] = "green" + @instance.save + returns({"X-Object-Meta-Foo"=>"bar", "X-Object-Meta-Color"=>"green"}) { object_meta_attributes } + + tests("set metadata[:color] = nil").returns({"X-Object-Meta-Foo"=>"bar"}) do + @instance.metadata[:color] = nil + @instance.save + + object_meta_attributes + end + end end tests('#metadata keys') do @@ -105,7 +117,6 @@ Shindo.tests('Fog::Rackspace::Storage | file', ['rackspace']) do @instance.save object_meta_attributes['X-Object-Meta-Foo-Bar'] end - end end