gapinc-fog 1.12.1.2.1 → 1.14.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/.travis.yml +16 -1
- data/Gemfile.1.8.7 +10 -0
- data/README.md +23 -2
- data/Rakefile +2 -2
- data/changelog.txt +276 -0
- data/fog.gemspec +4 -6
- data/lib/fog/atmos/models/storage/file.rb +2 -2
- data/lib/fog/aws/elb.rb +3 -0
- data/lib/fog/aws/elb/policy_types.rb +441 -430
- data/lib/fog/aws/models/auto_scaling/activities.rb +11 -3
- data/lib/fog/aws/models/auto_scaling/groups.rb +6 -3
- data/lib/fog/aws/models/auto_scaling/policies.rb +7 -3
- data/lib/fog/aws/models/compute/volume.rb +1 -1
- data/lib/fog/aws/models/elb/backend_server_description.rb +11 -0
- data/lib/fog/aws/models/elb/backend_server_descriptions.rb +22 -0
- data/lib/fog/aws/models/elb/load_balancer.rb +15 -2
- data/lib/fog/aws/models/elb/policies.rb +28 -13
- data/lib/fog/aws/models/elb/policy.rb +20 -10
- data/lib/fog/aws/models/rds/instance_option.rb +21 -0
- data/lib/fog/aws/models/rds/instance_options.rb +30 -0
- data/lib/fog/aws/models/rds/log_file.rb +26 -0
- data/lib/fog/aws/models/rds/log_files.rb +50 -0
- data/lib/fog/aws/models/rds/server.rb +1 -0
- data/lib/fog/aws/models/rds/snapshots.rb +20 -13
- data/lib/fog/aws/parsers/auto_scaling/describe_policies.rb +5 -5
- data/lib/fog/aws/parsers/elb/describe_load_balancers.rb +44 -13
- data/lib/fog/aws/parsers/rds/db_parser.rb +28 -6
- data/lib/fog/aws/parsers/rds/describe_db_log_files.rb +44 -0
- data/lib/fog/aws/parsers/rds/describe_orderable_db_instance_options.rb +47 -0
- data/lib/fog/aws/parsers/rds/download_db_logfile_portion.rb +26 -0
- data/lib/fog/aws/parsers/storage/complete_multipart_upload.rb +1 -1
- data/lib/fog/aws/parsers/sts/assume_role.rb +30 -0
- data/lib/fog/aws/rds.rb +13 -0
- data/lib/fog/aws/requests/auto_scaling/describe_auto_scaling_groups.rb +9 -1
- data/lib/fog/aws/requests/auto_scaling/describe_policies.rb +15 -1
- data/lib/fog/aws/requests/elb/create_app_cookie_stickiness_policy.rb +0 -2
- data/lib/fog/aws/requests/elb/create_lb_cookie_stickiness_policy.rb +0 -2
- data/lib/fog/aws/requests/elb/create_load_balancer.rb +7 -0
- data/lib/fog/aws/requests/elb/create_load_balancer_policy.rb +11 -8
- data/lib/fog/aws/requests/elb/describe_load_balancers.rb +21 -1
- data/lib/fog/aws/requests/elb/set_load_balancer_policies_for_backend_server.rb +67 -0
- data/lib/fog/aws/requests/rds/describe_db_log_files.rb +67 -0
- data/lib/fog/aws/requests/rds/describe_orderable_db_instance_options.rb +76 -0
- data/lib/fog/aws/requests/rds/download_db_logfile_portion.rb +63 -0
- data/lib/fog/aws/requests/ses/send_raw_email.rb +1 -1
- data/lib/fog/aws/requests/ses/verify_domain_identity.rb +1 -1
- data/lib/fog/aws/requests/storage/complete_multipart_upload.rb +6 -2
- data/lib/fog/aws/requests/storage/get_object.rb +1 -1
- data/lib/fog/aws/requests/sts/assume_role.rb +46 -0
- data/lib/fog/aws/ses.rb +25 -9
- data/lib/fog/aws/sts.rb +22 -6
- data/lib/fog/bin/openstack.rb +5 -0
- data/lib/fog/bin/rackspace.rb +4 -0
- data/lib/fog/brightbox/models/compute/collaboration.rb +10 -2
- data/lib/fog/brightbox/models/compute/collaborations.rb +26 -2
- data/lib/fog/brightbox/models/compute/user_collaboration.rb +16 -1
- data/lib/fog/brightbox/models/compute/user_collaborations.rb +10 -2
- data/lib/fog/cloudstack/models/compute/servers.rb +1 -1
- data/lib/fog/compute/models/server.rb +16 -10
- data/lib/fog/core.rb +1 -0
- data/lib/fog/core/collection.rb +18 -0
- data/lib/fog/core/mock.rb +16 -0
- data/lib/fog/digitalocean/compute.rb +32 -3
- data/lib/fog/digitalocean/models/compute/server.rb +43 -14
- data/lib/fog/digitalocean/models/compute/servers.rb +27 -4
- data/lib/fog/digitalocean/models/compute/ssh_keys.rb +2 -3
- data/lib/fog/digitalocean/requests/compute/create_server.rb +9 -7
- data/lib/fog/digitalocean/requests/compute/destroy_server.rb +3 -0
- data/lib/fog/digitalocean/requests/compute/list_images.rb +6 -6
- data/lib/fog/dnsimple/dns.rb +4 -1
- data/lib/fog/dnsimple/models/dns/record.rb +3 -3
- data/lib/fog/dnsimple/requests/dns/create_domain.rb +36 -0
- data/lib/fog/dnsimple/requests/dns/create_record.rb +27 -0
- data/lib/fog/dnsimple/requests/dns/delete_domain.rb +12 -0
- data/lib/fog/dnsimple/requests/dns/delete_record.rb +12 -0
- data/lib/fog/dnsimple/requests/dns/get_domain.rb +12 -0
- data/lib/fog/dnsimple/requests/dns/get_record.rb +24 -0
- data/lib/fog/dnsimple/requests/dns/list_domains.rb +12 -0
- data/lib/fog/dnsimple/requests/dns/list_records.rb +12 -0
- data/lib/fog/dnsimple/requests/dns/update_record.rb +20 -0
- data/lib/fog/glesys/models/compute/server.rb +6 -0
- data/lib/fog/google/README.md +28 -0
- data/lib/fog/google/Rakefile +17 -0
- data/lib/fog/google/examples/bootstrap.rb +9 -0
- data/lib/fog/google/examples/create.rb +37 -0
- data/lib/fog/google/examples/eric-fail.rb +19 -0
- data/lib/fog/google/examples/get_list_images.rb +27 -0
- data/lib/fog/google/examples/launch_micro_instance.rb +21 -0
- data/lib/fog/google/examples/metadata.rb +18 -0
- data/lib/fog/google/models/compute/disks.rb +16 -6
- data/lib/fog/google/models/compute/flavors.rb +2 -1
- data/lib/fog/google/models/compute/image.rb +16 -17
- data/lib/fog/google/models/compute/images.rb +38 -5
- data/lib/fog/google/models/compute/server.rb +2 -2
- data/lib/fog/google/models/compute/servers.rb +8 -5
- data/lib/fog/google/models/storage/file.rb +7 -1
- data/lib/fog/google/parsers/storage/access_control_list.rb +2 -2
- data/lib/fog/google/requests/compute/insert_server.rb +1 -2
- data/lib/fog/google/requests/compute/list_images.rb +3 -2
- data/lib/fog/google/requests/storage/get_object.rb +1 -1
- data/lib/fog/hp/requests/storage/get_object.rb +1 -1
- data/lib/fog/ibm/requests/compute/create_instance.rb +20 -15
- data/lib/fog/internet_archive/requests/storage/get_object.rb +1 -1
- data/lib/fog/metering.rb +25 -0
- data/lib/fog/openstack.rb +2 -1
- data/lib/fog/openstack/metering.rb +215 -0
- data/lib/fog/openstack/models/compute/server.rb +5 -2
- data/lib/fog/openstack/models/metering/resource.rb +24 -0
- data/lib/fog/openstack/models/metering/resources.rb +25 -0
- data/lib/fog/openstack/models/volume/volume.rb +3 -1
- data/lib/fog/openstack/models/volume/volumes.rb +2 -1
- data/lib/fog/openstack/network.rb +24 -1
- data/lib/fog/openstack/requests/compute/create_server.rb +19 -1
- data/lib/fog/openstack/requests/compute/get_host_details.rb +2 -1
- data/lib/fog/openstack/requests/metering/get_resource.rb +32 -0
- data/lib/fog/openstack/requests/metering/get_samples.rb +55 -0
- data/lib/fog/openstack/requests/metering/get_statistics.rb +56 -0
- data/lib/fog/openstack/requests/metering/list_meters.rb +50 -0
- data/lib/fog/openstack/requests/metering/list_resources.rb +32 -0
- data/lib/fog/openstack/requests/network/delete_quota.rb +26 -0
- data/lib/fog/openstack/requests/network/get_quota.rb +31 -0
- data/lib/fog/openstack/requests/network/get_quotas.rb +31 -0
- data/lib/fog/openstack/requests/network/update_quota.rb +33 -0
- data/lib/fog/openstack/requests/storage/put_object.rb +8 -5
- data/lib/fog/openstack/requests/volume/create_volume.rb +4 -2
- data/lib/fog/rackspace.rb +24 -4
- data/lib/fog/rackspace/block_storage.rb +8 -4
- data/lib/fog/rackspace/cdn.rb +21 -4
- data/lib/fog/rackspace/compute_v2.rb +15 -4
- data/lib/fog/rackspace/errors.rb +12 -5
- data/lib/fog/rackspace/mock_data.rb +18 -7
- data/lib/fog/rackspace/models/compute_v2/key_pair.rb +56 -0
- data/lib/fog/rackspace/models/compute_v2/key_pairs.rb +43 -0
- data/lib/fog/rackspace/models/compute_v2/server.rb +7 -2
- data/lib/fog/rackspace/models/compute_v2/servers.rb +2 -1
- data/lib/fog/rackspace/models/identity/service_catalog.rb +34 -16
- data/lib/fog/rackspace/models/monitoring/agent_token.rb +40 -0
- data/lib/fog/rackspace/models/monitoring/agent_tokens.rb +28 -0
- data/lib/fog/rackspace/models/monitoring/alarm.rb +51 -0
- data/lib/fog/rackspace/models/monitoring/alarm_example.rb +26 -0
- data/lib/fog/rackspace/models/monitoring/alarm_examples.rb +31 -0
- data/lib/fog/rackspace/models/monitoring/alarms.rb +40 -0
- data/lib/fog/rackspace/models/monitoring/base.rb +36 -0
- data/lib/fog/rackspace/models/monitoring/check.rb +75 -0
- data/lib/fog/rackspace/models/monitoring/check_type.rb +15 -0
- data/lib/fog/rackspace/models/monitoring/check_types.rb +23 -0
- data/lib/fog/rackspace/models/monitoring/checks.rb +40 -0
- data/lib/fog/rackspace/models/monitoring/data_point.rb +18 -0
- data/lib/fog/rackspace/models/monitoring/data_points.rb +49 -0
- data/lib/fog/rackspace/models/monitoring/entities.rb +48 -0
- data/lib/fog/rackspace/models/monitoring/entity.rb +64 -0
- data/lib/fog/rackspace/models/monitoring/metric.rb +25 -0
- data/lib/fog/rackspace/models/monitoring/metrics.rb +27 -0
- data/lib/fog/rackspace/monitoring.rb +149 -0
- data/lib/fog/rackspace/requests/compute_v2/create_keypair.rb +53 -0
- data/lib/fog/rackspace/requests/compute_v2/create_server.rb +10 -8
- data/lib/fog/rackspace/requests/compute_v2/delete_keypair.rb +36 -0
- data/lib/fog/rackspace/requests/compute_v2/get_keypair.rb +41 -0
- data/lib/fog/rackspace/requests/compute_v2/list_keypairs.rb +37 -0
- data/lib/fog/rackspace/requests/monitoring/create_agent_token.rb +19 -0
- data/lib/fog/rackspace/requests/monitoring/create_alarm.rb +19 -0
- data/lib/fog/rackspace/requests/monitoring/create_check.rb +19 -0
- data/lib/fog/rackspace/requests/monitoring/create_entity.rb +19 -0
- data/lib/fog/rackspace/requests/monitoring/delete_agent_token.rb +17 -0
- data/lib/fog/rackspace/requests/monitoring/delete_alarm.rb +18 -0
- data/lib/fog/rackspace/requests/monitoring/delete_check.rb +17 -0
- data/lib/fog/rackspace/requests/monitoring/delete_entity.rb +17 -0
- data/lib/fog/rackspace/requests/monitoring/evaluate_alarm_example.rb +21 -0
- data/lib/fog/rackspace/requests/monitoring/get_agent_token.rb +19 -0
- data/lib/fog/rackspace/requests/monitoring/get_alarm.rb +19 -0
- data/lib/fog/rackspace/requests/monitoring/get_alarm_example.rb +19 -0
- data/lib/fog/rackspace/requests/monitoring/get_check.rb +19 -0
- data/lib/fog/rackspace/requests/monitoring/get_entity.rb +19 -0
- data/lib/fog/rackspace/requests/monitoring/list_agent_tokens.rb +19 -0
- data/lib/fog/rackspace/requests/monitoring/list_alarm_examples.rb +18 -0
- data/lib/fog/rackspace/requests/monitoring/list_alarms.rb +18 -0
- data/lib/fog/rackspace/requests/monitoring/list_check_types.rb +17 -0
- data/lib/fog/rackspace/requests/monitoring/list_checks.rb +18 -0
- data/lib/fog/rackspace/requests/monitoring/list_data_points.rb +18 -0
- data/lib/fog/rackspace/requests/monitoring/list_entities.rb +19 -0
- data/lib/fog/rackspace/requests/monitoring/list_metrics.rb +18 -0
- data/lib/fog/rackspace/requests/monitoring/list_notification_plans.rb +18 -0
- data/lib/fog/rackspace/requests/monitoring/list_overview.rb +19 -0
- data/lib/fog/rackspace/requests/monitoring/update_alarm.rb +18 -0
- data/lib/fog/rackspace/requests/monitoring/update_check.rb +18 -0
- data/lib/fog/rackspace/requests/monitoring/update_entity.rb +18 -0
- data/lib/fog/rackspace/requests/storage/delete_multiple_objects.rb +75 -0
- data/lib/fog/rackspace/requests/storage/delete_static_large_object.rb +50 -0
- data/lib/fog/rackspace/requests/storage/put_dynamic_obj_manifest.rb +44 -0
- data/lib/fog/rackspace/requests/storage/put_object.rb +1 -1
- data/lib/fog/rackspace/requests/storage/put_object_manifest.rb +3 -30
- data/lib/fog/rackspace/requests/storage/put_static_obj_manifest.rb +60 -0
- data/lib/fog/rackspace/storage.rb +24 -16
- data/lib/fog/riakcs/provisioning.rb +2 -1
- data/lib/fog/riakcs/usage.rb +2 -1
- data/lib/fog/vcloud/compute.rb +1 -1
- data/lib/fog/vcloud/requests/compute/configure_vm.rb +2 -2
- data/lib/fog/version.rb +1 -1
- data/lib/fog/vsphere/compute.rb +131 -0
- data/lib/fog/vsphere/models/compute/server.rb +5 -1
- data/lib/fog/vsphere/requests/compute/get_datacenter.rb +3 -1
- data/lib/fog/vsphere/requests/compute/get_virtual_machine.rb +20 -38
- data/lib/fog/vsphere/requests/compute/list_datacenters.rb +1 -0
- data/lib/fog/vsphere/requests/compute/list_virtual_machines.rb +8 -114
- data/lib/fog/vsphere/requests/compute/vm_clone.rb +18 -9
- data/lib/fog/vsphere/requests/compute/vm_power_off.rb +2 -0
- data/lib/fog/xenserver/compute.rb +14 -12
- data/lib/fog/xenserver/models/compute/console.rb +27 -0
- data/lib/fog/xenserver/models/compute/consoles.rb +25 -0
- data/lib/fog/xenserver/models/compute/server.rb +6 -2
- data/lib/fog/xenserver/models/compute/servers.rb +5 -0
- data/lib/fog/xenserver/requests/compute/create_server.rb +4 -0
- data/lib/fog/xml/sax_parser_connection.rb +3 -0
- data/lib/tasks/changelog_task.rb +2 -0
- data/tests/aws/models/compute/volume_tests.rb +1 -1
- data/tests/aws/models/elb/model_tests.rb +28 -1
- data/tests/aws/models/rds/instance_option_tests.rb +14 -0
- data/tests/aws/parsers/elb/describe_load_balancers.rb +65 -0
- data/tests/aws/requests/elb/helper.rb +2 -1
- data/tests/aws/requests/elb/listener_tests.rb +1 -1
- data/tests/aws/requests/elb/load_balancer_tests.rb +5 -1
- data/tests/aws/requests/elb/policy_tests.rb +85 -6
- data/tests/aws/requests/iam/helper.rb +4 -1
- data/tests/aws/requests/iam/server_certificate_tests.rb +2 -2
- data/tests/aws/requests/rds/helper.rb +35 -0
- data/tests/aws/requests/rds/instance_option_tests.rb +21 -0
- data/tests/aws/requests/rds/log_file_tests.rb +19 -0
- data/tests/aws/requests/sts/assume_role_tests.rb +19 -0
- data/tests/core/mocking_tests.rb +15 -0
- data/tests/digitalocean/helper.rb +23 -16
- data/tests/digitalocean/models/compute/flavor_tests.rb +2 -2
- data/tests/digitalocean/models/compute/image_tests.rb +2 -2
- data/tests/digitalocean/models/compute/region_tests.rb +2 -2
- data/tests/digitalocean/models/compute/server_tests.rb +11 -3
- data/tests/digitalocean/models/compute/servers_tests.rb +14 -28
- data/tests/digitalocean/models/compute/ssh_key_tests.rb +7 -3
- data/tests/digitalocean/models/compute/ssh_keys_tests.rb +5 -1
- data/tests/digitalocean/requests/compute/create_server_tests.rb +3 -6
- data/tests/digitalocean/requests/compute/destroy_server_tests.rb +1 -2
- data/tests/digitalocean/requests/compute/get_server_details_tests.rb +1 -1
- data/tests/digitalocean/requests/compute/get_ssh_key_tests.rb +4 -1
- data/tests/digitalocean/requests/compute/list_ssh_keys_tests.rb +5 -2
- data/tests/dnsimple/requests/dns/dns_tests.rb +30 -26
- data/tests/helper.rb +2 -2
- data/tests/helpers/collection_helper.rb +4 -4
- data/tests/helpers/mock_helper.rb +2 -0
- data/tests/openstack/requests/metering/meter_tests.rb +52 -0
- data/tests/openstack/requests/metering/resource_tests.rb +19 -0
- data/tests/openstack/requests/network/quota_tests.rb +65 -0
- data/tests/openstack/requests/storage/object_tests.rb +27 -2
- data/tests/rackspace/block_storage_tests.rb +2 -1
- data/tests/rackspace/cdn_tests.rb +9 -0
- data/tests/rackspace/compute_v2_tests.rb +16 -15
- data/tests/rackspace/databases_tests.rb +1 -1
- data/tests/rackspace/load_balancer_tests.rb +1 -1
- data/tests/rackspace/models/compute_v2/keypairs_tests.rb +47 -0
- data/tests/rackspace/models/identity/service_catalog_tests.rb +54 -29
- data/tests/rackspace/models/monitoring/agent_token_tests.rb +9 -0
- data/tests/rackspace/models/monitoring/agent_tokens_tests.rb +9 -0
- data/tests/rackspace/models/monitoring/alarm_example_tests.rb +18 -0
- data/tests/rackspace/models/monitoring/alarm_examples_tests.rb +19 -0
- data/tests/rackspace/models/monitoring/alarm_tests.rb +56 -0
- data/tests/rackspace/models/monitoring/alarms_tests.rb +25 -0
- data/tests/rackspace/models/monitoring/check_tests.rb +50 -0
- data/tests/rackspace/models/monitoring/check_types_tests.rb +14 -0
- data/tests/rackspace/models/monitoring/checks_tests.rb +16 -0
- data/tests/rackspace/models/monitoring/data_points_tests.rb +19 -0
- data/tests/rackspace/models/monitoring/entities_tests.rb +14 -0
- data/tests/rackspace/models/monitoring/entity_tests.rb +26 -0
- data/tests/rackspace/models/monitoring/metric_tests.rb +19 -0
- data/tests/rackspace/models/monitoring/metrics_tests.rb +17 -0
- data/tests/rackspace/monitoring_tests.rb +72 -0
- data/tests/rackspace/requests/compute_v2/keypair_tests.rb +55 -0
- data/tests/rackspace/requests/monitoring/agent_tests.rb +34 -0
- data/tests/rackspace/requests/monitoring/alarm_example_tests.rb +30 -0
- data/tests/rackspace/requests/monitoring/alarm_tests.rb +56 -0
- data/tests/rackspace/requests/monitoring/check_tests.rb +40 -0
- data/tests/rackspace/requests/monitoring/entity_tests.rb +37 -0
- data/tests/rackspace/requests/monitoring/helper.rb +78 -0
- data/tests/rackspace/requests/monitoring/list_tests.rb +60 -0
- data/tests/rackspace/requests/storage/large_object_tests.rb +303 -59
- data/tests/rackspace/requests/storage/object_tests.rb +73 -18
- data/tests/vsphere/models/compute/server_tests.rb +1 -1
- data/tests/vsphere/requests/compute/list_virtual_machines_tests.rb +2 -2
- data/tests/vsphere/requests/compute/vm_clone_tests.rb +14 -8
- data/tests/xenserver/compute_tests.rb +5 -5
- data/tests/xenserver/models/compute/console_test.rb +35 -0
- data/tests/xenserver/models/compute/consoles_test.rb +19 -0
- data/tests/xenserver/models/compute/server_tests.rb +25 -18
- data/tests/xenserver/models/compute/servers_tests.rb +1 -0
- metadata +177 -14
@@ -90,17 +90,46 @@ module Fog
|
|
90
90
|
params[:query].merge!(:api_key => @digitalocean_api_key)
|
91
91
|
params[:query].merge!(:client_id => @digitalocean_client_id)
|
92
92
|
|
93
|
-
response = @connection.request(params)
|
93
|
+
response = retry_event_lock { parse @connection.request(params) }
|
94
94
|
|
95
95
|
unless response.body.empty?
|
96
|
-
response.body = Fog::JSON.decode(response.body)
|
97
96
|
if response.body['status'] != 'OK'
|
98
|
-
|
97
|
+
case response.body['error_message']
|
98
|
+
when /No Droplets Found/
|
99
|
+
raise Fog::Errors::NotFound.new
|
100
|
+
else
|
101
|
+
raise Fog::Errors::Error.new response.body.to_s
|
102
|
+
end
|
99
103
|
end
|
100
104
|
end
|
101
105
|
response
|
102
106
|
end
|
103
107
|
|
108
|
+
private
|
109
|
+
|
110
|
+
def parse(response)
|
111
|
+
return response if response.body.empty?
|
112
|
+
response.body = Fog::JSON.decode(response.body)
|
113
|
+
response
|
114
|
+
end
|
115
|
+
|
116
|
+
def retry_event_lock
|
117
|
+
count = 0
|
118
|
+
reponse = nil
|
119
|
+
while count < 5
|
120
|
+
response = yield
|
121
|
+
|
122
|
+
if response.body && response.body['error_message'] =~ /There is already a pending event for the droplet/
|
123
|
+
count += 1
|
124
|
+
sleep count ** 3
|
125
|
+
else
|
126
|
+
break
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
response
|
131
|
+
end
|
132
|
+
|
104
133
|
end
|
105
134
|
end
|
106
135
|
end
|
@@ -7,18 +7,26 @@ module Fog
|
|
7
7
|
# A DigitalOcean Droplet
|
8
8
|
#
|
9
9
|
class Server < Fog::Compute::Server
|
10
|
-
|
10
|
+
|
11
11
|
identity :id
|
12
12
|
attribute :name
|
13
|
-
|
13
|
+
attribute :state, :aliases => 'status'
|
14
14
|
attribute :image_id
|
15
15
|
attribute :region_id
|
16
|
-
attribute :flavor_id,
|
16
|
+
attribute :flavor_id, :aliases => 'size_id'
|
17
17
|
# Not documented in their API, but
|
18
18
|
# available nevertheless
|
19
|
-
attribute :ip_address
|
19
|
+
attribute :public_ip_address, :aliases => 'ip_address'
|
20
20
|
attribute :backups_active
|
21
21
|
|
22
|
+
attr_writer :ssh_keys
|
23
|
+
|
24
|
+
# Deprecated: Use public_ip_address instead.
|
25
|
+
def ip_address
|
26
|
+
Fog::Logger.warning("ip_address has been deprecated. Use public_ip_address instead")
|
27
|
+
public_ip_address
|
28
|
+
end
|
29
|
+
|
22
30
|
# Reboot the server (soft reboot).
|
23
31
|
#
|
24
32
|
# The preferred method of rebooting a server.
|
@@ -52,7 +60,7 @@ module Fog
|
|
52
60
|
# Works as a power switch.
|
53
61
|
# The server consumes resources while powered off
|
54
62
|
# so you are still charged.
|
55
|
-
#
|
63
|
+
#
|
56
64
|
# @see https://www.digitalocean.com/community/questions/am-i-charged-while-my-droplet-is-in-a-powered-off-state
|
57
65
|
def stop
|
58
66
|
requires :id
|
@@ -64,7 +72,7 @@ module Fog
|
|
64
72
|
# The server consumes resources while powered on
|
65
73
|
# so you will be charged.
|
66
74
|
#
|
67
|
-
# Each time a server is spun up, even if for a few seconds,
|
75
|
+
# Each time a server is spun up, even if for a few seconds,
|
68
76
|
# it is charged for an hour.
|
69
77
|
#
|
70
78
|
def start
|
@@ -72,6 +80,25 @@ module Fog
|
|
72
80
|
service.power_on_server self.id
|
73
81
|
end
|
74
82
|
|
83
|
+
def setup(credentials = {})
|
84
|
+
requires :public_ip_address
|
85
|
+
require 'net/ssh'
|
86
|
+
|
87
|
+
commands = [
|
88
|
+
%{mkdir .ssh},
|
89
|
+
%{passwd -l #{username}},
|
90
|
+
%{echo "#{Fog::JSON.encode(Fog::JSON.sanitize(attributes))}" >> ~/attributes.json}
|
91
|
+
]
|
92
|
+
if public_key
|
93
|
+
commands << %{echo "#{public_key}" >> ~/.ssh/authorized_keys}
|
94
|
+
end
|
95
|
+
|
96
|
+
# wait for aws to be ready
|
97
|
+
wait_for { sshable?(credentials) }
|
98
|
+
|
99
|
+
Fog::SSH.new(public_ip_address, username, credentials).run(commands)
|
100
|
+
end
|
101
|
+
|
75
102
|
# Creates the server (not to be called directly).
|
76
103
|
#
|
77
104
|
# Usually called by Fog::Collection#create
|
@@ -85,7 +112,7 @@ module Fog
|
|
85
112
|
# :image_id => image_id_here,
|
86
113
|
# :flavor_id => flavor_id_here,
|
87
114
|
# :region_id => region_id_here
|
88
|
-
#
|
115
|
+
#
|
89
116
|
# @return [Boolean]
|
90
117
|
def save
|
91
118
|
raise Fog::Errors::Error.new('Resaving an existing object may create a duplicate') if persisted?
|
@@ -93,11 +120,13 @@ module Fog
|
|
93
120
|
|
94
121
|
options = {}
|
95
122
|
if attributes[:ssh_key_ids]
|
96
|
-
options[:ssh_key_ids] = attributes[:ssh_key_ids]
|
123
|
+
options[:ssh_key_ids] = attributes[:ssh_key_ids]
|
124
|
+
elsif @ssh_keys
|
125
|
+
options[:ssh_key_ids] = @ssh_keys.map(&:id)
|
97
126
|
end
|
98
|
-
data = service.create_server name,
|
99
|
-
flavor_id,
|
100
|
-
image_id,
|
127
|
+
data = service.create_server name,
|
128
|
+
flavor_id,
|
129
|
+
image_id,
|
101
130
|
region_id,
|
102
131
|
options
|
103
132
|
merge_attributes(data.body['droplet'])
|
@@ -105,7 +134,7 @@ module Fog
|
|
105
134
|
end
|
106
135
|
|
107
136
|
# Destroy the server, freeing up the resources.
|
108
|
-
#
|
137
|
+
#
|
109
138
|
# DigitalOcean will stop charging you for the resources
|
110
139
|
# the server was using.
|
111
140
|
#
|
@@ -115,9 +144,9 @@ module Fog
|
|
115
144
|
# IMPORTANT: As of 2013/01/31, you should wait some time to
|
116
145
|
# destroy the server after creating it. If you try to destroy
|
117
146
|
# the server too fast, the destroy event may be lost and the
|
118
|
-
# server will remain running and consuming resources, so
|
147
|
+
# server will remain running and consuming resources, so
|
119
148
|
# DigitalOcean will keep charging you.
|
120
|
-
# Double checked this with DigitalOcean staff and confirmed
|
149
|
+
# Double checked this with DigitalOcean staff and confirmed
|
121
150
|
# that it's the way it works right now.
|
122
151
|
#
|
123
152
|
# Double check the server has been destroyed!
|
@@ -6,16 +6,39 @@ module Fog
|
|
6
6
|
class DigitalOcean
|
7
7
|
|
8
8
|
class Servers < Fog::Collection
|
9
|
+
|
9
10
|
model Fog::Compute::DigitalOcean::Server
|
10
11
|
|
11
12
|
def all(filters = {})
|
12
|
-
|
13
|
+
data = service.list_servers.body['droplets']
|
14
|
+
load(data)
|
13
15
|
end
|
14
16
|
|
15
|
-
def
|
16
|
-
|
17
|
-
|
17
|
+
def bootstrap(new_attributes = {})
|
18
|
+
server = new(new_attributes)
|
19
|
+
|
20
|
+
raise(ArgumentError, "public_key_path is required to configure the server.") unless new_attributes[:public_key_path]
|
21
|
+
raise(ArgumentError, "private_key_path is required to configure the server.") unless new_attributes[:private_key_path]
|
22
|
+
credential = Fog.respond_to?(:credential) && Fog.credential || :default
|
23
|
+
name = "fog_#{credential}"
|
24
|
+
ssh_key = service.ssh_keys.detect { |key| key.name == name }
|
25
|
+
if ssh_key.nil?
|
26
|
+
ssh_key = service.ssh_keys.create(
|
27
|
+
:name => name,
|
28
|
+
:ssh_pub_key => File.read(new_attributes[:public_key_path])
|
29
|
+
)
|
18
30
|
end
|
31
|
+
server.ssh_keys = [ssh_key]
|
32
|
+
|
33
|
+
server.save
|
34
|
+
server.wait_for { ready? }
|
35
|
+
server.setup :keys => [new_attributes[:private_key_path]]
|
36
|
+
server
|
37
|
+
end
|
38
|
+
|
39
|
+
def get(id)
|
40
|
+
server = service.get_server_details(id).body['droplet']
|
41
|
+
new(server) if server
|
19
42
|
rescue Fog::Errors::NotFound
|
20
43
|
nil
|
21
44
|
end
|
@@ -6,9 +6,9 @@ module Fog
|
|
6
6
|
#
|
7
7
|
# FIXME: missing ssh keys support
|
8
8
|
#
|
9
|
-
def create_server( name,
|
10
|
-
size_id,
|
11
|
-
image_id,
|
9
|
+
def create_server( name,
|
10
|
+
size_id,
|
11
|
+
image_id,
|
12
12
|
region_id,
|
13
13
|
options = {} )
|
14
14
|
|
@@ -20,9 +20,10 @@ module Fog
|
|
20
20
|
}
|
21
21
|
|
22
22
|
if options[:ssh_key_ids]
|
23
|
+
options[:ssh_key_ids] = options[:ssh_key_ids].join(",") if options[:ssh_key_ids].is_a? Array
|
23
24
|
query_hash[:ssh_key_ids] = options[:ssh_key_ids]
|
24
25
|
end
|
25
|
-
|
26
|
+
|
26
27
|
request(
|
27
28
|
:expects => [200],
|
28
29
|
:method => 'GET',
|
@@ -35,9 +36,9 @@ module Fog
|
|
35
36
|
|
36
37
|
class Mock
|
37
38
|
|
38
|
-
def create_server( name,
|
39
|
-
size_id,
|
40
|
-
image_id,
|
39
|
+
def create_server( name,
|
40
|
+
size_id,
|
41
|
+
image_id,
|
41
42
|
region_id,
|
42
43
|
options = {} )
|
43
44
|
response = Excon::Response.new
|
@@ -50,6 +51,7 @@ module Fog
|
|
50
51
|
"size_id" => size_id,
|
51
52
|
"image_id" => image_id,
|
52
53
|
"region_id" => region_id,
|
54
|
+
"ip_address" => "127.0.0.1",
|
53
55
|
"status" => 'active'
|
54
56
|
}
|
55
57
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Fog
|
2
2
|
module Compute
|
3
|
-
class DigitalOcean
|
3
|
+
class DigitalOcean
|
4
4
|
class Real
|
5
5
|
|
6
6
|
def list_images(options = {})
|
@@ -23,18 +23,18 @@ module Fog
|
|
23
23
|
"images" => [
|
24
24
|
# Sample image
|
25
25
|
{
|
26
|
-
"id" => 1601,
|
27
|
-
"name" => "CentOS 5.8 x64",
|
26
|
+
"id" => 1601,
|
27
|
+
"name" => "CentOS 5.8 x64",
|
28
28
|
"distribution" => "CentOS"
|
29
29
|
},
|
30
30
|
{
|
31
|
-
"id" => 1602,
|
32
|
-
"name" => "CentOS 5.8 x32",
|
31
|
+
"id" => 1602,
|
32
|
+
"name" => "CentOS 5.8 x32",
|
33
33
|
"distribution" => "CentOS"
|
34
34
|
},
|
35
35
|
{
|
36
36
|
"id" => 2676,
|
37
|
-
"name" => "Ubuntu 12.04 x64
|
37
|
+
"name" => "Ubuntu 12.04 x64",
|
38
38
|
"distribution" => "Ubuntu"
|
39
39
|
},
|
40
40
|
|
data/lib/fog/dnsimple/dns.rb
CHANGED
@@ -25,7 +25,7 @@ module Fog
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def destroy
|
28
|
-
service.delete_record(zone.
|
28
|
+
service.delete_record(zone.id, identity)
|
29
29
|
true
|
30
30
|
end
|
31
31
|
|
@@ -41,12 +41,12 @@ module Fog
|
|
41
41
|
|
42
42
|
# decide whether its a new record or update of an existing
|
43
43
|
if id.nil?
|
44
|
-
data = service.create_record(zone.
|
44
|
+
data = service.create_record(zone.id, name, type, value, options)
|
45
45
|
else
|
46
46
|
options[:name] = name if name
|
47
47
|
options[:content] = value if value
|
48
48
|
options[:type] = type if type
|
49
|
-
data = service.update_record(zone.
|
49
|
+
data = service.update_record(zone.id, id, options)
|
50
50
|
end
|
51
51
|
|
52
52
|
merge_attributes(data.body["record"])
|
@@ -22,6 +22,42 @@ module Fog
|
|
22
22
|
end
|
23
23
|
|
24
24
|
end
|
25
|
+
|
26
|
+
class Mock
|
27
|
+
|
28
|
+
def create_domain(name)
|
29
|
+
response = Excon::Response.new
|
30
|
+
response.status = 201
|
31
|
+
|
32
|
+
body = {
|
33
|
+
"domain" => {
|
34
|
+
"auto_renew" => nil,
|
35
|
+
"created_at" => Time.now.iso8601,
|
36
|
+
"expires_on" => Date.today + 365,
|
37
|
+
"id" => Fog::Mock.random_numbers(1).to_i,
|
38
|
+
"language" => nil,
|
39
|
+
"lockable" => true,
|
40
|
+
"name" => name,
|
41
|
+
"name_server_status" => "unknown",
|
42
|
+
"registrant_id" => nil,
|
43
|
+
"state" => "registered",
|
44
|
+
"token" => "4fIFYWYiJayvL2tkf_mkBkqC4L+4RtYqDA",
|
45
|
+
"unicode_name" => name,
|
46
|
+
"updated_at" => Time.now.iso8601,
|
47
|
+
"user_id" => 1,
|
48
|
+
"record_count" => 0,
|
49
|
+
"service_count" => 0,
|
50
|
+
"private_whois?" => false
|
51
|
+
}
|
52
|
+
}
|
53
|
+
self.data[:domains] << body
|
54
|
+
|
55
|
+
response.body = body
|
56
|
+
response
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
25
61
|
end
|
26
62
|
end
|
27
63
|
end
|
@@ -43,6 +43,33 @@ module Fog
|
|
43
43
|
end
|
44
44
|
|
45
45
|
end
|
46
|
+
|
47
|
+
class Mock
|
48
|
+
|
49
|
+
def create_record(domain, name, type, content, options = {})
|
50
|
+
response = Excon::Response.new
|
51
|
+
response.status = 201
|
52
|
+
body = {
|
53
|
+
"record" => {
|
54
|
+
"name" => name,
|
55
|
+
"record_type" => type,
|
56
|
+
"content" => content,
|
57
|
+
"created_at" => Time.now.iso8601,
|
58
|
+
"updated_at" => Time.now.iso8601,
|
59
|
+
"id" => Fog::Mock.random_numbers(1).to_i,
|
60
|
+
"domain_id" => domain
|
61
|
+
}.merge(options)
|
62
|
+
}
|
63
|
+
|
64
|
+
self.data[:records][domain] ||= []
|
65
|
+
self.data[:records][domain] << body
|
66
|
+
|
67
|
+
response.body = body
|
68
|
+
response
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
|
46
73
|
end
|
47
74
|
end
|
48
75
|
end
|
@@ -21,6 +21,18 @@ module Fog
|
|
21
21
|
end
|
22
22
|
|
23
23
|
end
|
24
|
+
|
25
|
+
class Mock
|
26
|
+
|
27
|
+
def delete_domain(name)
|
28
|
+
self.data[:records].delete name
|
29
|
+
self.data[:domains].reject! { |domain| domain["domain"]["name"] == name }
|
30
|
+
response = Excon::Response.new
|
31
|
+
response.status = 200
|
32
|
+
response
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
24
36
|
end
|
25
37
|
end
|
26
38
|
end
|