fog 1.9.0 → 1.10.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -1
- data/README.md +1 -1
- data/changelog.txt +743 -0
- data/fog.gemspec +3 -5
- data/lib/fog/aws.rb +1 -0
- data/lib/fog/aws/credential_fetcher.rb +1 -1
- data/lib/fog/aws/data_pipeline.rb +114 -0
- data/lib/fog/aws/dynamodb.rb +1 -1
- data/lib/fog/aws/models/compute/flavors.rb +1 -1
- data/lib/fog/aws/models/compute/spot_request.rb +2 -0
- data/lib/fog/aws/models/data_pipeline/pipeline.rb +67 -0
- data/lib/fog/aws/models/data_pipeline/pipelines.rb +36 -0
- data/lib/fog/aws/parsers/cloud_watch/list_metrics.rb +1 -1
- data/lib/fog/aws/parsers/compute/describe_instances.rb +1 -1
- data/lib/fog/aws/parsers/compute/spot_instance_requests.rb +2 -0
- data/lib/fog/aws/requests/compute/request_spot_instances.rb +1 -0
- data/lib/fog/aws/requests/data_pipeline/activate_pipeline.rb +35 -0
- data/lib/fog/aws/requests/data_pipeline/create_pipeline.rb +41 -0
- data/lib/fog/aws/requests/data_pipeline/delete_pipeline.rb +35 -0
- data/lib/fog/aws/requests/data_pipeline/describe_pipelines.rb +36 -0
- data/lib/fog/aws/requests/data_pipeline/list_pipelines.rb +36 -0
- data/lib/fog/aws/requests/data_pipeline/put_pipeline_definition.rb +72 -0
- data/lib/fog/aws/requests/rds/describe_db_instances.rb +8 -9
- data/lib/fog/aws/requests/storage/get_service.rb +1 -2
- data/lib/fog/aws/requests/storage/list_multipart_uploads.rb +3 -3
- data/lib/fog/aws/requests/storage/put_bucket_policy.rb +2 -2
- data/lib/fog/aws/storage.rb +1 -1
- data/lib/fog/bin.rb +2 -1
- data/lib/fog/bin/aws.rb +4 -0
- data/lib/fog/bin/bluebox.rb +2 -0
- data/lib/fog/bin/dreamhost.rb +31 -0
- data/lib/fog/bin/hp.rb +7 -0
- data/lib/fog/bin/internet_archive.rb +34 -0
- data/lib/fog/bin/openstack.rb +17 -2
- data/lib/fog/bluebox.rb +1 -0
- data/lib/fog/bluebox/blb.rb +85 -0
- data/lib/fog/bluebox/models/blb/lb_application.rb +32 -0
- data/lib/fog/bluebox/models/blb/lb_applications.rb +26 -0
- data/lib/fog/bluebox/models/blb/lb_backend.rb +22 -0
- data/lib/fog/bluebox/models/blb/lb_backends.rb +30 -0
- data/lib/fog/bluebox/models/blb/lb_service.rb +35 -0
- data/lib/fog/bluebox/models/blb/lb_services.rb +29 -0
- data/lib/fog/bluebox/requests/blb/add_machine_to_lb_application.rb +33 -0
- data/lib/fog/bluebox/requests/blb/add_machine_to_lb_backend.rb +31 -0
- data/lib/fog/bluebox/requests/blb/get_lb_application.rb +33 -0
- data/lib/fog/bluebox/requests/blb/get_lb_applications.rb +31 -0
- data/lib/fog/bluebox/requests/blb/get_lb_backend.rb +36 -0
- data/lib/fog/bluebox/requests/blb/get_lb_backends.rb +36 -0
- data/lib/fog/bluebox/requests/blb/get_lb_machine.rb +35 -0
- data/lib/fog/bluebox/requests/blb/get_lb_machines.rb +35 -0
- data/lib/fog/bluebox/requests/blb/get_lb_service.rb +36 -0
- data/lib/fog/bluebox/requests/blb/get_lb_services.rb +36 -0
- data/lib/fog/bluebox/requests/blb/remove_machine_from_lb_backend.rb +28 -0
- data/lib/fog/bluebox/requests/blb/update_lb_backend_machine.rb +29 -0
- data/lib/fog/brightbox/compute.rb +1 -0
- data/lib/fog/brightbox/requests/compute/create_firewall_policy.rb +1 -0
- data/lib/fog/brightbox/requests/compute/update_firewall_policy.rb +25 -0
- data/lib/fog/brightbox/requests/compute/update_server.rb +1 -0
- data/lib/fog/cdn.rb +5 -12
- data/lib/fog/compute.rb +7 -68
- data/lib/fog/core/errors.rb +5 -1
- data/lib/fog/core/scp.rb +1 -0
- data/lib/fog/core/ssh.rb +1 -0
- data/lib/fog/dns.rb +7 -27
- data/lib/fog/dreamhost.rb +11 -0
- data/lib/fog/dreamhost/dns.rb +86 -0
- data/lib/fog/dreamhost/examples/dns/getting_started.md +105 -0
- data/lib/fog/dreamhost/models/dns/record.rb +35 -0
- data/lib/fog/dreamhost/models/dns/records.rb +38 -0
- data/lib/fog/dreamhost/models/dns/zone.rb +59 -0
- data/lib/fog/dreamhost/models/dns/zones.rb +41 -0
- data/lib/fog/dreamhost/requests/dns/create_record.rb +32 -0
- data/lib/fog/dreamhost/requests/dns/delete_record.rb +31 -0
- data/lib/fog/dreamhost/requests/dns/list_records.rb +25 -0
- data/lib/fog/ecloud/models/compute/detached_disks.rb +1 -5
- data/lib/fog/ecloud/models/compute/internet_services.rb +1 -5
- data/lib/fog/ecloud/models/compute/nodes.rb +1 -5
- data/lib/fog/ecloud/models/compute/public_ips.rb +1 -5
- data/lib/fog/ecloud/models/compute/servers.rb +2 -6
- data/lib/fog/ecloud/requests/compute/get_detached_disk.rb +1 -1
- data/lib/fog/ecloud/requests/compute/get_internet_service.rb +1 -1
- data/lib/fog/ecloud/requests/compute/get_node.rb +1 -1
- data/lib/fog/ecloud/requests/compute/get_public_ip.rb +1 -1
- data/lib/fog/ecloud/requests/compute/get_server.rb +1 -1
- data/lib/fog/ecloud/requests/compute/virtual_machine_create_from_template.rb +1 -1
- data/lib/fog/glesys/compute.rb +5 -1
- data/lib/fog/glesys/models/compute/ip.rb +47 -46
- data/lib/fog/glesys/models/compute/ips.rb +95 -12
- data/lib/fog/glesys/models/compute/server.rb +66 -5
- data/lib/fog/glesys/models/compute/servers.rb +7 -1
- data/lib/fog/glesys/models/compute/template.rb +8 -16
- data/lib/fog/glesys/models/compute/templates.rb +23 -5
- data/lib/fog/glesys/requests/compute/ip_details.rb +2 -2
- data/lib/fog/glesys/requests/compute/server_details.rb +2 -2
- data/lib/fog/glesys/requests/compute/template_list.rb +2 -2
- data/lib/fog/hp.rb +56 -26
- data/lib/fog/hp/CHANGELOG.hp +113 -0
- data/lib/fog/hp/README_HP.rdoc +7 -6
- data/lib/fog/hp/block_storage.rb +169 -0
- data/lib/fog/hp/cdn.rb +29 -7
- data/lib/fog/hp/compute.rb +88 -17
- data/lib/fog/hp/models/block_storage/bootable_volumes.rb +28 -0
- data/lib/fog/hp/models/block_storage/snapshot.rb +56 -0
- data/lib/fog/hp/models/block_storage/snapshots.rb +29 -0
- data/lib/fog/hp/models/block_storage/volume.rb +102 -0
- data/lib/fog/hp/models/block_storage/volumes.rb +28 -0
- data/lib/fog/hp/models/compute/address.rb +0 -1
- data/lib/fog/hp/models/compute/image.rb +43 -4
- data/lib/fog/hp/models/compute/images.rb +0 -5
- data/lib/fog/hp/models/compute/key_pair.rb +0 -5
- data/lib/fog/hp/models/compute/meta.rb +29 -0
- data/lib/fog/hp/models/compute/metadata.rb +79 -0
- data/lib/fog/hp/models/compute/server.rb +84 -20
- data/lib/fog/hp/models/meta_parent.rb +33 -0
- data/lib/fog/hp/models/storage/directories.rb +34 -9
- data/lib/fog/hp/models/storage/directory.rb +111 -26
- data/lib/fog/hp/models/storage/file.rb +10 -0
- data/lib/fog/hp/models/storage/files.rb +8 -0
- data/lib/fog/hp/models/storage/shared_directories.rb +55 -0
- data/lib/fog/hp/models/storage/shared_directory.rb +39 -0
- data/lib/fog/hp/models/storage/shared_file.rb +67 -0
- data/lib/fog/hp/models/storage/shared_files.rb +64 -0
- data/lib/fog/hp/requests/block_storage/create_snapshot.rb +76 -0
- data/lib/fog/hp/requests/block_storage/create_volume.rb +87 -0
- data/lib/fog/hp/requests/block_storage/delete_snapshot.rb +38 -0
- data/lib/fog/hp/requests/block_storage/delete_volume.rb +38 -0
- data/lib/fog/hp/requests/block_storage/get_bootable_volume_details.rb +59 -0
- data/lib/fog/hp/requests/block_storage/get_snapshot_details.rb +54 -0
- data/lib/fog/hp/requests/block_storage/get_volume_details.rb +58 -0
- data/lib/fog/hp/requests/block_storage/list_bootable_volumes.rb +53 -0
- data/lib/fog/hp/requests/block_storage/list_snapshots.rb +48 -0
- data/lib/fog/hp/requests/block_storage/list_volumes.rb +52 -0
- data/lib/fog/hp/requests/compute/attach_volume.rb +78 -0
- data/lib/fog/hp/requests/compute/create_image.rb +5 -8
- data/lib/fog/hp/requests/compute/create_persistent_server.rb +168 -0
- data/lib/fog/hp/requests/compute/create_server.rb +36 -20
- data/lib/fog/hp/requests/compute/delete_meta.rb +55 -0
- data/lib/fog/hp/requests/compute/delete_security_group_rule.rb +4 -4
- data/lib/fog/hp/requests/compute/detach_volume.rb +47 -0
- data/lib/fog/hp/requests/compute/get_console_output.rb +43 -0
- data/lib/fog/hp/requests/compute/get_meta.rb +57 -0
- data/lib/fog/hp/requests/compute/get_windows_password.rb +43 -0
- data/lib/fog/hp/requests/compute/list_metadata.rb +56 -0
- data/lib/fog/hp/requests/compute/list_server_volumes.rb +49 -0
- data/lib/fog/hp/requests/compute/set_metadata.rb +60 -0
- data/lib/fog/hp/requests/compute/update_meta.rb +61 -0
- data/lib/fog/hp/requests/compute/update_metadata.rb +60 -0
- data/lib/fog/hp/requests/storage/delete_shared_object.rb +38 -0
- data/lib/fog/hp/requests/storage/get_object.rb +12 -10
- data/lib/fog/hp/requests/storage/get_object_temp_url.rb +31 -0
- data/lib/fog/hp/requests/storage/get_shared_container.rb +75 -0
- data/lib/fog/hp/requests/storage/get_shared_object.rb +66 -0
- data/lib/fog/hp/requests/storage/head_container.rb +1 -0
- data/lib/fog/hp/requests/storage/head_object.rb +1 -0
- data/lib/fog/hp/requests/storage/head_shared_container.rb +45 -0
- data/lib/fog/hp/requests/storage/head_shared_object.rb +39 -0
- data/lib/fog/hp/requests/storage/put_container.rb +6 -6
- data/lib/fog/hp/requests/storage/put_object.rb +12 -1
- data/lib/fog/hp/requests/storage/put_shared_object.rb +85 -0
- data/lib/fog/hp/storage.rb +175 -33
- data/lib/fog/identity.rb +5 -4
- data/lib/fog/image.rb +5 -6
- data/lib/fog/internet_archive.rb +290 -0
- data/lib/fog/internet_archive/models/storage/directories.rb +43 -0
- data/lib/fog/internet_archive/models/storage/directory.rb +126 -0
- data/lib/fog/internet_archive/models/storage/file.rb +286 -0
- data/lib/fog/internet_archive/models/storage/files.rb +122 -0
- data/lib/fog/internet_archive/models/storage/version.rb +36 -0
- data/lib/fog/internet_archive/models/storage/versions.rb +38 -0
- data/lib/fog/internet_archive/parsers/storage/access_control_list.rb +46 -0
- data/lib/fog/internet_archive/parsers/storage/complete_multipart_upload.rb +24 -0
- data/lib/fog/internet_archive/parsers/storage/copy_object.rb +22 -0
- data/lib/fog/internet_archive/parsers/storage/cors_configuration.rb +41 -0
- data/lib/fog/internet_archive/parsers/storage/delete_multiple_objects.rb +50 -0
- data/lib/fog/internet_archive/parsers/storage/get_bucket.rb +62 -0
- data/lib/fog/internet_archive/parsers/storage/get_bucket_lifecycle.rb +66 -0
- data/lib/fog/internet_archive/parsers/storage/get_bucket_location.rb +20 -0
- data/lib/fog/internet_archive/parsers/storage/get_bucket_logging.rb +40 -0
- data/lib/fog/internet_archive/parsers/storage/get_bucket_object_versions.rb +88 -0
- data/lib/fog/internet_archive/parsers/storage/get_bucket_versioning.rb +24 -0
- data/lib/fog/internet_archive/parsers/storage/get_bucket_website.rb +26 -0
- data/lib/fog/internet_archive/parsers/storage/get_request_payment.rb +20 -0
- data/lib/fog/internet_archive/parsers/storage/get_service.rb +32 -0
- data/lib/fog/internet_archive/parsers/storage/initiate_multipart_upload.rb +24 -0
- data/lib/fog/internet_archive/parsers/storage/list_multipart_uploads.rb +56 -0
- data/lib/fog/internet_archive/parsers/storage/list_parts.rb +40 -0
- data/lib/fog/internet_archive/requests/storage/abort_multipart_upload.rb +28 -0
- data/lib/fog/internet_archive/requests/storage/acl_utils.rb +62 -0
- data/lib/fog/internet_archive/requests/storage/complete_multipart_upload.rb +48 -0
- data/lib/fog/internet_archive/requests/storage/copy_object.rb +81 -0
- data/lib/fog/internet_archive/requests/storage/cors_utils.rb +41 -0
- data/lib/fog/internet_archive/requests/storage/delete_bucket.rb +47 -0
- data/lib/fog/internet_archive/requests/storage/delete_bucket_cors.rb +29 -0
- data/lib/fog/internet_archive/requests/storage/delete_bucket_lifecycle.rb +27 -0
- data/lib/fog/internet_archive/requests/storage/delete_bucket_policy.rb +29 -0
- data/lib/fog/internet_archive/requests/storage/delete_bucket_website.rb +29 -0
- data/lib/fog/internet_archive/requests/storage/delete_multiple_objects.rb +167 -0
- data/lib/fog/internet_archive/requests/storage/delete_object.rb +118 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket.rb +112 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket_acl.rb +69 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket_cors.rb +65 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket_lifecycle.rb +38 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket_location.rb +58 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket_logging.rb +47 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket_object_versions.rb +162 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket_policy.rb +34 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket_versioning.rb +69 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket_website.rb +40 -0
- data/lib/fog/internet_archive/requests/storage/get_object.rb +188 -0
- data/lib/fog/internet_archive/requests/storage/get_object_acl.rb +80 -0
- data/lib/fog/internet_archive/requests/storage/get_object_http_url.rb +55 -0
- data/lib/fog/internet_archive/requests/storage/get_object_https_url.rb +37 -0
- data/lib/fog/internet_archive/requests/storage/get_object_torrent.rb +47 -0
- data/lib/fog/internet_archive/requests/storage/get_object_url.rb +55 -0
- data/lib/fog/internet_archive/requests/storage/get_request_payment.rb +49 -0
- data/lib/fog/internet_archive/requests/storage/get_service.rb +55 -0
- data/lib/fog/internet_archive/requests/storage/head_object.rb +66 -0
- data/lib/fog/internet_archive/requests/storage/initiate_multipart_upload.rb +44 -0
- data/lib/fog/internet_archive/requests/storage/list_multipart_uploads.rb +55 -0
- data/lib/fog/internet_archive/requests/storage/list_parts.rb +55 -0
- data/lib/fog/internet_archive/requests/storage/post_object_hidden_fields.rb +38 -0
- data/lib/fog/internet_archive/requests/storage/put_bucket.rb +74 -0
- data/lib/fog/internet_archive/requests/storage/put_bucket_acl.rb +71 -0
- data/lib/fog/internet_archive/requests/storage/put_bucket_cors.rb +49 -0
- data/lib/fog/internet_archive/requests/storage/put_bucket_lifecycle.rb +77 -0
- data/lib/fog/internet_archive/requests/storage/put_bucket_logging.rb +81 -0
- data/lib/fog/internet_archive/requests/storage/put_bucket_policy.rb +28 -0
- data/lib/fog/internet_archive/requests/storage/put_bucket_versioning.rb +75 -0
- data/lib/fog/internet_archive/requests/storage/put_bucket_website.rb +64 -0
- data/lib/fog/internet_archive/requests/storage/put_object.rb +113 -0
- data/lib/fog/internet_archive/requests/storage/put_object_acl.rb +80 -0
- data/lib/fog/internet_archive/requests/storage/put_object_url.rb +48 -0
- data/lib/fog/internet_archive/requests/storage/put_request_payment.rb +49 -0
- data/lib/fog/internet_archive/requests/storage/sync_clock.rb +28 -0
- data/lib/fog/internet_archive/requests/storage/upload_part.rb +41 -0
- data/lib/fog/internet_archive/signaturev4.rb +73 -0
- data/lib/fog/internet_archive/storage.rb +402 -0
- data/lib/fog/joyent/models/compute/server.rb +1 -1
- data/lib/fog/joyent/requests/compute/resize_machine.rb +2 -0
- data/lib/fog/libvirt/models/compute/volume.rb +1 -1
- data/lib/fog/network.rb +5 -6
- data/lib/fog/openstack.rb +10 -0
- data/lib/fog/openstack/compute.rb +11 -4
- data/lib/fog/openstack/identity.rb +5 -2
- data/lib/fog/openstack/models/compute/images.rb +2 -1
- data/lib/fog/openstack/models/compute/metadata.rb +4 -5
- data/lib/fog/openstack/models/compute/server.rb +36 -21
- data/lib/fog/openstack/models/identity/role.rb +1 -1
- data/lib/fog/openstack/models/network/floating_ip.rb +1 -1
- data/lib/fog/openstack/models/network/floating_ips.rb +2 -2
- data/lib/fog/openstack/models/network/network.rb +8 -0
- data/lib/fog/openstack/models/storage/directories.rb +39 -0
- data/lib/fog/openstack/models/storage/directory.rb +50 -0
- data/lib/fog/openstack/models/storage/file.rb +150 -0
- data/lib/fog/openstack/models/storage/files.rb +94 -0
- data/lib/fog/openstack/requests/compute/allocate_address.rb +1 -1
- data/lib/fog/openstack/requests/compute/delete_meta.rb +43 -0
- data/lib/fog/openstack/requests/compute/get_limits.rb +1 -1
- data/lib/fog/openstack/requests/compute/get_snapshot_details.rb +1 -1
- data/lib/fog/openstack/requests/compute/get_volume_details.rb +1 -1
- data/lib/fog/openstack/requests/compute/list_servers.rb +1 -1
- data/lib/fog/openstack/requests/compute/list_tenants.rb +1 -0
- data/lib/fog/openstack/requests/compute/remove_fixed_ip.rb +1 -1
- data/lib/fog/openstack/requests/compute/update_meta.rb +46 -0
- data/lib/fog/openstack/requests/compute/update_server.rb +1 -1
- data/lib/fog/openstack/requests/identity/delete_user_role.rb +2 -2
- data/lib/fog/openstack/requests/identity/get_user_by_name.rb +2 -2
- data/lib/fog/openstack/requests/image/create_image.rb +1 -1
- data/lib/fog/openstack/requests/network/associate_floating_ip.rb +3 -3
- data/lib/fog/openstack/requests/network/create_floating_ip.rb +3 -3
- data/lib/fog/openstack/requests/network/delete_floating_ip.rb +1 -1
- data/lib/fog/openstack/requests/network/disassociate_floating_ip.rb +3 -3
- data/lib/fog/openstack/requests/network/get_floating_ip.rb +1 -1
- data/lib/fog/openstack/requests/network/list_floating_ips.rb +1 -1
- data/lib/fog/openstack/requests/storage/copy_object.rb +27 -0
- data/lib/fog/openstack/requests/storage/delete_container.rb +22 -0
- data/lib/fog/openstack/requests/storage/delete_object.rb +23 -0
- data/lib/fog/openstack/requests/storage/get_container.rb +44 -0
- data/lib/fog/openstack/requests/storage/get_containers.rb +33 -0
- data/lib/fog/openstack/requests/storage/get_object.rb +29 -0
- data/lib/fog/openstack/requests/storage/get_object_https_url.rb +51 -0
- data/lib/fog/openstack/requests/storage/head_container.rb +28 -0
- data/lib/fog/openstack/requests/storage/head_containers.rb +25 -0
- data/lib/fog/openstack/requests/storage/head_object.rb +23 -0
- data/lib/fog/openstack/requests/storage/post_set_meta_temp_url_key.rb +37 -0
- data/lib/fog/openstack/requests/storage/put_container.rb +22 -0
- data/lib/fog/openstack/requests/storage/put_object.rb +30 -0
- data/lib/fog/openstack/requests/storage/put_object_manifest.rb +25 -0
- data/lib/fog/openstack/storage.rb +159 -0
- data/lib/fog/openstack/volume.rb +4 -2
- data/lib/fog/ovirt/compute.rb +1 -0
- data/lib/fog/ovirt/models/compute/server.rb +2 -2
- data/lib/fog/ovirt/models/compute/volume.rb +1 -0
- data/lib/fog/ovirt/requests/compute/get_api_version.rb +16 -0
- data/lib/fog/providers.rb +2 -1
- data/lib/fog/rackspace/block_storage.rb +1 -0
- data/lib/fog/rackspace/cdn.rb +61 -7
- data/lib/fog/rackspace/compute_v2.rb +16 -3
- data/lib/fog/rackspace/databases.rb +4 -3
- data/lib/fog/rackspace/docs/compute_v2.md +663 -0
- data/lib/fog/rackspace/docs/getting_started.md +9 -9
- data/lib/fog/rackspace/examples/README.md +47 -0
- data/lib/fog/rackspace/examples/compute_v2/README.md +47 -0
- data/lib/fog/rackspace/examples/compute_v2/create_image.rb +61 -0
- data/lib/fog/rackspace/examples/compute_v2/create_server.rb +89 -0
- data/lib/fog/rackspace/examples/compute_v2/delete_image.rb +61 -0
- data/lib/fog/rackspace/examples/compute_v2/delete_server.rb +56 -0
- data/lib/fog/rackspace/examples/compute_v2/detach_volume.rb +93 -0
- data/lib/fog/rackspace/examples/compute_v2/resize_server.rb +106 -0
- data/lib/fog/rackspace/examples/compute_v2/server_attachments.rb +69 -0
- data/lib/fog/rackspace/examples/compute_v2/server_metadata.rb +85 -0
- data/lib/fog/rackspace/identity.rb +1 -1
- data/lib/fog/rackspace/load_balancers.rb +2 -2
- data/lib/fog/rackspace/mock_data.rb +114 -96
- data/lib/fog/rackspace/models/compute_v2/attachment.rb +16 -0
- data/lib/fog/rackspace/models/compute_v2/attachments.rb +6 -0
- data/lib/fog/rackspace/models/compute_v2/flavor.rb +18 -0
- data/lib/fog/rackspace/models/compute_v2/flavors.rb +9 -1
- data/lib/fog/rackspace/models/compute_v2/image.rb +52 -7
- data/lib/fog/rackspace/models/compute_v2/images.rb +9 -0
- data/lib/fog/rackspace/models/compute_v2/meta_parent.rb +9 -0
- data/lib/fog/rackspace/models/compute_v2/metadata.rb +30 -7
- data/lib/fog/rackspace/models/compute_v2/metadatum.rb +4 -0
- data/lib/fog/rackspace/models/compute_v2/network.rb +27 -0
- data/lib/fog/rackspace/models/compute_v2/networks.rb +23 -0
- data/lib/fog/rackspace/models/compute_v2/server.rb +235 -24
- data/lib/fog/rackspace/models/compute_v2/servers.rb +19 -1
- data/lib/fog/rackspace/models/dns/zones.rb +35 -2
- data/lib/fog/rackspace/models/identity/credentials.rb +3 -2
- data/lib/fog/rackspace/models/storage/account.rb +24 -0
- data/lib/fog/rackspace/models/storage/directories.rb +3 -0
- data/lib/fog/rackspace/models/storage/directory.rb +68 -39
- data/lib/fog/rackspace/models/storage/file.rb +38 -67
- data/lib/fog/rackspace/models/storage/files.rb +11 -4
- data/lib/fog/rackspace/models/storage/metadata.rb +129 -0
- data/lib/fog/rackspace/requests/cdn/delete_object.rb +37 -0
- data/lib/fog/rackspace/requests/cdn/get_containers.rb +34 -0
- data/lib/fog/rackspace/requests/cdn/head_container.rb +24 -0
- data/lib/fog/rackspace/requests/cdn/post_container.rb +21 -0
- data/lib/fog/rackspace/requests/cdn/put_container.rb +21 -0
- data/lib/fog/rackspace/requests/compute_v2/attach_volume.rb +13 -0
- data/lib/fog/rackspace/requests/compute_v2/change_server_password.rb +7 -0
- data/lib/fog/rackspace/requests/compute_v2/confirm_resize_server.rb +9 -0
- data/lib/fog/rackspace/requests/compute_v2/create_image.rb +9 -5
- data/lib/fog/rackspace/requests/compute_v2/create_network.rb +36 -0
- data/lib/fog/rackspace/requests/compute_v2/create_server.rb +38 -0
- data/lib/fog/rackspace/requests/compute_v2/delete_attachment.rb +5 -0
- data/lib/fog/rackspace/requests/compute_v2/delete_image.rb +2 -4
- data/lib/fog/rackspace/requests/compute_v2/delete_metadata_item.rb +6 -0
- data/lib/fog/rackspace/requests/compute_v2/delete_network.rb +21 -0
- data/lib/fog/rackspace/requests/compute_v2/delete_server.rb +4 -0
- data/lib/fog/rackspace/requests/compute_v2/get_attachment.rb +12 -0
- data/lib/fog/rackspace/requests/compute_v2/get_flavor.rb +14 -0
- data/lib/fog/rackspace/requests/compute_v2/get_image.rb +18 -0
- data/lib/fog/rackspace/requests/compute_v2/get_metadata_item.rb +9 -0
- data/lib/fog/rackspace/requests/compute_v2/get_network.rb +21 -0
- data/lib/fog/rackspace/requests/compute_v2/get_server.rb +32 -0
- data/lib/fog/rackspace/requests/compute_v2/list_addresses.rb +5 -0
- data/lib/fog/rackspace/requests/compute_v2/list_addresses_by_network.rb +12 -0
- data/lib/fog/rackspace/requests/compute_v2/list_attachments.rb +12 -0
- data/lib/fog/rackspace/requests/compute_v2/list_flavors.rb +10 -0
- data/lib/fog/rackspace/requests/compute_v2/list_images.rb +10 -0
- data/lib/fog/rackspace/requests/compute_v2/list_metadata.rb +8 -0
- data/lib/fog/rackspace/requests/compute_v2/list_networks.rb +18 -0
- data/lib/fog/rackspace/requests/compute_v2/list_servers.rb +31 -0
- data/lib/fog/rackspace/requests/compute_v2/reboot_server.rb +5 -0
- data/lib/fog/rackspace/requests/compute_v2/rebuild_server.rb +37 -0
- data/lib/fog/rackspace/requests/compute_v2/resize_server.rb +10 -0
- data/lib/fog/rackspace/requests/compute_v2/revert_resize_server.rb +10 -0
- data/lib/fog/rackspace/requests/compute_v2/set_metadata.rb +9 -0
- data/lib/fog/rackspace/requests/compute_v2/set_metadata_item.rb +10 -0
- data/lib/fog/rackspace/requests/compute_v2/update_metadata.rb +9 -0
- data/lib/fog/rackspace/requests/compute_v2/update_server.rb +9 -0
- data/lib/fog/rackspace/requests/storage/get_object.rb +0 -1
- data/lib/fog/rackspace/requests/storage/put_container.rb +2 -1
- data/lib/fog/rackspace/storage.rb +14 -2
- data/lib/fog/schema/data_validator.rb +154 -0
- data/lib/fog/storage.rb +8 -24
- data/lib/fog/terremark/models/shared/server.rb +5 -3
- data/lib/fog/terremark/parser.rb +14 -13
- data/lib/fog/terremark/parsers/shared/get_catalog.rb +5 -19
- data/lib/fog/terremark/parsers/shared/get_catalog_item.rb +4 -14
- data/lib/fog/terremark/parsers/shared/get_internet_services.rb +1 -1
- data/lib/fog/terremark/parsers/shared/get_keys_list.rb +4 -18
- data/lib/fog/terremark/parsers/shared/get_network_ips.rb +1 -1
- data/lib/fog/terremark/parsers/shared/get_node_services.rb +1 -1
- data/lib/fog/terremark/parsers/shared/get_organization.rb +4 -3
- data/lib/fog/terremark/parsers/shared/get_organizations.rb +3 -2
- data/lib/fog/terremark/parsers/shared/get_public_ips.rb +1 -1
- data/lib/fog/terremark/parsers/shared/get_tasks_list.rb +4 -17
- data/lib/fog/terremark/parsers/shared/get_vapp_template.rb +3 -14
- data/lib/fog/terremark/parsers/shared/get_vdc.rb +6 -38
- data/lib/fog/terremark/parsers/shared/instantiate_vapp_template.rb +3 -14
- data/lib/fog/terremark/parsers/shared/internet_service.rb +2 -5
- data/lib/fog/terremark/parsers/shared/network.rb +3 -11
- data/lib/fog/terremark/parsers/shared/node_service.rb +1 -1
- data/lib/fog/terremark/parsers/shared/public_ip.rb +1 -1
- data/lib/fog/terremark/parsers/shared/task.rb +3 -14
- data/lib/fog/terremark/parsers/shared/vapp.rb +3 -14
- data/lib/fog/vcloud/compute.rb +1 -0
- data/lib/fog/vcloud/models/compute/server.rb +15 -2
- data/lib/fog/vcloud/models/compute/vapp.rb +11 -0
- data/lib/fog/vcloud/requests/compute/configure_vm_network.rb +37 -0
- data/lib/fog/vcloud/requests/compute/instantiate_vapp_template.rb +8 -4
- data/lib/fog/version.rb +1 -1
- data/lib/fog/volume.rb +6 -6
- data/lib/fog/vsphere/requests/compute/create_vm.rb +18 -3
- data/lib/fog/vsphere/requests/compute/list_vm_interfaces.rb +1 -1
- data/lib/fog/vsphere/requests/compute/vm_reconfig_hardware.rb +1 -1
- data/tests/aws/models/data_pipeline/pipeline_tests.rb +8 -0
- data/tests/aws/models/data_pipeline/pipelines_tests.rb +8 -0
- data/tests/aws/models/rds/server_tests.rb +10 -9
- data/tests/aws/requests/compute/image_tests.rb +2 -2
- data/tests/aws/requests/compute/security_group_tests.rb +1 -1
- data/tests/aws/requests/compute/spot_instance_tests.rb +3 -2
- data/tests/aws/requests/data_pipeline/helper.rb +44 -0
- data/tests/aws/requests/data_pipeline/pipeline_tests.rb +54 -0
- data/tests/aws/requests/rds/instance_tests.rb +8 -5
- data/tests/bluebox/requests/blb/helper.rb +64 -0
- data/tests/bluebox/requests/blb/lb_tests.rb +75 -0
- data/tests/brightbox/requests/compute/firewall_policy_tests.rb +7 -0
- data/tests/brightbox/requests/compute/helper.rb +4 -2
- data/tests/compute/helper.rb +8 -0
- data/tests/core/user_agent_tests.rb +6 -0
- data/tests/dreamhost/README.md +56 -0
- data/tests/dreamhost/dns_tests.rb +20 -0
- data/tests/dreamhost/helper.rb +19 -0
- data/tests/dreamhost/models/dns/record_tests.rb +73 -0
- data/tests/dreamhost/models/dns/records_tests.rb +29 -0
- data/tests/dreamhost/models/dns/zone_tests.rb +62 -0
- data/tests/dreamhost/models/dns/zones_tests.rb +29 -0
- data/tests/dreamhost/requests/dns/create_record_tests.rb +39 -0
- data/tests/dreamhost/requests/dns/delete_record_tests.rb +26 -0
- data/tests/dreamhost/requests/dns/list_records_tests.rb +31 -0
- data/tests/glesys/requests/compute/helper.rb +5 -5
- data/tests/helper.rb +1 -1
- data/tests/helpers/formats_helper.rb +63 -50
- data/tests/helpers/formats_helper_tests.rb +87 -36
- data/tests/helpers/mock_helper.rb +4 -1
- data/tests/helpers/schema_validator_tests.rb +107 -0
- data/tests/hp/models/block_storage/bootable_volume_tests.rb +23 -0
- data/tests/hp/models/block_storage/snapshot_tests.rb +23 -0
- data/tests/hp/models/block_storage/volume_tests.rb +21 -0
- 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/metadata_image_tests.rb +60 -0
- data/tests/hp/models/compute/metadata_server_tests.rb +54 -0
- data/tests/hp/models/compute/security_group_tests.rb +3 -1
- data/tests/hp/models/compute/security_groups_tests.rb +1 -1
- data/tests/hp/models/storage/directories_tests.rb +23 -0
- data/tests/hp/models/storage/directory_tests.rb +62 -0
- data/tests/hp/models/storage/file_tests.rb +44 -0
- data/tests/hp/models/storage/files_tests.rb +38 -0
- data/tests/hp/requests/block_storage/bootable_volume_tests.rb +78 -0
- data/tests/hp/requests/block_storage/snapshot_tests.rb +56 -0
- data/tests/hp/requests/block_storage/volume_tests.rb +94 -0
- data/tests/hp/requests/cdn/container_tests.rb +1 -1
- data/tests/hp/requests/compute/address_tests.rb +5 -6
- 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/metadata_tests.rb +70 -0
- data/tests/hp/requests/compute/persistent_server_tests.rb +66 -0
- 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 +5 -6
- data/tests/hp/requests/compute/server_volume_tests.rb +76 -0
- data/tests/hp/requests/storage/container_tests.rb +1 -1
- data/tests/hp/requests/storage/object_tests.rb +9 -1
- data/tests/hp/user_agent_tests.rb +13 -0
- data/tests/internet_archive/models/storage/directory_tests.rb +51 -0
- data/tests/internet_archive/models/storage/file_tests.rb +80 -0
- data/tests/internet_archive/models/storage/files_tests.rb +56 -0
- data/tests/internet_archive/models/storage/url_tests.rb +28 -0
- data/tests/internet_archive/models/storage/version_tests.rb +52 -0
- data/tests/internet_archive/models/storage/versions_tests.rb +56 -0
- data/tests/internet_archive/requests/storage/acl_utils_tests.rb +209 -0
- data/tests/internet_archive/requests/storage/bucket_tests.rb +328 -0
- data/tests/internet_archive/requests/storage/cors_utils_tests.rb +108 -0
- data/tests/internet_archive/requests/storage/multipart_upload_tests.rb +132 -0
- data/tests/internet_archive/requests/storage/object_tests.rb +166 -0
- data/tests/internet_archive/requests/storage/versioning_tests.rb +258 -0
- data/tests/internet_archive/signaturev4_tests.rb +41 -0
- data/tests/internet_archive/signed_params_tests.rb +5 -0
- data/tests/openstack/models/compute/images_tests.rb +14 -0
- data/tests/openstack/models/compute/server_tests.rb +42 -1
- data/tests/openstack/models/identity/roles_tests.rb +1 -0
- data/tests/openstack/models/identity/user_tests.rb +2 -2
- data/tests/openstack/models/network/network_tests.rb +21 -1
- data/tests/openstack/models/storage/file_tests.rb +178 -0
- data/tests/openstack/requests/compute/limit_tests.rb +1 -1
- data/tests/openstack/requests/compute/tenant_tests.rb +2 -2
- data/tests/openstack/requests/identity/ec2_credentials_tests.rb +7 -4
- data/tests/openstack/requests/identity/helper.rb +17 -0
- data/tests/openstack/requests/identity/role_tests.rb +6 -0
- data/tests/openstack/requests/identity/tenant_tests.rb +14 -12
- data/tests/openstack/requests/identity/user_tests.rb +9 -5
- data/tests/openstack/requests/storage/container_tests.rb +64 -0
- data/tests/openstack/requests/storage/large_object_tests.rb +47 -0
- data/tests/openstack/requests/storage/object_tests.rb +84 -0
- data/tests/openstack/volume_tests.rb +15 -0
- data/tests/rackspace/cdn_tests.rb +78 -0
- data/tests/rackspace/helper.rb +9 -0
- data/tests/rackspace/models/compute_v2/flavors_tests.rb +1 -1
- data/tests/rackspace/models/compute_v2/image_tests.rb +2 -4
- data/tests/rackspace/models/compute_v2/images_tests.rb +1 -1
- data/tests/rackspace/models/compute_v2/metadata_tests.rb +5 -3
- data/tests/rackspace/models/compute_v2/network_tests.rb +10 -0
- data/tests/rackspace/models/compute_v2/networks_tests.rb +10 -0
- data/tests/rackspace/models/compute_v2/server_tests.rb +8 -7
- data/tests/rackspace/models/compute_v2/servers_tests.rb +5 -7
- data/tests/rackspace/models/dns/zones_tests.rb +22 -0
- data/tests/rackspace/models/identity/credentials_tests.rb +14 -5
- data/tests/rackspace/models/storage/account_tests.rb +28 -0
- data/tests/rackspace/models/storage/directories_tests.rb +29 -0
- data/tests/rackspace/models/storage/directory_tests.rb +141 -0
- data/tests/rackspace/models/storage/file_tests.rb +86 -11
- data/tests/rackspace/models/storage/metadata_tests.rb +174 -0
- data/tests/rackspace/requests/cdn/cdn_tests.rb +76 -0
- data/tests/rackspace/requests/compute/image_tests.rb +2 -2
- data/tests/rackspace/requests/compute_v2/image_tests.rb +6 -6
- data/tests/rackspace/requests/compute_v2/network_tests.rb +49 -0
- data/tests/rackspace/requests/identity/user_tests.rb +0 -4
- data/tests/rackspace/requests/storage/container_tests.rb +8 -1
- data/tests/rackspace/storage_tests.rb +8 -0
- data/tests/storage/helper.rb +3 -0
- metadata +341 -40
- data/docs/storage/aws.markdown +0 -21
- data/lib/fog/bin/virtual_box.rb +0 -57
- data/lib/fog/rackspace/docs/cloud_servers.md +0 -65
- data/lib/fog/rackspace/requests/identity/get_credentials.rb +0 -15
- data/lib/fog/virtual_box.rb +0 -11
- data/lib/fog/virtual_box/compute.rb +0 -59
- data/lib/fog/virtual_box/models/compute/medium.rb +0 -87
- data/lib/fog/virtual_box/models/compute/medium_format.rb +0 -34
- data/lib/fog/virtual_box/models/compute/mediums.rb +0 -32
- data/lib/fog/virtual_box/models/compute/nat_engine.rb +0 -65
- data/lib/fog/virtual_box/models/compute/nat_redirect.rb +0 -91
- data/lib/fog/virtual_box/models/compute/nat_redirects.rb +0 -41
- data/lib/fog/virtual_box/models/compute/network_adapter.rb +0 -82
- data/lib/fog/virtual_box/models/compute/network_adapters.rb +0 -42
- data/lib/fog/virtual_box/models/compute/server.rb +0 -199
- data/lib/fog/virtual_box/models/compute/servers.rb +0 -41
- data/lib/fog/virtual_box/models/compute/storage_controller.rb +0 -83
- data/lib/fog/virtual_box/models/compute/storage_controllers.rb +0 -38
@@ -4,8 +4,17 @@ module Fog
|
|
4
4
|
module Compute
|
5
5
|
class RackspaceV2
|
6
6
|
class Attachment < Fog::Model
|
7
|
+
|
8
|
+
# @!attribute [r] server_id
|
9
|
+
# @return [String] The server id
|
7
10
|
attribute :server_id, :aliases => 'serverId'
|
11
|
+
|
12
|
+
# @!attribute [r] volume_id
|
13
|
+
# @return [String] The volume id
|
8
14
|
attribute :volume_id, :aliases => 'volumeId'
|
15
|
+
|
16
|
+
# @!attribute [r] device
|
17
|
+
# @return [String]device name of the device /dev/xvd[a-p]
|
9
18
|
attribute :device
|
10
19
|
|
11
20
|
def initialize(new_attributes = {})
|
@@ -14,6 +23,10 @@ module Fog
|
|
14
23
|
self
|
15
24
|
end
|
16
25
|
|
26
|
+
# Attaches volume to volume to server.
|
27
|
+
# Requires :server_id, :volume_id, and device to be populated
|
28
|
+
# @return [Boolean] true if volume is attaching
|
29
|
+
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Attach_Volume_to_Server.html
|
17
30
|
def save
|
18
31
|
requires :server_id, :volume_id, :device
|
19
32
|
data = service.attach_volume(server_id, volume_id, device)
|
@@ -21,6 +34,9 @@ module Fog
|
|
21
34
|
true
|
22
35
|
end
|
23
36
|
|
37
|
+
# Detaches volume from server
|
38
|
+
# @return [Boolean] true if volume is detaching
|
39
|
+
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Delete_Volume_Attachment.html
|
24
40
|
def destroy
|
25
41
|
requires :server_id, :volume_id
|
26
42
|
service.delete_attachment(server_id, volume_id)
|
@@ -10,11 +10,17 @@ module Fog
|
|
10
10
|
|
11
11
|
attr_accessor :server
|
12
12
|
|
13
|
+
# Retrieves attachments belonging to server
|
14
|
+
# @return [Array<Fog::Compute::RackspaceV2::Attachment>] list of attachments
|
15
|
+
# @see Server#attachments
|
13
16
|
def all
|
14
17
|
data = service.list_attachments(server.id).body['volumeAttachments']
|
15
18
|
load(data)
|
16
19
|
end
|
17
20
|
|
21
|
+
# Retrieves attachment belonging to server
|
22
|
+
# @param [String] volume_id
|
23
|
+
# @return [Fog::Compute::RackspaceV2::Attachment] attachment for volume id
|
18
24
|
def get(volume_id)
|
19
25
|
data = service.get_attachment(server.id, volume_id).body['volumeAttachment']
|
20
26
|
data && new(data)
|
@@ -4,12 +4,30 @@ module Fog
|
|
4
4
|
module Compute
|
5
5
|
class RackspaceV2
|
6
6
|
class Flavor < Fog::Model
|
7
|
+
|
8
|
+
# @!attribute [r] id
|
9
|
+
# @return [String] The flavor id
|
7
10
|
identity :id
|
8
11
|
|
12
|
+
|
13
|
+
# @!attribute [r] name
|
14
|
+
# @return [String] flavor name
|
9
15
|
attribute :name
|
16
|
+
|
17
|
+
# @!attribute [r] rame
|
18
|
+
# @return [Fixnum] ram in MB
|
10
19
|
attribute :ram
|
20
|
+
|
21
|
+
# @!attribute [r] disk
|
22
|
+
# @return [String] disk space in GB
|
11
23
|
attribute :disk
|
24
|
+
|
25
|
+
# @!attribute [r] vcpus
|
26
|
+
# @return [Fixnum] number of virtual CPUs
|
12
27
|
attribute :vcpus
|
28
|
+
|
29
|
+
# @!attribute [r] links
|
30
|
+
# @return [Array] flavor links.
|
13
31
|
attribute :links
|
14
32
|
end
|
15
33
|
end
|
@@ -8,12 +8,20 @@ module Fog
|
|
8
8
|
|
9
9
|
model Fog::Compute::RackspaceV2::Flavor
|
10
10
|
|
11
|
+
# Retrieves information for all available flavors
|
12
|
+
# @return [Array<Fog::Compute::RackspaceV2::Flavor>] list of flavors
|
13
|
+
# @note Fog's currentl implementation only returns 1000 flavors.
|
14
|
+
# @note Fog does not retrieve all flavor details. Please use #get to retrieve all details for a specific flavor.
|
11
15
|
def all
|
12
16
|
data = service.list_flavors.body['flavors']
|
13
17
|
load(data)
|
14
18
|
end
|
15
19
|
|
16
|
-
|
20
|
+
# Retrieve image
|
21
|
+
# @param [String] flavor_id id of flavor
|
22
|
+
# @return [Fog::Compute::RackspaceV2::Flavor] flavor
|
23
|
+
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Get_Flavor_Details-d1e4317.html
|
24
|
+
def get(flavor_id)
|
17
25
|
data = service.get_flavor(flavor_id).body['flavor']
|
18
26
|
new(data)
|
19
27
|
rescue Fog::Compute::RackspaceV2::NotFound
|
@@ -10,42 +10,86 @@ module Fog
|
|
10
10
|
ERROR = 'ERROR'
|
11
11
|
DELETED = 'DELETED'
|
12
12
|
|
13
|
+
# @!attribute [r] id
|
14
|
+
# @return [String] The server id
|
13
15
|
identity :id
|
14
16
|
|
17
|
+
# @!attribute [r] name
|
18
|
+
# @return [String] The image name.
|
15
19
|
attribute :name
|
20
|
+
|
21
|
+
# @!attribute [r] created
|
22
|
+
# @return [String] The time stamp for the creation date.
|
16
23
|
attribute :created
|
24
|
+
|
25
|
+
# @!attribute [r] updated
|
26
|
+
# @return [String] The time stamp for the last update.
|
17
27
|
attribute :updated
|
28
|
+
|
29
|
+
# @!attribute [r] state
|
30
|
+
# @return [String] image status.
|
18
31
|
attribute :state, :aliases => 'status'
|
32
|
+
|
33
|
+
# @!attribute [r] user_id
|
34
|
+
# @return [String] The user Id.
|
19
35
|
attribute :user_id
|
36
|
+
|
37
|
+
# @!attribute [r] tenant_id
|
38
|
+
# @return [String] The tenant Id.
|
20
39
|
attribute :tenant_id
|
40
|
+
|
41
|
+
# @!attribute [r] progress
|
42
|
+
# @return [Fixnum] The build completion progress, as a percentage. Value is from 0 to 100.
|
21
43
|
attribute :progress
|
44
|
+
|
22
45
|
attribute :minDisk
|
23
46
|
attribute :minRam
|
47
|
+
|
48
|
+
# @!attribute [rw] disk_config
|
49
|
+
# @return [String<AUTO, MANUAL>] The disk configuration value.
|
50
|
+
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/ch_extensions.html#diskconfig_attribute
|
51
|
+
#
|
52
|
+
# The disk configuration value.
|
53
|
+
# * AUTO - The server is built with a single partition the size of the target flavor disk. The file system is automatically adjusted to fit the entire partition.
|
54
|
+
# This keeps things simple and automated. AUTO is valid only for images and servers with a single partition that use the EXT3 file system.
|
55
|
+
# This is the default setting for applicable Rackspace base images.
|
56
|
+
#
|
57
|
+
# * MANUAL - The server is built using whatever partition scheme and file system is in the source image. If the target flavor disk is larger,
|
58
|
+
# the remaining disk space is left unpartitioned. This enables images to have non-EXT3 file systems, multiple partitions,
|
59
|
+
# and so on, and enables you to manage the disk configuration.
|
24
60
|
attribute :disk_config, :aliases => 'OS-DCF:diskConfig'
|
61
|
+
|
62
|
+
# @!attribute [r] links
|
63
|
+
# @return [Array] image links.
|
25
64
|
attribute :links
|
26
|
-
|
27
|
-
ignore_attributes :metadata
|
28
|
-
|
65
|
+
|
29
66
|
def initialize(attributes={})
|
30
|
-
@
|
67
|
+
@service = attributes[:service]
|
31
68
|
super
|
32
69
|
end
|
33
70
|
|
71
|
+
# Image metadata
|
72
|
+
# @return [Fog::Compute::RackspaceV2::Metadata] Collection of Fog::Compute::RackspaceV2::Metadatum objects containing metadata key value pairs.
|
34
73
|
def metadata
|
35
|
-
raise "Please save image before accessing metadata" unless identity
|
36
74
|
@metadata ||= begin
|
37
75
|
Fog::Compute::RackspaceV2::Metadata.new({
|
38
|
-
:
|
76
|
+
:service => service,
|
39
77
|
:parent => self
|
40
78
|
})
|
41
79
|
end
|
42
80
|
end
|
43
81
|
|
82
|
+
# Set server metadata
|
83
|
+
# @param [Hash] hash contains key value pairs
|
44
84
|
def metadata=(hash={})
|
45
|
-
raise "Please save image before accessing metadata" unless identity
|
46
85
|
metadata.from_hash(hash)
|
47
86
|
end
|
48
87
|
|
88
|
+
# Is image is in ready state
|
89
|
+
# @param [String] ready_state By default state is ACTIVE
|
90
|
+
# @param [Array,String] error_states By default state is ERROR
|
91
|
+
# @return [Boolean] returns true if server is in a ready state
|
92
|
+
# @raise [RuntimeException] if server state is an error state
|
49
93
|
def ready?(ready_state = ACTIVE, error_states=[ERROR])
|
50
94
|
if error_states
|
51
95
|
error_states = Array(error_states)
|
@@ -55,6 +99,7 @@ module Fog
|
|
55
99
|
end
|
56
100
|
|
57
101
|
|
102
|
+
# Destroy image
|
58
103
|
def destroy
|
59
104
|
requires :identity
|
60
105
|
service.delete_image(identity)
|
@@ -8,11 +8,20 @@ module Fog
|
|
8
8
|
|
9
9
|
model Fog::Compute::RackspaceV2::Image
|
10
10
|
|
11
|
+
# Returns list of images
|
12
|
+
# @return [Array<Fog::Compute::RackspaceV2::Image>] Retrieves a list images.
|
13
|
+
# @note Fog's current implementation only returns 1000 images.
|
14
|
+
# @note Fog does not retrieve all image details. Please use get to retrieve all details for a specific image.
|
15
|
+
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/List_Images-d1e4435.html
|
11
16
|
def all
|
12
17
|
data = service.list_images.body['images']
|
13
18
|
load(data)
|
14
19
|
end
|
15
20
|
|
21
|
+
# Retrieve image
|
22
|
+
# @param [String] image_id id of image
|
23
|
+
# @return [Fog::Compute::RackspaceV2:Image] image
|
24
|
+
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Get_Image_Details-d1e4848.html
|
16
25
|
def get(image_id)
|
17
26
|
data = service.get_image(image_id).body['image']
|
18
27
|
new(data)
|
@@ -3,14 +3,21 @@ module Fog
|
|
3
3
|
class RackspaceV2
|
4
4
|
module MetaParent
|
5
5
|
|
6
|
+
# Parent of metadata
|
7
|
+
# @return [#parent] parent of metadata
|
6
8
|
def parent
|
7
9
|
@parent
|
8
10
|
end
|
9
11
|
|
12
|
+
# Sets parent of metadata
|
13
|
+
# @param [#parent] new_parent of metadata
|
10
14
|
def parent=(new_parent)
|
11
15
|
@parent = new_parent
|
12
16
|
end
|
13
17
|
|
18
|
+
# Collection type for parent
|
19
|
+
# @return [String] collection type
|
20
|
+
# @raise [RuntimeException] raises excpetion if collection type for parent is unknown
|
14
21
|
def collection_name
|
15
22
|
if parent.class == Fog::Compute::RackspaceV2::Image
|
16
23
|
return "images"
|
@@ -21,6 +28,8 @@ module Fog
|
|
21
28
|
end
|
22
29
|
end
|
23
30
|
|
31
|
+
# Converts metadata to hash
|
32
|
+
# @return [Hash] hash containing key value pairs for metadata
|
24
33
|
def metas_to_hash(metas)
|
25
34
|
hash = {}
|
26
35
|
metas.each { |meta| hash[meta.key] = meta.value }
|
@@ -14,50 +14,71 @@ module Fog
|
|
14
14
|
|
15
15
|
include Fog::Compute::RackspaceV2::MetaParent
|
16
16
|
|
17
|
+
# Retrieves all of the metadata from server
|
18
|
+
# @return [Array<Fog::Compute::RackspaceV2::Metadatum>] list of metadatum
|
17
19
|
def all
|
18
20
|
requires :parent
|
19
|
-
|
21
|
+
return unless parent.identity
|
22
|
+
data = service.list_metadata(collection_name, parent.id).body['metadata']
|
20
23
|
from_hash(data)
|
21
24
|
end
|
22
25
|
|
26
|
+
# Retrieves specific metadata from server
|
27
|
+
# @param [String] key for metadatum
|
28
|
+
# @return [Fog::Compute::RackspaceV2::Metadatum] metadatum
|
23
29
|
def get(key)
|
24
30
|
requires :parent
|
25
|
-
data =
|
31
|
+
data = service.get_metadata_item(collection_name, parent.id, key).body["meta"]
|
26
32
|
datum = data.first
|
27
33
|
new(:key => datum[0], :value => datum[1])
|
28
34
|
rescue Fog::Compute::RackspaceV2::NotFound
|
29
|
-
nil
|
35
|
+
nil
|
30
36
|
end
|
31
37
|
|
38
|
+
# Retrieve specific value for key from Metadata.
|
39
|
+
# * If key is of type String, this method will return the value of the metadatum
|
40
|
+
# * If key is of type Fixnum, this method will return a Fog::Compute::RackspaceV2::Metadatum object (legacy)
|
41
|
+
# @param [#key] key
|
42
|
+
# @return [#value]
|
32
43
|
def [](key)
|
33
44
|
return super(key) if key.is_a?(Integer)
|
34
45
|
return nil unless key
|
35
46
|
datum = self.find {|datum| datum.key == key || datum.key == key.to_sym }
|
36
47
|
datum ? datum.value : nil
|
37
48
|
end
|
38
|
-
|
49
|
+
|
50
|
+
# Set value for key.
|
51
|
+
# * If key is of type String, this method will set/add the value to Metadata
|
52
|
+
# * If key is of type Fixnum, this method will set a Fog::Compute::RackspaceV2::Metadatum object (legacy)
|
53
|
+
# @param [#key] key
|
54
|
+
# @return [String]
|
39
55
|
def []=(key, value)
|
40
56
|
return super(key,value) if key.is_a?(Integer)
|
41
57
|
return nil unless key
|
42
58
|
datum = self.find {|datum| datum.key == key || datum.key == key.to_sym }
|
43
59
|
if datum
|
44
|
-
|
60
|
+
datum.value = value
|
45
61
|
else
|
46
|
-
self << Fog::Compute::RackspaceV2::Metadatum.new(:key => key, :value => value, :
|
62
|
+
self << Fog::Compute::RackspaceV2::Metadatum.new(:key => key, :value => value, :service => service, :parent => parent)
|
47
63
|
end
|
48
64
|
value
|
49
65
|
end
|
50
66
|
|
67
|
+
# Saves the current metadata on server
|
51
68
|
def save
|
52
69
|
requires :parent
|
53
|
-
|
70
|
+
service.set_metadata(collection_name, parent.id, to_hash)
|
54
71
|
end
|
55
72
|
|
73
|
+
# Creates new metadata
|
56
74
|
def new(attributes = {})
|
57
75
|
requires :parent
|
58
76
|
super({ :parent => parent }.merge!(attributes))
|
59
77
|
end
|
60
78
|
|
79
|
+
# Resets metadata using data from hash
|
80
|
+
# @param hash hash containing key value pairs used to populate metadata.
|
81
|
+
# @note This will remove existing data
|
61
82
|
def from_hash(hash)
|
62
83
|
return unless hash
|
63
84
|
metas = []
|
@@ -65,6 +86,8 @@ module Fog
|
|
65
86
|
load(metas)
|
66
87
|
end
|
67
88
|
|
89
|
+
# Converts metadata object to hash
|
90
|
+
# @return [Hash] hash of metadata key value pairs
|
68
91
|
def to_hash
|
69
92
|
h = {}
|
70
93
|
self.each { |datum| h[datum.key] = datum.value }
|
@@ -11,12 +11,16 @@ module Fog
|
|
11
11
|
identity :key
|
12
12
|
attribute :value
|
13
13
|
|
14
|
+
# Remove metadatum from server
|
15
|
+
# @return [Boolean] return true if metadatum is deleting
|
14
16
|
def destroy
|
15
17
|
requires :identity
|
16
18
|
connection.delete_metadata_item(collection_name, parent.id, key)
|
17
19
|
true
|
18
20
|
end
|
19
21
|
|
22
|
+
# Save metadatum on server
|
23
|
+
# @return [Boolean] return true if metadatum is saving
|
20
24
|
def save
|
21
25
|
requires :identity, :value
|
22
26
|
connection.set_metadata_item(collection_name, parent.id, key, value)
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class RackspaceV2
|
4
|
+
class Network < Fog::Model
|
5
|
+
identity :id
|
6
|
+
|
7
|
+
attribute :label
|
8
|
+
attribute :cidr
|
9
|
+
|
10
|
+
def save
|
11
|
+
requires :label, :cidr
|
12
|
+
|
13
|
+
data = service.create_network(label, cidr)
|
14
|
+
merge_attributes(data.body['network'])
|
15
|
+
true
|
16
|
+
end
|
17
|
+
|
18
|
+
def destroy
|
19
|
+
requires :identity
|
20
|
+
|
21
|
+
service.delete_network(identity)
|
22
|
+
true
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'fog/rackspace/models/compute_v2/network'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Compute
|
5
|
+
class RackspaceV2
|
6
|
+
class Networks < Fog::Collection
|
7
|
+
model Fog::Compute::RackspaceV2::Network
|
8
|
+
|
9
|
+
def all
|
10
|
+
data = service.list_networks.body['networks']
|
11
|
+
load(data)
|
12
|
+
end
|
13
|
+
|
14
|
+
def get(id)
|
15
|
+
data = service.get_network(id).body['network']
|
16
|
+
new(data)
|
17
|
+
rescue Fog::Compute::RackspaceV2::NotFound
|
18
|
+
nil
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -22,42 +22,134 @@ module Fog
|
|
22
22
|
UNKNOWN = 'UNKNOWN'
|
23
23
|
VERIFY_RESIZE = 'VERIFY_RESIZE'
|
24
24
|
|
25
|
+
# @!attribute [r] id
|
26
|
+
# @return [String] The server id
|
25
27
|
identity :id
|
26
28
|
|
29
|
+
# @!attribute [rw] name
|
30
|
+
# @return [String] The server name.
|
27
31
|
attribute :name
|
32
|
+
|
33
|
+
# @!attribute [r] created
|
34
|
+
# @return [String] The time stamp for the creation date.
|
28
35
|
attribute :created
|
36
|
+
|
37
|
+
# @!attribute [r] updated
|
38
|
+
# @return [String] The time stamp for the last update.
|
29
39
|
attribute :updated
|
40
|
+
|
41
|
+
# @!attribute [r] host Id
|
42
|
+
# The host Id.
|
43
|
+
# The compute provisioning algorithm has an anti-affinity property that attempts to spread customer VMs across hosts.
|
44
|
+
# Under certain situations, VMs from the same customer might be placed on the same host.
|
45
|
+
# hostId represents the host your server runs on and can be used to determine this scenario if it is relevant to your application.
|
46
|
+
# HostId is unique per account and is not globally unique.
|
47
|
+
# @return [String] host id.
|
30
48
|
attribute :host_id, :aliases => 'hostId'
|
49
|
+
|
50
|
+
# @!attribute [r] state
|
51
|
+
# @return [String] server status.
|
52
|
+
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/List_Servers-d1e2078.html#server_status
|
31
53
|
attribute :state, :aliases => 'status'
|
54
|
+
|
55
|
+
# @!attribute [r] progress
|
56
|
+
# @return [Fixnum] The build completion progress, as a percentage. Value is from 0 to 100.
|
32
57
|
attribute :progress
|
58
|
+
|
59
|
+
# @!attribute [r] user_id
|
60
|
+
# @return [String] The user Id.
|
33
61
|
attribute :user_id
|
62
|
+
|
63
|
+
# @!attribute [r] tenant_id
|
64
|
+
# @return [String] The tenant Id.
|
34
65
|
attribute :tenant_id
|
66
|
+
|
67
|
+
# @!attribute [r] links
|
68
|
+
# @return [Array] Server links.
|
35
69
|
attribute :links
|
70
|
+
|
71
|
+
# @!attribute [rw] personality
|
72
|
+
# @note This attribute is only used for server creation. This field will be nil on subsequent retrievals.
|
73
|
+
# @return [Hash] Hash containing data to inject into the file system of the cloud server instance during server creation.
|
74
|
+
# @example To inject fog.txt into file system
|
75
|
+
# :personality => [{ :path => '/root/fog.txt',
|
76
|
+
# :contents => Base64.encode64('Fog was here!')
|
77
|
+
# }]
|
78
|
+
# @see #create
|
79
|
+
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Server_Personality-d1e2543.html
|
36
80
|
attribute :personality
|
81
|
+
|
82
|
+
# @!attribute [rw] ipv4_address
|
83
|
+
# @return [String] The public IP version 4 access address.
|
84
|
+
# @note This field will populate once the server is ready to use.
|
85
|
+
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Server_Primary_Addresses-d1e2558.html
|
37
86
|
attribute :ipv4_address, :aliases => 'accessIPv4'
|
87
|
+
|
88
|
+
# @!attribute [rw] ipv6_address
|
89
|
+
# @return [String] The public IP version 6 access address.
|
90
|
+
# @note This field will populate once the server is ready to use.
|
91
|
+
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Server_Primary_Addresses-d1e2558.html
|
38
92
|
attribute :ipv6_address, :aliases => 'accessIPv6'
|
93
|
+
|
94
|
+
# @!attribute [rw] disk_config
|
95
|
+
# @return [String<AUTO, MANUAL>] The disk configuration value.
|
96
|
+
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/ch_extensions.html#diskconfig_attribute
|
97
|
+
#
|
98
|
+
# The disk configuration value.
|
99
|
+
# * AUTO - The server is built with a single partition the size of the target flavor disk. The file system is automatically adjusted to fit the entire partition.
|
100
|
+
# This keeps things simple and automated. AUTO is valid only for images and servers with a single partition that use the EXT3 file system.
|
101
|
+
# This is the default setting for applicable Rackspace base images.
|
102
|
+
#
|
103
|
+
# * MANUAL - The server is built using whatever partition scheme and file system is in the source image. If the target flavor disk is larger,
|
104
|
+
# the remaining disk space is left unpartitioned. This enables images to have non-EXT3 file systems, multiple partitions,
|
105
|
+
# and so on, and enables you to manage the disk configuration.
|
39
106
|
attribute :disk_config, :aliases => 'OS-DCF:diskConfig'
|
107
|
+
|
108
|
+
# @!attribute [r] bandwidth
|
109
|
+
# @return [Array] The amount of bandwidth used for the specified audit period.
|
110
|
+
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/ch_extensions.html#bandwidth_extension
|
40
111
|
attribute :bandwidth, :aliases => 'rax-bandwidth:bandwidth'
|
112
|
+
|
113
|
+
# @!attribute [r] address
|
114
|
+
# @return [Hash<String, Array[Hash]>] IP addresses allocated for server by network
|
115
|
+
# @example
|
116
|
+
# {
|
117
|
+
# "public" => [
|
118
|
+
# {"version"=>4, "addr"=>"166.78.105.63"},
|
119
|
+
# {"version"=>6, "addr"=>"2001:4801:7817:0072:0fe1:75e8:ff10:61a9"}
|
120
|
+
# ],
|
121
|
+
# "private"=> [{"version"=>4, "addr"=>"10.177.18.209"}]
|
122
|
+
# }
|
41
123
|
attribute :addresses
|
42
|
-
attribute :flavor_id, :aliases => 'flavor', :squash => 'id'
|
43
|
-
attribute :image_id, :aliases => 'image', :squash => 'id'
|
44
124
|
|
45
|
-
|
125
|
+
# @!attribute [r] flavor_id
|
126
|
+
# @return [String] The flavor Id.
|
127
|
+
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/List_Flavors-d1e4188.html
|
128
|
+
attribute :flavor_id, :aliases => 'flavor', :squash => 'id'
|
46
129
|
|
130
|
+
# @!attribute [r] image_id
|
131
|
+
# @return [String] The image Id.
|
132
|
+
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/List_Images-d1e4435.html
|
133
|
+
attribute :image_id, :aliases => 'image', :squash => 'id'
|
134
|
+
# @!attribute [r] password
|
135
|
+
# @return [String] Password for system adminstrator account.
|
136
|
+
# @note This value is ONLY populated on server creation.
|
47
137
|
attr_reader :password
|
48
|
-
|
138
|
+
|
139
|
+
|
49
140
|
def initialize(attributes={})
|
50
141
|
@service = attributes[:service]
|
51
142
|
super
|
52
143
|
end
|
53
|
-
|
144
|
+
|
54
145
|
alias :access_ipv4_address :ipv4_address
|
55
146
|
alias :access_ipv4_address= :ipv4_address=
|
56
147
|
alias :access_ipv6_address :ipv6_address
|
57
148
|
alias :access_ipv6_address= :ipv6_address=
|
58
|
-
|
149
|
+
|
150
|
+
# Server metadata
|
151
|
+
# @return [Fog::Compute::RackspaceV2::Metadata] metadata key value pairs.
|
59
152
|
def metadata
|
60
|
-
raise "Please save server before accessing metadata" unless identity
|
61
153
|
@metadata ||= begin
|
62
154
|
Fog::Compute::RackspaceV2::Metadata.new({
|
63
155
|
:service => service,
|
@@ -65,34 +157,60 @@ module Fog
|
|
65
157
|
})
|
66
158
|
end
|
67
159
|
end
|
68
|
-
|
160
|
+
|
161
|
+
# Set server metadata
|
162
|
+
# @param [Hash] hash contains key value pairs
|
69
163
|
def metadata=(hash={})
|
70
|
-
raise "Please save server before accessing metadata" unless identity
|
71
164
|
metadata.from_hash(hash)
|
72
165
|
end
|
73
166
|
|
74
|
-
|
167
|
+
# Saves the server.
|
168
|
+
# Creates server if it is new, otherwise it will update server attributes name, accessIPv4, and accessIPv6.
|
169
|
+
# @return [Boolean] true if server has started saving
|
170
|
+
def save(options = {})
|
75
171
|
if persisted?
|
76
172
|
update
|
77
173
|
else
|
78
|
-
create
|
174
|
+
create(options)
|
79
175
|
end
|
80
176
|
true
|
81
177
|
end
|
82
178
|
|
83
|
-
|
179
|
+
# Creates server
|
180
|
+
# * requires attributes: service:, :name, :image_id, and :flavor_id
|
181
|
+
# * optional attributes :disk_config, :metadata, :personality
|
182
|
+
# @return [Boolean] returns true if server is being created
|
183
|
+
# @note You should use servers.create to create servers instead calling this method directly
|
184
|
+
# @see Servers#create
|
185
|
+
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/CreateServers.html
|
186
|
+
#
|
187
|
+
# * State Transitions
|
188
|
+
# * BUILD -> ACTIVE
|
189
|
+
# * BUILD -> ERROR (on error)
|
190
|
+
def create(options)
|
84
191
|
requires :name, :image_id, :flavor_id
|
85
192
|
|
86
|
-
options = {}
|
87
193
|
options[:disk_config] = disk_config unless disk_config.nil?
|
88
|
-
options[:metadata] = metadata unless @metadata.nil?
|
194
|
+
options[:metadata] = metadata.to_hash unless @metadata.nil?
|
89
195
|
options[:personality] = personality unless personality.nil?
|
90
196
|
|
197
|
+
if options[:networks]
|
198
|
+
options[:networks].map! { |id| { :uuid => id } }
|
199
|
+
end
|
200
|
+
|
91
201
|
data = service.create_server(name, image_id, flavor_id, 1, 1, options)
|
92
202
|
merge_attributes(data.body['server'])
|
93
203
|
true
|
94
204
|
end
|
95
205
|
|
206
|
+
# Updates server
|
207
|
+
# This will update :name, :accessIPv4, and :accessIPv6 attributes.
|
208
|
+
# @note If you edit the server name, the server host name does not change. Also, server names are not guaranteed to be unique.
|
209
|
+
# @return true if update has started updating
|
210
|
+
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/ServerUpdate.html
|
211
|
+
#
|
212
|
+
# * State Transition
|
213
|
+
# * ACTIVE -> ACTIVE
|
96
214
|
def update
|
97
215
|
requires :identity
|
98
216
|
options = {
|
@@ -100,32 +218,53 @@ module Fog
|
|
100
218
|
'accessIPv4' => ipv4_address,
|
101
219
|
'accessIPv6' => ipv6_address
|
102
220
|
}
|
103
|
-
|
221
|
+
|
104
222
|
data = service.update_server(identity, options)
|
105
223
|
merge_attributes(data.body['server'])
|
106
224
|
true
|
107
225
|
end
|
108
226
|
|
227
|
+
# Destroy the server
|
228
|
+
# @return [Boolean] returns true if server has started deleting
|
229
|
+
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Delete_Server-d1e2883.html
|
230
|
+
#
|
231
|
+
# * Status Transition:
|
232
|
+
# * ACTIVE -> DELETED
|
233
|
+
# * ERROR -> DELETED
|
109
234
|
def destroy
|
110
235
|
requires :identity
|
111
236
|
service.delete_server(identity)
|
112
237
|
true
|
113
238
|
end
|
114
239
|
|
240
|
+
# Server flavor
|
241
|
+
# @return [Fog::Compute::RackspaceV2::Flavor] server flavor
|
115
242
|
def flavor
|
116
243
|
requires :flavor_id
|
117
244
|
@flavor ||= service.flavors.get(flavor_id)
|
118
245
|
end
|
119
246
|
|
247
|
+
# Server image
|
248
|
+
# @return [Fog::Compute::RackspaceV2::Image] server image
|
120
249
|
def image
|
121
250
|
requires :image_id
|
122
251
|
@image ||= service.images.get(image_id)
|
123
252
|
end
|
124
253
|
|
254
|
+
# Creates Image from server. Once complete, a new image is available that you can use to rebuild or create servers.
|
255
|
+
# @param name [String] name of image to create
|
256
|
+
# @param options [Hash]:
|
257
|
+
# @option options [Hash<String, String>] metadata hash of containing metadata key value pairs.
|
258
|
+
# @return [Fog::ComputeRackspaceV2::Image] image being created
|
259
|
+
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Create_Image-d1e4655.html
|
260
|
+
#
|
261
|
+
# * State Transition:
|
262
|
+
# * SAVING -> ACTIVE
|
263
|
+
# * SAVING -> ERROR (on error)
|
125
264
|
def create_image(name, options = {})
|
126
265
|
requires :identity
|
127
266
|
response = service.create_image(identity, name, options)
|
128
|
-
begin
|
267
|
+
begin
|
129
268
|
image_id = response.headers["Location"].match(/\/([^\/]+$)/)[1]
|
130
269
|
Fog::Compute::RackspaceV2::Image.new(:collection => service.images, :service => service, :id => image_id)
|
131
270
|
rescue
|
@@ -133,6 +272,9 @@ module Fog
|
|
133
272
|
end
|
134
273
|
end
|
135
274
|
|
275
|
+
# Attached Cloud Block Volumes
|
276
|
+
# @return [Fog::Compute::RackspaceV2::Attachments] attached Cloud Block Volumes
|
277
|
+
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/List_Volume_Attachments.html
|
136
278
|
def attachments
|
137
279
|
@attachments ||= begin
|
138
280
|
Fog::Compute::RackspaceV2::Attachments.new({
|
@@ -141,21 +283,35 @@ module Fog
|
|
141
283
|
})
|
142
284
|
end
|
143
285
|
end
|
144
|
-
|
286
|
+
|
287
|
+
# Attaches Cloud Block Volume
|
288
|
+
# @param [Fog::Rackspace::BlockStorage::Volume, String] volume object or the volume id of volume to mount
|
289
|
+
# @param [String] device name of the device /dev/xvd[a-p] (optional)
|
290
|
+
# @return [Fog::Compute::RackspaceV2::Attachment] resulting attachment object
|
291
|
+
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Attach_Volume_to_Server.html
|
145
292
|
def attach_volume(volume, device=nil)
|
146
293
|
requires :identity
|
147
294
|
volume_id = volume.is_a?(String) ? volume : volume.id
|
148
295
|
attachments.create(:server_id => identity, :volume_id => volume_id, :device => device)
|
149
|
-
end
|
296
|
+
end
|
150
297
|
|
298
|
+
# Server's private IPv4 address
|
299
|
+
# @return [String] private IPv4 address
|
151
300
|
def private_ip_address
|
152
301
|
addresses['private'].select{|a| a["version"] == 4}[0]["addr"]
|
153
302
|
end
|
154
303
|
|
304
|
+
# Server's public IPv4 address
|
305
|
+
# @return [String] public IPv4 address
|
155
306
|
def public_ip_address
|
156
307
|
ipv4_address
|
157
308
|
end
|
158
309
|
|
310
|
+
# Is server is in ready state
|
311
|
+
# @param [String] ready_state By default state is ACTIVE
|
312
|
+
# @param [Array,String] error_states By default state is ERROR
|
313
|
+
# @return [Boolean] returns true if server is in a ready state
|
314
|
+
# @raise [RuntimeException] if server state is an error state
|
159
315
|
def ready?(ready_state = ACTIVE, error_states=[ERROR])
|
160
316
|
if error_states
|
161
317
|
error_states = Array(error_states)
|
@@ -164,6 +320,13 @@ module Fog
|
|
164
320
|
state == ready_state
|
165
321
|
end
|
166
322
|
|
323
|
+
# Reboot server
|
324
|
+
# @param [String<SOFT, HARD>] type 'SOFT' will do a soft reboot. 'HARD' will do a hard reboot.
|
325
|
+
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Reboot_Server-d1e3371.html
|
326
|
+
#
|
327
|
+
# * State transition:
|
328
|
+
# * ACTIVE -> REBOOT -> ACTIVE (soft reboot)
|
329
|
+
# * ACTIVE -> HARD_REBOOT -> ACTIVE (hard reboot)
|
167
330
|
def reboot(type = 'SOFT')
|
168
331
|
requires :identity
|
169
332
|
service.reboot_server(identity, type)
|
@@ -171,13 +334,15 @@ module Fog
|
|
171
334
|
true
|
172
335
|
end
|
173
336
|
|
174
|
-
def resize(flavor_id)
|
175
|
-
requires :identity
|
176
|
-
service.resize_server(identity, flavor_id)
|
177
|
-
self.state = RESIZE
|
178
|
-
true
|
179
|
-
end
|
180
337
|
|
338
|
+
# Rebuild removes all data on the server and replaces it with the specified image. The id and all IP addresses remain the same.
|
339
|
+
# @param [String] image_id image to use for rebuild
|
340
|
+
# @return [Boolean] returns true if rebuild is in process
|
341
|
+
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Rebuild_Server-d1e3538.html
|
342
|
+
#
|
343
|
+
# * Status Transition:
|
344
|
+
# * ACTIVE -> REBUILD -> ACTIVE
|
345
|
+
# * ACTIVE -> REBUILD -> ERROR (on error)
|
181
346
|
def rebuild(image_id, options={})
|
182
347
|
requires :identity
|
183
348
|
service.rebuild_server(identity, image_id, options)
|
@@ -185,18 +350,61 @@ module Fog
|
|
185
350
|
true
|
186
351
|
end
|
187
352
|
|
353
|
+
# Resize existing server to a different flavor, in essence, scaling the server up or down. The original server is saved for a period of time to allow rollback if there is a problem. All resizes should be tested and explicitly confirmed, at which time the original server is removed. All resizes are automatically confirmed after 24 hours if they are not confirmed or reverted.
|
354
|
+
# @param [String] flavor to resize
|
355
|
+
# @return [Boolean] returns true if resize is in process
|
356
|
+
# @note All resizes are automatically confirmed after 24 hours if you do not explicitly confirm or revert the resize.
|
357
|
+
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Resize_Server-d1e3707.html
|
358
|
+
# @see #confirm_resize
|
359
|
+
# @see #revert_resize
|
360
|
+
#
|
361
|
+
# * Status Transition:
|
362
|
+
# * ACTIVE -> QUEUE_RESIZE -> PREP_RESIZE -> VERIFY_RESIZE
|
363
|
+
# * ACTIVE -> QUEUE_RESIZE -> ACTIVE (on error)
|
364
|
+
def resize(flavor_id)
|
365
|
+
requires :identity
|
366
|
+
service.resize_server(identity, flavor_id)
|
367
|
+
self.state = RESIZE
|
368
|
+
true
|
369
|
+
end
|
370
|
+
|
371
|
+
# Confirms server resize operation
|
372
|
+
# @note All resizes are automatically confirmed after 24 hours if you do not explicitly confirm or revert the resize.
|
373
|
+
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Confirm_Resized_Server-d1e3868.html
|
374
|
+
# @see #resize
|
375
|
+
#
|
376
|
+
# * Status Transition:
|
377
|
+
# * VERIFY_RESIZE -> ACTIVE
|
378
|
+
# * VERIFY_RESIZE -> ERROR (on error)
|
188
379
|
def confirm_resize
|
189
380
|
requires :identity
|
190
381
|
service.confirm_resize_server(identity)
|
191
382
|
true
|
192
383
|
end
|
193
384
|
|
385
|
+
# Reverts server resize operation
|
386
|
+
# @note All resizes are automatically confirmed after 24 hours if you do not explicitly confirm or revert the resize.
|
387
|
+
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Revert_Resized_Server-d1e4024.html
|
388
|
+
# @see #resize
|
389
|
+
#
|
390
|
+
# * Status Transition:
|
391
|
+
# * VERIFY_RESIZE -> ACTIVE
|
392
|
+
# * VERIFY_RESIZE -> ERROR (on error)
|
194
393
|
def revert_resize
|
195
394
|
requires :identity
|
196
395
|
service.revert_resize_server(identity)
|
197
396
|
true
|
198
397
|
end
|
199
398
|
|
399
|
+
# Change admin password
|
400
|
+
# @param [String] password The administrator password.
|
401
|
+
# @return [Boolean] returns true if operation was scheduled
|
402
|
+
# @note Though Rackspace does not enforce complexity requirements for the password, the operating system might. If the password is not complex enough, the server might enter an ERROR state.
|
403
|
+
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Change_Password-d1e3234.html
|
404
|
+
#
|
405
|
+
# * Status Transition:
|
406
|
+
# * ACTIVE -> PASSWORD -> ACTIVE
|
407
|
+
# * ACTIVE -> PASSWORD -> ERROR (on error)
|
200
408
|
def change_admin_password(password)
|
201
409
|
requires :identity
|
202
410
|
service.change_server_password(identity, password)
|
@@ -205,6 +413,9 @@ module Fog
|
|
205
413
|
true
|
206
414
|
end
|
207
415
|
|
416
|
+
# Setup server for SSH access
|
417
|
+
# This requires public_key_path and private_key_path to be passed into Compute service via Fog::Compute constructor or .fog file
|
418
|
+
# @see Servers#bootstrap
|
208
419
|
def setup(credentials = {})
|
209
420
|
requires :public_ip_address, :identity, :public_key, :username
|
210
421
|
Fog::SSH.new(public_ip_address, username, credentials).run([
|