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
@@ -0,0 +1,31 @@
|
|
1
|
+
module Fog
|
2
|
+
module Network
|
3
|
+
class OpenStack
|
4
|
+
class Real
|
5
|
+
|
6
|
+
def get_quotas
|
7
|
+
request(
|
8
|
+
:expects => 200,
|
9
|
+
:method => 'GET',
|
10
|
+
:path => "/quotas"
|
11
|
+
)
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
class Mock
|
17
|
+
|
18
|
+
def get_quotas
|
19
|
+
response = Excon::Response.new
|
20
|
+
response.status = 200
|
21
|
+
response.body = {
|
22
|
+
'quotas' => self.data[:quotas]
|
23
|
+
}
|
24
|
+
response
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Fog
|
2
|
+
module Network
|
3
|
+
class OpenStack
|
4
|
+
class Real
|
5
|
+
|
6
|
+
def update_quota(tenant_id, options = {})
|
7
|
+
request(
|
8
|
+
:body => Fog::JSON.encode({ 'quota' => options} ),
|
9
|
+
:expects => 200,
|
10
|
+
:method => 'PUT',
|
11
|
+
:path => "/quotas/#{tenant_id}"
|
12
|
+
)
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
class Mock
|
18
|
+
|
19
|
+
def update_quota(tenant_id, options = {})
|
20
|
+
self.data[:quota_updated] = self.data[:quota].merge options
|
21
|
+
|
22
|
+
response = Excon::Response.new
|
23
|
+
response.status = 200
|
24
|
+
response.body = { 'quota' => self.data[:quota_updated] }
|
25
|
+
response
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
@@ -11,19 +11,22 @@ module Fog
|
|
11
11
|
# * data<~String|File> - data to upload
|
12
12
|
# * options<~Hash> - config headers for object. Defaults to {}.
|
13
13
|
#
|
14
|
-
def put_object(container, object, data, options = {})
|
14
|
+
def put_object(container, object, data, options = {}, &block)
|
15
15
|
data = Fog::Storage.parse_data(data)
|
16
16
|
headers = data[:headers].merge!(options)
|
17
|
-
|
18
|
-
|
17
|
+
|
18
|
+
params = block_given? ? { :request_block => block } : { :body => data[:body] }
|
19
|
+
|
20
|
+
params.merge!(
|
19
21
|
:expects => 201,
|
20
|
-
:idempotent =>
|
22
|
+
:idempotent => !params[:request_block],
|
21
23
|
:headers => headers,
|
22
24
|
:method => 'PUT',
|
23
25
|
:path => "#{Fog::OpenStack.escape(container)}/#{Fog::OpenStack.escape(object)}"
|
24
26
|
)
|
25
|
-
end
|
26
27
|
|
28
|
+
request(params)
|
29
|
+
end
|
27
30
|
end
|
28
31
|
end
|
29
32
|
end
|
@@ -12,7 +12,8 @@ module Fog
|
|
12
12
|
}
|
13
13
|
}
|
14
14
|
|
15
|
-
vanilla_options = [
|
15
|
+
vanilla_options = [:snapshot_id, :imageRef, :volume_type,
|
16
|
+
:source_volid]
|
16
17
|
vanilla_options.select{|o| options[o]}.each do |key|
|
17
18
|
data['volume'][key] = options[key]
|
18
19
|
end
|
@@ -38,7 +39,8 @@ module Fog
|
|
38
39
|
'display_description' => description,
|
39
40
|
'size' => size,
|
40
41
|
'status' => 'creating',
|
41
|
-
'snapshot_id' => options[
|
42
|
+
'snapshot_id' => options[:snapshot_id] || nil,
|
43
|
+
'image_id' => options[:imageRef] || nil,
|
42
44
|
'volume_type' => nil,
|
43
45
|
'availability_zone' => 'nova',
|
44
46
|
'created_at' => Time.now,
|
data/lib/fog/rackspace.rb
CHANGED
@@ -12,10 +12,11 @@ module Fog
|
|
12
12
|
|
13
13
|
module Errors
|
14
14
|
class ServiceError < Fog::Errors::Error
|
15
|
-
attr_reader :response_data, :status_code
|
15
|
+
attr_reader :response_data, :status_code, :transaction_id
|
16
16
|
|
17
17
|
def to_s
|
18
|
-
status_code ? "
|
18
|
+
status = status_code ? "HTTP #{status_code}" : "HTTP <Unknown>"
|
19
|
+
"[#{status} | #{transaction_id}] #{super}"
|
19
20
|
end
|
20
21
|
|
21
22
|
def self.slurp(error)
|
@@ -28,7 +29,7 @@ module Fog
|
|
28
29
|
unless error.response.body.empty?
|
29
30
|
begin
|
30
31
|
data = Fog::JSON.decode(error.response.body)
|
31
|
-
message = data
|
32
|
+
message = extract_message(data)
|
32
33
|
rescue => e
|
33
34
|
Fog::Logger.warning("Received exception '#{e}' while decoding>> #{error.response.body}")
|
34
35
|
message = error.response.body
|
@@ -40,8 +41,24 @@ module Fog
|
|
40
41
|
new_error = super(error, message)
|
41
42
|
new_error.instance_variable_set(:@response_data, data)
|
42
43
|
new_error.instance_variable_set(:@status_code, status_code)
|
44
|
+
new_error.set_transaction_id(error, service)
|
43
45
|
new_error
|
44
46
|
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def set_transaction_id(error, service)
|
51
|
+
return unless service && service.respond_to?(:request_id_header) && error.response
|
52
|
+
@transaction_id = error.response.headers[service.request_id_header]
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.extract_message(data)
|
56
|
+
if data.is_a?(Hash)
|
57
|
+
message = data.values.first['message'] if data.values.first.is_a?(Hash)
|
58
|
+
message ||= data['message']
|
59
|
+
end
|
60
|
+
message || data.inspect
|
61
|
+
end
|
45
62
|
end
|
46
63
|
|
47
64
|
class InternalServerError < ServiceError; end
|
@@ -57,7 +74,9 @@ module Fog
|
|
57
74
|
unless new_error.response_data.nil? or new_error.response_data['badRequest'].nil?
|
58
75
|
new_error.instance_variable_set(:@validation_errors, new_error.response_data['badRequest']['validationErrors'])
|
59
76
|
end
|
60
|
-
|
77
|
+
|
78
|
+
new_error.instance_variable_set(:@status_code, status_code)
|
79
|
+
new_error.set_transaction_id(error, service)
|
61
80
|
end
|
62
81
|
end
|
63
82
|
end
|
@@ -71,6 +90,7 @@ module Fog
|
|
71
90
|
service(:load_balancers, 'rackspace/load_balancers', 'LoadBalancers')
|
72
91
|
service(:identity, 'rackspace/identity', 'Identity')
|
73
92
|
service(:databases, 'rackspace/databases', 'Databases')
|
93
|
+
service(:monitoring, 'rackspace/monitoring', 'Monitoring')
|
74
94
|
|
75
95
|
def self.authenticate(options, connection_options = {})
|
76
96
|
rackspace_auth_url = options[:rackspace_auth_url]
|
@@ -90,13 +90,13 @@ module Fog
|
|
90
90
|
def request(params, parse_json = true, &block)
|
91
91
|
super(params, parse_json, &block)
|
92
92
|
rescue Excon::Errors::NotFound => error
|
93
|
-
raise NotFound.slurp(error,
|
93
|
+
raise NotFound.slurp(error, self)
|
94
94
|
rescue Excon::Errors::BadRequest => error
|
95
|
-
raise BadRequest.slurp
|
95
|
+
raise BadRequest.slurp(error, self)
|
96
96
|
rescue Excon::Errors::InternalServerError => error
|
97
|
-
raise InternalServerError.slurp
|
97
|
+
raise InternalServerError.slurp(error, self)
|
98
98
|
rescue Excon::Errors::HTTPStatusError => error
|
99
|
-
raise ServiceError.slurp
|
99
|
+
raise ServiceError.slurp(error, self)
|
100
100
|
end
|
101
101
|
|
102
102
|
def authenticate(options={})
|
@@ -116,6 +116,10 @@ module Fog
|
|
116
116
|
@rackspace_region
|
117
117
|
end
|
118
118
|
|
119
|
+
def request_id_header
|
120
|
+
"X-Compute-Request-Id"
|
121
|
+
end
|
122
|
+
|
119
123
|
def endpoint_uri(service_endpoint_url=nil)
|
120
124
|
@uri = super(@rackspace_endpoint || service_endpoint_url, :rackspace_block_storage_url)
|
121
125
|
end
|
data/lib/fog/rackspace/cdn.rb
CHANGED
@@ -31,6 +31,10 @@ module Fog
|
|
31
31
|
@rackspace_region
|
32
32
|
end
|
33
33
|
|
34
|
+
def request_id_header
|
35
|
+
"X-Trans-Id"
|
36
|
+
end
|
37
|
+
|
34
38
|
def endpoint_uri(service_endpoint_url=nil)
|
35
39
|
@uri = super(@rackspace_cdn_url || service_endpoint_url, :rackspace_cdn_url)
|
36
40
|
end
|
@@ -115,6 +119,10 @@ module Fog
|
|
115
119
|
include Base
|
116
120
|
|
117
121
|
def initialize(options={})
|
122
|
+
# api_key and username missing from instance variable sets
|
123
|
+
@rackspace_api_key = options[:rackspace_api_key]
|
124
|
+
@rackspace_username = options[:rackspace_username]
|
125
|
+
|
118
126
|
@connection_options = options[:connection_options] || {}
|
119
127
|
@rackspace_auth_url = options[:rackspace_auth_url]
|
120
128
|
@rackspace_cdn_url = options[:rackspace_cdn_url]
|
@@ -155,13 +163,13 @@ module Fog
|
|
155
163
|
def request(params, parse_json = true, &block)
|
156
164
|
super(params, parse_json, &block)
|
157
165
|
rescue Excon::Errors::NotFound => error
|
158
|
-
raise Fog::Storage::Rackspace::NotFound.slurp(error,
|
166
|
+
raise Fog::Storage::Rackspace::NotFound.slurp(error, self)
|
159
167
|
rescue Excon::Errors::BadRequest => error
|
160
|
-
raise Fog::Storage::Rackspace::BadRequest.slurp
|
168
|
+
raise Fog::Storage::Rackspace::BadRequest.slurp(error, self)
|
161
169
|
rescue Excon::Errors::InternalServerError => error
|
162
|
-
raise Fog::Storage::Rackspace::InternalServerError.slurp
|
170
|
+
raise Fog::Storage::Rackspace::InternalServerError.slurp(error, self)
|
163
171
|
rescue Excon::Errors::HTTPStatusError => error
|
164
|
-
raise Fog::Storage::Rackspace::ServiceError.slurp
|
172
|
+
raise Fog::Storage::Rackspace::ServiceError.slurp(error, self)
|
165
173
|
end
|
166
174
|
|
167
175
|
private
|
@@ -172,6 +180,15 @@ module Fog
|
|
172
180
|
@auth_token = credentials['X-Auth-Token']
|
173
181
|
end
|
174
182
|
|
183
|
+
# Fix for invalid auth_token, likely after 24 hours.
|
184
|
+
def authenticate(options={})
|
185
|
+
super({
|
186
|
+
:rackspace_api_key => @rackspace_api_key,
|
187
|
+
:rackspace_username => @rackspace_username,
|
188
|
+
:rackspace_auth_url => @rackspace_auth_url,
|
189
|
+
:connection_options => @connection_options
|
190
|
+
})
|
191
|
+
end
|
175
192
|
end
|
176
193
|
end
|
177
194
|
end
|
@@ -54,6 +54,8 @@ module Fog
|
|
54
54
|
collection :attachments
|
55
55
|
model :network
|
56
56
|
collection :networks
|
57
|
+
model :key_pair
|
58
|
+
collection :key_pairs
|
57
59
|
|
58
60
|
request_path 'fog/rackspace/requests/compute_v2'
|
59
61
|
request :list_servers
|
@@ -97,6 +99,11 @@ module Fog
|
|
97
99
|
request :create_network
|
98
100
|
request :delete_network
|
99
101
|
|
102
|
+
request :list_keypairs
|
103
|
+
request :create_keypair
|
104
|
+
request :delete_keypair
|
105
|
+
request :get_keypair
|
106
|
+
|
100
107
|
class Mock < Fog::Rackspace::Service
|
101
108
|
include Fog::Rackspace::MockData
|
102
109
|
|
@@ -142,13 +149,13 @@ module Fog
|
|
142
149
|
def request(params, parse_json = true, &block)
|
143
150
|
super(params, parse_json, &block)
|
144
151
|
rescue Excon::Errors::NotFound => error
|
145
|
-
raise NotFound.slurp(error,
|
152
|
+
raise NotFound.slurp(error, self)
|
146
153
|
rescue Excon::Errors::BadRequest => error
|
147
|
-
raise BadRequest.slurp
|
154
|
+
raise BadRequest.slurp(error, self)
|
148
155
|
rescue Excon::Errors::InternalServerError => error
|
149
|
-
raise InternalServerError.slurp
|
156
|
+
raise InternalServerError.slurp(error, self)
|
150
157
|
rescue Excon::Errors::HTTPStatusError => error
|
151
|
-
raise ServiceError.slurp
|
158
|
+
raise ServiceError.slurp(error, self)
|
152
159
|
end
|
153
160
|
|
154
161
|
def authenticate(options={})
|
@@ -164,6 +171,10 @@ module Fog
|
|
164
171
|
:cloudServersOpenStack
|
165
172
|
end
|
166
173
|
|
174
|
+
def request_id_header
|
175
|
+
"X-Compute-Request-Id"
|
176
|
+
end
|
177
|
+
|
167
178
|
def region
|
168
179
|
@rackspace_region
|
169
180
|
end
|
data/lib/fog/rackspace/errors.rb
CHANGED
@@ -5,20 +5,27 @@ module Fog
|
|
5
5
|
def self.included(mod)
|
6
6
|
mod.class_eval <<-'EOS', __FILE__, __LINE__
|
7
7
|
class NotFound < Fog::Service::NotFound
|
8
|
-
attr_reader :region, :status_code
|
8
|
+
attr_reader :region, :status_code, :transaction_id
|
9
9
|
|
10
10
|
def to_s
|
11
|
-
status = status_code ? "
|
11
|
+
status = status_code ? "HTTP #{status_code}" : "HTTP <Unknown>"
|
12
12
|
message = region ? "resource not found in #{region} region" : super
|
13
|
-
"#{status}#{message}"
|
13
|
+
"[#{status} | #{transaction_id}] #{message}"
|
14
14
|
end
|
15
15
|
|
16
|
-
def self.slurp(error,
|
16
|
+
def self.slurp(error, service=nil)
|
17
17
|
exception = NotFound.new
|
18
|
-
exception.instance_variable_set(:@region, region)
|
18
|
+
exception.instance_variable_set(:@region, service.region) if service && service.respond_to?(:region)
|
19
19
|
exception.instance_variable_set(:@status_code, error.response.status) rescue nil
|
20
|
+
exception.set_transaction_id(error, service)
|
20
21
|
exception
|
21
22
|
end
|
23
|
+
|
24
|
+
def set_transaction_id(error, service)
|
25
|
+
return unless service && service.respond_to?(:request_id_header) && error.response
|
26
|
+
@transaction_id = error.response.headers[service.request_id_header]
|
27
|
+
end
|
28
|
+
|
22
29
|
end
|
23
30
|
EOS
|
24
31
|
end
|
@@ -8,10 +8,11 @@ module Fog
|
|
8
8
|
@@data ||= Hash.new do |hash, key|
|
9
9
|
hash[key] = begin
|
10
10
|
#Compute V2
|
11
|
-
flavor_id
|
12
|
-
image_id
|
11
|
+
flavor_id = Fog.credentials[:rackspace_flavor_id].to_s ||= Fog::Mock.random_numbers(1)
|
12
|
+
image_id = Fog.credentials[:rackspace_image_id] ||= Fog::Rackspace::MockData.uuid
|
13
13
|
image_name = Fog::Mock.random_letters(6)
|
14
14
|
network_id = Fog::Rackspace::MockData.uuid
|
15
|
+
user_id = Fog::Mock.random_numbers(6).to_s
|
15
16
|
|
16
17
|
flavor = {
|
17
18
|
"OS-FLV-EXT-DATA:ephemeral" => 4,
|
@@ -88,6 +89,14 @@ module Fog
|
|
88
89
|
'cidr' => '192.168.0.0/24'
|
89
90
|
}
|
90
91
|
|
92
|
+
key_pair = {
|
93
|
+
'public_key' => "ssh-rsa ".concat(Fog::Mock.random_letters(372)).concat(" Generated by Nova\n"),
|
94
|
+
'private_key' => "-----BEGIN RSA PRIVATE KEY-----\n".concat(Fog::Mock.random_letters(1635)).concat("\n-----END RSA PRIVATE KEY-----\n"),
|
95
|
+
'user_id' => user_id,
|
96
|
+
'name' => Fog::Mock.random_letters(32),
|
97
|
+
'fingerprint' => "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00"
|
98
|
+
}
|
99
|
+
|
91
100
|
#Block Storage
|
92
101
|
volume_type1_id = Fog::Mock.random_numbers(3).to_s
|
93
102
|
volume_type2_id = Fog::Mock.random_numbers(3).to_s
|
@@ -106,11 +115,13 @@ module Fog
|
|
106
115
|
|
107
116
|
mock_data = {
|
108
117
|
#Compute V2
|
109
|
-
:flavors
|
110
|
-
:images
|
118
|
+
:flavors => Hash.new { |h,k| h[k] = flavor unless k == NOT_FOUND_ID },
|
119
|
+
:images => Hash.new { |h,k| h[k] = image unless k == NOT_FOUND_ID },
|
111
120
|
:networks => Hash.new { |h,k| h[k] = network unless k == NOT_FOUND_ID },
|
112
|
-
|
113
|
-
:
|
121
|
+
:keys => [],
|
122
|
+
:keypair => key_pair,
|
123
|
+
:keypairs => [],
|
124
|
+
:servers => {},
|
114
125
|
|
115
126
|
#Block Storage
|
116
127
|
:volumes => {},
|
@@ -123,7 +134,7 @@ module Fog
|
|
123
134
|
mock_data[:flavors][flavor_id] = flavor
|
124
135
|
mock_data[:images][image_id] = image
|
125
136
|
mock_data[:networks][network_id] = network
|
126
|
-
|
137
|
+
|
127
138
|
mock_data
|
128
139
|
end
|
129
140
|
end[@rackspace_api_key]
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'fog/core/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Compute
|
5
|
+
class RackspaceV2
|
6
|
+
class KeyPair < Fog::Model
|
7
|
+
|
8
|
+
# @!attribute [rw] name
|
9
|
+
# @return [String] the keypair name
|
10
|
+
identity :name
|
11
|
+
|
12
|
+
# @!attribute [r] public_key
|
13
|
+
# @return [String] the public key
|
14
|
+
attribute :public_key
|
15
|
+
|
16
|
+
# @!attribute [r] private_key
|
17
|
+
# @return [String] the private key
|
18
|
+
attribute :private_key
|
19
|
+
|
20
|
+
# @!attribute [r] user_id
|
21
|
+
# @return [String] the user_id associated to
|
22
|
+
attribute :user_id
|
23
|
+
|
24
|
+
# @!attribute [r] fingerprint
|
25
|
+
# @return [String] unique fingerprint
|
26
|
+
attribute :fingerprint
|
27
|
+
|
28
|
+
# Creates a keypair
|
29
|
+
# @return [Boolean] true if the keypair is successfully created
|
30
|
+
# @raise [Fog::Compute::RackspaceV2::NotFound]
|
31
|
+
# @raise [Fog::Compute::RackspaceV2::BadRequest]
|
32
|
+
# @raise [Fog::Compute::RackspaceV2::InternalServerError]
|
33
|
+
# @raise [Fog::Compute::RackspaceV2::ServiceError]
|
34
|
+
def save
|
35
|
+
requires :name
|
36
|
+
data = service.create_keypair(name, public_key)
|
37
|
+
merge_attributes(data.body['keypair'])
|
38
|
+
data.body['keypair']['name'] == name
|
39
|
+
end
|
40
|
+
|
41
|
+
# Destroys a keypair
|
42
|
+
# @return [Boolean] true if the keypair is successfully deleted
|
43
|
+
# @raise [Fog::Compute::RackspaceV2::NotFound]
|
44
|
+
# @raise [Fog::Compute::RackspaceV2::BadRequest]
|
45
|
+
# @raise [Fog::Compute::RackspaceV2::InternalServerError]
|
46
|
+
# @raise [Fog::Compute::RackspaceV2::ServiceError]
|
47
|
+
def destroy
|
48
|
+
requires :identity
|
49
|
+
service.delete_keypair(identity)
|
50
|
+
true
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|