From 1f5b152839731dcec9f23c89f90b79eab0664707 Mon Sep 17 00:00:00 2001 From: Paul Thornthwaite Date: Mon, 19 Sep 2011 17:29:17 +0100 Subject: [PATCH 01/14] [compute|brightbox] Fixed typo in connection options --- lib/fog/brightbox/compute.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/fog/brightbox/compute.rb b/lib/fog/brightbox/compute.rb index 17824eb7f..0447752dd 100644 --- a/lib/fog/brightbox/compute.rb +++ b/lib/fog/brightbox/compute.rb @@ -106,7 +106,7 @@ module Fog @connection_options = options[:connection_options] || {} @brightbox_client_id = options[:brightbox_client_id] || Fog.credentials[:brightbox_client_id] @brightbox_secret = options[:brightbox_secret] || Fog.credentials[:brightbox_secret] - @persistent = options[:peristent] || false + @persistent = options[:persistent] || false @connection = Fog::Connection.new(@api_url, @persistent, @connection_options) end From e83401dea8ee494eba7d4eaf333b598ed4a45a28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Lindstro=CC=88m?= Date: Tue, 20 Sep 2011 12:15:23 +0200 Subject: [PATCH 02/14] [compute|glesys] fixed logical error for default values --- lib/fog/glesys/models/compute/server.rb | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/fog/glesys/models/compute/server.rb b/lib/fog/glesys/models/compute/server.rb index 18f9a323f..0a9ec3619 100644 --- a/lib/fog/glesys/models/compute/server.rb +++ b/lib/fog/glesys/models/compute/server.rb @@ -50,15 +50,15 @@ module Fog requires :hostname, :rootpw options = { - :datacenter => "Falkenberg" || datacenter, - :platform => "Xen" || platform, + :datacenter => datacenter || "Falkenberg", + :platform => platform || "Xen", :hostname => hostname, - :template => "Debian-6 x64" || template, - :disksize => "10" || disksize, - :memorysize => "512" || memorysize, - :cpucores => "1" || cpucores, + :template => template || "Debian-6 x64", + :disksize => disksize || "10", + :memorysize => memorysize || "512", + :cpucores => cpucores || "1", :rootpw => rootpw, - :transfer => "500" || transfer, + :transfer => transfer || "500", } data = connection.create(options) merge_attributes(data.body['response']['server']) From ddbfd809249638a226679e7733335f043ae0b340 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Lindstro=CC=88m?= Date: Tue, 20 Sep 2011 13:34:03 +0200 Subject: [PATCH 03/14] [compute|glesys] fixed an invalid character --- lib/fog/glesys/models/compute/server.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/fog/glesys/models/compute/server.rb b/lib/fog/glesys/models/compute/server.rb index 0a9ec3619..714fc3c51 100644 --- a/lib/fog/glesys/models/compute/server.rb +++ b/lib/fog/glesys/models/compute/server.rb @@ -56,7 +56,7 @@ module Fog :template => template || "Debian-6 x64", :disksize => disksize || "10", :memorysize => memorysize || "512", - :cpucores => cpucores || "1", + :cpucores => cpucores || "1", :rootpw => rootpw, :transfer => transfer || "500", } From f69d827c3d04439ba1fc05839896319611b79d3c Mon Sep 17 00:00:00 2001 From: Dan Peterson Date: Mon, 19 Sep 2011 17:17:44 -0300 Subject: [PATCH 04/14] [compute|aws] When mocking, instances don't show up right away. --- lib/fog/aws/requests/compute/describe_instances.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/fog/aws/requests/compute/describe_instances.rb b/lib/fog/aws/requests/compute/describe_instances.rb index 580072eca..b48c19f18 100644 --- a/lib/fog/aws/requests/compute/describe_instances.rb +++ b/lib/fog/aws/requests/compute/describe_instances.rb @@ -160,7 +160,11 @@ module Fog instance_set.each do |instance| case instance['instanceState']['name'] when 'pending' - if Time.now - instance['launchTime'] >= Fog::Mock.delay + if Time.now - instance['launchTime'] < Fog::Mock.delay * 2 + raise Fog::Compute::AWS::NotFound.new("The instance ID '#{instance['instanceId']}' does not exist") + end + + if Time.now - instance['launchTime'] >= Fog::Mock.delay * 2 instance['ipAddress'] = Fog::AWS::Mock.ip_address instance['originalIpAddress'] = instance['ipAddress'] instance['dnsName'] = Fog::AWS::Mock.dns_name_for(instance['ipAddress']) From 387f374d2c9cc532f5c30a4447613e0f697aedcd Mon Sep 17 00:00:00 2001 From: geemus Date: Tue, 20 Sep 2011 10:14:53 -0500 Subject: [PATCH 05/14] [rackspace|storage] fix broken model paths closes #516 --- .../storage/rackspace => models/storage}/directories.rb | 0 .../{requests/storage/rackspace => models/storage}/directory.rb | 2 +- .../{requests/storage/rackspace => models/storage}/file.rb | 0 .../{requests/storage/rackspace => models/storage}/files.rb | 0 4 files changed, 1 insertion(+), 1 deletion(-) rename lib/fog/rackspace/{requests/storage/rackspace => models/storage}/directories.rb (100%) rename lib/fog/rackspace/{requests/storage/rackspace => models/storage}/directory.rb (99%) rename lib/fog/rackspace/{requests/storage/rackspace => models/storage}/file.rb (100%) rename lib/fog/rackspace/{requests/storage/rackspace => models/storage}/files.rb (100%) diff --git a/lib/fog/rackspace/requests/storage/rackspace/directories.rb b/lib/fog/rackspace/models/storage/directories.rb similarity index 100% rename from lib/fog/rackspace/requests/storage/rackspace/directories.rb rename to lib/fog/rackspace/models/storage/directories.rb diff --git a/lib/fog/rackspace/requests/storage/rackspace/directory.rb b/lib/fog/rackspace/models/storage/directory.rb similarity index 99% rename from lib/fog/rackspace/requests/storage/rackspace/directory.rb rename to lib/fog/rackspace/models/storage/directory.rb index 2f1ea1fd9..5f921152f 100644 --- a/lib/fog/rackspace/requests/storage/rackspace/directory.rb +++ b/lib/fog/rackspace/models/storage/directory.rb @@ -68,7 +68,7 @@ module Fog end true end - + end end diff --git a/lib/fog/rackspace/requests/storage/rackspace/file.rb b/lib/fog/rackspace/models/storage/file.rb similarity index 100% rename from lib/fog/rackspace/requests/storage/rackspace/file.rb rename to lib/fog/rackspace/models/storage/file.rb diff --git a/lib/fog/rackspace/requests/storage/rackspace/files.rb b/lib/fog/rackspace/models/storage/files.rb similarity index 100% rename from lib/fog/rackspace/requests/storage/rackspace/files.rb rename to lib/fog/rackspace/models/storage/files.rb From 842f1b6e5089724d37b2015cf0c878c205cf4b30 Mon Sep 17 00:00:00 2001 From: Paul Thornthwaite Date: Fri, 16 Sep 2011 13:08:48 +0100 Subject: [PATCH 06/14] [compute|brightbox] Added missing requests * reset_secret_api_client - hopefully people won't lock themselves out with this * update_cloud_ip - request added --- .../requests/compute/reset_secret_api_client.rb | 14 ++++++++++++++ .../brightbox/requests/compute/update_cloud_ip.rb | 15 +++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 lib/fog/brightbox/requests/compute/reset_secret_api_client.rb create mode 100644 lib/fog/brightbox/requests/compute/update_cloud_ip.rb diff --git a/lib/fog/brightbox/requests/compute/reset_secret_api_client.rb b/lib/fog/brightbox/requests/compute/reset_secret_api_client.rb new file mode 100644 index 000000000..50b8a2788 --- /dev/null +++ b/lib/fog/brightbox/requests/compute/reset_secret_api_client.rb @@ -0,0 +1,14 @@ +module Fog + module Compute + class Brightbox + class Real + + def reset_secret_api_client(identifier) + return nil if identifier.nil? || identifier == "" + request("post", "/1.0/api_clients/#{identifier}/reset_secret", [200]) + end + + end + end + end +end \ No newline at end of file diff --git a/lib/fog/brightbox/requests/compute/update_cloud_ip.rb b/lib/fog/brightbox/requests/compute/update_cloud_ip.rb new file mode 100644 index 000000000..f3a66508a --- /dev/null +++ b/lib/fog/brightbox/requests/compute/update_cloud_ip.rb @@ -0,0 +1,15 @@ +module Fog + module Compute + class Brightbox + class Real + + def update_cloud_ip(identifier, options) + return nil if identifier.nil? || identifier == "" + return nil if options.empty? || options.nil? + request("put", "/1.0/cloud_ips/#{identifier}", [200], options) + end + + end + end + end +end \ No newline at end of file From ae6859ff010753d8bf6d146cbed902dc75ba99a7 Mon Sep 17 00:00:00 2001 From: Caius Durling Date: Tue, 20 Sep 2011 12:04:47 +0100 Subject: [PATCH 07/14] [compute|brightbox] Allow persistent option to be passed to Brightbox::Compute --- lib/fog/brightbox/compute.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/fog/brightbox/compute.rb b/lib/fog/brightbox/compute.rb index 0447752dd..52f40c60e 100644 --- a/lib/fog/brightbox/compute.rb +++ b/lib/fog/brightbox/compute.rb @@ -8,7 +8,7 @@ module Fog API_URL = "https://api.gb1.brightbox.com/" requires :brightbox_client_id, :brightbox_secret - recognizes :brightbox_auth_url, :brightbox_api_url + recognizes :brightbox_auth_url, :brightbox_api_url, :persistent model_path 'fog/brightbox/models/compute' model :account # Singular resource, no collection From 8bce5d165d3b741527343ad0ab822d99940a2c6e Mon Sep 17 00:00:00 2001 From: Paul Thornthwaite Date: Wed, 17 Aug 2011 17:04:52 +0100 Subject: [PATCH 08/14] [compute|brightbox] Added requests for firewall management --- lib/fog/brightbox/compute.rb | 8 +++ .../compute/apply_to_firewall_policy.rb | 14 ++++ .../compute/create_firewall_policy.rb | 13 ++++ .../requests/compute/create_firewall_rule.rb | 13 ++++ .../compute/destroy_firewall_policy.rb | 14 ++++ .../requests/compute/destroy_firewall_rule.rb | 14 ++++ .../requests/compute/get_firewall_policy.rb | 14 ++++ .../requests/compute/get_firewall_rule.rb | 14 ++++ .../compute/list_firewall_policies.rb | 13 ++++ tests/brightbox/requests/compute/helper.rb | 72 +++++++++++++++++++ 10 files changed, 189 insertions(+) create mode 100644 lib/fog/brightbox/requests/compute/apply_to_firewall_policy.rb create mode 100644 lib/fog/brightbox/requests/compute/create_firewall_policy.rb create mode 100644 lib/fog/brightbox/requests/compute/create_firewall_rule.rb create mode 100644 lib/fog/brightbox/requests/compute/destroy_firewall_policy.rb create mode 100644 lib/fog/brightbox/requests/compute/destroy_firewall_rule.rb create mode 100644 lib/fog/brightbox/requests/compute/get_firewall_policy.rb create mode 100644 lib/fog/brightbox/requests/compute/get_firewall_rule.rb create mode 100644 lib/fog/brightbox/requests/compute/list_firewall_policies.rb diff --git a/lib/fog/brightbox/compute.rb b/lib/fog/brightbox/compute.rb index 52f40c60e..dfca35cc4 100644 --- a/lib/fog/brightbox/compute.rb +++ b/lib/fog/brightbox/compute.rb @@ -32,14 +32,19 @@ module Fog request :add_listeners_load_balancer request :add_nodes_load_balancer request :add_servers_server_group + request :apply_to_firewall_policy request :create_api_client request :create_cloud_ip + request :create_firewall_policy + request :create_firewall_rule request :create_image request :create_load_balancer request :create_server request :create_server_group request :destroy_api_client request :destroy_cloud_ip + request :destroy_firewall_policy + request :destroy_firewall_rule request :destroy_image request :destroy_load_balancer request :destroy_server @@ -47,6 +52,8 @@ module Fog request :get_account request :get_api_client request :get_cloud_ip + request :get_firewall_policy + request :get_firewall_rule request :get_image request :get_interface request :get_load_balancer @@ -57,6 +64,7 @@ module Fog request :get_zone request :list_api_clients request :list_cloud_ips + request :list_firewall_policies request :list_images request :list_load_balancers request :list_server_groups diff --git a/lib/fog/brightbox/requests/compute/apply_to_firewall_policy.rb b/lib/fog/brightbox/requests/compute/apply_to_firewall_policy.rb new file mode 100644 index 000000000..bbc5093b5 --- /dev/null +++ b/lib/fog/brightbox/requests/compute/apply_to_firewall_policy.rb @@ -0,0 +1,14 @@ +module Fog + module Compute + class Brightbox + class Real + + def apply_to_firewall_policy(identifier, options) + return nil if identifier.nil? || identifier == "" + request("post", "/1.0/firewall_policies/#{identifier}/apply_to", [202], options) + end + + end + end + end +end \ No newline at end of file diff --git a/lib/fog/brightbox/requests/compute/create_firewall_policy.rb b/lib/fog/brightbox/requests/compute/create_firewall_policy.rb new file mode 100644 index 000000000..0a1c817a2 --- /dev/null +++ b/lib/fog/brightbox/requests/compute/create_firewall_policy.rb @@ -0,0 +1,13 @@ +module Fog + module Compute + class Brightbox + class Real + + def create_firewall_policy(options) + request("post", "/1.0/firewall_policies", [201], options) + end + + end + end + end +end \ No newline at end of file diff --git a/lib/fog/brightbox/requests/compute/create_firewall_rule.rb b/lib/fog/brightbox/requests/compute/create_firewall_rule.rb new file mode 100644 index 000000000..882cb1d43 --- /dev/null +++ b/lib/fog/brightbox/requests/compute/create_firewall_rule.rb @@ -0,0 +1,13 @@ +module Fog + module Compute + class Brightbox + class Real + + def create_firewall_rule(options) + request("post", "/1.0/firewall_rules", [202], options) + end + + end + end + end +end \ No newline at end of file diff --git a/lib/fog/brightbox/requests/compute/destroy_firewall_policy.rb b/lib/fog/brightbox/requests/compute/destroy_firewall_policy.rb new file mode 100644 index 000000000..71b130038 --- /dev/null +++ b/lib/fog/brightbox/requests/compute/destroy_firewall_policy.rb @@ -0,0 +1,14 @@ +module Fog + module Compute + class Brightbox + class Real + + def destroy_firewall_policy(identifier) + return nil if identifier.nil? || identifier == "" + request("delete", "/1.0/firewall_policies/#{identifier}", [202]) + end + + end + end + end +end \ No newline at end of file diff --git a/lib/fog/brightbox/requests/compute/destroy_firewall_rule.rb b/lib/fog/brightbox/requests/compute/destroy_firewall_rule.rb new file mode 100644 index 000000000..f31f99594 --- /dev/null +++ b/lib/fog/brightbox/requests/compute/destroy_firewall_rule.rb @@ -0,0 +1,14 @@ +module Fog + module Compute + class Brightbox + class Real + + def destroy_firewall_rule(identifier) + return nil if identifier.nil? || identifier == "" + request("delete", "/1.0/firewall_rules/#{identifier}", [202]) + end + + end + end + end +end \ No newline at end of file diff --git a/lib/fog/brightbox/requests/compute/get_firewall_policy.rb b/lib/fog/brightbox/requests/compute/get_firewall_policy.rb new file mode 100644 index 000000000..f163e7696 --- /dev/null +++ b/lib/fog/brightbox/requests/compute/get_firewall_policy.rb @@ -0,0 +1,14 @@ +module Fog + module Compute + class Brightbox + class Real + + def get_firewall_policy(identifier) + return nil if identifier.nil? || identifier == "" + request("get", "/1.0/firewall_policies/#{identifier}", [200]) + end + + end + end + end +end \ No newline at end of file diff --git a/lib/fog/brightbox/requests/compute/get_firewall_rule.rb b/lib/fog/brightbox/requests/compute/get_firewall_rule.rb new file mode 100644 index 000000000..8bbff6216 --- /dev/null +++ b/lib/fog/brightbox/requests/compute/get_firewall_rule.rb @@ -0,0 +1,14 @@ +module Fog + module Compute + class Brightbox + class Real + + def get_firewall_rule(identifier) + return nil if identifier.nil? || identifier == "" + request("get", "/1.0/firewall_rules/#{identifier}", [200]) + end + + end + end + end +end \ No newline at end of file diff --git a/lib/fog/brightbox/requests/compute/list_firewall_policies.rb b/lib/fog/brightbox/requests/compute/list_firewall_policies.rb new file mode 100644 index 000000000..455429915 --- /dev/null +++ b/lib/fog/brightbox/requests/compute/list_firewall_policies.rb @@ -0,0 +1,13 @@ +module Fog + module Compute + class Brightbox + class Real + + def list_firewall_policies + request("get", "/1.0/firewall_policies", [200]) + end + + end + end + end +end \ No newline at end of file diff --git a/tests/brightbox/requests/compute/helper.rb b/tests/brightbox/requests/compute/helper.rb index 7e2b0e177..6271193ab 100644 --- a/tests/brightbox/requests/compute/helper.rb +++ b/tests/brightbox/requests/compute/helper.rb @@ -79,6 +79,27 @@ class Brightbox "reverse_dns" => String } + FIREWALL_POLICY = { + "id" => String, + "resource_type" => String, + "url" => String, + "name" => String, + "default" => Fog::Boolean + } + + FIREWALL_RULE = { + "id" => String, + "resource_type" => String, + "url" => String, + "source" => Fog::Nullable::String, + "source_port" => Fog::Nullable::String, + "destination" => Fog::Nullable::String, + "destination_port" => Fog::Nullable::String, + "protocol" => String, + "icmp_type_name" => Fog::Nullable::String, + "description" => Fog::Nullable::String + } + IMAGE = { "name" => String, "created_at" => String, @@ -174,6 +195,31 @@ class Brightbox "server" => Fog::Brightbox::Nullable::Server } + FIREWALL_POLICY = { + "id" => String, + "resource_type" => String, + "url" => String, + "name" => String, + "description" => Fog::Nullable::String, + "default" => Fog::Boolean, + "server_group" => Brightbox::Compute::Formats::Nested::SERVER_GROUP, + "rules" => [Brightbox::Compute::Formats::Nested::FIREWALL_RULE] + } + + FIREWALL_RULE = { + "id" => String, + "resource_type" => String, + "url" => String, + "source" => String, + "source_port" => String, + "destination" => String, + "destination_port" => String, + "protocol" => String, + "icmp_type_name" => String, + "description" => Fog::Nullable::String, + "firewall_policy" => Brightbox::Compute::Formats::Nested::FIREWALL_POLICY + } + IMAGE = { "name" => String, "created_at" => String, @@ -333,6 +379,30 @@ class Brightbox "server" => Fog::Brightbox::Nullable::Server } + FIREWALL_POLICY = { + "id" => String, + "resource_type" => String, + "url" => String, + "name" => String, + "description" => Fog::Nullable::String, + "default" => Fog::Boolean, + "server_group" => Brightbox::Compute::Formats::Nested::SERVER_GROUP, + "rules" => [Brightbox::Compute::Formats::Nested::FIREWALL_RULE] + } + + FIREWALL_RULE = { + "id" => String, + "resource_type" => String, + "url" => String, + "source" => String, + "source_port" => String, + "destination" => String, + "destination_port" => String, + "protocol" => String, + "icmp_type_name" => String, + "description" => Fog::Nullable::String + } + IMAGE = { "name" => String, "created_at" => String, @@ -452,6 +522,8 @@ class Brightbox API_CLIENTS = [Brightbox::Compute::Formats::Collected::API_CLIENT] CLOUD_IPS = [Brightbox::Compute::Formats::Collected::CLOUD_IP] IMAGES = [Brightbox::Compute::Formats::Collected::IMAGE] + FIREWALL_POLICIES = [Brightbox::Compute::Formats::Collected::FIREWALL_POLICY] + FIREWALL_RULES = [Brightbox::Compute::Formats::Collected::FIREWALL_RULE] LOAD_BALANCERS = [Brightbox::Compute::Formats::Collected::LOAD_BALANCER] SERVERS = [Brightbox::Compute::Formats::Collected::SERVER] SERVER_GROUPS = [Brightbox::Compute::Formats::Collected::SERVER_GROUP] From def70b5b2d7ca694e973e64406bca0f6e0d4023b Mon Sep 17 00:00:00 2001 From: Brian Hartsock Date: Tue, 20 Sep 2011 11:03:56 -0500 Subject: [PATCH 09/14] [storage] Fixed what appeared to be broken test (I only verified with Rackspace provider) --- tests/storage/models/directory_test.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/storage/models/directory_test.rb b/tests/storage/models/directory_test.rb index 639ce9241..74057d953 100644 --- a/tests/storage/models/directory_test.rb +++ b/tests/storage/models/directory_test.rb @@ -8,7 +8,7 @@ for provider, config in storage_providers :key => 'fogdirectorytests' }.merge!(config[:directory_attributes] || {}) - model_tests(Fog::Storage[provider].directory, directory_attributes, config[:mocked]) do + model_tests(Fog::Storage[provider].directories, directory_attributes, config[:mocked]) do tests("#public=(true)").succeeds do pending if Fog.mocking? && !config[:mocked] @@ -17,7 +17,7 @@ for provider, config in storage_providers tests('responds_to(:public_url)') do pending if Fog.mocking? && !config[:mocked] - @instance.responds_to(:public_url) + responds_to(:public_url) end end From 8bd540938bc69740934fac3aaf1cc2810501ef43 Mon Sep 17 00:00:00 2001 From: Paul Thornthwaite Date: Thu, 18 Aug 2011 17:16:58 +0100 Subject: [PATCH 10/14] [compute|brightbox] Added ServerGroup model and collections --- lib/fog/brightbox/compute.rb | 2 + .../brightbox/models/compute/server_group.rb | 57 +++++++++++++++++++ .../brightbox/models/compute/server_groups.rb | 29 ++++++++++ 3 files changed, 88 insertions(+) create mode 100644 lib/fog/brightbox/models/compute/server_group.rb create mode 100644 lib/fog/brightbox/models/compute/server_groups.rb diff --git a/lib/fog/brightbox/compute.rb b/lib/fog/brightbox/compute.rb index dfca35cc4..0a4419169 100644 --- a/lib/fog/brightbox/compute.rb +++ b/lib/fog/brightbox/compute.rb @@ -14,6 +14,8 @@ module Fog model :account # Singular resource, no collection collection :servers model :server + collection :server_groups + model :server_group collection :flavors model :flavor collection :images diff --git a/lib/fog/brightbox/models/compute/server_group.rb b/lib/fog/brightbox/models/compute/server_group.rb new file mode 100644 index 000000000..5070a83ac --- /dev/null +++ b/lib/fog/brightbox/models/compute/server_group.rb @@ -0,0 +1,57 @@ +require 'fog/core/model' + +module Fog + module Compute + class Brightbox + + # A server group is a collection of servers + # + # Certain actions can accept a server group and affect all members + class ServerGroup < Fog::Model + + identity :id + + attribute :url + attribute :resource_type + attribute :name + attribute :description + attribute :default + + def save + requires :name + options = { + :name => name, + :description => description + }.delete_if {|k,v| v.nil? || v == "" } + data = connection.create_server_group(options) + merge_attributes(data) + true + end + + # Add a server to the server group + # + # == Parameters: + # identifiers:: + # An array of identifiers for the servers to add to the group + # + # == Returns: + # + # An excon response object representing the result + # + # ident} } + options = { + :servers => server_references + } + data = connection.add_servers_server_group(identity, options) + merge_attributes(data) + end + + end + + end + end +end \ No newline at end of file diff --git a/lib/fog/brightbox/models/compute/server_groups.rb b/lib/fog/brightbox/models/compute/server_groups.rb new file mode 100644 index 000000000..fd9c02b4a --- /dev/null +++ b/lib/fog/brightbox/models/compute/server_groups.rb @@ -0,0 +1,29 @@ +require 'fog/core/collection' +require 'fog/brightbox/models/compute/server_group' + +module Fog + module Compute + class Brightbox + + class ServerGroups < Fog::Collection + + model Fog::Compute::Brightbox::ServerGroup + + def all + data = connection.list_server_groups + load(data) + end + + def get(identifier) + return nil if identifier.nil? || identifier == "" + data = connection.get_zone(identifier) + new(data) + rescue Excon::Errors::NotFound + nil + end + + end + + end + end +end \ No newline at end of file From 016d64068397ebbd5bb19d88ba643756a6c92a88 Mon Sep 17 00:00:00 2001 From: "H. Wade Minter" Date: Tue, 20 Sep 2011 13:36:37 -0400 Subject: [PATCH 11/14] Tweak to escape the Cloud Files filename before passing to public_url. Previously, a Rackspace Cloud Files storage object with a name like "my_files/1234/original/picture #1.jpg" would generate a public URL like: http://c21641.r41.cf1.rackcdn.com/user_files/1313284/thumb/IMG_4034 #1.jpg The # character in the URL would get interpreted by Cloud Files as an anchor marker, and the file would not load. This change does the Fog::Rackspace.escape on the key (excluding the / path separator character) to generate a working URL of the form: http://c21641.r41.cf1.rackcdn.com/user_files/1313284/thumb/IMG_4034%20%231.jpg Which is correctly interpreted by Cloud Files and pulls up. Both of those URLs are live to demonstrate the issue. --- lib/fog/rackspace/models/storage/file.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/fog/rackspace/models/storage/file.rb b/lib/fog/rackspace/models/storage/file.rb index f160ae210..c1bb2a13a 100644 --- a/lib/fog/rackspace/models/storage/file.rb +++ b/lib/fog/rackspace/models/storage/file.rb @@ -50,7 +50,7 @@ module Fog def public_url requires :key - self.collection.get_url(self.key) + self.collection.get_url(Fog::Rackspace.escape(self.key, '/')) end def save(options = {}) From 559384ff4ad70717e132bc1ddfd92be10d65ba12 Mon Sep 17 00:00:00 2001 From: "H. Wade Minter" Date: Tue, 20 Sep 2011 16:00:57 -0400 Subject: [PATCH 12/14] Put escaping logic into the collection get_url call. --- lib/fog/rackspace/models/storage/file.rb | 2 +- lib/fog/rackspace/models/storage/files.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/fog/rackspace/models/storage/file.rb b/lib/fog/rackspace/models/storage/file.rb index c1bb2a13a..f160ae210 100644 --- a/lib/fog/rackspace/models/storage/file.rb +++ b/lib/fog/rackspace/models/storage/file.rb @@ -50,7 +50,7 @@ module Fog def public_url requires :key - self.collection.get_url(Fog::Rackspace.escape(self.key, '/')) + self.collection.get_url(self.key) end def save(options = {}) diff --git a/lib/fog/rackspace/models/storage/files.rb b/lib/fog/rackspace/models/storage/files.rb index 65b93413d..10cfa1a02 100644 --- a/lib/fog/rackspace/models/storage/files.rb +++ b/lib/fog/rackspace/models/storage/files.rb @@ -67,7 +67,7 @@ module Fog def get_url(key) requires :directory if self.directory.public_url - "#{self.directory.public_url}/#{key}" + "#{self.directory.public_url}/#{Fog::Rackspace.escape(key, '/')}" end end From 1099a03b1038adf4428e586b4a8437422093b27d Mon Sep 17 00:00:00 2001 From: Paul Thornthwaite Date: Wed, 21 Sep 2011 09:04:51 +0100 Subject: [PATCH 13/14] [compute|brightbox] Passing options to server group update --- lib/fog/brightbox/requests/compute/update_server_group.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/fog/brightbox/requests/compute/update_server_group.rb b/lib/fog/brightbox/requests/compute/update_server_group.rb index 0ea23f804..e82d0f312 100644 --- a/lib/fog/brightbox/requests/compute/update_server_group.rb +++ b/lib/fog/brightbox/requests/compute/update_server_group.rb @@ -6,7 +6,7 @@ module Fog def update_server_group(identifier, options) return nil if identifier.nil? || identifier == "" return nil if options.empty? || options.nil? - request("put", "/1.0/server_groups/#{identifier}", [202]) + request("put", "/1.0/server_groups/#{identifier}", [202], options) end end From 9596bea46616d27c32b42576edd42221914524ec Mon Sep 17 00:00:00 2001 From: Paul Thornthwaite Date: Wed, 21 Sep 2011 09:43:22 +0100 Subject: [PATCH 14/14] [compute|brightbox] Fixed server_groups.get Helps to use the correct request. --- lib/fog/brightbox/models/compute/server_groups.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/fog/brightbox/models/compute/server_groups.rb b/lib/fog/brightbox/models/compute/server_groups.rb index fd9c02b4a..9fe3b942a 100644 --- a/lib/fog/brightbox/models/compute/server_groups.rb +++ b/lib/fog/brightbox/models/compute/server_groups.rb @@ -16,7 +16,7 @@ module Fog def get(identifier) return nil if identifier.nil? || identifier == "" - data = connection.get_zone(identifier) + data = connection.get_server_group(identifier) new(data) rescue Excon::Errors::NotFound nil