fog 1.24.0 → 1.25.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -13
- data/CHANGELOG.md +184 -1
- data/CONTRIBUTORS.md +23 -0
- data/README.md +17 -9
- data/Rakefile +4 -0
- data/fog.gemspec +18 -6
- data/lib/fog.rb +1 -1
- data/lib/fog/aws/auto_scaling.rb +12 -12
- data/lib/fog/aws/beanstalk.rb +12 -10
- data/lib/fog/aws/cdn.rb +0 -1
- data/lib/fog/aws/cloud_formation.rb +13 -11
- data/lib/fog/aws/cloud_watch.rb +14 -11
- data/lib/fog/aws/compute.rb +19 -19
- data/lib/fog/aws/core.rb +21 -0
- data/lib/fog/aws/dns.rb +0 -1
- data/lib/fog/aws/elasticache.rb +13 -9
- data/lib/fog/aws/elb.rb +23 -14
- data/lib/fog/aws/emr.rb +11 -9
- data/lib/fog/aws/iam.rb +14 -11
- data/lib/fog/aws/models/compute/security_group.rb +41 -0
- data/lib/fog/aws/models/elb/load_balancer.rb +31 -0
- data/lib/fog/aws/models/glacier/archive.rb +3 -1
- data/lib/fog/aws/models/iam/role.rb +1 -1
- data/lib/fog/aws/models/iam/roles.rb +1 -1
- data/lib/fog/aws/models/storage/file.rb +1 -1
- data/lib/fog/aws/parsers/compute/describe_security_groups.rb +68 -53
- data/lib/fog/aws/parsers/elb/describe_load_balancer_attributes.rb +7 -0
- data/lib/fog/aws/parsers/elb/describe_tags.rb +26 -0
- data/lib/fog/aws/parsers/elb/tag_list_parser.rb +57 -0
- data/lib/fog/aws/parsers/storage/get_bucket_website.rb +5 -1
- data/lib/fog/aws/rds.rb +13 -11
- data/lib/fog/aws/region_methods.rb +1 -1
- data/lib/fog/aws/requests/dynamodb/put_item.rb +1 -1
- data/lib/fog/aws/requests/elb/add_tags.rb +46 -0
- data/lib/fog/aws/requests/elb/create_load_balancer.rb +4 -1
- data/lib/fog/aws/requests/elb/describe_load_balancer_attributes.rb +3 -0
- data/lib/fog/aws/requests/elb/describe_tags.rb +56 -0
- data/lib/fog/aws/requests/elb/modify_load_balancer_attributes.rb +9 -3
- data/lib/fog/aws/requests/elb/remove_tags.rb +46 -0
- data/lib/fog/aws/requests/storage/copy_object.rb +1 -1
- data/lib/fog/aws/requests/storage/delete_object.rb +4 -3
- data/lib/fog/aws/requests/storage/post_object_hidden_fields.rb +23 -5
- data/lib/fog/aws/requests/storage/post_object_restore.rb +1 -1
- data/lib/fog/aws/requests/storage/put_bucket_website.rb +46 -18
- data/lib/fog/aws/ses.rb +1 -2
- data/lib/fog/aws/signaturev4.rb +62 -15
- data/lib/fog/aws/simpledb.rb +0 -1
- data/lib/fog/aws/sns.rb +12 -9
- data/lib/fog/aws/sqs.rb +14 -10
- data/lib/fog/aws/storage.rb +102 -78
- data/lib/fog/aws/sts.rb +10 -9
- data/lib/fog/bare_metal_cloud/compute.rb +0 -1
- data/lib/fog/bin.rb +1 -0
- data/lib/fog/bin/brightbox.rb +3 -1
- data/lib/fog/bin/rackspace.rb +4 -0
- data/lib/fog/bluebox/models/compute/server.rb +1 -0
- data/lib/fog/cloudstack/models/compute/server.rb +12 -1
- data/lib/fog/cloudstack/models/compute/snapshots.rb +3 -2
- data/lib/fog/cloudstack/models/compute/volume.rb +5 -0
- data/lib/fog/cloudstack/models/compute/volumes.rb +3 -2
- data/lib/fog/core/parser.rb +2 -112
- data/lib/fog/dnsmadeeasy/dns.rb +0 -1
- data/lib/fog/dynect/core.rb +0 -1
- data/lib/fog/dynect/dns.rb +11 -3
- data/lib/fog/ecloud/compute.rb +0 -1
- data/lib/fog/ecloud/core.rb +1 -1
- data/lib/fog/fogdocker/compute.rb +4 -1
- data/lib/fog/fogdocker/core.rb +1 -7
- data/lib/fog/fogdocker/errors.rb +9 -0
- data/lib/fog/fogdocker/models/compute/images.rb +4 -0
- data/lib/fog/fogdocker/models/compute/server.rb +18 -1
- data/lib/fog/fogdocker/requests/compute/container_action.rb +53 -3
- data/lib/fog/fogdocker/requests/compute/container_get.rb +31 -12
- data/lib/fog/fogdocker/requests/compute/image_search.rb +29 -0
- data/lib/fog/google/dns.rb +46 -12
- data/lib/fog/google/examples/dns/project.rb +8 -0
- data/lib/fog/google/examples/dns/zones.rb +43 -0
- data/lib/fog/google/models/compute/images.rb +2 -1
- data/lib/fog/google/models/dns/change.rb +40 -0
- data/lib/fog/google/models/dns/changes.rb +52 -0
- data/lib/fog/google/models/dns/project.rb +75 -0
- data/lib/fog/google/models/dns/projects.rb +25 -0
- data/lib/fog/google/models/dns/record.rb +112 -0
- data/lib/fog/google/models/dns/records.rb +52 -0
- data/lib/fog/google/models/dns/zone.rb +74 -0
- data/lib/fog/google/models/dns/zones.rb +34 -0
- data/lib/fog/google/models/storage/file.rb +1 -1
- data/lib/fog/google/models/storage/files.rb +1 -5
- data/lib/fog/google/requests/dns/create_change.rb +64 -0
- data/lib/fog/google/requests/dns/create_managed_zone.rb +64 -31
- data/lib/fog/google/requests/dns/delete_managed_zone.rb +20 -24
- data/lib/fog/google/requests/dns/get_change.rb +42 -0
- data/lib/fog/google/requests/dns/get_managed_zone.rb +22 -16
- data/lib/fog/google/requests/dns/get_project.rb +42 -0
- data/lib/fog/google/requests/dns/list_changes.rb +41 -0
- data/lib/fog/google/requests/dns/list_managed_zones.rb +15 -10
- data/lib/fog/google/requests/dns/list_resource_record_sets.rb +50 -0
- data/lib/fog/google/storage.rb +0 -1
- data/lib/fog/hp/storage.rb +1 -1
- data/lib/fog/internet_archive/storage.rb +0 -1
- data/lib/fog/libvirt/models/compute/server.rb +17 -7
- data/lib/fog/opennebula/models/compute/flavor.rb +46 -8
- data/lib/fog/opennebula/models/compute/flavors.rb +7 -0
- data/lib/fog/opennebula/models/compute/interface.rb +1 -1
- data/lib/fog/opennebula/models/compute/network.rb +1 -0
- data/lib/fog/opennebula/models/compute/networks.rb +5 -1
- data/lib/fog/opennebula/requests/compute/list_networks.rb +34 -25
- data/lib/fog/opennebula/requests/compute/template_pool.rb +47 -5
- data/lib/fog/openstack/compute.rb +2 -2
- data/lib/fog/openstack/docs/storage.md +18 -0
- data/lib/fog/openstack/identity.rb +1 -1
- data/lib/fog/openstack/image.rb +1 -1
- data/lib/fog/openstack/metering.rb +1 -1
- data/lib/fog/openstack/models/compute/server.rb +1 -0
- data/lib/fog/openstack/models/storage/directory.rb +8 -2
- data/lib/fog/openstack/network.rb +1 -1
- data/lib/fog/openstack/orchestration.rb +1 -1
- data/lib/fog/openstack/requests/compute/create_security_group.rb +1 -1
- data/lib/fog/openstack/requests/storage/public_url.rb +28 -0
- data/lib/fog/openstack/requests/storage/put_container.rb +1 -0
- data/lib/fog/openstack/storage.rb +1 -0
- data/lib/fog/openstack/volume.rb +1 -1
- data/lib/fog/ovirt/compute.rb +1 -0
- data/lib/fog/ovirt/models/compute/server.rb +5 -0
- data/lib/fog/ovirt/requests/compute/update_volume.rb +39 -0
- data/lib/fog/rackspace.rb +1 -0
- data/lib/fog/rackspace/core.rb +1 -0
- data/lib/fog/rackspace/docs/networking.md +315 -0
- data/lib/fog/rackspace/mock_data.rb +1 -2
- data/lib/fog/rackspace/models/dns/zones.rb +2 -1
- data/lib/fog/rackspace/models/load_balancers/node.rb +7 -0
- data/lib/fog/rackspace/models/networking/network.rb +27 -0
- data/lib/fog/rackspace/models/networking/networks.rb +23 -0
- data/lib/fog/rackspace/models/networking/virtual_interface.rb +85 -0
- data/lib/fog/rackspace/models/networking/virtual_interfaces.rb +45 -0
- data/lib/fog/rackspace/models/queues/queue.rb +1 -1
- data/lib/fog/rackspace/networking.rb +192 -0
- data/lib/fog/rackspace/requests/load_balancers/create_node.rb +3 -0
- data/lib/fog/rackspace/requests/load_balancers/update_node.rb +3 -0
- data/lib/fog/rackspace/requests/networking/create_network.rb +36 -0
- data/lib/fog/rackspace/requests/networking/create_virtual_interface.rb +30 -0
- data/lib/fog/rackspace/requests/networking/delete_network.rb +21 -0
- data/lib/fog/rackspace/requests/networking/delete_virtual_interface.rb +23 -0
- data/lib/fog/rackspace/requests/networking/get_network.rb +21 -0
- data/lib/fog/rackspace/requests/networking/list_networks.rb +18 -0
- data/lib/fog/rackspace/requests/networking/list_virtual_interfaces.rb +22 -0
- data/lib/fog/vcloud/compute.rb +0 -1
- data/lib/fog/vcloud/core.rb +1 -0
- data/lib/fog/vcloud_director/compute.rb +1 -1
- data/lib/fog/version.rb +1 -1
- data/lib/fog/vsphere/compute.rb +38 -1
- data/lib/fog/vsphere/requests/compute/list_clusters.rb +31 -1
- data/lib/fog/vsphere/requests/compute/modify_vm_interface.rb +1 -1
- data/lib/fog/zerigo/dns.rb +0 -1
- data/lib/tasks/changelog_task.rb +1 -0
- data/tests/aws/models/elb/model_tests.rb +6 -0
- data/tests/aws/models/elb/tagging_tests.rb +15 -0
- data/tests/aws/models/iam/access_keys_tests.rb +1 -1
- data/tests/aws/models/iam/policies_tests.rb +2 -1
- data/tests/aws/models/iam/users_tests.rb +7 -4
- data/tests/aws/models/storage/url_tests.rb +5 -9
- data/tests/aws/requests/compute/tag_tests.rb +2 -0
- data/tests/aws/requests/elb/load_balancer_tests.rb +5 -1
- data/tests/aws/requests/storage/bucket_tests.rb +15 -1
- data/tests/aws/signaturev4_tests.rb +47 -0
- data/tests/bluebox/requests/compute/block_tests.rb +2 -1
- data/tests/compute/helper.rb +0 -10
- data/tests/compute/models/flavors_tests.rb +1 -1
- data/tests/fogdocker/compute_tests.rb +1 -1
- data/tests/fogdocker/models/compute/server_tests.rb +13 -3
- data/tests/fogdocker/requests/compute/container_action_tests.rb +19 -8
- data/tests/fogdocker/requests/compute/image_search_tests.rb +11 -0
- data/tests/google/models/dns/change_tests.rb +28 -0
- data/tests/google/models/dns/changes_tests.rb +36 -0
- data/tests/google/models/dns/projects_tests.rb +12 -0
- data/tests/google/models/dns/record_tests.rb +42 -0
- data/tests/google/models/dns/records_tests.rb +36 -0
- data/tests/google/models/dns/zone_tests.rb +28 -0
- data/tests/google/models/dns/zones_tests.rb +14 -0
- data/tests/google/requests/dns/change_tests.rb +86 -0
- data/tests/google/requests/dns/managed_zone_tests.rb +1 -1
- data/tests/google/requests/dns/project_tests.rb +29 -0
- data/tests/google/requests/dns/record_tests.rb +49 -0
- data/tests/helper.rb +1 -1
- data/tests/helpers/mock_helper.rb +2 -2
- data/tests/opennebula/models/compute/flavor_tests.rb +29 -0
- data/tests/opennebula/models/compute/flavors_tests.rb +17 -0
- data/tests/opennebula/models/compute/network_tests.rb +2 -2
- data/tests/opennebula/models/compute/networks_tests.rb +2 -0
- data/tests/openstack/requests/storage/object_tests.rb +10 -0
- data/tests/ovirt/compute_tests.rb +1 -1
- data/tests/ovirt/requests/compute/update_volume_tests.rb +20 -0
- data/tests/rackspace/models/networking/network_tests.rb +10 -0
- data/tests/rackspace/models/networking/networks_tests.rb +10 -0
- data/tests/rackspace/models/networking/virtual_interface_tests.rb +33 -0
- data/tests/rackspace/models/networking/virtual_interfaces_tests.rb +24 -0
- data/tests/rackspace/models/queues/queue_tests.rb +9 -0
- data/tests/rackspace/networking_tests.rb +118 -0
- data/tests/rackspace/requests/networking/network_tests.rb +49 -0
- data/tests/rackspace/requests/networking/virtual_interface_tests.rb +49 -0
- data/tests/vsphere/requests/compute/list_clusters_tests.rb +11 -0
- metadata +228 -180
- data/lib/fog/bin/terremark.rb +0 -29
- data/lib/fog/bin/vmfusion.rb +0 -58
- data/lib/fog/bin/voxel.rb +0 -29
- data/lib/fog/terremark.rb +0 -11
- data/lib/fog/terremark/models/shared/address.rb +0 -25
- data/lib/fog/terremark/models/shared/addresses.rb +0 -45
- data/lib/fog/terremark/models/shared/image.rb +0 -19
- data/lib/fog/terremark/models/shared/images.rb +0 -41
- data/lib/fog/terremark/models/shared/internetservice.rb +0 -66
- data/lib/fog/terremark/models/shared/internetservices.rb +0 -39
- data/lib/fog/terremark/models/shared/network.rb +0 -31
- data/lib/fog/terremark/models/shared/networks.rb +0 -48
- data/lib/fog/terremark/models/shared/nodeservice.rb +0 -50
- data/lib/fog/terremark/models/shared/nodeservices.rb +0 -29
- data/lib/fog/terremark/models/shared/server.rb +0 -210
- data/lib/fog/terremark/models/shared/servers.rb +0 -50
- data/lib/fog/terremark/models/shared/task.rb +0 -46
- data/lib/fog/terremark/models/shared/tasks.rb +0 -54
- data/lib/fog/terremark/models/shared/vdc.rb +0 -40
- data/lib/fog/terremark/models/shared/vdcs.rb +0 -48
- data/lib/fog/terremark/parser.rb +0 -18
- data/lib/fog/terremark/parsers/shared/get_catalog.rb +0 -33
- data/lib/fog/terremark/parsers/shared/get_catalog_item.rb +0 -32
- data/lib/fog/terremark/parsers/shared/get_internet_services.rb +0 -57
- data/lib/fog/terremark/parsers/shared/get_keys_list.rb +0 -39
- data/lib/fog/terremark/parsers/shared/get_network_ips.rb +0 -24
- data/lib/fog/terremark/parsers/shared/get_node_services.rb +0 -32
- data/lib/fog/terremark/parsers/shared/get_organization.rb +0 -50
- data/lib/fog/terremark/parsers/shared/get_organizations.rb +0 -31
- data/lib/fog/terremark/parsers/shared/get_public_ips.rb +0 -26
- data/lib/fog/terremark/parsers/shared/get_tasks_list.rb +0 -35
- data/lib/fog/terremark/parsers/shared/get_vapp_template.rb +0 -31
- data/lib/fog/terremark/parsers/shared/get_vdc.rb +0 -87
- data/lib/fog/terremark/parsers/shared/instantiate_vapp_template.rb +0 -26
- data/lib/fog/terremark/parsers/shared/internet_service.rb +0 -58
- data/lib/fog/terremark/parsers/shared/network.rb +0 -39
- data/lib/fog/terremark/parsers/shared/node_service.rb +0 -28
- data/lib/fog/terremark/parsers/shared/public_ip.rb +0 -22
- data/lib/fog/terremark/parsers/shared/task.rb +0 -25
- data/lib/fog/terremark/parsers/shared/vapp.rb +0 -61
- data/lib/fog/terremark/requests/shared/add_internet_service.rb +0 -54
- data/lib/fog/terremark/requests/shared/add_node_service.rb +0 -51
- data/lib/fog/terremark/requests/shared/configure_vapp.rb +0 -59
- data/lib/fog/terremark/requests/shared/create_internet_service.rb +0 -59
- data/lib/fog/terremark/requests/shared/delete_internet_service.rb +0 -21
- data/lib/fog/terremark/requests/shared/delete_node_service.rb +0 -21
- data/lib/fog/terremark/requests/shared/delete_public_ip.rb +0 -21
- data/lib/fog/terremark/requests/shared/delete_vapp.rb +0 -20
- data/lib/fog/terremark/requests/shared/deploy_vapp.rb +0 -33
- data/lib/fog/terremark/requests/shared/get_catalog.rb +0 -30
- data/lib/fog/terremark/requests/shared/get_catalog_item.rb +0 -33
- data/lib/fog/terremark/requests/shared/get_internet_services.rb +0 -34
- data/lib/fog/terremark/requests/shared/get_keys_list.rb +0 -34
- data/lib/fog/terremark/requests/shared/get_network.rb +0 -69
- data/lib/fog/terremark/requests/shared/get_network_ips.rb +0 -29
- data/lib/fog/terremark/requests/shared/get_node_services.rb +0 -29
- data/lib/fog/terremark/requests/shared/get_organization.rb +0 -82
- data/lib/fog/terremark/requests/shared/get_organizations.rb +0 -45
- data/lib/fog/terremark/requests/shared/get_public_ip.rb +0 -31
- data/lib/fog/terremark/requests/shared/get_public_ips.rb +0 -68
- data/lib/fog/terremark/requests/shared/get_task.rb +0 -37
- data/lib/fog/terremark/requests/shared/get_tasks_list.rb +0 -30
- data/lib/fog/terremark/requests/shared/get_vapp.rb +0 -40
- data/lib/fog/terremark/requests/shared/get_vapp_template.rb +0 -33
- data/lib/fog/terremark/requests/shared/get_vdc.rb +0 -121
- data/lib/fog/terremark/requests/shared/instantiate_vapp_template.rb +0 -79
- data/lib/fog/terremark/requests/shared/power_off.rb +0 -33
- data/lib/fog/terremark/requests/shared/power_on.rb +0 -33
- data/lib/fog/terremark/requests/shared/power_reset.rb +0 -33
- data/lib/fog/terremark/requests/shared/power_shutdown.rb +0 -22
- data/lib/fog/terremark/shared.rb +0 -304
- data/lib/fog/terremark/vcloud.rb +0 -129
- data/lib/fog/vmfusion.rb +0 -1
- data/lib/fog/vmfusion/compute.rb +0 -28
- data/lib/fog/vmfusion/core.rb +0 -9
- data/lib/fog/vmfusion/models/compute/server.rb +0 -256
- data/lib/fog/vmfusion/models/compute/servers.rb +0 -36
- data/lib/fog/voxel.rb +0 -1
- data/lib/fog/voxel/compute.rb +0 -122
- data/lib/fog/voxel/core.rb +0 -16
- data/lib/fog/voxel/models/compute/image.rb +0 -13
- data/lib/fog/voxel/models/compute/images.rb +0 -27
- data/lib/fog/voxel/models/compute/server.rb +0 -73
- data/lib/fog/voxel/models/compute/servers.rb +0 -29
- data/lib/fog/voxel/parsers/compute/basic.rb +0 -27
- data/lib/fog/voxel/parsers/compute/devices_list.rb +0 -107
- data/lib/fog/voxel/parsers/compute/images_list.rb +0 -55
- data/lib/fog/voxel/parsers/compute/voxcloud_create.rb +0 -36
- data/lib/fog/voxel/parsers/compute/voxcloud_delete.rb +0 -27
- data/lib/fog/voxel/parsers/compute/voxcloud_status.rb +0 -42
- data/lib/fog/voxel/requests/compute/devices_list.rb +0 -22
- data/lib/fog/voxel/requests/compute/devices_power.rb +0 -20
- data/lib/fog/voxel/requests/compute/images_list.rb +0 -29
- data/lib/fog/voxel/requests/compute/voxcloud_create.rb +0 -20
- data/lib/fog/voxel/requests/compute/voxcloud_delete.rb +0 -18
- data/lib/fog/voxel/requests/compute/voxcloud_status.rb +0 -22
- data/lib/fog/xml.rb +0 -4
- data/lib/fog/xml/connection.rb +0 -24
- data/lib/fog/xml/sax_parser_connection.rb +0 -45
- data/tests/core/connection_tests.rb +0 -26
- data/tests/voxel/requests/compute/image_tests.rb +0 -52
- data/tests/voxel/requests/compute/server_tests.rb +0 -123
@@ -5,8 +5,21 @@ module Fog
|
|
5
5
|
def container_action(options = {})
|
6
6
|
raise ArgumentError, "instance id is a required parameter" unless options.key? :id
|
7
7
|
raise ArgumentError, "action is a required parameter" unless options.key? :action
|
8
|
-
|
9
|
-
|
8
|
+
result = Docker::Container.get(options[:id]).send(options[:action], options[:options])
|
9
|
+
|
10
|
+
if result.is_a?(Hash)
|
11
|
+
downcase_hash_keys(result)
|
12
|
+
else
|
13
|
+
result
|
14
|
+
end
|
15
|
+
rescue Docker::Error::NotFoundError => e
|
16
|
+
raise Fog::Errors::Error::NotFound.new(e.message)
|
17
|
+
rescue Docker::Error::TimeoutError => e
|
18
|
+
raise Fog::Errors::Error::TimeoutError.new(e.message)
|
19
|
+
rescue Docker::Error::UnauthorizedError => e
|
20
|
+
raise Fog::Errors::Fogdocker::AuthenticationError.new(e.message)
|
21
|
+
rescue Docker::Error::DockerError => e
|
22
|
+
raise Fog::Errors::Fogdocker::ServiceError.new(e.message)
|
10
23
|
end
|
11
24
|
end
|
12
25
|
|
@@ -14,7 +27,44 @@ module Fog
|
|
14
27
|
def container_action(options = {})
|
15
28
|
raise ArgumentError, "id is a required parameter" unless options.key? :id
|
16
29
|
raise ArgumentError, "action is a required parameter" unless options.key? :action
|
17
|
-
|
30
|
+
response_matcher(options[:action])
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def response_matcher(action)
|
36
|
+
send("#{action}_response".to_sym)
|
37
|
+
rescue NoMethodError
|
38
|
+
default_response
|
39
|
+
end
|
40
|
+
|
41
|
+
def default_response
|
42
|
+
{ 'id' => 'a6b02c7ca29a22619f7d0e59062323247739bc0cd375d619f305f0b519af4ef3',
|
43
|
+
'state_running' => false }
|
44
|
+
end
|
45
|
+
|
46
|
+
def start_response
|
47
|
+
default_response.merge({ 'state_running' => true })
|
48
|
+
end
|
49
|
+
|
50
|
+
def top_response
|
51
|
+
[
|
52
|
+
{
|
53
|
+
'UID' => 'root',
|
54
|
+
'PID' => '15306',
|
55
|
+
'PPID' => '13567',
|
56
|
+
'C' => '0',
|
57
|
+
'STIME' => 'Oct15',
|
58
|
+
'TTY' => '?',
|
59
|
+
'TIME' => '00:00:11',
|
60
|
+
'CMD' => 'ping theforeman.org'
|
61
|
+
}
|
62
|
+
]
|
63
|
+
end
|
64
|
+
|
65
|
+
# Sample response from a ping
|
66
|
+
def logs_response
|
67
|
+
"\u0001\u0000\u0000\u0000\u0000\u0000\u0000]64 bytes from fra07s30-in-f6.1e100.net (173.194.112.102): icmp_req=35272 ttl=52 time=36.9 ms\n\u0001\u0000\u0000\u0000\u0000\u0000\u0000]64 bytes from fra07s30-in-f6.1e100.net (173.194.112.102): icmp_req=35273 ttl=52 time=35.3 ms\n"
|
18
68
|
end
|
19
69
|
end
|
20
70
|
end
|
@@ -3,26 +3,45 @@ module Fog
|
|
3
3
|
class Fogdocker
|
4
4
|
class Real
|
5
5
|
def container_get(id)
|
6
|
-
|
6
|
+
raw_container = Docker::Container.get(id).json
|
7
|
+
processed_container = downcase_hash_keys(raw_container)
|
8
|
+
processed_container['hostconfig_port_bindings'] = raw_container['HostConfig']['PortBindings']
|
9
|
+
processed_container['hostconfig_links'] = raw_container['HostConfig']['Links']
|
10
|
+
processed_container['config_exposed_ports'] = raw_container['Config']['ExposedPorts']
|
11
|
+
processed_container
|
7
12
|
end
|
8
13
|
end
|
9
14
|
class Mock
|
10
15
|
def container_get(id)
|
11
|
-
{'id'
|
12
|
-
'image'
|
13
|
-
'command'
|
14
|
-
'created'
|
15
|
-
'status'
|
16
|
+
{'id' => '2ce79789656e4f7474624be6496dc6d988899af30d556574389a19aade2f9650',
|
17
|
+
'image' => 'mattdm/fedora:f19',
|
18
|
+
'command' => '/bin/bash',
|
19
|
+
'created' => '1389876158',
|
20
|
+
'status' => 'Up 45 hours',
|
16
21
|
'state_running' => true,
|
17
|
-
'config_cpu_shares' => '1',
|
18
22
|
'network_settings_ipaddress' => '172.17.0.2',
|
19
23
|
'config_memory' => '1024',
|
24
|
+
'config_cpu_sets' => '0-3',
|
25
|
+
'config_cpu_shares' => '20',
|
20
26
|
'config_hostname' => '21341234',
|
21
|
-
'
|
22
|
-
'
|
23
|
-
'
|
24
|
-
'
|
25
|
-
'
|
27
|
+
'config_attach_stdin' => true,
|
28
|
+
'config_attach_stdout' => true,
|
29
|
+
'config_attach_stderr' => true,
|
30
|
+
'ports' => nil,
|
31
|
+
'config_tty' => true,
|
32
|
+
'hostconfig_privileged' => true,
|
33
|
+
'hostconfig_links' => nil,
|
34
|
+
'hostconfig_port_bindings' => { "29321/tcp" => [{"HostIp"=>"", "HostPort"=>"3001"}],
|
35
|
+
"39212/tcp" => [{"HostIp"=>"", "HostPort"=>"2030"}]},
|
36
|
+
'state_exit_code' => 0,
|
37
|
+
'state_pid' => 2932,
|
38
|
+
'cpu_shares' => 0,
|
39
|
+
'volumes' => nil,
|
40
|
+
'config_exposed_ports' => { "29321/tcp" => {}, "39212/tcp" => {} },
|
41
|
+
'sizerw' => 0,
|
42
|
+
'sizerootfs' => 0,
|
43
|
+
'name' => '123123123',
|
44
|
+
'names' => ['/boring_engelbert']}
|
26
45
|
end
|
27
46
|
end
|
28
47
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class Fogdocker
|
4
|
+
class Real
|
5
|
+
def image_search(query = {})
|
6
|
+
Docker::Util.parse_json(Docker.connection.get('/images/search', query)).map do |image|
|
7
|
+
downcase_hash_keys(image)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
class Mock
|
12
|
+
def image_search(query = {})
|
13
|
+
[
|
14
|
+
{"description" => "",
|
15
|
+
"is_official" => false,
|
16
|
+
"is_automated" => false,
|
17
|
+
"name" => "wma55/u1210sshd",
|
18
|
+
"star_count" => 0},
|
19
|
+
{"description" => "",
|
20
|
+
"is_official" => false,
|
21
|
+
"is_automated" => false,
|
22
|
+
"name" => "jdswinbank/sshd",
|
23
|
+
"star_count" => 0}
|
24
|
+
]
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/fog/google/dns.rb
CHANGED
@@ -10,34 +10,68 @@ module Fog
|
|
10
10
|
GOOGLE_DNS_BASE_URL = 'https://www.googleapis.com/dns/'
|
11
11
|
GOOGLE_DNS_API_SCOPE_URLS = %w(https://www.googleapis.com/auth/ndev.clouddns.readwrite)
|
12
12
|
|
13
|
+
##
|
14
|
+
# MODELS
|
15
|
+
model_path 'fog/google/models/dns'
|
16
|
+
|
17
|
+
# Zone
|
18
|
+
model :zone
|
19
|
+
collection :zones
|
20
|
+
|
21
|
+
# Record
|
22
|
+
model :record
|
23
|
+
collection :records
|
24
|
+
|
25
|
+
# Change
|
26
|
+
model :change
|
27
|
+
collection :changes
|
28
|
+
|
29
|
+
# Project
|
30
|
+
model :project
|
31
|
+
collection :projects
|
32
|
+
|
33
|
+
##
|
34
|
+
# REQUESTS
|
13
35
|
request_path 'fog/google/requests/dns'
|
36
|
+
|
37
|
+
# Zone
|
14
38
|
request :create_managed_zone
|
15
39
|
request :delete_managed_zone
|
16
40
|
request :get_managed_zone
|
17
41
|
request :list_managed_zones
|
18
42
|
|
43
|
+
# Record
|
44
|
+
request :list_resource_record_sets
|
45
|
+
|
46
|
+
# Change
|
47
|
+
request :create_change
|
48
|
+
request :get_change
|
49
|
+
request :list_changes
|
50
|
+
|
51
|
+
# Project
|
52
|
+
request :get_project
|
53
|
+
|
19
54
|
class Mock
|
20
|
-
|
55
|
+
include Fog::Google::Shared
|
21
56
|
|
22
57
|
def initialize(options)
|
23
58
|
shared_initialize(options[:google_project], GOOGLE_DNS_API_VERSION, GOOGLE_DNS_BASE_URL)
|
24
59
|
end
|
25
60
|
|
26
|
-
|
27
|
-
|
28
|
-
|
61
|
+
def self.data(api_version)
|
62
|
+
@data ||= {}
|
63
|
+
end
|
29
64
|
|
30
|
-
|
31
|
-
|
32
|
-
|
65
|
+
def self.reset
|
66
|
+
@data = nil
|
67
|
+
end
|
33
68
|
|
34
69
|
def data(project=@project)
|
35
70
|
self.class.data(api_version)[project] ||= {
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
}
|
71
|
+
:managed_zones => {},
|
72
|
+
:resource_record_sets => {},
|
73
|
+
:changes => {},
|
74
|
+
}
|
41
75
|
end
|
42
76
|
|
43
77
|
def reset_data
|
@@ -0,0 +1,43 @@
|
|
1
|
+
def test
|
2
|
+
connection = Fog::DNS::Google.new
|
3
|
+
|
4
|
+
puts 'Create a Zone...'
|
5
|
+
puts '----------------'
|
6
|
+
zone = connection.zones.create(name: 'mytestdomain', domain: 'example.org.', description: 'This is my test domain')
|
7
|
+
|
8
|
+
puts 'List all Zones...'
|
9
|
+
puts '-----------------'
|
10
|
+
connection.zones.all
|
11
|
+
|
12
|
+
puts 'Get the Zone...'
|
13
|
+
puts '---------------'
|
14
|
+
zone = connection.zones.get(zone.id)
|
15
|
+
|
16
|
+
puts 'Create an "A" Record...'
|
17
|
+
puts '-----------------------'
|
18
|
+
record = zone.records.create(name: 'test.example.org.', type: 'A', ttl: 3600, rrdatas: ['192.168.1.1'])
|
19
|
+
|
20
|
+
puts 'Get the Zone Resource Record Sets...'
|
21
|
+
puts '------------------------------------'
|
22
|
+
zone.records
|
23
|
+
|
24
|
+
puts 'Get the Record...'
|
25
|
+
puts '-----------------'
|
26
|
+
record = connection.records(zone: zone).get(name: 'test.example.org.', type: 'A')
|
27
|
+
|
28
|
+
puts 'Modify the "A" Record...'
|
29
|
+
puts '------------------------'
|
30
|
+
record.modify(ttl: 2600)
|
31
|
+
|
32
|
+
puts 'Delete the "A" Record...'
|
33
|
+
puts '------------------------'
|
34
|
+
record.destroy
|
35
|
+
|
36
|
+
puts 'Get the Zone Changes...'
|
37
|
+
puts '-----------------------'
|
38
|
+
zone.changes
|
39
|
+
|
40
|
+
puts 'Delete the Zone...'
|
41
|
+
puts '------------------'
|
42
|
+
zone.destroy
|
43
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'fog/core/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module DNS
|
5
|
+
class Google
|
6
|
+
##
|
7
|
+
# Represents a Change resource
|
8
|
+
#
|
9
|
+
# @see https://developers.google.com/cloud-dns/api/v1beta1/changes
|
10
|
+
class Change < Fog::Model
|
11
|
+
identity :id
|
12
|
+
|
13
|
+
attribute :kind
|
14
|
+
attribute :start_time, :aliases => 'startTime'
|
15
|
+
attribute :status
|
16
|
+
attribute :additions
|
17
|
+
attribute :deletions
|
18
|
+
|
19
|
+
DONE_STATE = 'done'
|
20
|
+
PENDING_STATE = 'pending'
|
21
|
+
|
22
|
+
##
|
23
|
+
# Checks if the change operation is pending
|
24
|
+
#
|
25
|
+
# @return [Boolean] True if the change operation is pending; False otherwise
|
26
|
+
def pending?
|
27
|
+
self.status == PENDING_STATE
|
28
|
+
end
|
29
|
+
|
30
|
+
##
|
31
|
+
# Checks if the change operation is done
|
32
|
+
#
|
33
|
+
# @return [Boolean] True if the change operation is done; False otherwise
|
34
|
+
def ready?
|
35
|
+
self.status == DONE_STATE
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'fog/core/collection'
|
2
|
+
require 'fog/google/models/dns/zone'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module DNS
|
6
|
+
class Google
|
7
|
+
class Changes < Fog::Collection
|
8
|
+
model Fog::DNS::Google::Change
|
9
|
+
|
10
|
+
attribute :zone
|
11
|
+
|
12
|
+
##
|
13
|
+
# Enumerates the list of Changes
|
14
|
+
#
|
15
|
+
# @return [Array<Fog::DNS::Google::Change>] List of Changes resources
|
16
|
+
def all
|
17
|
+
requires :zone
|
18
|
+
|
19
|
+
data = service.list_changes(zone.identity).body['changes'] || []
|
20
|
+
load(data)
|
21
|
+
rescue Fog::Errors::NotFound
|
22
|
+
[]
|
23
|
+
end
|
24
|
+
|
25
|
+
##
|
26
|
+
# Fetches the representation of an existing Change
|
27
|
+
#
|
28
|
+
# @param [String] identity Change identity
|
29
|
+
# @return [Fog::DNS::Google::Change] Change resource
|
30
|
+
def get(identity)
|
31
|
+
requires :zone
|
32
|
+
|
33
|
+
if change = service.get_change(zone.identity, identity).body
|
34
|
+
new(change)
|
35
|
+
end
|
36
|
+
rescue Fog::Errors::NotFound
|
37
|
+
nil
|
38
|
+
end
|
39
|
+
|
40
|
+
##
|
41
|
+
# Creates a new instance of a Change
|
42
|
+
#
|
43
|
+
# @return [Fog::DNS::Google::Change] Change resource
|
44
|
+
def new(attributes = {})
|
45
|
+
requires :zone
|
46
|
+
|
47
|
+
super({ :zone => zone }.merge!(attributes))
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'fog/core/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module DNS
|
5
|
+
class Google
|
6
|
+
##
|
7
|
+
# Represents a Project resource
|
8
|
+
#
|
9
|
+
# @see https://developers.google.com/cloud-dns/api/v1beta1/projects
|
10
|
+
class Project < Fog::Model
|
11
|
+
identity :id
|
12
|
+
|
13
|
+
attribute :kind
|
14
|
+
attribute :number
|
15
|
+
attribute :quota
|
16
|
+
|
17
|
+
# These attributes are not available in the representation of a 'Project' returned by the Google DNS API
|
18
|
+
attribute :managed_zones
|
19
|
+
attribute :rrsets_per_managed_zone
|
20
|
+
attribute :resource_records_per_rrset
|
21
|
+
attribute :rrset_additions_per_change
|
22
|
+
attribute :rrset_deletions_per_change
|
23
|
+
attribute :total_rrdatasize_per_change
|
24
|
+
|
25
|
+
##
|
26
|
+
# Returns the maximum allowed number of managed zones in the project
|
27
|
+
#
|
28
|
+
# @return [Integer] Maximum allowed number of managed zones in the project
|
29
|
+
def managed_zones
|
30
|
+
self.quota['managedZones']
|
31
|
+
end
|
32
|
+
|
33
|
+
##
|
34
|
+
# Returns the maximum allowed number of ResourceRecordSets per zone in the project
|
35
|
+
#
|
36
|
+
# @return [Integer] The maximum allowed number of ResourceRecordSets per zone in the project
|
37
|
+
def rrsets_per_managed_zone
|
38
|
+
self.quota['rrsetsPerManagedZone']
|
39
|
+
end
|
40
|
+
|
41
|
+
##
|
42
|
+
# Returns the maximum allowed number of resource records per ResourceRecordSet
|
43
|
+
#
|
44
|
+
# @return [Integer] The maximum allowed number of resource records per ResourceRecordSet
|
45
|
+
def resource_records_per_rrset
|
46
|
+
self.quota['resourceRecordsPerRrset']
|
47
|
+
end
|
48
|
+
|
49
|
+
##
|
50
|
+
# Returns the maximum allowed number of ResourceRecordSets to add per Changes.create request
|
51
|
+
#
|
52
|
+
# @return [Integer] The maximum allowed number of ResourceRecordSets to add per Changes.create request
|
53
|
+
def rrset_additions_per_change
|
54
|
+
self.quota['rrsetAdditionsPerChange']
|
55
|
+
end
|
56
|
+
|
57
|
+
##
|
58
|
+
# Returns the maximum allowed number of ResourceRecordSets to delete per Changes.create request
|
59
|
+
#
|
60
|
+
# @return [Integer] The maximum allowed number of ResourceRecordSets to delete per Changes.create request
|
61
|
+
def rrset_deletions_per_change
|
62
|
+
self.quota['rrsetDeletionsPerChange']
|
63
|
+
end
|
64
|
+
|
65
|
+
##
|
66
|
+
# Returns the maximum allowed size in bytes for the rrdata field in one Changes.create request
|
67
|
+
#
|
68
|
+
# @return [Integer] The maximum allowed size in bytes for the rrdata field in one Changes.create request
|
69
|
+
def total_rrdatasize_per_change
|
70
|
+
self.quota['totalRrdataSizePerChange']
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|