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
@@ -4,8 +4,48 @@ module Fog
|
|
4
4
|
|
5
5
|
class Mock
|
6
6
|
|
7
|
-
def insert_disk(disk_name)
|
8
|
-
|
7
|
+
def insert_disk(disk_name, zone_name, image_name=nil, options={})
|
8
|
+
# check that image and zone exist
|
9
|
+
image_project = nil
|
10
|
+
unless image_name.nil?
|
11
|
+
([ @project ] + Fog::Compute::Google::Images::GLOBAL_PROJECTS).each do |project|
|
12
|
+
image_project = project
|
13
|
+
break if data(project)[:images][options['image']]
|
14
|
+
end
|
15
|
+
get_image(image_name, image_project) # ok if image exists, will fail otherwise
|
16
|
+
end
|
17
|
+
get_zone(zone_name)
|
18
|
+
|
19
|
+
id = Fog::Mock.random_numbers(19).to_s
|
20
|
+
self.data[:disks][disk_name] = {
|
21
|
+
"kind" => "compute#disk",
|
22
|
+
"id" => id,
|
23
|
+
"creationTimestamp" => Time.now.iso8601,
|
24
|
+
"zone" => "https://www.googleapis.com/compute/#{api_version}/projects/#{@project}/zones/#{zone_name}",
|
25
|
+
"status" => "READY",
|
26
|
+
"name" => disk_name,
|
27
|
+
"sizeGb" => options['sizeGb'] || "10",
|
28
|
+
"selfLink" => "https://www.googleapis.com/compute/#{api_version}/projects/#{@project}/zones/#{zone_name}/disks/#{disk_name}"
|
29
|
+
}
|
30
|
+
|
31
|
+
operation = self.random_operation
|
32
|
+
self.data[:operations][operation] = {
|
33
|
+
"kind" => "compute#operation",
|
34
|
+
"id" => Fog::Mock.random_numbers(19).to_s,
|
35
|
+
"name" => operation,
|
36
|
+
"zone" => "https://www.googleapis.com/compute/#{api_version}/projects/#{@project}/zones/#{zone_name}",
|
37
|
+
"operationType" => "insert",
|
38
|
+
"targetLink" => "https://www.googleapis.com/compute/#{api_version}/projects/#{@project}/zones/#{zone_name}/disks/#{disk_name}",
|
39
|
+
"targetId" => id,
|
40
|
+
"status" => Fog::Compute::Google::Operation::PENDING_STATE,
|
41
|
+
"user" => "123456789012-qwertyuiopasdfghjkl1234567890qwe@developer.gserviceaccount.com",
|
42
|
+
"progress" => 0,
|
43
|
+
"insertTime" => Time.now.iso8601,
|
44
|
+
"startTime" => Time.now.iso8601,
|
45
|
+
"selfLink" => "https://www.googleapis.com/compute/#{api_version}/projects/#{@project}/zones/#{zone_name}/operations/#{operation}"
|
46
|
+
}
|
47
|
+
|
48
|
+
build_response(:body => self.data[:operations][operation])
|
9
49
|
end
|
10
50
|
|
11
51
|
end
|
@@ -43,7 +83,7 @@ module Fog
|
|
43
83
|
end
|
44
84
|
|
45
85
|
# Merge in any remaining options (only 'description' should remain)
|
46
|
-
body_object.merge(opts)
|
86
|
+
body_object.merge!(opts)
|
47
87
|
|
48
88
|
result = self.build_result(api_method, parameters,
|
49
89
|
body_object)
|
@@ -4,7 +4,7 @@ module Fog
|
|
4
4
|
|
5
5
|
class Mock
|
6
6
|
|
7
|
-
def insert_image(image_name)
|
7
|
+
def insert_image(image_name, options={})
|
8
8
|
Fog::Mock.not_implemented
|
9
9
|
end
|
10
10
|
|
@@ -30,7 +30,7 @@ module Fog
|
|
30
30
|
}
|
31
31
|
|
32
32
|
# Merge in the remaining params (only 'description' should remain)
|
33
|
-
body_object.merge(options)
|
33
|
+
body_object.merge!(options)
|
34
34
|
|
35
35
|
result = self.build_result(api_method,
|
36
36
|
parameters,
|
@@ -3,6 +3,27 @@ module Fog
|
|
3
3
|
class Google
|
4
4
|
|
5
5
|
class Mock
|
6
|
+
include Shared
|
7
|
+
|
8
|
+
def handle_disks(options, zone_name)
|
9
|
+
disks = []
|
10
|
+
i = 0
|
11
|
+
options.delete('disks').each do |disk|
|
12
|
+
disk = Disk.new(disk) unless disk.is_a? Disk
|
13
|
+
disks << {
|
14
|
+
"kind"=>"compute#attachedDisk",
|
15
|
+
"index"=>i,
|
16
|
+
"type"=>"PERSISTENT",
|
17
|
+
"mode"=>"READ_WRITE",
|
18
|
+
"source"=>"https://www.googleapis.com/compute/#{api_version}/projects/#{@project}/zones/#{zone_name}/disks/#{disk.name}",
|
19
|
+
"deviceName"=>"persistent-disk-#{i}",
|
20
|
+
"boot"=>true
|
21
|
+
}
|
22
|
+
i+=1
|
23
|
+
end
|
24
|
+
disks
|
25
|
+
end
|
26
|
+
|
6
27
|
def insert_server(server_name, zone_name, options={}, *deprecated_args)
|
7
28
|
|
8
29
|
# check that image and zone exist
|
@@ -10,27 +31,28 @@ module Fog
|
|
10
31
|
if options.has_key? 'image'
|
11
32
|
([ @project ] + Fog::Compute::Google::Images::GLOBAL_PROJECTS).each do |project|
|
12
33
|
image_project = project
|
13
|
-
break if
|
34
|
+
break if data(project)[:images][options['image']]
|
14
35
|
end
|
15
36
|
get_image(options['image'], image_project) # ok if image exists, will fail otherwise
|
16
37
|
end
|
17
38
|
get_zone(zone_name)
|
18
39
|
|
40
|
+
id = Fog::Mock.random_numbers(19).to_s
|
19
41
|
self.data[:servers][server_name] = {
|
20
42
|
"kind" => "compute#instance",
|
21
|
-
"id" =>
|
43
|
+
"id" => id,
|
22
44
|
"creationTimestamp" => Time.now.iso8601,
|
23
|
-
"zone" => "https://www.googleapis.com/compute/
|
45
|
+
"zone" => "https://www.googleapis.com/compute/#{api_version}/projects/#{@project}/zones/#{zone_name}",
|
24
46
|
"status" => "PROVISIONING",
|
25
47
|
"name" => server_name,
|
26
48
|
"tags" => { "fingerprint" => "42WmSpB8rSM=" },
|
27
|
-
"machineType" => "https://www.googleapis.com/compute/
|
28
|
-
"image" => "https://www.googleapis.com/compute/
|
29
|
-
"kernel" => "https://www.googleapis.com/compute/
|
49
|
+
"machineType" => "https://www.googleapis.com/compute/#{api_version}/projects/#{@project}/zones/#{zone_name}/machineTypes/#{options['machineType']}",
|
50
|
+
"image" => "https://www.googleapis.com/compute/#{api_version}/projects/#{image_project}/global/images/#{options['image']}",
|
51
|
+
"kernel" => "https://www.googleapis.com/compute/#{api_version}/projects/google/global/kernels/gce-v20130813",
|
30
52
|
"canIpForward" => false,
|
31
53
|
"networkInterfaces" => [
|
32
54
|
{
|
33
|
-
"network" => "https://www.googleapis.com/compute/
|
55
|
+
"network" => "https://www.googleapis.com/compute/#{api_version}/projects/#{@project}/global/networks/default",
|
34
56
|
"networkIP" => Fog::Mock.random_ip,
|
35
57
|
"name" => "nic0",
|
36
58
|
"accessConfigs" => [
|
@@ -43,7 +65,7 @@ module Fog
|
|
43
65
|
]
|
44
66
|
}
|
45
67
|
],
|
46
|
-
"disks" => [
|
68
|
+
"disks" => options['disks'] ? handle_disks(options, zone_name) : [
|
47
69
|
{
|
48
70
|
"kind" => "compute#attachedDisk",
|
49
71
|
"index" => 0,
|
@@ -61,28 +83,45 @@ module Fog
|
|
61
83
|
}
|
62
84
|
]
|
63
85
|
},
|
64
|
-
"selfLink" => "https://www.googleapis.com/compute/
|
86
|
+
"selfLink" => "https://www.googleapis.com/compute/#{api_version}/projects/#{@project}/zones/#{zone_name}/instances/#{server_name}"
|
65
87
|
}
|
66
88
|
|
67
|
-
|
89
|
+
operation = self.random_operation
|
90
|
+
self.data[:operations][operation] = {
|
68
91
|
"kind" => "compute#operation",
|
69
|
-
"id" =>
|
70
|
-
"name" =>
|
71
|
-
"zone" => "https://www.googleapis.com/compute/
|
92
|
+
"id" => Fog::Mock.random_numbers(19).to_s,
|
93
|
+
"name" => operation,
|
94
|
+
"zone" => "https://www.googleapis.com/compute/#{api_version}/projects/#{@project}/zones/#{zone_name}",
|
72
95
|
"operationType" => "insert",
|
73
|
-
"targetLink" => "https://www.googleapis.com/compute/
|
74
|
-
"
|
96
|
+
"targetLink" => "https://www.googleapis.com/compute/#{api_version}/projects/#{@project}/zones/#{zone_name}/instances/#{server_name}",
|
97
|
+
"targetId" => id,
|
98
|
+
"status" => Fog::Compute::Google::Operation::PENDING_STATE,
|
75
99
|
"user" => "123456789012-qwertyuiopasdfghjkl1234567890qwe@developer.gserviceaccount.com",
|
76
100
|
"progress" => 0,
|
77
101
|
"insertTime" => Time.now.iso8601,
|
78
102
|
"startTime" => Time.now.iso8601,
|
79
|
-
"selfLink" => "https://www.googleapis.com/compute/
|
80
|
-
}
|
103
|
+
"selfLink" => "https://www.googleapis.com/compute/#{api_version}/projects/#{@project}/zones/#{zone_name}/operations/#{operation}"
|
104
|
+
}
|
105
|
+
|
106
|
+
build_response(:body => self.data[:operations][operation])
|
81
107
|
end
|
82
108
|
|
83
109
|
end
|
84
110
|
|
85
111
|
class Real
|
112
|
+
include Shared
|
113
|
+
|
114
|
+
def handle_disks(options)
|
115
|
+
disks = []
|
116
|
+
options.delete('disks').each do |disk|
|
117
|
+
if disk.is_a? Disk
|
118
|
+
disks << disk.get_object
|
119
|
+
else
|
120
|
+
disks << disk
|
121
|
+
end
|
122
|
+
end
|
123
|
+
disks
|
124
|
+
end
|
86
125
|
|
87
126
|
def format_metadata(metadata)
|
88
127
|
{ "items" => metadata.map {|k,v| {"key" => k, "value" => v}} }
|
@@ -115,42 +154,32 @@ module Fog
|
|
115
154
|
end
|
116
155
|
|
117
156
|
# ExternalIP is default value for server creation
|
157
|
+
access_config = {'type' => 'ONE_TO_ONE_NAT', 'name' => 'External NAT'}
|
158
|
+
# leave natIP undefined to use an IP from a shared ephemeral IP address pool
|
118
159
|
if options.has_key? 'externalIp'
|
119
|
-
|
120
|
-
else
|
121
|
-
external_ip = true
|
160
|
+
access_config['natIP'] = options.delete 'externalIp'
|
122
161
|
end
|
123
162
|
|
124
163
|
networkInterfaces = []
|
125
164
|
if ! network.nil?
|
126
165
|
networkInterface = { 'network' => @api_url + @project + "/global/networks/#{network}" }
|
127
|
-
|
128
|
-
networkInterface['accessConfigs'] = [{'type' => 'ONE_TO_ONE_NAT', 'name' => 'External NAT', 'natIP' => external_ip}]
|
129
|
-
end
|
166
|
+
networkInterface['accessConfigs'] = [access_config]
|
130
167
|
networkInterfaces << networkInterface
|
131
168
|
end
|
132
169
|
|
133
170
|
# TODO: add other networks
|
134
171
|
body_object['networkInterfaces'] = networkInterfaces
|
135
172
|
|
136
|
-
if options['disks']
|
137
|
-
disks = []
|
138
|
-
options.delete('disks').each do |disk|
|
139
|
-
if disk.is_a? Disk
|
140
|
-
disks << disk.get_object
|
141
|
-
else
|
142
|
-
disks << disk
|
143
|
-
end
|
144
|
-
end
|
145
|
-
body_object['disks'] = disks
|
146
|
-
end
|
173
|
+
body_object['disks'] = handle_disks(options) if options['disks']
|
147
174
|
|
148
175
|
options['metadata'] = format_metadata options['metadata'] if options['metadata']
|
149
176
|
|
177
|
+
body_object['tags'] = { 'items' => options.delete('tags') } if options['tags']
|
178
|
+
|
150
179
|
if options['kernel']
|
151
180
|
body_object['kernel'] = @api_url + "google/global/kernels/#{options.delete 'kernel'}"
|
152
181
|
end
|
153
|
-
body_object.merge!
|
182
|
+
body_object.merge!(options) # Adds in all remaining options that weren't explicitly handled.
|
154
183
|
|
155
184
|
result = self.build_result(api_method, parameters,
|
156
185
|
body_object=body_object)
|
@@ -4,8 +4,14 @@ module Fog
|
|
4
4
|
|
5
5
|
class Mock
|
6
6
|
|
7
|
-
def list_disks
|
8
|
-
|
7
|
+
def list_disks(zone_name)
|
8
|
+
disks = self.data[:disks].values.select{|d| d["zone"].split("/")[-1] == zone_name}
|
9
|
+
build_response(:body => {
|
10
|
+
"kind" => "compute#diskList",
|
11
|
+
"selfLink" => "https://www.googleapis.com/compute/#{api_version}/projects/#{@project}/zones/#{zone_name}/disks",
|
12
|
+
"id" => "projects/#{@project}/zones/#{zone_name}/disks",
|
13
|
+
"items" => disks
|
14
|
+
})
|
9
15
|
end
|
10
16
|
|
11
17
|
end
|
@@ -5,10 +5,10 @@ module Fog
|
|
5
5
|
class Mock
|
6
6
|
|
7
7
|
def list_images(project=@project)
|
8
|
-
images =
|
8
|
+
images = data(project)[:images].values
|
9
9
|
build_response(:body => {
|
10
10
|
"kind" => "compute#imageList",
|
11
|
-
"selfLink" => "https://www.googleapis.com/compute/
|
11
|
+
"selfLink" => "https://www.googleapis.com/compute/#{api_version}/projects/#{project}/global/images",
|
12
12
|
"id" => "projects/#{project}/global/images",
|
13
13
|
"items" => images
|
14
14
|
})
|
@@ -6,10 +6,10 @@ module Fog
|
|
6
6
|
|
7
7
|
def list_machine_types(zone_name)
|
8
8
|
get_zone(zone_name)
|
9
|
-
machine_types =
|
9
|
+
machine_types = data[:machine_types][zone_name].values
|
10
10
|
build_response(:body => {
|
11
11
|
"kind" => "compute#machineTypeList",
|
12
|
-
"selfLink" => "https://www.googleapis.com/compute/
|
12
|
+
"selfLink" => "https://www.googleapis.com/compute/#{api_version}/projects/#{@project}/zones/#{zone_name}/machineTypes",
|
13
13
|
"id" => "projects/high-cistern-340/zones/us-central1-a/machineTypes",
|
14
14
|
"items" => machine_types
|
15
15
|
})
|
@@ -5,12 +5,12 @@ module Fog
|
|
5
5
|
class Mock
|
6
6
|
|
7
7
|
def list_servers(zone_name)
|
8
|
+
get_zone(zone_name)
|
8
9
|
zone = self.data[:zones][zone_name]
|
9
|
-
raise Fog::Errors::Error.new("Invalid value for field 'zone': '#{zone_name}'. Unknown zone.") if zone.nil?
|
10
10
|
servers = self.data[:servers].values.select{|s| s["zone"] == zone["selfLink"]}
|
11
11
|
build_response(:body => {
|
12
12
|
"kind" => "compute#instanceList",
|
13
|
-
"selfLink" => "https://www.googleapis.com/compute/
|
13
|
+
"selfLink" => "https://www.googleapis.com/compute/#{api_version}/projects/#{@project}/zones/#{zone_name}/instances",
|
14
14
|
"id" => "projects/#{@project}/zones/#{zone_name}/instances",
|
15
15
|
"items" => servers
|
16
16
|
})
|
@@ -4,13 +4,14 @@ module Fog
|
|
4
4
|
|
5
5
|
class Mock
|
6
6
|
|
7
|
-
def list_zone_operations
|
7
|
+
def list_zone_operations(zone)
|
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/zoneOperations
|
14
15
|
|
15
16
|
def list_zone_operations(zone)
|
16
17
|
api_method = @compute.zone_operations.list
|
@@ -8,7 +8,7 @@ module Fog
|
|
8
8
|
zones = self.data[:zones].values
|
9
9
|
build_response(:body => {
|
10
10
|
"kind" => "compute#zoneList",
|
11
|
-
"selfLink" => "https://www.googleapis.com/compute/
|
11
|
+
"selfLink" => "https://www.googleapis.com/compute/#{api_version}/projects/#{@project}/zones",
|
12
12
|
"id" => "projects/#{@project}/zones",
|
13
13
|
"items" => zones
|
14
14
|
})
|
@@ -26,7 +26,7 @@ module Fog
|
|
26
26
|
# * 'LastModified'<~Time> - date object was last modified
|
27
27
|
#
|
28
28
|
def copy_object(source_bucket_name, source_object_name, target_bucket_name, target_object_name, options = {})
|
29
|
-
headers = { 'x-goog-copy-source' => "/#{source_bucket_name}/#{source_object_name}" }.merge
|
29
|
+
headers = { 'x-goog-copy-source' => "/#{source_bucket_name}/#{source_object_name}" }.merge(options)
|
30
30
|
request({
|
31
31
|
:expects => 200,
|
32
32
|
:headers => headers,
|
data/lib/fog/hp.rb
CHANGED
@@ -26,7 +26,7 @@ module Fog
|
|
26
26
|
if message.nil? and !data.values.first.nil?
|
27
27
|
message = data.values.first['message']
|
28
28
|
end
|
29
|
-
rescue
|
29
|
+
rescue Fog::JSON::DecodeError
|
30
30
|
message = error.response.body #### body is not in JSON format, so just return as is
|
31
31
|
end
|
32
32
|
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# Getting Started with HP Cloud Extensions to Ruby Fog Bindings
|
2
|
+
|
3
|
+
[HP Cloud](http://www.hpcloud.com) has been creating and contributing bindings so
|
4
|
+
that developers can work with Ruby Fog and the HP Cloud services based on
|
5
|
+
[OpenStack](http://www.openstack.org/). By using the HP Cloud Extensions to Fog,
|
6
|
+
developers can write applications using Ruby that interacts with the
|
7
|
+
HP Cloud Services without having to deal with the underlying REST API or
|
8
|
+
JSON/XML document formats. We have officially turned these bindings over to the
|
9
|
+
Ruby Fog community where you can contribute and develop additional functionality
|
10
|
+
around these bindings.
|
11
|
+
|
12
|
+
This section of documentation provides information, examples and articles for working with the different HP Cloud services such as Compute, Object Storage and others.
|
13
|
+
|
14
|
+
Please note that HP Cloud recently released version 13.5 which updates and adds functionality provided by OpenStack Havana. Some of our HP Ruby Fog examples are developed to work with earlier versions so please take note which HP Cloud version you are working with.
|
15
|
+
|
16
|
+
**Note:** The Networking service examples only work with version 13.5.
|
17
|
+
|
18
|
+
## Installation
|
19
|
+
|
20
|
+
To install and use HP Cloud Ruby bindings for Fog, please install the [latest release](http://fog.io/) of Fog.
|
21
|
+
|
22
|
+
Then follow the installation instructions for the operating system you are using and connect to the service:
|
23
|
+
|
24
|
+
* [Installation Instructions](https://github.com/fog/fog/blob/master/lib/fog/hp/docs/install.md)
|
25
|
+
* [Connecting to the Service](https://github.com/fog/fog/blob/master/lib/fog/hp/docs/connect.md)
|
26
|
+
|
27
|
+
## Requirements
|
28
|
+
|
29
|
+
For working with the HP Cloud Extension to Fog, the following pre-requisites are needed:
|
30
|
+
|
31
|
+
* HP Cloud Services account. If you have not already signed up, please [sign up for your free trial](http://www.hpcloud.com/free-trial).
|
32
|
+
* Ruby version 1.8.x or 1.9.x
|
33
|
+
* `fog` gem
|
34
|
+
|
35
|
+
|
36
|
+
## Examples
|
37
|
+
|
38
|
+
Apart from the overall [Fog documentation](http://fog.io), we have HP Cloud specific examples that will help you in using the Ruby Fog bindings with HP Cloud services.
|
39
|
+
|
40
|
+
[Examples for using Fog with HP Cloud Services](https://github.com/fog/fog/blob/master/lib/fog/hp/examples/getting_started_examples.md)
|
41
|
+
|
42
|
+
## Articles
|
43
|
+
|
44
|
+
In addition to the examples we have provided, for Compute, Object Storage, and other HP Cloud services, we wanted to give you a few additional tips and "how-tos' to make using your Ruby Fog bindings even easier. Take a look at the articles listed below to find out more!
|
45
|
+
|
46
|
+
* [Using authentication caching](https://github.com/fog/fog/blob/master/lib/fog/hp/articles/auth_caching.md)
|
47
|
+
|
48
|
+
## Additional Resources
|
49
|
+
* [Fog cloud library](http://fog.io)
|
50
|
+
* [Fog documentation](http://rubydoc.info/gems/fog)
|
51
|
+
* [Fog Github repo](https://github.com/fog/fog)
|
52
|
+
* [Fog Release Notes](https://github.com/fog/fog/blob/master/changelog.txt)
|
53
|
+
|
54
|
+
## Support and Feedback
|
55
|
+
|
56
|
+
Your feedback is essential to the maturity of the bindings and is highly appreciated! If you have specific issues with the HP Cloud Extensions to Fog bindings, please file an [issue via Github](https://github.com/fog/fog/issues).
|
57
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#Using Authentication Caching for HP Cloud Services#
|
2
|
+
|
3
|
+
Your application can run up to 40% faster if you cache the authentication information. The authentication token is typically valid for a day or more and if you save it in a safe place, you can reuse it. If you pass the authentication information to Fog, it does not have to reauthenticate.
|
4
|
+
|
5
|
+
For example if you save your credentials:
|
6
|
+
|
7
|
+
@storage = Fog::Storage.new(options)
|
8
|
+
@credentials = @storage.credentials
|
9
|
+
|
10
|
+
The next time you go to create a storage connection, pass in the credentials:
|
11
|
+
|
12
|
+
options[:credentials] = @credentials
|
13
|
+
@storage = Fog::Storage.new(options)
|
14
|
+
@credentials = @storage.credentials
|
15
|
+
|
16
|
+
It is best to always update your cached credentials. If they expire, they are automatically updated. When you create the new connection with the credentials, you should still pass in your normal authentication information in the options.
|
17
|
+
|
18
|
+
The contents of the credentials should be treated like a set of data. The contents of this object are likely to change in the future.
|
19
|
+
|
20
|
+
The same credentials may be used to create connections for Compute, Object Storage, CDN, Block Storage, and other services.
|
21
|
+
|
22
|
+
---------
|
23
|
+
[Documentation Home](https://github.com/fog/fog/blob/master/lib/fog/hp/README.md) | [Examples](https://github.com/fog/fog/blob/master/lib/fog/hp/examples/getting_started_examples.md)
|