fog 1.18.0 → 1.19.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 +6 -0
- data/CONTRIBUTING.md +22 -0
- data/LICENSE.md +20 -0
- data/README.md +41 -60
- data/Rakefile +2 -0
- data/changelog.txt +262 -0
- data/fog.gemspec +3 -3
- data/lib/fog/aws.rb +9 -7
- data/lib/fog/aws/cloud_watch.rb +0 -1
- data/lib/fog/aws/compute.rb +2 -0
- data/lib/fog/aws/dns.rb +2 -1
- data/lib/fog/aws/elb.rb +2 -0
- data/lib/fog/aws/models/auto_scaling/configuration.rb +4 -0
- data/lib/fog/aws/models/compute/address.rb +6 -5
- data/lib/fog/aws/models/compute/flavors.rb +10 -0
- data/lib/fog/aws/models/compute/spot_request.rb +1 -1
- data/lib/fog/aws/models/compute/subnet.rb +4 -0
- data/lib/fog/aws/models/compute/vpc.rb +5 -0
- data/lib/fog/aws/models/dns/records.rb +1 -3
- data/lib/fog/aws/models/elb/load_balancer.rb +10 -0
- data/lib/fog/aws/models/glacier/vault.rb +1 -1
- data/lib/fog/aws/models/rds/server.rb +5 -2
- data/lib/fog/aws/models/rds/subnet_group.rb +15 -1
- data/lib/fog/aws/models/storage/file.rb +2 -2
- data/lib/fog/aws/parsers/auto_scaling/describe_launch_configurations.rb +6 -0
- data/lib/fog/aws/parsers/compute/assign_private_ip_addresses.rb +25 -0
- data/lib/fog/aws/parsers/compute/describe_addresses.rb +1 -1
- data/lib/fog/aws/parsers/elb/describe_load_balancer_attributes.rb +40 -0
- data/lib/fog/aws/parsers/rds/delete_db_subnet_group.rb +35 -0
- data/lib/fog/aws/rds.rb +3 -3
- data/lib/fog/aws/requests/auto_scaling/create_launch_configuration.rb +2 -0
- data/lib/fog/aws/requests/auto_scaling/describe_notification_configurations.rb +1 -1
- data/lib/fog/aws/requests/compute/assign_private_ip_addresses.rb +60 -0
- data/lib/fog/aws/requests/compute/create_route.rb +1 -1
- data/lib/fog/aws/requests/compute/describe_images.rb +1 -1
- data/lib/fog/aws/requests/compute/describe_subnets.rb +8 -0
- data/lib/fog/aws/requests/compute/describe_vpcs.rb +8 -0
- data/lib/fog/aws/requests/compute/modify_vpc_attribute.rb +59 -0
- data/lib/fog/aws/requests/dns/change_resource_record_sets.rb +26 -9
- data/lib/fog/aws/requests/dns/create_hosted_zone.rb +12 -3
- data/lib/fog/aws/requests/dns/delete_hosted_zone.rb +33 -0
- data/lib/fog/aws/requests/dns/get_change.rb +26 -0
- data/lib/fog/aws/requests/dns/get_hosted_zone.rb +1 -1
- data/lib/fog/aws/requests/dns/list_hosted_zones.rb +3 -8
- data/lib/fog/aws/requests/dns/list_resource_record_sets.rb +68 -0
- data/lib/fog/aws/requests/elb/create_load_balancer.rb +1 -0
- data/lib/fog/aws/requests/elb/describe_load_balancer_attributes.rb +54 -0
- data/lib/fog/aws/requests/elb/modify_load_balancer_attributes.rb +59 -0
- data/lib/fog/aws/requests/rds/create_db_instance.rb +7 -1
- data/lib/fog/aws/requests/rds/create_db_subnet_group.rb +7 -1
- data/lib/fog/aws/requests/rds/delete_db_subnet_group.rb +42 -0
- data/lib/fog/aws/requests/storage/delete_multiple_objects.rb +6 -4
- data/lib/fog/aws/requests/storage/put_bucket.rb +4 -1
- data/lib/fog/aws/sqs.rb +2 -4
- data/lib/fog/aws/storage.rb +14 -1
- data/lib/fog/bluebox/compute.rb +1 -1
- data/lib/fog/brightbox/compute.rb +7 -9
- data/lib/fog/brightbox/compute/image_selector.rb +1 -1
- data/lib/fog/brightbox/compute/shared.rb +8 -10
- data/lib/fog/brightbox/models/compute/api_client.rb +1 -1
- data/lib/fog/brightbox/models/compute/application.rb +1 -4
- data/lib/fog/brightbox/models/compute/cloud_ip.rb +8 -5
- data/lib/fog/brightbox/models/compute/collaboration.rb +0 -2
- data/lib/fog/brightbox/models/compute/collaborations.rb +1 -1
- data/lib/fog/brightbox/models/compute/firewall_policy.rb +2 -4
- data/lib/fog/brightbox/models/compute/firewall_rule.rb +1 -1
- data/lib/fog/brightbox/models/compute/image.rb +1 -3
- data/lib/fog/brightbox/models/compute/load_balancer.rb +11 -8
- data/lib/fog/brightbox/models/compute/server.rb +28 -20
- data/lib/fog/brightbox/models/compute/server_group.rb +9 -11
- data/lib/fog/brightbox/models/compute/zone.rb +1 -1
- data/lib/fog/brightbox/oauth2.rb +3 -3
- data/lib/fog/brightbox/requests/compute/update_server.rb +1 -1
- data/lib/fog/cloudstack.rb +1 -1
- data/lib/fog/compute.rb +2 -2
- data/lib/fog/core.rb +1 -1
- data/lib/fog/core/connection.rb +1 -2
- data/lib/fog/core/errors.rb +3 -3
- data/lib/fog/core/hmac.rb +3 -3
- data/lib/fog/core/mock.rb +9 -2
- data/lib/fog/core/scp.rb +1 -1
- data/lib/fog/core/wait_for.rb +1 -1
- data/lib/fog/core/{timeout.rb → wait_for_defaults.rb} +10 -0
- data/lib/fog/digitalocean/models/compute/server.rb +4 -0
- data/lib/fog/digitalocean/requests/compute/create_server.rb +2 -0
- data/lib/fog/dnsimple/dns.rb +1 -1
- data/lib/fog/dreamhost/dns.rb +2 -4
- data/lib/fog/ecloud/compute.rb +1 -1
- data/lib/fog/ecloud/models/compute/environments.rb +5 -3
- data/lib/fog/google/compute.rb +105 -68
- data/lib/fog/google/examples/create.rb +1 -0
- data/lib/fog/google/models/compute/disk.rb +7 -1
- data/lib/fog/google/models/compute/operation.rb +42 -0
- data/lib/fog/google/models/compute/operations.rb +26 -0
- data/lib/fog/google/models/compute/server.rb +18 -2
- data/lib/fog/google/models/compute/servers.rb +2 -1
- data/lib/fog/google/models/compute/zones.rb +1 -1
- data/lib/fog/google/models/storage/file.rb +1 -1
- data/lib/fog/google/models/storage/files.rb +1 -1
- data/lib/fog/google/requests/compute/delete_disk.rb +22 -2
- data/lib/fog/google/requests/compute/delete_global_operation.rb +29 -0
- data/lib/fog/google/requests/compute/delete_server.rb +13 -9
- data/lib/fog/google/requests/compute/delete_zone_operation.rb +33 -0
- data/lib/fog/google/requests/compute/get_disk.rb +26 -2
- data/lib/fog/google/requests/compute/{delete_operation.rb → get_global_operation.rb} +5 -6
- data/lib/fog/google/requests/compute/get_image.rb +3 -3
- data/lib/fog/google/requests/compute/get_server.rb +1 -0
- data/lib/fog/google/requests/compute/get_zone_operation.rb +58 -0
- data/lib/fog/google/requests/compute/insert_disk.rb +43 -3
- data/lib/fog/google/requests/compute/insert_firewall.rb +2 -1
- data/lib/fog/google/requests/compute/insert_image.rb +2 -2
- data/lib/fog/google/requests/compute/insert_server.rb +64 -35
- data/lib/fog/google/requests/compute/list_disks.rb +8 -2
- data/lib/fog/google/requests/compute/list_images.rb +2 -2
- data/lib/fog/google/requests/compute/list_machine_types.rb +2 -2
- data/lib/fog/google/requests/compute/list_servers.rb +2 -2
- data/lib/fog/google/requests/compute/list_zone_operations.rb +2 -1
- data/lib/fog/google/requests/compute/list_zones.rb +1 -1
- data/lib/fog/google/requests/storage/copy_object.rb +1 -1
- data/lib/fog/hp.rb +1 -1
- data/lib/fog/hp/README.md +57 -0
- data/lib/fog/hp/articles/auth_caching.md +23 -0
- data/lib/fog/hp/docs/connect.md +152 -0
- data/lib/fog/hp/docs/install.md +133 -0
- data/lib/fog/hp/examples/block_storage.md +296 -0
- data/lib/fog/hp/examples/block_storage_v2.md +446 -0
- data/lib/fog/hp/examples/cdn.md +54 -0
- data/lib/fog/hp/examples/compute.md +794 -0
- data/lib/fog/hp/examples/compute_v2.md +848 -0
- data/lib/fog/hp/examples/getting_started_examples.md +30 -0
- data/lib/fog/hp/examples/networking.md +472 -0
- data/lib/fog/hp/examples/object_storage.md +387 -0
- data/lib/fog/json.rb +6 -3
- data/lib/fog/local/models/storage/directories.rb +8 -4
- data/lib/fog/openstack/compute.rb +3 -0
- data/lib/fog/openstack/examples/compute/basics.rb +74 -0
- data/lib/fog/openstack/identity.rb +2 -3
- data/lib/fog/openstack/image.rb +1 -4
- data/lib/fog/openstack/metering.rb +1 -4
- data/lib/fog/openstack/models/compute/host.rb +5 -1
- data/lib/fog/openstack/models/compute/security_group.rb +18 -4
- data/lib/fog/openstack/models/compute/security_group_rule.rb +32 -0
- data/lib/fog/openstack/models/compute/security_group_rules.rb +22 -0
- data/lib/fog/openstack/models/volume/volume_type.rb +20 -0
- data/lib/fog/openstack/models/volume/volume_types.rb +26 -0
- data/lib/fog/openstack/network.rb +34 -6
- data/lib/fog/openstack/requests/compute/add_flavor_access.rb +1 -1
- data/lib/fog/openstack/requests/compute/allocate_address.rb +1 -1
- data/lib/fog/openstack/requests/compute/attach_volume.rb +1 -1
- data/lib/fog/openstack/requests/compute/boot_from_snapshot.rb +1 -1
- data/lib/fog/openstack/requests/compute/create_flavor.rb +1 -1
- data/lib/fog/openstack/requests/compute/create_key_pair.rb +1 -1
- data/lib/fog/openstack/requests/compute/create_security_group.rb +4 -4
- data/lib/fog/openstack/requests/compute/create_security_group_rule.rb +2 -2
- data/lib/fog/openstack/requests/compute/create_server.rb +12 -5
- data/lib/fog/openstack/requests/compute/create_volume.rb +1 -1
- data/lib/fog/openstack/requests/compute/create_volume_snapshot.rb +1 -1
- data/lib/fog/openstack/requests/compute/delete_security_group.rb +1 -1
- data/lib/fog/openstack/requests/compute/delete_security_group_rule.rb +2 -0
- data/lib/fog/openstack/requests/compute/get_security_group.rb +14 -24
- data/lib/fog/openstack/requests/compute/get_security_group_rule.rb +38 -0
- data/lib/fog/openstack/requests/compute/list_hosts.rb +3 -3
- data/lib/fog/openstack/requests/compute/list_tenants.rb +1 -1
- data/lib/fog/openstack/requests/compute/remove_flavor_access.rb +1 -1
- data/lib/fog/openstack/requests/compute/update_quota.rb +1 -1
- data/lib/fog/openstack/requests/identity/create_ec2_credential.rb +1 -1
- data/lib/fog/openstack/requests/identity/create_role.rb +1 -1
- data/lib/fog/openstack/requests/identity/create_user.rb +1 -1
- data/lib/fog/openstack/requests/identity/update_user.rb +1 -1
- data/lib/fog/openstack/requests/image/update_image_members.rb +1 -1
- data/lib/fog/openstack/requests/orchestration/create_stack.rb +2 -2
- data/lib/fog/openstack/requests/orchestration/update_stack.rb +1 -1
- data/lib/fog/openstack/requests/storage/get_object_http_url.rb +13 -0
- data/lib/fog/openstack/requests/storage/get_object_https_url.rb +0 -14
- data/lib/fog/openstack/requests/volume/create_volume.rb +1 -1
- data/lib/fog/openstack/requests/volume/create_volume_snapshot.rb +1 -1
- data/lib/fog/openstack/requests/volume/get_volume_type_details.rb +32 -0
- data/lib/fog/openstack/requests/volume/list_volume_types.rb +41 -0
- data/lib/fog/openstack/storage.rb +2 -0
- data/lib/fog/openstack/volume.rb +9 -5
- data/lib/fog/rackspace/compute.rb +1 -4
- data/lib/fog/rackspace/compute_v2.rb +1 -0
- data/lib/fog/rackspace/docs/auto_scale.md +9 -9
- data/lib/fog/rackspace/docs/getting_started.md +1 -0
- data/lib/fog/rackspace/docs/queues.md +312 -0
- data/lib/fog/rackspace/examples/queues/claim_messages.rb +60 -0
- data/lib/fog/rackspace/examples/queues/create_queue.rb +45 -0
- data/lib/fog/rackspace/examples/queues/delete_message.rb +72 -0
- data/lib/fog/rackspace/examples/queues/delete_queue.rb +53 -0
- data/lib/fog/rackspace/examples/queues/list_messages.rb +64 -0
- data/lib/fog/rackspace/examples/queues/post_message.rb +59 -0
- data/lib/fog/rackspace/models/compute_v2/key_pairs.rb +1 -1
- data/lib/fog/rackspace/models/compute_v2/server.rb +9 -3
- data/lib/fog/rackspace/models/compute_v2/servers.rb +2 -2
- data/lib/fog/rackspace/models/identity/service_catalog.rb +44 -59
- data/lib/fog/rackspace/models/queues/claim.rb +41 -1
- data/lib/fog/rackspace/models/queues/claims.rb +25 -0
- data/lib/fog/rackspace/models/queues/message.rb +43 -5
- data/lib/fog/rackspace/models/queues/messages.rb +37 -0
- data/lib/fog/rackspace/models/queues/queue.rb +66 -3
- data/lib/fog/rackspace/models/queues/queues.rb +15 -0
- data/lib/fog/rackspace/models/storage/file.rb +8 -1
- data/lib/fog/rackspace/requests/compute_v2/delete_keypair.rb +1 -1
- data/lib/fog/rackspace/requests/compute_v2/get_keypair.rb +1 -1
- data/lib/fog/rackspace/requests/queues/create_claim.rb +15 -0
- data/lib/fog/rackspace/requests/queues/create_message.rb +15 -0
- data/lib/fog/rackspace/requests/queues/create_queue.rb +11 -0
- data/lib/fog/rackspace/requests/queues/delete_claim.rb +12 -0
- data/lib/fog/rackspace/requests/queues/delete_message.rb +14 -0
- data/lib/fog/rackspace/requests/queues/delete_queue.rb +10 -0
- data/lib/fog/rackspace/requests/queues/get_claim.rb +11 -0
- data/lib/fog/rackspace/requests/queues/get_message.rb +12 -0
- data/lib/fog/rackspace/requests/queues/get_queue.rb +10 -0
- data/lib/fog/rackspace/requests/queues/get_queue_stats.rb +10 -0
- data/lib/fog/rackspace/requests/queues/list_messages.rb +26 -0
- data/lib/fog/rackspace/requests/queues/list_queues.rb +17 -2
- data/lib/fog/rackspace/requests/queues/update_claim.rb +7 -0
- data/lib/fog/rackspace/service.rb +6 -2
- data/lib/fog/rackspace/storage.rb +1 -4
- data/lib/fog/riakcs.rb +2 -2
- data/lib/fog/riakcs/provisioning.rb +1 -3
- data/lib/fog/riakcs/requests/provisioning/create_user.rb +2 -2
- data/lib/fog/riakcs/requests/provisioning/get_user.rb +1 -1
- data/lib/fog/riakcs/requests/provisioning/list_users.rb +1 -1
- data/lib/fog/riakcs/requests/usage/get_usage.rb +1 -1
- data/lib/fog/riakcs/usage.rb +0 -2
- data/lib/fog/vcloud_director/README.md +2 -0
- data/lib/fog/vcloud_director/compute.rb +79 -8
- data/lib/fog/vcloud_director/generators/compute/org_vdc_network.rb +91 -0
- data/lib/fog/vcloud_director/generators/compute/vapp.rb +30 -0
- data/lib/fog/vcloud_director/generators/compute/vm.rb +33 -0
- data/lib/fog/vcloud_director/models/compute/medias.rb +1 -1
- data/lib/fog/vcloud_director/models/compute/vm_customization.rb +2 -0
- data/lib/fog/vcloud_director/parsers/compute/vm_customization.rb +2 -0
- data/lib/fog/vcloud_director/requests/compute/delete_network.rb +64 -0
- data/lib/fog/vcloud_director/requests/compute/get_execute_query.rb +433 -333
- data/lib/fog/vcloud_director/requests/compute/get_vapp_metadata.rb +3 -1
- data/lib/fog/vcloud_director/requests/compute/post_attach_disk.rb +1 -1
- data/lib/fog/vcloud_director/requests/compute/post_configure_edge_gateway_services.rb +20 -2
- data/lib/fog/vcloud_director/requests/compute/post_create_org_vdc_network.rb +176 -0
- data/lib/fog/vcloud_director/requests/compute/post_detach_disk.rb +1 -1
- data/lib/fog/vcloud_director/requests/compute/post_eject_cd_rom.rb +1 -1
- data/lib/fog/vcloud_director/requests/compute/post_insert_cd_rom.rb +1 -1
- data/lib/fog/vcloud_director/requests/compute/put_guest_customization_section_vapp.rb +1 -0
- data/lib/fog/vcloud_director/requests/compute/put_vapp_name_and_description.rb +37 -0
- data/lib/fog/vcloud_director/requests/compute/put_vm.rb +39 -0
- data/lib/fog/version.rb +1 -1
- data/lib/fog/vsphere/compute.rb +3 -0
- data/lib/fog/vsphere/models/compute/datastore.rb +1 -0
- data/lib/fog/vsphere/models/compute/interface.rb +50 -2
- data/lib/fog/vsphere/models/compute/interfaces.rb +25 -10
- data/lib/fog/vsphere/models/compute/scsicontroller.rb +19 -0
- data/lib/fog/vsphere/models/compute/server.rb +27 -8
- data/lib/fog/vsphere/requests/compute/create_vm.rb +34 -8
- data/lib/fog/vsphere/requests/compute/get_vm_first_scsi_controller.rb +26 -0
- data/lib/fog/vsphere/requests/compute/list_datastores.rb +9 -8
- data/lib/fog/vsphere/requests/compute/modify_vm_interface.rb +9 -6
- data/lib/fog/vsphere/requests/compute/set_vm_customvalue.rb +19 -0
- data/lib/fog/xenserver.rb +2 -1
- data/lib/fog/xenserver/compute.rb +37 -1
- data/lib/fog/xenserver/models/compute/blob.rb +22 -0
- data/lib/fog/xenserver/models/compute/blobs.rb +25 -0
- data/lib/fog/xenserver/models/compute/bond.rb +23 -0
- data/lib/fog/xenserver/models/compute/bonds.rb +25 -0
- data/lib/fog/xenserver/models/compute/console.rb +3 -1
- data/lib/fog/xenserver/models/compute/crash_dump.rb +19 -0
- data/lib/fog/xenserver/models/compute/crash_dumps.rb +25 -0
- data/lib/fog/xenserver/models/compute/dr_task.rb +17 -0
- data/lib/fog/xenserver/models/compute/dr_tasks.rb +25 -0
- data/lib/fog/xenserver/models/compute/gpu_group.rb +22 -0
- data/lib/fog/xenserver/models/compute/gpu_groups.rb +25 -0
- data/lib/fog/xenserver/models/compute/guest_metrics.rb +2 -1
- data/lib/fog/xenserver/models/compute/host.rb +41 -8
- data/lib/fog/xenserver/models/compute/host_cpu.rb +2 -1
- data/lib/fog/xenserver/models/compute/host_crash_dump.rb +20 -0
- data/lib/fog/xenserver/models/compute/host_crash_dumps.rb +25 -0
- data/lib/fog/xenserver/models/compute/host_metrics.rb +1 -1
- data/lib/fog/xenserver/models/compute/host_patch.rb +25 -0
- data/lib/fog/xenserver/models/compute/host_patchs.rb +25 -0
- data/lib/fog/xenserver/models/compute/network.rb +7 -6
- data/lib/fog/xenserver/models/compute/pbd.rb +3 -1
- data/lib/fog/xenserver/models/compute/pci.rb +22 -0
- data/lib/fog/xenserver/models/compute/pcis.rb +25 -0
- data/lib/fog/xenserver/models/compute/pgpu.rb +20 -0
- data/lib/fog/xenserver/models/compute/pgpus.rb +25 -0
- data/lib/fog/xenserver/models/compute/pif.rb +19 -8
- data/lib/fog/xenserver/models/compute/pif_metrics.rb +28 -0
- data/lib/fog/xenserver/models/compute/pifs_metrics.rb +25 -0
- data/lib/fog/xenserver/models/compute/pool.rb +18 -1
- data/lib/fog/xenserver/models/compute/pool_patch.rb +24 -0
- data/lib/fog/xenserver/models/compute/pool_patchs.rb +25 -0
- data/lib/fog/xenserver/models/compute/role.rb +19 -0
- data/lib/fog/xenserver/models/compute/roles.rb +25 -0
- data/lib/fog/xenserver/models/compute/server.rb +59 -26
- data/lib/fog/xenserver/models/compute/server_appliance.rb +21 -0
- data/lib/fog/xenserver/models/compute/server_appliances.rb +25 -0
- data/lib/fog/xenserver/models/compute/storage_manager.rb +28 -0
- data/lib/fog/xenserver/models/compute/storage_managers.rb +25 -0
- data/lib/fog/xenserver/models/compute/storage_repository.rb +4 -1
- data/lib/fog/xenserver/models/compute/tunnel.rb +20 -0
- data/lib/fog/xenserver/models/compute/tunnels.rb +25 -0
- data/lib/fog/xenserver/models/compute/vbd.rb +3 -2
- data/lib/fog/xenserver/models/compute/vbd_metrics.rb +1 -1
- data/lib/fog/xenserver/models/compute/vdi.rb +4 -1
- data/lib/fog/xenserver/models/compute/vif.rb +11 -2
- data/lib/fog/xenserver/models/compute/vlan.rb +2 -1
- data/lib/fog/xenserver/models/compute/vmpp.rb +35 -0
- data/lib/fog/xenserver/models/compute/vmpps.rb +25 -0
- data/lib/fog/xenserver/models/compute/vtpm.rb +18 -0
- data/lib/fog/xenserver/models/compute/vtpms.rb +25 -0
- data/lib/fog/xenserver/requests/compute/reboot_server.rb +1 -1
- data/lib/tasks/changelog_task.rb +0 -1
- data/tests/aws/models/dns/record_tests.rb +1 -2
- data/tests/aws/models/dns/records_tests.rb +2 -7
- data/tests/aws/models/dns/zone_tests.rb +1 -1
- data/tests/aws/models/dns/zones_tests.rb +1 -1
- data/tests/aws/models/elb/model_tests.rb +10 -0
- data/tests/aws/models/storage/file_tests.rb +4 -0
- data/tests/aws/requests/compute/assign_private_ip_tests.rb +52 -0
- data/tests/aws/requests/compute/vpc_tests.rb +17 -1
- data/tests/aws/requests/dns/dns_tests.rb +1 -26
- data/tests/aws/requests/elb/load_balancer_tests.rb +6 -0
- data/tests/aws/requests/rds/{subnet_groups_test.rb → subnet_groups_tests.rb} +4 -0
- data/tests/aws/requests/storage/bucket_tests.rb +17 -0
- data/tests/aws/requests/storage/delete_multiple_objects_tests.rb +12 -0
- data/tests/brightbox/compute/schema.rb +0 -13
- data/tests/brightbox/models/compute/server_tests.rb +7 -9
- data/tests/brightbox/requests/compute/interface_tests.rb +7 -19
- data/tests/digitalocean/models/compute/server_tests.rb +4 -3
- data/tests/google/models/compute/disk_tests.rb +5 -0
- data/tests/google/models/compute/disks_tests.rb +5 -0
- data/tests/google/models/compute/server_tests.rb +5 -1
- data/tests/google/models/compute/servers_tests.rb +5 -0
- data/tests/google/requests/compute/disk_tests.rb +2 -1
- data/tests/google/requests/compute/firewall_tests.rb +1 -0
- data/tests/google/requests/compute/image_tests.rb +3 -0
- data/tests/google/requests/compute/network_tests.rb +1 -0
- data/tests/google/requests/compute/operation_tests.rb +1 -0
- data/tests/google/requests/compute/server_tests.rb +2 -3
- data/tests/google/requests/compute/zone_tests.rb +1 -6
- data/tests/helpers/collection_helper.rb +10 -2
- data/tests/helpers/mock_helper.rb +4 -5
- data/tests/local/models/directories_tests.rb +17 -0
- data/tests/openstack/models/compute/security_group_tests.rb +54 -0
- data/tests/openstack/requests/compute/security_group_tests.rb +22 -20
- data/tests/openstack/requests/network/network_tests.rb +8 -8
- data/tests/rackspace/compute_tests.rb +0 -5
- data/tests/rackspace/helper.rb +9 -4
- data/tests/rackspace/models/compute_v2/server_tests.rb +29 -1
- data/tests/rackspace/models/identity/service_catalog_tests.rb +87 -39
- data/tests/rackspace/models/queues/message_tests.rb +16 -0
- data/tests/rackspace/models/storage/file_tests.rb +29 -0
- data/tests/rackspace/requests/compute_v2/address_tests.rb +3 -1
- data/tests/rackspace/requests/compute_v2/metadata_tests.rb +4 -2
- data/tests/rackspace/requests/compute_v2/server_tests.rb +3 -6
- data/tests/vcloud_director/models/compute/media_tests.rb +18 -5
- data/tests/vcloud_director/models/compute/vapp_tests.rb +3 -1
- data/tests/vcloud_director/models/compute/vms_tests.rb +2 -1
- data/tests/vcloud_director/requests/compute/edge_gateway_tests.rb +19 -10
- data/tests/vcloud_director/requests/compute/network_tests.rb +64 -3
- data/tests/vcloud_director/requests/compute/query_tests.rb +67 -2
- data/tests/vsphere/requests/compute/set_vm_customvalue_tests.rb +21 -0
- metadata +112 -11
- data/fogkeytest1.pem +0 -27
- data/lib/fog/hp/README_HP.rdoc +0 -61
@@ -38,7 +38,13 @@ module Fog
|
|
38
38
|
|
39
39
|
def destroy
|
40
40
|
requires :name, :zone_name
|
41
|
-
service.delete_disk(name, zone_name)
|
41
|
+
operation = service.delete_disk(name, zone_name)
|
42
|
+
# wait until "RUNNING" or "DONE" to ensure the operation doesn't fail, raises exception on error
|
43
|
+
Fog.wait_for do
|
44
|
+
operation = service.get_zone_operation(zone_name, operation.body["name"])
|
45
|
+
operation.body["status"] != "PENDING"
|
46
|
+
end
|
47
|
+
operation
|
42
48
|
end
|
43
49
|
|
44
50
|
def zone
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'fog/core/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Compute
|
5
|
+
class Google
|
6
|
+
|
7
|
+
class Operation < Fog::Model
|
8
|
+
|
9
|
+
identity :name
|
10
|
+
|
11
|
+
attribute :kind, :aliases => 'kind'
|
12
|
+
attribute :id, :aliases => 'id'
|
13
|
+
attribute :creation_timestamp, :aliases => 'creationTimestamp'
|
14
|
+
attribute :zone_name, :aliases => 'zone'
|
15
|
+
attribute :status, :aliases => 'status'
|
16
|
+
attribute :self_link, :aliases => 'selfLink'
|
17
|
+
|
18
|
+
def ready?
|
19
|
+
self.status == DONE_STATE
|
20
|
+
end
|
21
|
+
|
22
|
+
def pending?
|
23
|
+
self.status == PENDING_STATE
|
24
|
+
end
|
25
|
+
|
26
|
+
def reload
|
27
|
+
requires :identity
|
28
|
+
|
29
|
+
data = collection.get(identity, zone)
|
30
|
+
new_attributes = data.attributes
|
31
|
+
merge_attributes(new_attributes)
|
32
|
+
self
|
33
|
+
end
|
34
|
+
|
35
|
+
PENDING_STATE = "PENDING"
|
36
|
+
RUNNING_STATE = "RUNNING"
|
37
|
+
DONE_STATE = "DONE"
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'fog/core/collection'
|
2
|
+
require 'fog/google/models/compute/operation'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module Compute
|
6
|
+
class Google
|
7
|
+
|
8
|
+
class Operations < Fog::Collection
|
9
|
+
|
10
|
+
model Fog::Compute::Google::Operation
|
11
|
+
|
12
|
+
def get(identity, zone=nil)
|
13
|
+
if zone.nil?
|
14
|
+
response = service.get_global_operation(identity)
|
15
|
+
else
|
16
|
+
response = service.get_zone_operation(zone, identity)
|
17
|
+
end
|
18
|
+
return nil if response.nil?
|
19
|
+
new(response.body)
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -18,10 +18,25 @@ module Fog
|
|
18
18
|
attribute :disks, :aliases => 'disks'
|
19
19
|
attribute :kernel, :aliases => 'kernel'
|
20
20
|
attribute :metadata
|
21
|
+
attribute :tags, :squash => 'items'
|
22
|
+
|
23
|
+
def flavor_id
|
24
|
+
machine_type
|
25
|
+
end
|
26
|
+
|
27
|
+
def flavor_id=(flavor_id)
|
28
|
+
machine_type=flavor_id
|
29
|
+
end
|
21
30
|
|
22
31
|
def destroy
|
23
32
|
requires :name, :zone
|
24
|
-
service.delete_server(name, zone)
|
33
|
+
operation = service.delete_server(name, zone)
|
34
|
+
# wait until "RUNNING" or "DONE" to ensure the operation doesn't fail, raises exception on error
|
35
|
+
Fog.wait_for do
|
36
|
+
operation = service.get_zone_operation(zone_name, operation.body["name"])
|
37
|
+
operation.body["status"] != "PENDING"
|
38
|
+
end
|
39
|
+
operation
|
25
40
|
end
|
26
41
|
|
27
42
|
def image
|
@@ -112,7 +127,8 @@ module Fog
|
|
112
127
|
'externalIp' => external_ip,
|
113
128
|
'disks' => disks,
|
114
129
|
'kernel' => kernel,
|
115
|
-
'metadata' => metadata
|
130
|
+
'metadata' => metadata,
|
131
|
+
'tags' => tags
|
116
132
|
}.delete_if {|key, value| value.nil?}
|
117
133
|
|
118
134
|
service.insert_server(name, zone_name, options)
|
@@ -47,13 +47,14 @@ module Fog
|
|
47
47
|
def bootstrap(new_attributes = {})
|
48
48
|
defaults = {
|
49
49
|
:name => "fog-#{Time.now.to_i}",
|
50
|
-
:image_name => "debian-7-wheezy-
|
50
|
+
:image_name => "debian-7-wheezy-v20131014",
|
51
51
|
:machine_type => "n1-standard-1",
|
52
52
|
:zone_name => "us-central1-b",
|
53
53
|
:private_key_path => File.expand_path("~/.ssh/id_rsa"),
|
54
54
|
:public_key_path => File.expand_path("~/.ssh/id_rsa.pub"),
|
55
55
|
:username => ENV['USER'],
|
56
56
|
}
|
57
|
+
|
57
58
|
if new_attributes[:disks]
|
58
59
|
new_attributes[:disks].each do |disk|
|
59
60
|
defaults.delete :image_name if disk['boot']
|
@@ -121,7 +121,7 @@ module Fog
|
|
121
121
|
options['Content-MD5'] = content_md5 if content_md5
|
122
122
|
options['Content-Type'] = content_type if content_type
|
123
123
|
options['Expires'] = expires if expires
|
124
|
-
options.merge(metadata)
|
124
|
+
options.merge!(metadata)
|
125
125
|
|
126
126
|
data = service.put_object(directory.key, key, body, options)
|
127
127
|
merge_attributes(data.headers.reject {|key, value| ['Content-Length', 'Content-Type'].include?(key)})
|
@@ -4,8 +4,28 @@ module Fog
|
|
4
4
|
|
5
5
|
class Mock
|
6
6
|
|
7
|
-
def delete_disk(disk_name)
|
8
|
-
|
7
|
+
def delete_disk(disk_name, zone_name)
|
8
|
+
get_disk(disk_name, zone_name)
|
9
|
+
|
10
|
+
operation = self.random_operation
|
11
|
+
self.data[:operations][operation] = {
|
12
|
+
"kind" => "compute#operation",
|
13
|
+
"id" => Fog::Mock.random_numbers(19).to_s,
|
14
|
+
"name" => operation,
|
15
|
+
"zone" => "https://www.googleapis.com/compute/#{api_version}/projects/#{@project}/zones/#{zone_name}",
|
16
|
+
"operationType" => "delete",
|
17
|
+
"targetLink" => "https://www.googleapis.com/compute/#{api_version}/projects/#{@project}/zones/#{zone_name}/disks/#{disk_name}",
|
18
|
+
"targetId" => self.data[:disks][disk_name]["id"],
|
19
|
+
"status" => Fog::Compute::Google::Operation::PENDING_STATE,
|
20
|
+
"user" => "123456789012-qwertyuiopasdfghjkl1234567890qwe@developer.gserviceaccount.com",
|
21
|
+
"progress" => 0,
|
22
|
+
"insertTime" => Time.now.iso8601,
|
23
|
+
"startTime" => Time.now.iso8601,
|
24
|
+
"selfLink" => "https://www.googleapis.com/compute/#{api_version}/projects/#{@project}/zones/#{zone_name}/operations/#{operation}"
|
25
|
+
}
|
26
|
+
self.data[:disks].delete disk_name
|
27
|
+
|
28
|
+
build_response(:body => self.data[:operations][operation])
|
9
29
|
end
|
10
30
|
|
11
31
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class Google
|
4
|
+
|
5
|
+
class Mock
|
6
|
+
|
7
|
+
def delete_global_operation(operation)
|
8
|
+
Fog::Mock.not_implemented
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
12
|
+
|
13
|
+
class Real
|
14
|
+
# https://developers.google.com/compute/docs/reference/latest/globalOperations
|
15
|
+
|
16
|
+
def delete_global_operation(operation)
|
17
|
+
api_method = @compute.global_operations.delete
|
18
|
+
parameters = {
|
19
|
+
'project' => @project,
|
20
|
+
'operation' => operation
|
21
|
+
}
|
22
|
+
|
23
|
+
result = self.build_result(api_method, parameters)
|
24
|
+
response = self.build_response(result)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -28,21 +28,25 @@ module Fog
|
|
28
28
|
server = self.data[:servers][server_name]
|
29
29
|
server["status"] = "STOPPED"
|
30
30
|
server["mock-deletionTimestamp"] = Time.now.iso8601
|
31
|
-
|
31
|
+
|
32
|
+
operation = self.random_operation
|
33
|
+
self.data[:operations][operation] = {
|
32
34
|
"kind" => "compute#operation",
|
33
|
-
"id" =>
|
34
|
-
"name" =>
|
35
|
-
"zone" => "https://www.googleapis.com/compute/
|
35
|
+
"id" => Fog::Mock.random_numbers(19).to_s,
|
36
|
+
"name" => operation,
|
37
|
+
"zone" => "https://www.googleapis.com/compute/#{api_version}/projects/#{@project}/zones/#{zone_name}",
|
36
38
|
"operationType" => "delete",
|
37
|
-
"targetLink" => "https://www.googleapis.com/compute/
|
38
|
-
"targetId" => "
|
39
|
-
"status" =>
|
39
|
+
"targetLink" => "https://www.googleapis.com/compute/#{api_version}/projects/#{@project}/zones/#{zone_name}/instances/#{server_name}",
|
40
|
+
"targetId" => self.data[:servers][server_name]["id"],
|
41
|
+
"status" => Fog::Compute::Google::Operation::PENDING_STATE,
|
40
42
|
"user" => "123456789012-qwertyuiopasdfghjkl1234567890qwe@developer.gserviceaccount.com",
|
41
43
|
"progress" => 0,
|
42
44
|
"insertTime" => Time.now.iso8601,
|
43
45
|
"startTime" => Time.now.iso8601,
|
44
|
-
"selfLink" => "https://www.googleapis.com/compute/
|
45
|
-
}
|
46
|
+
"selfLink" => "https://www.googleapis.com/compute/#{api_version}/projects/#{@project}/zones/#{zone_name}/operations/#{operation}"
|
47
|
+
}
|
48
|
+
|
49
|
+
build_response(:body => self.data[:operations][operation])
|
46
50
|
end
|
47
51
|
|
48
52
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class Google
|
4
|
+
|
5
|
+
class Mock
|
6
|
+
|
7
|
+
def delete_zone_operation(zone, operation)
|
8
|
+
Fog::Mock.not_implemented
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
12
|
+
|
13
|
+
class Real
|
14
|
+
# https://developers.google.com/compute/docs/reference/latest/zoneOperations
|
15
|
+
|
16
|
+
def delete_zone_operation(zone_name, operation)
|
17
|
+
if zone_name.start_with? 'http'
|
18
|
+
zone_name = zone_name.split('/')[-1]
|
19
|
+
end
|
20
|
+
api_method = @compute.zone_operations.delete
|
21
|
+
parameters = {
|
22
|
+
'project' => @project,
|
23
|
+
'zone' => zone_name,
|
24
|
+
'operation' => operation
|
25
|
+
}
|
26
|
+
|
27
|
+
result = self.build_result(api_method, parameters)
|
28
|
+
response = self.build_response(result)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -4,8 +4,32 @@ module Fog
|
|
4
4
|
|
5
5
|
class Mock
|
6
6
|
|
7
|
-
def get_disk(disk_name)
|
8
|
-
|
7
|
+
def get_disk(disk_name, zone_name)
|
8
|
+
disk = self.data[:disks][disk_name]
|
9
|
+
if zone_name.start_with? 'http'
|
10
|
+
zone_name = zone_name.split('/')[-1]
|
11
|
+
end
|
12
|
+
get_zone(zone_name)
|
13
|
+
zone = self.data[:zones][zone_name]
|
14
|
+
if disk.nil? or disk["zone"] != zone["selfLink"]
|
15
|
+
return build_response(:body => {
|
16
|
+
"error" => {
|
17
|
+
"errors" => [
|
18
|
+
{
|
19
|
+
"domain" => "global",
|
20
|
+
"reason" => "notFound",
|
21
|
+
"message" => "The resource 'projects/#{@project}/zones/#{zone_name}/disks/#{disk_name}' was not found"
|
22
|
+
}
|
23
|
+
],
|
24
|
+
"code" => 404,
|
25
|
+
"message" => "The resource 'projects/#{@project}/zones/#{zone_name}/disks/#{disk_name}' was not found"
|
26
|
+
}
|
27
|
+
})
|
28
|
+
end
|
29
|
+
|
30
|
+
# TODO transition the disk through the states
|
31
|
+
|
32
|
+
build_response(:body => disk)
|
9
33
|
end
|
10
34
|
|
11
35
|
end
|
@@ -4,27 +4,26 @@ module Fog
|
|
4
4
|
|
5
5
|
class Mock
|
6
6
|
|
7
|
-
def
|
7
|
+
def get_global_operation(operation)
|
8
8
|
Fog::Mock.not_implemented
|
9
9
|
end
|
10
10
|
|
11
11
|
end
|
12
12
|
|
13
13
|
class Real
|
14
|
+
# https://developers.google.com/compute/docs/reference/latest/globalOperations
|
14
15
|
|
15
|
-
def
|
16
|
-
api_method = @compute.
|
16
|
+
def get_global_operation(operation)
|
17
|
+
api_method = @compute.global_operations.get
|
17
18
|
parameters = {
|
18
19
|
'project' => @project,
|
19
|
-
'operation' =>
|
20
|
+
'operation' => operation
|
20
21
|
}
|
21
22
|
|
22
23
|
result = self.build_result(api_method, parameters)
|
23
24
|
response = self.build_response(result)
|
24
25
|
end
|
25
|
-
|
26
26
|
end
|
27
|
-
|
28
27
|
end
|
29
28
|
end
|
30
29
|
end
|
@@ -5,17 +5,17 @@ module Fog
|
|
5
5
|
class Mock
|
6
6
|
|
7
7
|
def get_image(image_name, project=@project)
|
8
|
-
image =
|
8
|
+
image = data(project)[:images][image_name] || {
|
9
9
|
"error" => {
|
10
10
|
"errors" => [
|
11
11
|
{
|
12
12
|
"domain" => "global",
|
13
13
|
"reason" => "invalid",
|
14
|
-
"message" => "Invalid value for field 'resource.images': 'https://www.googleapis.com/compute/
|
14
|
+
"message" => "Invalid value for field 'resource.images': 'https://www.googleapis.com/compute/#{api_version}/projects/#{project}/global/images/#{image_name}'. Resource was not found."
|
15
15
|
}
|
16
16
|
],
|
17
17
|
"code" => 400,
|
18
|
-
"message" => "Invalid value for field 'resource.images': 'https://www.googleapis.com/compute/
|
18
|
+
"message" => "Invalid value for field 'resource.images': 'https://www.googleapis.com/compute/#{api_version}/projects/#{project}/global/images/#{image_name}'. Resource was not found."
|
19
19
|
}
|
20
20
|
}
|
21
21
|
build_response(:body => image)
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class Google
|
4
|
+
|
5
|
+
class Mock
|
6
|
+
|
7
|
+
def get_zone_operation(zone_name, operation)
|
8
|
+
operation = self.data[:operations][operation]
|
9
|
+
if operation
|
10
|
+
case operation["status"]
|
11
|
+
when Fog::Compute::Google::Operation::PENDING_STATE
|
12
|
+
operation["status"] = Fog::Compute::Google::Operation::RUNNING_STATE
|
13
|
+
operation["progress"] = 50
|
14
|
+
else
|
15
|
+
operation["status"] = Fog::Compute::Google::Operation::DONE_STATE
|
16
|
+
operation["progress"] = 100
|
17
|
+
end
|
18
|
+
else
|
19
|
+
operation = {
|
20
|
+
"error" => {
|
21
|
+
"errors" => [
|
22
|
+
{
|
23
|
+
"domain" => "global",
|
24
|
+
"reason" => "notFound",
|
25
|
+
"message" => "The resource 'projects/#{project}/zones/#{zone_name}/operations/#{operation}' was not found"
|
26
|
+
}
|
27
|
+
],
|
28
|
+
"code" => 404,
|
29
|
+
"message" => "The resource 'projects/#{project}/zones/#{zone_name}/operations/#{operation}' was not found"
|
30
|
+
}
|
31
|
+
}
|
32
|
+
end
|
33
|
+
build_response(:body => operation)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
class Real
|
38
|
+
# https://developers.google.com/compute/docs/reference/latest/zoneOperations
|
39
|
+
|
40
|
+
def get_zone_operation(zone_name, operation)
|
41
|
+
if zone_name.start_with? 'http'
|
42
|
+
zone_name = zone_name.split('/')[-1]
|
43
|
+
end
|
44
|
+
|
45
|
+
api_method = @compute.zone_operations.get
|
46
|
+
parameters = {
|
47
|
+
'project' => @project,
|
48
|
+
'zone' => zone_name,
|
49
|
+
'operation' => operation
|
50
|
+
}
|
51
|
+
|
52
|
+
result = self.build_result(api_method, parameters)
|
53
|
+
response = self.build_response(result)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|