fog 1.5.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.travis.yml +21 -0
- data/README.md +3 -1
- data/Rakefile +4 -1
- data/changelog.txt +462 -0
- data/docs/storage/index.markdown +4 -4
- data/fog.gemspec +2 -2
- data/lib/fog.rb +1 -1
- data/lib/fog/atmos.rb +11 -0
- data/lib/fog/atmos/models/storage/directories.rb +48 -0
- data/lib/fog/atmos/models/storage/directory.rb +53 -0
- data/lib/fog/atmos/models/storage/file.rb +107 -0
- data/lib/fog/atmos/models/storage/files.rb +73 -0
- data/lib/fog/atmos/requests/storage/delete_namespace.rb +19 -0
- data/lib/fog/atmos/requests/storage/get_namespace.rb +20 -0
- data/lib/fog/atmos/requests/storage/head_namespace.rb +20 -0
- data/lib/fog/atmos/requests/storage/post_namespace.rb +20 -0
- data/lib/fog/atmos/requests/storage/put_namespace.rb +20 -0
- data/lib/fog/atmos/storage.rb +186 -0
- data/lib/fog/aws.rb +2 -0
- data/lib/fog/aws/auto_scaling.rb +15 -1
- data/lib/fog/aws/compute.rb +26 -17
- data/lib/fog/aws/elb.rb +14 -2
- data/lib/fog/aws/glacier.rb +172 -0
- data/lib/fog/aws/iam.rb +35 -29
- data/lib/fog/aws/models/auto_scaling/group.rb +1 -1
- data/lib/fog/aws/models/compute/flavors.rb +11 -0
- data/lib/fog/aws/models/compute/security_group.rb +22 -6
- data/lib/fog/aws/models/compute/server.rb +5 -1
- data/lib/fog/aws/models/compute/spot_request.rb +12 -0
- data/lib/fog/aws/models/compute/spot_requests.rb +1 -2
- data/lib/fog/aws/models/compute/volume.rb +7 -1
- data/lib/fog/aws/models/glacier/archive.rb +70 -0
- data/lib/fog/aws/models/glacier/archives.rb +30 -0
- data/lib/fog/aws/models/glacier/job.rb +65 -0
- data/lib/fog/aws/models/glacier/jobs.rb +45 -0
- data/lib/fog/aws/models/glacier/vault.rb +53 -0
- data/lib/fog/aws/models/glacier/vaults.rb +28 -0
- data/lib/fog/aws/models/rds/server.rb +3 -1
- data/lib/fog/aws/models/rds/snapshot.rb +1 -0
- data/lib/fog/aws/models/rds/snapshots.rb +3 -0
- data/lib/fog/aws/models/storage/file.rb +4 -3
- data/lib/fog/aws/parsers/auto_scaling/describe_auto_scaling_groups.rb +8 -1
- data/lib/fog/aws/parsers/compute/create_volume.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_instance_status.rb +8 -1
- data/lib/fog/aws/parsers/compute/describe_instances.rb +2 -0
- data/lib/fog/aws/parsers/compute/describe_reserved_instances_offerings.rb +1 -1
- data/lib/fog/aws/parsers/compute/describe_volumes.rb +2 -2
- data/lib/fog/aws/parsers/compute/run_instances.rb +2 -0
- data/lib/fog/aws/parsers/compute/spot_instance_requests.rb +1 -1
- data/lib/fog/aws/parsers/dns/list_resource_record_sets.rb +3 -1
- data/lib/fog/aws/parsers/rds/db_parser.rb +3 -1
- data/lib/fog/aws/parsers/rds/snapshot_parser.rb +1 -0
- data/lib/fog/aws/rds.rb +9 -9
- data/lib/fog/aws/requests/auto_scaling/create_auto_scaling_group.rb +1 -0
- data/lib/fog/aws/requests/auto_scaling/delete_auto_scaling_group.rb +1 -1
- data/lib/fog/aws/requests/compute/create_volume.rb +53 -14
- data/lib/fog/aws/requests/compute/describe_instance_status.rb +2 -0
- data/lib/fog/aws/requests/compute/describe_instances.rb +3 -1
- data/lib/fog/aws/requests/compute/describe_internet_gateways.rb +13 -7
- data/lib/fog/aws/requests/compute/describe_spot_instance_requests.rb +1 -0
- data/lib/fog/aws/requests/compute/describe_subnets.rb +13 -7
- data/lib/fog/aws/requests/compute/describe_volumes.rb +2 -0
- data/lib/fog/aws/requests/compute/describe_vpcs.rb +12 -6
- data/lib/fog/aws/requests/compute/request_spot_instances.rb +2 -0
- data/lib/fog/aws/requests/compute/run_instances.rb +8 -2
- data/lib/fog/aws/requests/dns/change_resource_record_sets.rb +20 -1
- data/lib/fog/aws/requests/elb/create_load_balancer.rb +2 -2
- data/lib/fog/aws/requests/elb/describe_load_balancers.rb +1 -1
- data/lib/fog/aws/requests/glacier/abort_multipart_upload.rb +35 -0
- data/lib/fog/aws/requests/glacier/complete_multipart_upload.rb +42 -0
- data/lib/fog/aws/requests/glacier/create_archive.rb +43 -0
- data/lib/fog/aws/requests/glacier/create_vault.rb +34 -0
- data/lib/fog/aws/requests/glacier/delete_archive.rb +35 -0
- data/lib/fog/aws/requests/glacier/delete_vault.rb +34 -0
- data/lib/fog/aws/requests/glacier/delete_vault_notification_configuration.rb +33 -0
- data/lib/fog/aws/requests/glacier/describe_job.rb +35 -0
- data/lib/fog/aws/requests/glacier/describe_vault.rb +34 -0
- data/lib/fog/aws/requests/glacier/get_job_output.rb +41 -0
- data/lib/fog/aws/requests/glacier/get_vault_notification_configuration.rb +34 -0
- data/lib/fog/aws/requests/glacier/initiate_job.rb +41 -0
- data/lib/fog/aws/requests/glacier/initiate_multipart_upload.rb +38 -0
- data/lib/fog/aws/requests/glacier/list_jobs.rb +39 -0
- data/lib/fog/aws/requests/glacier/list_multipart_uploads.rb +37 -0
- data/lib/fog/aws/requests/glacier/list_parts.rb +37 -0
- data/lib/fog/aws/requests/glacier/list_vaults.rb +36 -0
- data/lib/fog/aws/requests/glacier/set_vault_notification_configuration.rb +37 -0
- data/lib/fog/aws/requests/glacier/upload_part.rb +46 -0
- data/lib/fog/aws/requests/rds/create_db_instance.rb +7 -5
- data/lib/fog/aws/requests/rds/create_db_instance_read_replica.rb +41 -1
- data/lib/fog/aws/requests/rds/create_db_snapshot.rb +1 -1
- data/lib/fog/aws/requests/rds/describe_db_instances.rb +8 -10
- data/lib/fog/aws/requests/rds/describe_db_security_groups.rb +1 -1
- data/lib/fog/aws/requests/rds/describe_db_snapshots.rb +2 -0
- data/lib/fog/aws/requests/rds/modify_db_instance.rb +7 -6
- data/lib/fog/aws/requests/rds/reboot_db_instance.rb +6 -5
- data/lib/fog/aws/requests/storage/get_object.rb +45 -2
- data/lib/fog/aws/requests/storage/upload_part.rb +1 -0
- data/lib/fog/aws/signaturev4.rb +73 -0
- data/lib/fog/aws/sqs.rb +2 -6
- data/lib/fog/bare_metal_cloud/compute.rb +3 -1
- data/lib/fog/bare_metal_cloud/requests/compute/add_server_by_configuration.rb +33 -0
- data/lib/fog/bare_metal_cloud/requests/compute/get_server.rb +17 -12
- data/lib/fog/bare_metal_cloud/requests/compute/list_configurations.rb +27 -0
- data/lib/fog/bare_metal_cloud/requests/compute/list_images.rb +4 -4
- data/lib/fog/bare_metal_cloud/requests/compute/list_plans.rb +7 -7
- data/lib/fog/bare_metal_cloud/requests/compute/list_servers.rb +2 -2
- data/lib/fog/bin.rb +7 -0
- data/lib/fog/bin/atmos.rb +31 -0
- data/lib/fog/bin/aws.rb +4 -0
- data/lib/fog/bin/ecloud.rb +4 -0
- data/lib/fog/bin/rackspace.rb +7 -0
- data/lib/fog/bin/serverlove.rb +31 -0
- data/lib/fog/bluebox/requests/compute/create_block.rb +18 -4
- data/lib/fog/brightbox/compute.rb +52 -0
- data/lib/fog/brightbox/models/compute/cloud_ip.rb +2 -0
- data/lib/fog/brightbox/models/compute/image.rb +1 -0
- data/lib/fog/brightbox/models/compute/server.rb +46 -3
- data/lib/fog/brightbox/requests/compute/create_cloud_ip.rb +3 -3
- data/lib/fog/cloudstack/compute.rb +4 -1
- data/lib/fog/cloudstack/models/compute/images.rb +15 -6
- data/lib/fog/cloudstack/models/compute/job.rb +1 -1
- data/lib/fog/cloudstack/requests/compute/attach_volume.rb +1 -1
- data/lib/fog/cloudstack/requests/compute/register_template.rb +35 -0
- data/lib/fog/compute.rb +15 -3
- data/lib/fog/core/errors.rb +1 -0
- data/lib/fog/core/time.rb +4 -0
- data/lib/fog/dynect/dns.rb +5 -5
- data/lib/fog/ecloud.rb +6 -0
- data/lib/fog/ecloud/compute.rb +3 -1
- data/lib/fog/ecloud/models/compute/ip_addresses.rb +1 -0
- data/lib/fog/ecloud/models/compute/networks.rb +1 -0
- data/lib/fog/ecloud/models/compute/server.rb +31 -1
- data/lib/fog/ecloud/requests/compute/virtual_machine_add_ip.rb +40 -0
- data/lib/fog/ecloud/requests/compute/virtual_machine_upload_file.rb +31 -0
- data/lib/fog/google/models/storage/directory.rb +2 -2
- data/lib/fog/google/models/storage/file.rb +2 -2
- data/lib/fog/google/requests/storage/get_bucket.rb +1 -2
- data/lib/fog/google/requests/storage/put_object.rb +1 -2
- data/lib/fog/google/storage.rb +1 -1
- data/lib/fog/hp/models/compute/image.rb +1 -1
- data/lib/fog/hp/models/compute/server.rb +4 -0
- data/lib/fog/hp/requests/compute/delete_security_group_rule.rb +4 -4
- data/lib/fog/hp/requests/storage/get_object.rb +8 -2
- data/lib/fog/hp/storage.rb +1 -0
- data/lib/fog/libvirt/models/compute/server.rb +1 -1
- data/lib/fog/libvirt/models/compute/templates/server.xml.erb +1 -1
- data/lib/fog/openstack.rb +7 -0
- data/lib/fog/openstack/compute.rb +4 -1
- data/lib/fog/openstack/models/compute/server.rb +1 -1
- data/lib/fog/openstack/requests/compute/create_server.rb +8 -2
- data/lib/fog/openstack/requests/identity/list_roles_for_user_on_tenant.rb +1 -1
- data/lib/fog/openstack/requests/identity/list_tenants.rb +1 -0
- data/lib/fog/providers.rb +2 -0
- data/lib/fog/rackspace.rb +9 -7
- data/lib/fog/rackspace/block_storage.rb +114 -0
- data/lib/fog/rackspace/compute_v2.rb +123 -0
- data/lib/fog/rackspace/models/block_storage/snapshot.rb +46 -0
- data/lib/fog/rackspace/models/block_storage/snapshots.rb +25 -0
- data/lib/fog/rackspace/models/block_storage/volume.rb +58 -0
- data/lib/fog/rackspace/models/block_storage/volume_type.rb +14 -0
- data/lib/fog/rackspace/models/block_storage/volume_types.rb +25 -0
- data/lib/fog/rackspace/models/block_storage/volumes.rb +25 -0
- data/lib/fog/rackspace/models/compute_v2/attachment.rb +34 -0
- data/lib/fog/rackspace/models/compute_v2/attachments.rb +25 -0
- data/lib/fog/rackspace/models/compute_v2/flavor.rb +17 -0
- data/lib/fog/rackspace/models/compute_v2/flavors.rb +25 -0
- data/lib/fog/rackspace/models/compute_v2/image.rb +30 -0
- data/lib/fog/rackspace/models/compute_v2/images.rb +25 -0
- data/lib/fog/rackspace/models/compute_v2/server.rb +147 -0
- data/lib/fog/rackspace/models/compute_v2/servers.rb +25 -0
- data/lib/fog/rackspace/models/storage/directory.rb +3 -3
- data/lib/fog/rackspace/requests/block_storage/create_snapshot.rb +26 -0
- data/lib/fog/rackspace/requests/block_storage/create_volume.rb +27 -0
- data/lib/fog/rackspace/requests/block_storage/delete_snapshot.rb +15 -0
- data/lib/fog/rackspace/requests/block_storage/delete_volume.rb +15 -0
- data/lib/fog/rackspace/requests/block_storage/get_snapshot.rb +15 -0
- data/lib/fog/rackspace/requests/block_storage/get_volume.rb +15 -0
- data/lib/fog/rackspace/requests/block_storage/get_volume_type.rb +15 -0
- data/lib/fog/rackspace/requests/block_storage/list_snapshots.rb +15 -0
- data/lib/fog/rackspace/requests/block_storage/list_volume_types.rb +15 -0
- data/lib/fog/rackspace/requests/block_storage/list_volumes.rb +15 -0
- data/lib/fog/rackspace/requests/compute_v2/attach_volume.rb +23 -0
- data/lib/fog/rackspace/requests/compute_v2/change_server_password.rb +22 -0
- data/lib/fog/rackspace/requests/compute_v2/confirm_resize_server.rb +20 -0
- data/lib/fog/rackspace/requests/compute_v2/create_server.rb +28 -0
- data/lib/fog/rackspace/requests/compute_v2/delete_attachment.rb +15 -0
- data/lib/fog/rackspace/requests/compute_v2/delete_server.rb +15 -0
- data/lib/fog/rackspace/requests/compute_v2/get_attachment.rb +15 -0
- data/lib/fog/rackspace/requests/compute_v2/get_flavor.rb +15 -0
- data/lib/fog/rackspace/requests/compute_v2/get_image.rb +15 -0
- data/lib/fog/rackspace/requests/compute_v2/get_server.rb +15 -0
- data/lib/fog/rackspace/requests/compute_v2/list_attachments.rb +15 -0
- data/lib/fog/rackspace/requests/compute_v2/list_flavors.rb +15 -0
- data/lib/fog/rackspace/requests/compute_v2/list_images.rb +15 -0
- data/lib/fog/rackspace/requests/compute_v2/list_servers.rb +15 -0
- data/lib/fog/rackspace/requests/compute_v2/reboot_server.rb +22 -0
- data/lib/fog/rackspace/requests/compute_v2/rebuild_server.rb +22 -0
- data/lib/fog/rackspace/requests/compute_v2/resize_server.rb +22 -0
- data/lib/fog/rackspace/requests/compute_v2/revert_resize_server.rb +20 -0
- data/lib/fog/rackspace/requests/compute_v2/update_server.rb +22 -0
- data/lib/fog/rackspace/requests/storage/delete_object.rb +1 -1
- data/lib/fog/rackspace/requests/storage/get_object_https_url.rb +51 -0
- data/lib/fog/rackspace/requests/storage/post_set_meta_temp_url_key.rb +37 -0
- data/lib/fog/rackspace/storage.rb +4 -0
- data/lib/fog/serverlove.rb +10 -0
- data/lib/fog/serverlove/compute.rb +97 -0
- data/lib/fog/serverlove/models/compute/image.rb +57 -0
- data/lib/fog/serverlove/models/compute/images.rb +26 -0
- data/lib/fog/serverlove/models/compute/server.rb +72 -0
- data/lib/fog/serverlove/models/compute/servers.rb +26 -0
- data/lib/fog/serverlove/requests/compute/create_image.rb +32 -0
- data/lib/fog/serverlove/requests/compute/create_server.rb +34 -0
- data/lib/fog/serverlove/requests/compute/destroy_image.rb +13 -0
- data/lib/fog/serverlove/requests/compute/destroy_server.rb +13 -0
- data/lib/fog/serverlove/requests/compute/get_image.rb +13 -0
- data/lib/fog/serverlove/requests/compute/get_images.rb +13 -0
- data/lib/fog/serverlove/requests/compute/get_server.rb +13 -0
- data/lib/fog/serverlove/requests/compute/get_servers.rb +13 -0
- data/lib/fog/serverlove/requests/compute/load_standard_image.rb +13 -0
- data/lib/fog/serverlove/requests/compute/reset_server.rb +13 -0
- data/lib/fog/serverlove/requests/compute/shutdown_server.rb +13 -0
- data/lib/fog/serverlove/requests/compute/start_server.rb +13 -0
- data/lib/fog/serverlove/requests/compute/stop_server.rb +13 -0
- data/lib/fog/serverlove/requests/compute/update_image.rb +15 -0
- data/lib/fog/serverlove/requests/compute/update_server.rb +15 -0
- data/lib/fog/serverlove/util/compute/password_generator.rb +11 -0
- data/lib/fog/storage.rb +3 -0
- data/lib/fog/terremark/models/shared/image.rb +22 -0
- data/lib/fog/terremark/models/shared/images.rb +48 -0
- data/lib/fog/terremark/models/shared/internetservice.rb +67 -0
- data/lib/fog/terremark/models/shared/internetservices.rb +42 -0
- data/lib/fog/terremark/models/shared/nodeservice.rb +52 -0
- data/lib/fog/terremark/models/shared/nodeservices.rb +32 -0
- data/lib/fog/terremark/models/shared/server.rb +114 -15
- data/lib/fog/terremark/models/shared/servers.rb +7 -8
- data/lib/fog/terremark/models/shared/vdc.rb +6 -1
- data/lib/fog/terremark/parsers/shared/get_catalog.rb +7 -2
- data/lib/fog/terremark/parsers/shared/get_keys_list.rb +56 -0
- data/lib/fog/terremark/requests/shared/add_internet_service.rb +10 -9
- data/lib/fog/terremark/requests/shared/add_node_service.rb +10 -12
- data/lib/fog/terremark/requests/shared/configure_vapp.rb +61 -0
- data/lib/fog/terremark/requests/shared/create_internet_service.rb +16 -11
- data/lib/fog/terremark/requests/shared/delete_internet_service.rb +2 -1
- data/lib/fog/terremark/requests/shared/delete_node_service.rb +2 -1
- data/lib/fog/terremark/requests/shared/delete_public_ip.rb +2 -1
- data/lib/fog/terremark/requests/shared/get_internet_services.rb +2 -1
- data/lib/fog/terremark/requests/shared/get_keys_list.rb +36 -0
- data/lib/fog/terremark/requests/shared/get_node_services.rb +2 -1
- data/lib/fog/terremark/requests/shared/instantiate_vapp_template.rb +11 -1
- data/lib/fog/terremark/shared.rb +19 -1
- data/lib/fog/terremark/vcloud.rb +10 -1
- data/lib/fog/vcloud/compute.rb +13 -13
- data/lib/fog/vcloud/models/compute/catalog_items.rb +6 -2
- data/lib/fog/vcloud/models/compute/organizations.rb +1 -2
- data/lib/fog/vcloud/models/compute/server.rb +37 -3
- data/lib/fog/vcloud/models/compute/vapps.rb +1 -1
- data/lib/fog/vcloud/requests/compute/configure_org_network.rb +141 -0
- data/lib/fog/vcloud/requests/compute/configure_vm_cpus.rb +38 -0
- data/lib/fog/vcloud/requests/compute/configure_vm_memory.rb +11 -12
- data/lib/fog/vcloud/requests/compute/configure_vm_password.rb +39 -0
- data/lib/fog/vcloud/requests/compute/undeploy.rb +9 -1
- data/lib/fog/vsphere/requests/compute/vm_reboot.rb +1 -1
- data/tests/atmos/models/storage/file_update_tests.rb +19 -0
- data/tests/atmos/models/storage/nested_directories_tests.rb +23 -0
- data/tests/aws/models/compute/security_group_tests.rb +21 -12
- data/tests/aws/models/dns/records_tests.rb +8 -2
- data/tests/aws/models/glacier/model_tests.rb +47 -0
- data/tests/aws/models/iam/policies_tests.rb +2 -2
- data/tests/aws/models/rds/server_tests.rb +5 -2
- data/tests/aws/models/storage/directory_tests.rb +1 -1
- data/tests/aws/models/storage/file_tests.rb +1 -1
- data/tests/aws/models/storage/files_tests.rb +1 -1
- data/tests/aws/models/storage/url_tests.rb +8 -8
- data/tests/aws/models/storage/version_tests.rb +1 -1
- data/tests/aws/models/storage/versions_tests.rb +1 -1
- data/tests/aws/requests/auto_scaling/auto_scaling_tests.rb +5 -0
- data/tests/aws/requests/auto_scaling/helper.rb +2 -1
- data/tests/aws/requests/compute/instance_tests.rb +17 -23
- data/tests/aws/requests/compute/spot_instance_tests.rb +2 -1
- data/tests/aws/requests/compute/tag_tests.rb +1 -0
- data/tests/aws/requests/compute/volume_tests.rb +45 -4
- data/tests/aws/requests/elb/helper.rb +2 -2
- data/tests/aws/requests/elb/listener_tests.rb +2 -2
- data/tests/aws/requests/elb/load_balancer_tests.rb +1 -1
- data/tests/aws/requests/glacier/archive_tests.rb +13 -0
- data/tests/aws/requests/glacier/multipart_upload_tests.rb +30 -0
- data/tests/aws/requests/glacier/tree_hash_tests.rb +63 -0
- data/tests/aws/requests/glacier/vault_tests.rb +35 -0
- data/tests/aws/requests/rds/helper.rb +11 -5
- data/tests/aws/requests/rds/instance_tests.rb +0 -2
- data/tests/aws/requests/storage/acl_utils_tests.rb +1 -1
- data/tests/aws/requests/storage/bucket_tests.rb +1 -1
- data/tests/aws/requests/storage/multipart_upload_tests.rb +1 -1
- data/tests/aws/requests/storage/object_tests.rb +8 -0
- data/tests/aws/requests/storage/versioning_tests.rb +1 -1
- data/tests/aws/signaturev4_tests.rb +41 -0
- data/tests/brightbox/compute_tests.rb +9 -0
- data/tests/brightbox/requests/compute/helper.rb +21 -6
- data/tests/cloudstack/compute/models/volume_tests.rb +1 -1
- data/tests/cloudstack/requests/volume_tests.rb +1 -1
- data/tests/compute/helper.rb +10 -4
- data/tests/dynect/requests/dns/dns_tests.rb +39 -0
- data/tests/google/requests/storage/bucket_tests.rb +2 -3
- data/tests/google/requests/storage/object_tests.rb +1 -1
- data/tests/helper.rb +10 -3
- data/tests/helpers/formats_helper.rb +4 -2
- data/tests/helpers/formats_helper_tests.rb +9 -0
- data/tests/helpers/mock_helper.rb +6 -1
- data/tests/helpers/model_helper.rb +0 -3
- data/tests/hp/models/compute/address_tests.rb +1 -1
- data/tests/hp/models/compute/addresses_tests.rb +1 -1
- data/tests/hp/models/compute/key_pair_tests.rb +1 -1
- data/tests/hp/models/compute/key_pairs_tests.rb +1 -1
- data/tests/hp/models/compute/security_group_tests.rb +1 -1
- data/tests/hp/models/compute/security_groups_tests.rb +1 -1
- data/tests/hp/requests/cdn/container_tests.rb +1 -1
- data/tests/hp/requests/compute/address_tests.rb +1 -1
- data/tests/hp/requests/compute/flavor_tests.rb +1 -1
- data/tests/hp/requests/compute/image_tests.rb +1 -1
- data/tests/hp/requests/compute/key_pair_tests.rb +1 -1
- data/tests/hp/requests/compute/security_group_rule_tests.rb +1 -1
- data/tests/hp/requests/compute/security_group_tests.rb +1 -1
- data/tests/hp/requests/compute/server_address_tests.rb +1 -1
- data/tests/hp/requests/compute/server_tests.rb +1 -1
- data/tests/hp/requests/storage/container_tests.rb +1 -1
- data/tests/hp/requests/storage/object_tests.rb +1 -1
- data/tests/local/models/file_tests.rb +1 -1
- data/tests/rackspace/models/block_storage/snapshot_tests.rb +20 -0
- data/tests/rackspace/models/block_storage/snapshots_tests.rb +20 -0
- data/tests/rackspace/models/block_storage/volume_tests.rb +27 -0
- data/tests/rackspace/models/block_storage/volume_types_tests.rb +20 -0
- data/tests/rackspace/models/block_storage/volumes_tests.rb +11 -0
- data/tests/rackspace/models/compute_v2/flavors_tests.rb +20 -0
- data/tests/rackspace/models/compute_v2/images_tests.rb +22 -0
- data/tests/rackspace/models/compute_v2/server_tests.rb +62 -0
- data/tests/rackspace/models/compute_v2/servers_tests.rb +14 -0
- data/tests/rackspace/requests/block_storage/snapshot_tests.rb +81 -0
- data/tests/rackspace/requests/block_storage/volume_tests.rb +61 -0
- data/tests/rackspace/requests/block_storage/volume_type_tests.rb +31 -0
- data/tests/rackspace/requests/compute_v2/attachment_tests.rb +68 -0
- data/tests/rackspace/requests/compute_v2/flavor_tests.rb +43 -0
- data/tests/rackspace/requests/compute_v2/image_tests.rb +47 -0
- data/tests/rackspace/requests/compute_v2/server_tests.rb +147 -0
- data/tests/rackspace/requests/storage/account_tests.rb +17 -0
- data/tests/rackspace/requests/storage/container_tests.rb +1 -1
- data/tests/rackspace/requests/storage/large_object_tests.rb +1 -1
- data/tests/rackspace/requests/storage/object_tests.rb +41 -2
- data/tests/serverlove/requests/compute/image_tests.rb +57 -0
- data/tests/serverlove/requests/compute/server_tests.rb +85 -0
- data/tests/serverlove/util/compute/password_generator_tests.rb +19 -0
- data/tests/storage/models/directories_tests.rb +1 -1
- data/tests/storage/models/directory_test.rb +1 -1
- data/tests/storage/models/file_tests.rb +1 -1
- data/tests/storage/models/files_tests.rb +1 -1
- metadata +188 -3
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'fog/core/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Terremark
|
5
|
+
module Shared
|
6
|
+
|
7
|
+
class InternetService < Fog::Model
|
8
|
+
|
9
|
+
identity :Id
|
10
|
+
|
11
|
+
attribute :Name
|
12
|
+
attribute :Port
|
13
|
+
attribute :Protocol
|
14
|
+
attribute :Description
|
15
|
+
attribute :PublicIpAddress
|
16
|
+
attribute :public_ip_address_id
|
17
|
+
|
18
|
+
def destroy(delete_public_ip=true)
|
19
|
+
connection.delete_internet_service(self.Id)
|
20
|
+
connection.delete_public_ip(self.PublicIpAddress["Id"]) if delete_public_ip
|
21
|
+
true
|
22
|
+
end
|
23
|
+
|
24
|
+
def save
|
25
|
+
requires :Name, :Protocol, :Port
|
26
|
+
if not public_ip_address_id
|
27
|
+
#Create the first internet service and allocate public IP
|
28
|
+
data = connection.create_internet_service(
|
29
|
+
vdc = connection.default_vdc_id,
|
30
|
+
name = self.Name,
|
31
|
+
protocol = self.Protocol,
|
32
|
+
port = self.Port,
|
33
|
+
options = {
|
34
|
+
'Enabled' => 'true',
|
35
|
+
"Description" => self.Name
|
36
|
+
}
|
37
|
+
)
|
38
|
+
else
|
39
|
+
#create additional services to existing Public IP
|
40
|
+
data = connection.add_internet_service(
|
41
|
+
ip_id = public_ip_address_id,
|
42
|
+
name = self.Name,
|
43
|
+
protocol = self.Protocol,
|
44
|
+
port = self.Port,
|
45
|
+
options = {
|
46
|
+
'Enabled' => 'true',
|
47
|
+
"Description" => self.Name
|
48
|
+
}
|
49
|
+
)
|
50
|
+
end
|
51
|
+
merge_attributes(data.body)
|
52
|
+
true
|
53
|
+
end
|
54
|
+
private
|
55
|
+
|
56
|
+
def href=(new_href)
|
57
|
+
self.id = new_href.split('/').last.to_i
|
58
|
+
end
|
59
|
+
|
60
|
+
def type=(new_type); @type = new_type; end
|
61
|
+
def size=(new_size); @size = new_size; end
|
62
|
+
def Links=(new_links); @Links = new_links; end
|
63
|
+
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'fog/core/collection'
|
2
|
+
require 'fog/terremark/models/shared/internetservice'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module Terremark
|
6
|
+
module Shared
|
7
|
+
|
8
|
+
module Mock
|
9
|
+
def internetservices(options = {})
|
10
|
+
Fog::Terremark::Shared::Servers.new(options.merge(:connection => self))
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
module Real
|
15
|
+
def internetservices(options = {})
|
16
|
+
Fog::Terremark::Shared::InternetServices.new(options.merge(:connection => self))
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class InternetServices < Fog::Collection
|
21
|
+
|
22
|
+
model Fog::Terremark::Shared::InternetService
|
23
|
+
|
24
|
+
def all
|
25
|
+
data = connection.get_internet_services(vdc_id).body["InternetServices"]
|
26
|
+
load(data)
|
27
|
+
end
|
28
|
+
|
29
|
+
def get(service_id)
|
30
|
+
data = connection.get_internet_services(vdc_id)
|
31
|
+
internet_service = services.body["InternetServices"].select {|item| item["Id"] == service_id}
|
32
|
+
new(internetservice)
|
33
|
+
end
|
34
|
+
|
35
|
+
def vdc_id
|
36
|
+
@vdc_id ||= connection.default_vdc_id
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'fog/core/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Terremark
|
5
|
+
module Shared
|
6
|
+
|
7
|
+
class NodeService < Fog::Model
|
8
|
+
|
9
|
+
identity :Id
|
10
|
+
attribute :Name
|
11
|
+
attribute :Href
|
12
|
+
attribute :Port
|
13
|
+
attribute :Description
|
14
|
+
attribute :IpAddress
|
15
|
+
attribute :Enabled
|
16
|
+
attribute :InternetServiceId
|
17
|
+
|
18
|
+
def destroy
|
19
|
+
connection.delete_node_service(self.Id)
|
20
|
+
end
|
21
|
+
|
22
|
+
def save
|
23
|
+
requires :Name, :Port, :InternetServiceId
|
24
|
+
data = connection.add_node_service(
|
25
|
+
service_id = self.InternetServiceId,
|
26
|
+
ip = self.IpAddress,
|
27
|
+
name = self.Name,
|
28
|
+
port = self.Port,
|
29
|
+
options = {"Enabled" => 'true',
|
30
|
+
"Description" => self.Name,
|
31
|
+
}
|
32
|
+
|
33
|
+
)
|
34
|
+
merge_attributes(data.body)
|
35
|
+
true
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def href=(new_href)
|
41
|
+
self.id = new_href.split('/').last.to_i
|
42
|
+
end
|
43
|
+
|
44
|
+
def type=(new_type); @type = new_type; end
|
45
|
+
def size=(new_size); @size = new_size; end
|
46
|
+
def Links=(new_links); @Links = new_links; end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'fog/core/collection'
|
2
|
+
require 'fog/terremark/models/shared/nodeservice'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module Terremark
|
6
|
+
module Shared
|
7
|
+
|
8
|
+
module Mock
|
9
|
+
def nodeservices(options = {})
|
10
|
+
Fog::Terremark::Shared::Servers.new(options.merge(:connection => self))
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
module Real
|
15
|
+
def nodeservices(options = {})
|
16
|
+
Fog::Terremark::Shared::NodeServices.new(options.merge(:connection => self))
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class NodeServices < Fog::Collection
|
21
|
+
|
22
|
+
model Fog::Terremark::Shared::NodeService
|
23
|
+
|
24
|
+
def all(internet_service_id)
|
25
|
+
data = connection.get_node_services(internet_service_id).body["NodeServices"]
|
26
|
+
load(data)
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -1,4 +1,15 @@
|
|
1
1
|
require 'fog/core/model'
|
2
|
+
require 'fog/terremark/models/shared/nodeservices'
|
3
|
+
require 'fog/terremark/models/shared/internetservices'
|
4
|
+
|
5
|
+
# { '0' => 'Being created', '1' => 'Being Deployed, '2' => 'Powered Off', '4' => 'Powered On'}
|
6
|
+
module VAppStatus
|
7
|
+
BEING_CREATED = "0"
|
8
|
+
BEING_DEPLOYED = "1"
|
9
|
+
POWERED_OFF = "2"
|
10
|
+
POWERED_ON = "4"
|
11
|
+
end
|
12
|
+
|
2
13
|
|
3
14
|
module Fog
|
4
15
|
module Terremark
|
@@ -9,30 +20,68 @@ module Fog
|
|
9
20
|
identity :id
|
10
21
|
|
11
22
|
attribute :name
|
23
|
+
attribute :image
|
24
|
+
attribute :vcpus
|
25
|
+
attribute :memory
|
26
|
+
attribute :sshkeyFingerPrint
|
27
|
+
attribute :powerOn
|
12
28
|
attribute :status
|
13
29
|
attribute :OperatingSystem
|
14
30
|
attribute :VirtualHardware
|
31
|
+
attribute :IpAddress
|
15
32
|
|
33
|
+
def reload
|
34
|
+
merge_attributes(connection.get_vapp(id).body)
|
35
|
+
end
|
16
36
|
def destroy
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
37
|
+
case self.status
|
38
|
+
when VAppStatus::BEING_CREATED, VAppStatus::BEING_DEPLOYED
|
39
|
+
return false
|
40
|
+
when VAppStatus::POWERED_ON
|
41
|
+
data = connection.power_off(self.id).body
|
42
|
+
wait_for { off? }
|
43
|
+
end
|
44
|
+
connection.delete_vapp(self.id)
|
22
45
|
true
|
23
46
|
end
|
24
47
|
|
48
|
+
def PublicIpAddress
|
49
|
+
@PublicIpAddress ||=
|
50
|
+
if internet_services.size > 0
|
51
|
+
internet_services[0].PublicIpAddress["Name"]
|
52
|
+
end
|
53
|
+
@PublicIpAddress
|
54
|
+
end
|
55
|
+
|
56
|
+
def internet_services
|
57
|
+
@internet_services ||= connection.internetservices.all.select {|item| item.Name == self.name}
|
58
|
+
end
|
59
|
+
|
60
|
+
def delete_internet_services
|
61
|
+
#Find the internet service
|
62
|
+
|
63
|
+
while (service = internet_services.pop) do
|
64
|
+
|
65
|
+
nodes = connection.nodeservices.all(service.Id)
|
66
|
+
#Delete all the associated nodes
|
67
|
+
nodes.select { |item| item.destroy }
|
68
|
+
#Clear out the services
|
69
|
+
service.destroy(delete_public_ip = !(internet_services.size > 0))
|
70
|
+
end
|
71
|
+
true
|
72
|
+
end
|
73
|
+
|
25
74
|
# { '0' => 'Being created', '2' => 'Powered Off', '4' => 'Powered On'}
|
26
75
|
def ready?
|
27
|
-
status ==
|
76
|
+
status == VAppStatus::POWERED_OFF
|
28
77
|
end
|
29
78
|
|
30
79
|
def on?
|
31
|
-
status ==
|
80
|
+
status == VAppStatus::POWERED_ON
|
32
81
|
end
|
33
82
|
|
34
83
|
def off?
|
35
|
-
status ==
|
84
|
+
status == VAppStatus::POWERED_OFF
|
36
85
|
end
|
37
86
|
|
38
87
|
def power_on(options = {})
|
@@ -81,14 +130,66 @@ module Fog
|
|
81
130
|
power_on
|
82
131
|
end
|
83
132
|
|
133
|
+
def create_internet_services(internet_spec)
|
134
|
+
public_ip_info = nil
|
135
|
+
internet_service_id = nil
|
136
|
+
internet_spec.each do |proto, ports|
|
137
|
+
for port in ports
|
138
|
+
if not public_ip_info
|
139
|
+
#Create the first internet service and allocate public IP
|
140
|
+
inet_services = connection.internetservices.create({
|
141
|
+
"Name" => self.name,
|
142
|
+
"Protocol" => proto,
|
143
|
+
"Port" => port,
|
144
|
+
})
|
145
|
+
internet_service_id = inet_services.Id
|
146
|
+
public_ip_info = inet_services.PublicIpAddress
|
147
|
+
|
148
|
+
else
|
149
|
+
#create additional services to existing Public IP
|
150
|
+
inet_services = connection.internetservices.create({
|
151
|
+
"public_ip_address_id" => public_ip_info["Id"],
|
152
|
+
"Name" => self.name,
|
153
|
+
"Protocol" => proto,
|
154
|
+
"Port" => port,
|
155
|
+
}
|
156
|
+
)
|
157
|
+
internet_service_id = inet_services.Id
|
158
|
+
end
|
159
|
+
|
160
|
+
#Create the associate node service to the server
|
161
|
+
connection.nodeservices.create({"Name" => self.name,
|
162
|
+
"IpAddress" => self.IpAddress,
|
163
|
+
"Port" => port,
|
164
|
+
"InternetServiceId" => internet_service_id
|
165
|
+
})
|
166
|
+
end
|
167
|
+
end
|
168
|
+
true
|
169
|
+
end
|
170
|
+
|
84
171
|
def save
|
85
172
|
requires :name
|
86
|
-
|
173
|
+
if powerOn
|
174
|
+
end
|
175
|
+
data = connection.instantiate_vapp_template(
|
176
|
+
server_name=name,
|
177
|
+
vapp_template=image,
|
178
|
+
options={
|
179
|
+
'ssh_key_fingerprint' => sshkeyFingerPrint,
|
180
|
+
'cpus' => vcpus,
|
181
|
+
'memory' => memory
|
182
|
+
})
|
183
|
+
|
87
184
|
merge_attributes(data.body)
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
185
|
+
wait_for { ready? }
|
186
|
+
|
187
|
+
#Optional, incase further configuration required.
|
188
|
+
if powerOn
|
189
|
+
power_on
|
190
|
+
wait_for { ready? }
|
191
|
+
end
|
192
|
+
|
92
193
|
true
|
93
194
|
end
|
94
195
|
|
@@ -100,11 +201,9 @@ module Fog
|
|
100
201
|
|
101
202
|
def type=(new_type); @type = new_type; end
|
102
203
|
def size=(new_size); @size = new_size; end
|
103
|
-
def IpAddress=(new_ipaddress); @IpAddress = new_ipaddress; end
|
104
204
|
def Links=(new_links); @Links = new_links; end
|
105
205
|
|
106
206
|
end
|
107
|
-
|
108
207
|
end
|
109
208
|
end
|
110
209
|
end
|
@@ -22,20 +22,19 @@ module Fog
|
|
22
22
|
model Fog::Terremark::Shared::Server
|
23
23
|
|
24
24
|
def all
|
25
|
-
data =
|
26
|
-
|
25
|
+
data = []
|
26
|
+
connection.get_vdc(vdc_id).body['ResourceEntities'].select do |entity|
|
27
|
+
data << connection.servers.get(entity["href"].split('/').last)
|
27
28
|
end
|
28
|
-
|
29
|
+
data
|
29
30
|
end
|
30
31
|
|
31
32
|
def get(server_id)
|
32
|
-
if server_id
|
33
|
-
new(
|
34
|
-
|
33
|
+
if server_id
|
34
|
+
new(connection.get_vapp(server_id).body)
|
35
|
+
else
|
35
36
|
nil
|
36
37
|
end
|
37
|
-
rescue Excon::Errors::Forbidden
|
38
|
-
nil
|
39
38
|
end
|
40
39
|
|
41
40
|
def vdc_id
|
@@ -9,7 +9,9 @@ module Fog
|
|
9
9
|
identity :id
|
10
10
|
|
11
11
|
attribute :name
|
12
|
-
|
12
|
+
attribute :ResourceEntities
|
13
|
+
attribute :AvailableNetworks
|
14
|
+
attribute :links
|
13
15
|
def networks
|
14
16
|
connection.networks(:vdc_id => id)
|
15
17
|
end
|
@@ -22,6 +24,9 @@ module Fog
|
|
22
24
|
connection.servers(:vdc_id => id)
|
23
25
|
end
|
24
26
|
|
27
|
+
def images
|
28
|
+
connection.images(:vdc_id => id)
|
29
|
+
end
|
25
30
|
private
|
26
31
|
|
27
32
|
def href=(new_href)
|
@@ -14,8 +14,13 @@ module Fog
|
|
14
14
|
case name
|
15
15
|
when 'CatalogItem'
|
16
16
|
catalog_item = {}
|
17
|
-
|
18
|
-
|
17
|
+
attributes.each do |attrib|
|
18
|
+
i = 0
|
19
|
+
while i < attrib.size
|
20
|
+
catalog_item[attrib[i]] = attrib[i+1]
|
21
|
+
i += 2
|
22
|
+
end
|
23
|
+
catalog_item["id"] = catalog_item["href"].split('/').last
|
19
24
|
end
|
20
25
|
@response['CatalogItems'] << catalog_item
|
21
26
|
when 'Catalog'
|
@@ -0,0 +1,56 @@
|
|
1
|
+
|
2
|
+
module Fog
|
3
|
+
module Parsers
|
4
|
+
module Terremark
|
5
|
+
module Shared
|
6
|
+
|
7
|
+
class GetKeysList < Fog::Parsers::Base
|
8
|
+
|
9
|
+
def reset
|
10
|
+
@response = { 'Keys' => [] }
|
11
|
+
@key = {}
|
12
|
+
end
|
13
|
+
|
14
|
+
def start_element(name, attributes)
|
15
|
+
super
|
16
|
+
case name
|
17
|
+
when 'Id', 'Href', 'Name', 'IsDefault','FingerPrint'
|
18
|
+
data = {}
|
19
|
+
until attributes.empty?
|
20
|
+
data[attributes.shift] = attributes.shift
|
21
|
+
end
|
22
|
+
@key[name] = data
|
23
|
+
when 'Key'
|
24
|
+
until attributes.empty?
|
25
|
+
@key[attributes.shift] = attributes.shift
|
26
|
+
end
|
27
|
+
when 'Keys'
|
28
|
+
keys_list = {}
|
29
|
+
until attributes.empty?
|
30
|
+
if attributes.first.is_a?(Array)
|
31
|
+
attribute = attributes.shift
|
32
|
+
keys_list[attribute.first] = attribute.last
|
33
|
+
else
|
34
|
+
keys_list[attributes.shift] = attributes.shift
|
35
|
+
end
|
36
|
+
end
|
37
|
+
@response['href'] = keys_list['href']
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def end_element(name)
|
42
|
+
case name
|
43
|
+
when 'Id', 'Href', 'Name', 'IsDefault','FingerPrint'
|
44
|
+
@key[name] = value
|
45
|
+
when 'Key'
|
46
|
+
@response['Keys'] << @key
|
47
|
+
@key = {}
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|