fog 0.10.0 → 0.11.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -1
- data/Rakefile +90 -1
- data/bin/fog +5 -1
- data/changelog.txt +156 -0
- data/docs/_layouts/default.html +1 -0
- data/docs/about/press.markdown +4 -0
- data/docs/compute/index.markdown +4 -0
- data/docs/storage/index.markdown +4 -0
- data/fog.gemspec +3 -3
- data/lib/fog.rb +1 -1
- data/lib/fog/aws/iam.rb +7 -6
- data/lib/fog/aws/models/rds/server.rb +27 -23
- data/lib/fog/aws/parsers/iam/get_group.rb +2 -2
- data/lib/fog/aws/requests/iam/update_server_certificate.rb +37 -0
- data/lib/fog/bin.rb +2 -1
- data/lib/fog/bin/dynect.rb +30 -0
- data/lib/fog/bin/rackspace.rb +4 -0
- data/lib/fog/cdn.rb +4 -0
- data/lib/fog/cdn/aws.rb +6 -0
- data/lib/fog/cdn/parsers/aws/get_invalidation_list.rb +43 -0
- data/lib/fog/cdn/parsers/aws/get_streaming_distribution_list.rb +59 -0
- data/lib/fog/cdn/parsers/aws/streaming_distribution.rb +59 -0
- data/lib/fog/cdn/requests/aws/delete_streaming_distribution.rb +28 -0
- data/lib/fog/cdn/requests/aws/get_invalidation_list.rb +42 -0
- data/lib/fog/cdn/requests/aws/get_streaming_distribution.rb +50 -0
- data/lib/fog/cdn/requests/aws/get_streaming_distribution_list.rb +59 -0
- data/lib/fog/cdn/requests/aws/post_streaming_distribution.rb +78 -0
- data/lib/fog/cdn/requests/aws/put_streaming_distribution_config.rb +83 -0
- data/lib/fog/compute.rb +6 -2
- data/lib/fog/compute/aws.rb +12 -1
- data/lib/fog/compute/brightbox.rb +22 -12
- data/lib/fog/compute/models/aws/image.rb +5 -0
- data/lib/fog/compute/models/aws/server.rb +19 -22
- data/lib/fog/compute/models/aws/tag.rb +1 -1
- data/lib/fog/compute/models/bluebox/server.rb +2 -18
- data/lib/fog/compute/models/brightbox/account.rb +1 -1
- data/lib/fog/compute/models/brightbox/server.rb +2 -2
- data/lib/fog/compute/models/go_grid/server.rb +2 -18
- data/lib/fog/compute/models/linode/server.rb +5 -5
- data/lib/fog/compute/models/ninefold/server.rb +2 -2
- data/lib/fog/compute/models/rackspace/server.rb +2 -18
- data/lib/fog/compute/models/server.rb +27 -0
- data/lib/fog/compute/models/slicehost/server.rb +2 -18
- data/lib/fog/compute/models/storm_on_demand/server.rb +3 -3
- data/lib/fog/compute/models/voxel/server.rb +2 -2
- data/lib/fog/compute/parsers/aws/describe_images.rb +15 -3
- data/lib/fog/compute/parsers/aws/describe_instances.rb +1 -1
- data/lib/fog/compute/parsers/aws/describe_security_groups.rb +31 -7
- data/lib/fog/compute/requests/aws/describe_images.rb +33 -14
- data/lib/fog/compute/requests/aws/describe_volumes.rb +1 -0
- data/lib/fog/compute/requests/aws/modify_image_attribute.rb +39 -0
- data/lib/fog/compute/requests/aws/modify_instance_attribute.rb +37 -0
- data/lib/fog/compute/requests/aws/modify_snapshot_attribute.rb +10 -10
- data/lib/fog/compute/requests/aws/register_image.rb +54 -13
- data/lib/fog/compute/requests/aws/run_instances.rb +5 -0
- data/lib/fog/compute/requests/aws/stop_instances.rb +2 -1
- data/lib/fog/compute/requests/brightbox/activate_console_server.rb +2 -8
- data/lib/fog/compute/requests/brightbox/add_listeners_load_balancer.rb +2 -8
- data/lib/fog/compute/requests/brightbox/add_nodes_load_balancer.rb +2 -8
- data/lib/fog/compute/requests/brightbox/create_api_client.rb +2 -8
- data/lib/fog/compute/requests/brightbox/create_cloud_ip.rb +2 -8
- data/lib/fog/compute/requests/brightbox/create_image.rb +2 -8
- data/lib/fog/compute/requests/brightbox/create_load_balancer.rb +2 -8
- data/lib/fog/compute/requests/brightbox/create_server.rb +2 -8
- data/lib/fog/compute/requests/brightbox/destroy_api_client.rb +2 -8
- data/lib/fog/compute/requests/brightbox/destroy_cloud_ip.rb +2 -8
- data/lib/fog/compute/requests/brightbox/destroy_image.rb +2 -8
- data/lib/fog/compute/requests/brightbox/destroy_load_balancer.rb +2 -8
- data/lib/fog/compute/requests/brightbox/destroy_server.rb +2 -8
- data/lib/fog/compute/requests/brightbox/get_account.rb +2 -8
- data/lib/fog/compute/requests/brightbox/get_api_client.rb +2 -8
- data/lib/fog/compute/requests/brightbox/get_cloud_ip.rb +2 -8
- data/lib/fog/compute/requests/brightbox/get_image.rb +2 -8
- data/lib/fog/compute/requests/brightbox/get_interface.rb +2 -8
- data/lib/fog/compute/requests/brightbox/get_load_balancer.rb +2 -8
- data/lib/fog/compute/requests/brightbox/get_server.rb +2 -8
- data/lib/fog/compute/requests/brightbox/get_server_type.rb +2 -8
- data/lib/fog/compute/requests/brightbox/get_user.rb +2 -8
- data/lib/fog/compute/requests/brightbox/get_zone.rb +2 -8
- data/lib/fog/compute/requests/brightbox/list_api_clients.rb +2 -8
- data/lib/fog/compute/requests/brightbox/list_cloud_ips.rb +2 -8
- data/lib/fog/compute/requests/brightbox/list_images.rb +2 -8
- data/lib/fog/compute/requests/brightbox/list_load_balancers.rb +2 -8
- data/lib/fog/compute/requests/brightbox/list_server_types.rb +2 -8
- data/lib/fog/compute/requests/brightbox/list_servers.rb +2 -8
- data/lib/fog/compute/requests/brightbox/list_users.rb +2 -8
- data/lib/fog/compute/requests/brightbox/list_zones.rb +2 -8
- data/lib/fog/compute/requests/brightbox/map_cloud_ip.rb +2 -8
- data/lib/fog/compute/requests/brightbox/remove_listeners_load_balancer.rb +2 -8
- data/lib/fog/compute/requests/brightbox/remove_nodes_load_balancer.rb +2 -8
- data/lib/fog/compute/requests/brightbox/reset_ftp_password_account.rb +2 -8
- data/lib/fog/compute/requests/brightbox/shutdown_server.rb +2 -8
- data/lib/fog/compute/requests/brightbox/snapshot_server.rb +2 -8
- data/lib/fog/compute/requests/brightbox/start_server.rb +2 -8
- data/lib/fog/compute/requests/brightbox/stop_server.rb +2 -8
- data/lib/fog/compute/requests/brightbox/unmap_cloud_ip.rb +2 -8
- data/lib/fog/compute/requests/brightbox/update_account.rb +2 -8
- data/lib/fog/compute/requests/brightbox/update_api_client.rb +2 -8
- data/lib/fog/compute/requests/brightbox/update_image.rb +2 -8
- data/lib/fog/compute/requests/brightbox/update_load_balancer.rb +2 -8
- data/lib/fog/compute/requests/brightbox/update_server.rb +2 -8
- data/lib/fog/compute/requests/brightbox/update_user.rb +2 -8
- data/lib/fog/core.rb +1 -0
- data/lib/fog/core/credentials.rb +1 -1
- data/lib/fog/core/errors.rb +3 -1
- data/lib/fog/core/json.rb +20 -0
- data/lib/fog/core/provider.rb +3 -1
- data/lib/fog/core/service.rb +5 -0
- data/lib/fog/dns.rb +8 -1
- data/lib/fog/dns/dynect.rb +80 -0
- data/lib/fog/dns/models/dynect/record.rb +67 -0
- data/lib/fog/dns/models/dynect/records.rb +53 -0
- data/lib/fog/dns/models/dynect/zone.rb +60 -0
- data/lib/fog/dns/models/dynect/zones.rb +29 -0
- data/lib/fog/dns/requests/dynect/delete_record.rb +24 -0
- data/lib/fog/dns/requests/dynect/delete_zone.rb +21 -0
- data/lib/fog/dns/requests/dynect/get_node_list.rb +23 -0
- data/lib/fog/dns/requests/dynect/get_record.rb +25 -0
- data/lib/fog/dns/requests/dynect/get_zone.rb +22 -0
- data/lib/fog/dns/requests/dynect/post_record.rb +27 -0
- data/lib/fog/dns/requests/dynect/post_session.rb +36 -0
- data/lib/fog/dns/requests/dynect/post_zone.rb +32 -0
- data/lib/fog/dns/requests/dynect/put_zone.rb +26 -0
- data/lib/fog/dns/zerigo.rb +1 -1
- data/lib/fog/providers.rb +1 -0
- data/lib/fog/providers/dynect.rb +14 -0
- data/lib/fog/providers/rackspace.rb +1 -0
- data/lib/fog/rackspace/load_balancers.rb +179 -0
- data/lib/fog/rackspace/models/load_balancers/access_rule.rb +39 -0
- data/lib/fog/rackspace/models/load_balancers/access_rules.rb +29 -0
- data/lib/fog/rackspace/models/load_balancers/load_balancer.rb +216 -0
- data/lib/fog/rackspace/models/load_balancers/load_balancers.rb +27 -0
- data/lib/fog/rackspace/models/load_balancers/node.rb +58 -0
- data/lib/fog/rackspace/models/load_balancers/nodes.rb +29 -0
- data/lib/fog/rackspace/models/load_balancers/virtual_ip.rb +35 -0
- data/lib/fog/rackspace/models/load_balancers/virtual_ips.rb +32 -0
- data/lib/fog/rackspace/requests/load_balancers/create_access_rule.rb +24 -0
- data/lib/fog/rackspace/requests/load_balancers/create_load_balancer.rb +26 -0
- data/lib/fog/rackspace/requests/load_balancers/create_node.rb +27 -0
- data/lib/fog/rackspace/requests/load_balancers/create_virtual_ip.rb +20 -0
- data/lib/fog/rackspace/requests/load_balancers/delete_access_rule.rb +15 -0
- data/lib/fog/rackspace/requests/load_balancers/delete_all_access_rules.rb +15 -0
- data/lib/fog/rackspace/requests/load_balancers/delete_load_balancer.rb +15 -0
- data/lib/fog/rackspace/requests/load_balancers/delete_node.rb +15 -0
- data/lib/fog/rackspace/requests/load_balancers/delete_nodes.rb +17 -0
- data/lib/fog/rackspace/requests/load_balancers/delete_virtual_ip.rb +15 -0
- data/lib/fog/rackspace/requests/load_balancers/get_connection_logging.rb +15 -0
- data/lib/fog/rackspace/requests/load_balancers/get_connection_throttling.rb +15 -0
- data/lib/fog/rackspace/requests/load_balancers/get_load_balancer.rb +15 -0
- data/lib/fog/rackspace/requests/load_balancers/get_load_balancer_usage.rb +21 -0
- data/lib/fog/rackspace/requests/load_balancers/get_monitor.rb +15 -0
- data/lib/fog/rackspace/requests/load_balancers/get_node.rb +15 -0
- data/lib/fog/rackspace/requests/load_balancers/get_session_persistence.rb +15 -0
- data/lib/fog/rackspace/requests/load_balancers/get_usage.rb +20 -0
- data/lib/fog/rackspace/requests/load_balancers/list_access_rules.rb +15 -0
- data/lib/fog/rackspace/requests/load_balancers/list_algorithms.rb +15 -0
- data/lib/fog/rackspace/requests/load_balancers/list_load_balancers.rb +15 -0
- data/lib/fog/rackspace/requests/load_balancers/list_nodes.rb +15 -0
- data/lib/fog/rackspace/requests/load_balancers/list_protocols.rb +15 -0
- data/lib/fog/rackspace/requests/load_balancers/list_virtual_ips.rb +15 -0
- data/lib/fog/rackspace/requests/load_balancers/remove_connection_throttling.rb +15 -0
- data/lib/fog/rackspace/requests/load_balancers/remove_monitor.rb +15 -0
- data/lib/fog/rackspace/requests/load_balancers/remove_session_persistence.rb +15 -0
- data/lib/fog/rackspace/requests/load_balancers/set_connection_logging.rb +21 -0
- data/lib/fog/rackspace/requests/load_balancers/set_connection_throttling.rb +22 -0
- data/lib/fog/rackspace/requests/load_balancers/set_monitor.rb +31 -0
- data/lib/fog/rackspace/requests/load_balancers/set_session_persistence.rb +21 -0
- data/lib/fog/rackspace/requests/load_balancers/update_load_balancer.rb +24 -0
- data/lib/fog/rackspace/requests/load_balancers/update_node.rb +26 -0
- data/lib/fog/storage.rb +5 -1
- data/lib/fog/storage/aws.rb +3 -0
- data/lib/fog/storage/models/aws/directory.rb +1 -3
- data/lib/fog/storage/models/aws/file.rb +1 -1
- data/lib/fog/storage/models/google/file.rb +1 -1
- data/lib/fog/storage/models/local/file.rb +8 -6
- data/lib/fog/storage/models/ninefold/file.rb +0 -1
- data/lib/fog/storage/requests/aws/copy_object.rb +1 -1
- data/lib/fog/storage/requests/aws/get_bucket.rb +14 -11
- data/lib/fog/storage/requests/aws/post_object_hidden_fields.rb +2 -4
- data/tests/aws/models/rds/server_tests.rb +4 -4
- data/tests/compute/models/aws/server_tests.rb +15 -1
- data/tests/compute/requests/aws/helper.rb +0 -4
- data/tests/compute/requests/aws/image_tests.rb +40 -9
- data/tests/compute/requests/brightbox/account_tests.rb +1 -1
- data/tests/compute/requests/brightbox/helper.rb +3 -0
- data/tests/compute/requests/brightbox/load_balancer_tests.rb +1 -1
- data/tests/compute/requests/voxel/server_tests.rb +2 -2
- data/tests/dns/helper.rb +18 -0
- data/tests/dns/models/record_tests.rb +3 -2
- data/tests/dns/models/records_tests.rb +2 -2
- data/tests/dns/models/zone_tests.rb +2 -2
- data/tests/dns/models/zones_tests.rb +1 -1
- data/tests/dns/requests/bluebox/dns_tests.rb +0 -12
- data/tests/dns/requests/dnsimple/dns_tests.rb +0 -12
- data/tests/dns/requests/dnsmadeeasy/dns_tests.rb +0 -12
- data/tests/dns/requests/dynect/dns_tests.rb +132 -0
- data/tests/dns/requests/linode/dns_tests.rb +1 -13
- data/tests/dns/requests/slicehost/dns_tests.rb +1 -13
- data/tests/helper.rb +1 -1
- data/tests/helpers/collection_helper.rb +2 -2
- data/tests/helpers/formats_helper.rb +2 -0
- data/tests/helpers/mock_helper.rb +4 -1
- data/tests/rackspace/helper.rb +24 -0
- data/tests/rackspace/load_balancer_tests.rb +21 -0
- data/tests/rackspace/models/access_list_tests.rb +12 -0
- data/tests/rackspace/models/access_lists_tests.rb +12 -0
- data/tests/rackspace/models/load_balancer_tests.rb +116 -0
- data/tests/rackspace/models/load_balancers_tests.rb +19 -0
- data/tests/rackspace/models/node_tests.rb +19 -0
- data/tests/rackspace/models/nodes_tests.rb +12 -0
- data/tests/rackspace/models/virtual_ip_tests.rb +16 -0
- data/tests/rackspace/models/virtual_ips_tests.rb +12 -0
- data/tests/rackspace/requests/access_list_tests.rb +56 -0
- data/tests/rackspace/requests/algorithm_tests.rb +19 -0
- data/tests/rackspace/requests/connection_logging_tests.rb +25 -0
- data/tests/rackspace/requests/connection_throttling_tests.rb +37 -0
- data/tests/rackspace/requests/helper.rb +112 -0
- data/tests/rackspace/requests/load_balancer_tests.rb +63 -0
- data/tests/rackspace/requests/load_balancer_usage_tests.rb +19 -0
- data/tests/rackspace/requests/monitor_tests.rb +46 -0
- data/tests/rackspace/requests/node_tests.rb +87 -0
- data/tests/rackspace/requests/protocol_tests.rb +21 -0
- data/tests/rackspace/requests/session_persistence_tests.rb +33 -0
- data/tests/rackspace/requests/usage_tests.rb +17 -0
- data/tests/rackspace/requests/virtual_ip_tests.rb +40 -0
- data/tests/storage/requests/aws/bucket_tests.rb +53 -0
- metadata +127 -8
- data/lib/fog/compute/requests/aws/modify_image_attributes.rb +0 -37
@@ -3,14 +3,8 @@ module Fog
|
|
3
3
|
class Brightbox
|
4
4
|
class Real
|
5
5
|
|
6
|
-
def reset_ftp_password_account
|
7
|
-
request(
|
8
|
-
:expects => [200],
|
9
|
-
:method => 'POST',
|
10
|
-
:path => "/1.0/account/reset_ftp_password",
|
11
|
-
:headers => {"Content-Type" => "application/json"},
|
12
|
-
:body => MultiJson.encode(options)
|
13
|
-
)
|
6
|
+
def reset_ftp_password_account
|
7
|
+
request("post", "/1.0/account/reset_ftp_password", [200])
|
14
8
|
end
|
15
9
|
|
16
10
|
end
|
@@ -3,15 +3,9 @@ module Fog
|
|
3
3
|
class Brightbox
|
4
4
|
class Real
|
5
5
|
|
6
|
-
def shutdown_server(identifier
|
6
|
+
def shutdown_server(identifier)
|
7
7
|
return nil if identifier.nil? || identifier == ""
|
8
|
-
request(
|
9
|
-
:expects => [202],
|
10
|
-
:method => 'POST',
|
11
|
-
:path => "/1.0/servers/#{identifier}/shutdown",
|
12
|
-
:headers => {"Content-Type" => "application/json"},
|
13
|
-
:body => MultiJson.encode(options)
|
14
|
-
)
|
8
|
+
request("post", "/1.0/servers/#{identifier}/shutdown", [202])
|
15
9
|
end
|
16
10
|
|
17
11
|
end
|
@@ -3,15 +3,9 @@ module Fog
|
|
3
3
|
class Brightbox
|
4
4
|
class Real
|
5
5
|
|
6
|
-
def snapshot_server(identifier
|
6
|
+
def snapshot_server(identifier)
|
7
7
|
return nil if identifier.nil? || identifier == ""
|
8
|
-
request(
|
9
|
-
:expects => [202],
|
10
|
-
:method => 'POST',
|
11
|
-
:path => "/1.0/servers/#{identifier}/snapshot",
|
12
|
-
:headers => {"Content-Type" => "application/json"},
|
13
|
-
:body => MultiJson.encode(options)
|
14
|
-
)
|
8
|
+
request("post", "/1.0/servers/#{identifier}/snapshot", [202])
|
15
9
|
end
|
16
10
|
|
17
11
|
end
|
@@ -3,15 +3,9 @@ module Fog
|
|
3
3
|
class Brightbox
|
4
4
|
class Real
|
5
5
|
|
6
|
-
def start_server(identifier
|
6
|
+
def start_server(identifier)
|
7
7
|
return nil if identifier.nil? || identifier == ""
|
8
|
-
request(
|
9
|
-
:expects => [202],
|
10
|
-
:method => 'POST',
|
11
|
-
:path => "/1.0/servers/#{identifier}/start",
|
12
|
-
:headers => {"Content-Type" => "application/json"},
|
13
|
-
:body => MultiJson.encode(options)
|
14
|
-
)
|
8
|
+
request("post", "/1.0/servers/#{identifier}/start", [202])
|
15
9
|
end
|
16
10
|
|
17
11
|
end
|
@@ -3,15 +3,9 @@ module Fog
|
|
3
3
|
class Brightbox
|
4
4
|
class Real
|
5
5
|
|
6
|
-
def stop_server(identifier
|
6
|
+
def stop_server(identifier)
|
7
7
|
return nil if identifier.nil? || identifier == ""
|
8
|
-
request(
|
9
|
-
:expects => [202],
|
10
|
-
:method => 'POST',
|
11
|
-
:path => "/1.0/servers/#{identifier}/stop",
|
12
|
-
:headers => {"Content-Type" => "application/json"},
|
13
|
-
:body => MultiJson.encode(options)
|
14
|
-
)
|
8
|
+
request("post", "/1.0/servers/#{identifier}/stop", [202])
|
15
9
|
end
|
16
10
|
|
17
11
|
end
|
@@ -3,15 +3,9 @@ module Fog
|
|
3
3
|
class Brightbox
|
4
4
|
class Real
|
5
5
|
|
6
|
-
def unmap_cloud_ip(identifier
|
6
|
+
def unmap_cloud_ip(identifier)
|
7
7
|
return nil if identifier.nil? || identifier == ""
|
8
|
-
request(
|
9
|
-
:expects => [202],
|
10
|
-
:method => 'POST',
|
11
|
-
:path => "/1.0/cloud_ips/#{identifier}/unmap",
|
12
|
-
:headers => {"Content-Type" => "application/json"},
|
13
|
-
:body => MultiJson.encode(options)
|
14
|
-
)
|
8
|
+
request("post", "/1.0/cloud_ips/#{identifier}/unmap", [202])
|
15
9
|
end
|
16
10
|
|
17
11
|
end
|
@@ -3,15 +3,9 @@ module Fog
|
|
3
3
|
class Brightbox
|
4
4
|
class Real
|
5
5
|
|
6
|
-
def update_account(options
|
6
|
+
def update_account(options)
|
7
7
|
return nil if options.empty? || options.nil?
|
8
|
-
request(
|
9
|
-
:expects => [200],
|
10
|
-
:method => 'PUT',
|
11
|
-
:path => "/1.0/account",
|
12
|
-
:headers => {"Content-Type" => "application/json"},
|
13
|
-
:body => MultiJson.encode(options)
|
14
|
-
)
|
8
|
+
request("put", "/1.0/account", [200], options)
|
15
9
|
end
|
16
10
|
|
17
11
|
end
|
@@ -3,16 +3,10 @@ module Fog
|
|
3
3
|
class Brightbox
|
4
4
|
class Real
|
5
5
|
|
6
|
-
def update_api_client(identifier, options
|
6
|
+
def update_api_client(identifier, options)
|
7
7
|
return nil if identifier.nil? || identifier == ""
|
8
8
|
return nil if options.empty? || options.nil?
|
9
|
-
request(
|
10
|
-
:expects => [200],
|
11
|
-
:method => 'PUT',
|
12
|
-
:path => "/1.0/api_clients/#{identifier}",
|
13
|
-
:headers => {"Content-Type" => "application/json"},
|
14
|
-
:body => MultiJson.encode(options)
|
15
|
-
)
|
9
|
+
request("put", "/1.0/api_clients/#{identifier}", [200], options)
|
16
10
|
end
|
17
11
|
|
18
12
|
end
|
@@ -3,16 +3,10 @@ module Fog
|
|
3
3
|
class Brightbox
|
4
4
|
class Real
|
5
5
|
|
6
|
-
def update_image(identifier, options
|
6
|
+
def update_image(identifier, options)
|
7
7
|
return nil if identifier.nil? || identifier == ""
|
8
8
|
return nil if options.empty? || options.nil?
|
9
|
-
request(
|
10
|
-
:expects => [200],
|
11
|
-
:method => 'PUT',
|
12
|
-
:path => "/1.0/images/#{identifier}",
|
13
|
-
:headers => {"Content-Type" => "application/json"},
|
14
|
-
:body => MultiJson.encode(options)
|
15
|
-
)
|
9
|
+
request("put", "/1.0/images/#{identifier}", [200], options)
|
16
10
|
end
|
17
11
|
|
18
12
|
end
|
@@ -3,16 +3,10 @@ module Fog
|
|
3
3
|
class Brightbox
|
4
4
|
class Real
|
5
5
|
|
6
|
-
def update_load_balancer(identifier, options
|
6
|
+
def update_load_balancer(identifier, options)
|
7
7
|
return nil if identifier.nil? || identifier == ""
|
8
8
|
return nil if options.empty? || options.nil?
|
9
|
-
request(
|
10
|
-
:expects => [202],
|
11
|
-
:method => 'PUT',
|
12
|
-
:path => "/1.0/load_balancers/#{identifier}",
|
13
|
-
:headers => {"Content-Type" => "application/json"},
|
14
|
-
:body => MultiJson.encode(options)
|
15
|
-
)
|
9
|
+
request("put", "/1.0/load_balancers/#{identifier}", [202], options)
|
16
10
|
end
|
17
11
|
|
18
12
|
end
|
@@ -3,16 +3,10 @@ module Fog
|
|
3
3
|
class Brightbox
|
4
4
|
class Real
|
5
5
|
|
6
|
-
def update_server(identifier, options
|
6
|
+
def update_server(identifier, options)
|
7
7
|
return nil if identifier.nil? || identifier == ""
|
8
8
|
return nil if options.empty? || options.nil?
|
9
|
-
request(
|
10
|
-
:expects => [200],
|
11
|
-
:method => 'PUT',
|
12
|
-
:path => "/1.0/servers/#{identifier}",
|
13
|
-
:headers => {"Content-Type" => "application/json"},
|
14
|
-
:body => MultiJson.encode(options)
|
15
|
-
)
|
9
|
+
request("put", "/1.0/servers/#{identifier}", [200], options)
|
16
10
|
end
|
17
11
|
|
18
12
|
end
|
@@ -3,16 +3,10 @@ module Fog
|
|
3
3
|
class Brightbox
|
4
4
|
class Real
|
5
5
|
|
6
|
-
def update_user(identifier, options
|
6
|
+
def update_user(identifier, options)
|
7
7
|
return nil if identifier.nil? || identifier == ""
|
8
8
|
return nil if options.empty? || options.nil?
|
9
|
-
request(
|
10
|
-
:expects => [200],
|
11
|
-
:method => 'PUT',
|
12
|
-
:path => "/1.0/users/#{identifier}",
|
13
|
-
:headers => {"Content-Type" => "application/json"},
|
14
|
-
:body => MultiJson.encode(options)
|
15
|
-
)
|
9
|
+
request("put", "/1.0/users/#{identifier}", [200], options)
|
16
10
|
end
|
17
11
|
|
18
12
|
end
|
data/lib/fog/core.rb
CHANGED
@@ -23,6 +23,7 @@ require 'fog/core/credentials'
|
|
23
23
|
require 'fog/core/deprecation'
|
24
24
|
require 'fog/core/errors'
|
25
25
|
require 'fog/core/hmac'
|
26
|
+
require 'fog/core/json'
|
26
27
|
require 'fog/core/model'
|
27
28
|
require 'fog/core/mock'
|
28
29
|
require 'fog/core/parser' # FIXME: would be better to only load when nokogiri is required
|
data/lib/fog/core/credentials.rb
CHANGED
data/lib/fog/core/errors.rb
CHANGED
@@ -16,6 +16,8 @@ module Fog
|
|
16
16
|
|
17
17
|
class NotFound < Fog::Errors::Error; end
|
18
18
|
|
19
|
+
class LoadError < LoadError; end
|
20
|
+
|
19
21
|
# @return [String] The error message that will be raised, if credentials cannot be found
|
20
22
|
def self.missing_credentials
|
21
23
|
missing_credentials_message = <<-YML
|
@@ -68,7 +70,7 @@ An alternate file may be used by placing its path in the FOG_RC environment vari
|
|
68
70
|
#######################################################
|
69
71
|
|
70
72
|
YML
|
71
|
-
raise(LoadError.new(missing_credentials_message))
|
73
|
+
raise(Fog::Errors::LoadError.new(missing_credentials_message))
|
72
74
|
end
|
73
75
|
|
74
76
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Fog
|
2
|
+
module JSON
|
3
|
+
|
4
|
+
def self.sanitize(data)
|
5
|
+
case data
|
6
|
+
when Array
|
7
|
+
data.map {|datum| sanitize(datum)}
|
8
|
+
when Hash
|
9
|
+
for key, value in data
|
10
|
+
data[key] = sanitize(value)
|
11
|
+
end
|
12
|
+
when ::Time
|
13
|
+
data.strftime("%Y-%m-%dT%H:%M:%SZ")
|
14
|
+
else
|
15
|
+
data
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
data/lib/fog/core/provider.rb
CHANGED
@@ -6,7 +6,9 @@ module Fog
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def service(new_service, path)
|
9
|
-
services
|
9
|
+
Fog.services[new_service] ||= []
|
10
|
+
Fog.services[new_service] << self.to_s.split('::').last.downcase.to_sym
|
11
|
+
self.services << new_service
|
10
12
|
require File.join('fog', path)
|
11
13
|
end
|
12
14
|
|
data/lib/fog/core/service.rb
CHANGED
data/lib/fog/dns.rb
CHANGED
@@ -20,6 +20,9 @@ module Fog
|
|
20
20
|
when :dnsmadeeasy
|
21
21
|
require 'fog/dns/dnsmadeeasy'
|
22
22
|
Fog::DNS::DNSMadeEasy.new(attributes)
|
23
|
+
when :dynect
|
24
|
+
require 'fog/dns/dynect'
|
25
|
+
Fog::DNS::Dynect.new(attributes)
|
23
26
|
when :linode
|
24
27
|
require 'fog/dns/linode'
|
25
28
|
Fog::DNS::Linode.new(attributes)
|
@@ -34,9 +37,13 @@ module Fog
|
|
34
37
|
end
|
35
38
|
end
|
36
39
|
|
40
|
+
def self.providers
|
41
|
+
Fog.services[:dns]
|
42
|
+
end
|
43
|
+
|
37
44
|
def self.zones
|
38
45
|
zones = []
|
39
|
-
for provider in
|
46
|
+
for provider in self.providers
|
40
47
|
begin
|
41
48
|
zones.concat(self[provider].zones)
|
42
49
|
rescue # ignore any missing credentials/etc
|
@@ -0,0 +1,80 @@
|
|
1
|
+
module Fog
|
2
|
+
module DNS
|
3
|
+
class Dynect < Fog::Service
|
4
|
+
|
5
|
+
requires :dynect_customer, :dynect_username, :dynect_password
|
6
|
+
recognizes :timeout, :persistent
|
7
|
+
recognizes :provider # remove post deprecation
|
8
|
+
|
9
|
+
model_path 'fog/dns/models/dynect'
|
10
|
+
model :record
|
11
|
+
collection :records
|
12
|
+
model :zone
|
13
|
+
collection :zones
|
14
|
+
|
15
|
+
request_path 'fog/dns/requests/dynect'
|
16
|
+
request :delete_record
|
17
|
+
request :delete_zone
|
18
|
+
request :get_node_list
|
19
|
+
request :get_record
|
20
|
+
request :get_zone
|
21
|
+
request :post_record
|
22
|
+
request :post_session
|
23
|
+
request :post_zone
|
24
|
+
request :put_zone
|
25
|
+
|
26
|
+
class Mock
|
27
|
+
|
28
|
+
def initialize(options={})
|
29
|
+
@dynect_customer = options[:dynect_customer]
|
30
|
+
@dynect_username = options[:dynect_username]
|
31
|
+
@dynect_password = options[:dynect_password]
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
class Real
|
37
|
+
def initialize(options={})
|
38
|
+
require 'multi_json'
|
39
|
+
|
40
|
+
@dynect_customer = options[:dynect_customer]
|
41
|
+
@dynect_username = options[:dynect_username]
|
42
|
+
@dynect_password = options[:dynect_password]
|
43
|
+
|
44
|
+
@host = "api2.dynect.net"
|
45
|
+
@port = options[:port] || 443
|
46
|
+
@path = options[:path] || '/REST'
|
47
|
+
@scheme = options[:scheme] || 'https'
|
48
|
+
@version = options[:version] || '2.3.1'
|
49
|
+
@connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", options[:persistent] || true)
|
50
|
+
end
|
51
|
+
|
52
|
+
def auth_token
|
53
|
+
@auth_token ||= post_session.body['data']['token']
|
54
|
+
end
|
55
|
+
|
56
|
+
def request(params)
|
57
|
+
begin
|
58
|
+
params[:headers] ||= {}
|
59
|
+
params[:headers]['Content-Type'] = 'application/json'
|
60
|
+
params[:headers]['API-Version'] = @version
|
61
|
+
params[:headers]['Auth-Token'] = auth_token unless params[:path] == "Session"
|
62
|
+
params[:path] = "#{@path}/#{params[:path]}"
|
63
|
+
response = @connection.request(params.merge!({:host => @host}))
|
64
|
+
|
65
|
+
unless response.body.empty?
|
66
|
+
response.body = MultiJson.decode(response.body)
|
67
|
+
end
|
68
|
+
response
|
69
|
+
|
70
|
+
rescue Excon::Errors::HTTPStatusError => error
|
71
|
+
raise error
|
72
|
+
end
|
73
|
+
|
74
|
+
response
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'fog/core/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module DNS
|
5
|
+
class Dynect
|
6
|
+
|
7
|
+
class Record < Fog::Model
|
8
|
+
extend Fog::Deprecation
|
9
|
+
|
10
|
+
identity :id
|
11
|
+
attribute :name, :aliases => [:fqdn, 'fqdn']
|
12
|
+
attribute :rdata
|
13
|
+
attribute :serial_style
|
14
|
+
attribute :ttl
|
15
|
+
attribute :type, :aliases => 'record_type'
|
16
|
+
attribute :value
|
17
|
+
|
18
|
+
def destroy
|
19
|
+
requires :identity, :name, :type, :zone
|
20
|
+
connection.delete_record(type, zone.identity, name, identity)
|
21
|
+
true
|
22
|
+
end
|
23
|
+
|
24
|
+
def save
|
25
|
+
requires :name, :type, :value, :zone
|
26
|
+
|
27
|
+
options = {
|
28
|
+
:ttl => ttl
|
29
|
+
}
|
30
|
+
options.delete_if {|key, value| value.nil?}
|
31
|
+
|
32
|
+
data = connection.post_record(type, zone.identity, name, {'address' => value}, options).body['data']
|
33
|
+
# avoid overwriting zone object with zone string
|
34
|
+
data = data.reject {|key, value| key == 'zone'}
|
35
|
+
merge_attributes(data)
|
36
|
+
|
37
|
+
zone.publish
|
38
|
+
records = connection.get_record(type, zone.identity, name).body['data']
|
39
|
+
# data in format ['/REST/xRecord/domain/fqdn/identity]
|
40
|
+
records.map! do |record|
|
41
|
+
tokens = record.split('/')
|
42
|
+
{
|
43
|
+
:identity => tokens.last,
|
44
|
+
:type => tokens[2][0...-6] # everything before 'Record'
|
45
|
+
}
|
46
|
+
end
|
47
|
+
record = records.detect {|record| record[:type] == type}
|
48
|
+
merge_attributes(record)
|
49
|
+
|
50
|
+
true
|
51
|
+
end
|
52
|
+
|
53
|
+
def zone
|
54
|
+
@zone
|
55
|
+
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
def zone=(new_zone)
|
60
|
+
@zone = new_zone
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|