fog 1.10.1 → 1.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.travis.yml +1 -0
- data/Gemfile +2 -0
- data/README.md +4 -3
- data/changelog.txt +207 -0
- data/fog.gemspec +4 -3
- data/lib/fog/aws.rb +0 -2
- data/lib/fog/aws/dynamodb.rb +1 -1
- data/lib/fog/aws/elasticache.rb +0 -2
- data/lib/fog/aws/iam.rb +1 -0
- data/lib/fog/aws/models/compute/volume.rb +1 -0
- data/lib/fog/aws/models/iam/user.rb +1 -0
- data/lib/fog/aws/models/storage/directories.rb +1 -1
- data/lib/fog/aws/models/storage/directory.rb +20 -17
- data/lib/fog/aws/models/storage/file.rb +4 -5
- data/lib/fog/aws/parsers/iam/get_user.rb +2 -0
- data/lib/fog/aws/parsers/iam/list_users.rb +2 -0
- data/lib/fog/aws/requests/cdn/delete_streaming_distribution.rb +2 -2
- data/lib/fog/aws/requests/cdn/put_distribution_config.rb +3 -3
- data/lib/fog/aws/requests/cloud_formation/update_stack.rb +3 -3
- data/lib/fog/aws/requests/cloud_formation/validate_template.rb +5 -5
- data/lib/fog/aws/requests/iam/create_user.rb +5 -4
- data/lib/fog/aws/requests/iam/get_user.rb +5 -4
- data/lib/fog/aws/requests/iam/list_users.rb +5 -4
- data/lib/fog/aws/requests/rds/create_db_instance.rb +25 -25
- data/lib/fog/aws/requests/storage/abort_multipart_upload.rb +3 -3
- data/lib/fog/aws/requests/storage/complete_multipart_upload.rb +2 -2
- data/lib/fog/aws/requests/storage/copy_object.rb +2 -2
- data/lib/fog/aws/requests/storage/delete_bucket.rb +1 -1
- data/lib/fog/aws/requests/storage/delete_bucket_cors.rb +1 -1
- data/lib/fog/aws/requests/storage/delete_bucket_lifecycle.rb +1 -1
- data/lib/fog/aws/requests/storage/delete_bucket_policy.rb +1 -1
- data/lib/fog/aws/requests/storage/delete_bucket_website.rb +1 -1
- data/lib/fog/aws/requests/storage/delete_multiple_objects.rb +1 -1
- data/lib/fog/aws/requests/storage/delete_object.rb +1 -1
- data/lib/fog/aws/requests/storage/get_bucket.rb +1 -1
- data/lib/fog/aws/requests/storage/get_bucket_acl.rb +1 -1
- data/lib/fog/aws/requests/storage/get_bucket_cors.rb +1 -1
- data/lib/fog/aws/requests/storage/get_bucket_lifecycle.rb +1 -1
- data/lib/fog/aws/requests/storage/get_bucket_location.rb +1 -1
- data/lib/fog/aws/requests/storage/get_bucket_logging.rb +1 -1
- data/lib/fog/aws/requests/storage/get_bucket_object_versions.rb +1 -1
- data/lib/fog/aws/requests/storage/get_bucket_policy.rb +1 -1
- data/lib/fog/aws/requests/storage/get_bucket_versioning.rb +1 -1
- data/lib/fog/aws/requests/storage/get_bucket_website.rb +1 -1
- data/lib/fog/aws/requests/storage/get_object.rb +2 -2
- data/lib/fog/aws/requests/storage/get_object_acl.rb +2 -2
- data/lib/fog/aws/requests/storage/get_object_http_url.rb +1 -19
- data/lib/fog/aws/requests/storage/get_object_torrent.rb +2 -2
- data/lib/fog/aws/requests/storage/get_object_url.rb +5 -14
- data/lib/fog/aws/requests/storage/get_request_payment.rb +1 -1
- data/lib/fog/aws/requests/storage/head_object.rb +2 -2
- data/lib/fog/aws/requests/storage/initiate_multipart_upload.rb +2 -2
- data/lib/fog/aws/requests/storage/list_multipart_uploads.rb +7 -8
- data/lib/fog/aws/requests/storage/list_parts.rb +2 -2
- data/lib/fog/aws/requests/storage/put_bucket.rb +1 -1
- data/lib/fog/aws/requests/storage/put_bucket_acl.rb +1 -1
- data/lib/fog/aws/requests/storage/put_bucket_cors.rb +1 -1
- data/lib/fog/aws/requests/storage/put_bucket_lifecycle.rb +1 -1
- data/lib/fog/aws/requests/storage/put_bucket_logging.rb +1 -1
- data/lib/fog/aws/requests/storage/put_bucket_policy.rb +1 -1
- data/lib/fog/aws/requests/storage/put_bucket_versioning.rb +1 -1
- data/lib/fog/aws/requests/storage/put_bucket_website.rb +1 -1
- data/lib/fog/aws/requests/storage/put_object.rb +2 -2
- data/lib/fog/aws/requests/storage/put_object_acl.rb +8 -8
- data/lib/fog/aws/requests/storage/put_object_url.rb +5 -7
- data/lib/fog/aws/requests/storage/put_request_payment.rb +1 -1
- data/lib/fog/aws/requests/storage/upload_part.rb +2 -2
- data/lib/fog/aws/storage.rb +201 -97
- data/lib/fog/bin/google.rb +47 -1
- data/lib/fog/bluebox/models/compute/server.rb +3 -1
- data/lib/fog/brightbox/compute.rb +11 -26
- data/lib/fog/brightbox/compute/image_selector.rb +45 -0
- data/lib/fog/cloudstack/compute.rb +70 -2
- data/lib/fog/cloudstack/models/compute/disk_offering.rb +46 -0
- data/lib/fog/cloudstack/models/compute/disk_offerings.rb +27 -0
- data/lib/fog/cloudstack/models/compute/image.rb +1 -1
- data/lib/fog/cloudstack/models/compute/servers.rb +3 -2
- data/lib/fog/cloudstack/requests/compute/create_disk_offering.rb +51 -0
- data/lib/fog/cloudstack/requests/compute/delete_disk_offering.rb +31 -0
- data/lib/fog/cloudstack/requests/compute/delete_snapshot.rb +44 -2
- data/lib/fog/cloudstack/requests/compute/list_disk_offerings.rb +9 -0
- data/lib/fog/cloudstack/requests/compute/list_os_types.rb +9 -0
- data/lib/fog/cloudstack/requests/compute/list_snapshots.rb +21 -0
- data/lib/fog/core/errors.rb +3 -0
- data/lib/fog/core/json.rb +48 -7
- data/lib/fog/core/model.rb +11 -10
- data/lib/fog/core/service.rb +1 -1
- data/lib/fog/digitalocean/CHANGELOG.md +1 -1
- data/lib/fog/dreamhost/dns.rb +1 -3
- data/lib/fog/google.rb +1 -0
- data/lib/fog/google/compute.rb +131 -0
- data/lib/fog/google/models/compute/flavor.rb +24 -0
- data/lib/fog/google/models/compute/flavors.rb +28 -0
- data/lib/fog/google/models/compute/image.rb +19 -0
- data/lib/fog/google/models/compute/images.rb +28 -0
- data/lib/fog/google/models/compute/server.rb +80 -0
- data/lib/fog/google/models/compute/servers.rb +61 -0
- data/lib/fog/google/requests/compute/delete_disk.rb +31 -0
- data/lib/fog/google/requests/compute/delete_firewall.rb +30 -0
- data/lib/fog/google/requests/compute/delete_image.rb +30 -0
- data/lib/fog/google/requests/compute/delete_network.rb +30 -0
- data/lib/fog/google/requests/compute/delete_operation.rb +30 -0
- data/lib/fog/google/requests/compute/delete_server.rb +40 -0
- data/lib/fog/google/requests/compute/get_disk.rb +31 -0
- data/lib/fog/google/requests/compute/get_firewall.rb +30 -0
- data/lib/fog/google/requests/compute/get_image.rb +30 -0
- data/lib/fog/google/requests/compute/get_machine_type.rb +30 -0
- data/lib/fog/google/requests/compute/get_network.rb +30 -0
- data/lib/fog/google/requests/compute/get_server.rb +31 -0
- data/lib/fog/google/requests/compute/get_zone.rb +30 -0
- data/lib/fog/google/requests/compute/insert_disk.rb +35 -0
- data/lib/fog/google/requests/compute/insert_firewall.rb +37 -0
- data/lib/fog/google/requests/compute/insert_image.rb +38 -0
- data/lib/fog/google/requests/compute/insert_network.rb +34 -0
- data/lib/fog/google/requests/compute/insert_server.rb +49 -0
- data/lib/fog/google/requests/compute/list_disks.rb +30 -0
- data/lib/fog/google/requests/compute/list_firewalls.rb +29 -0
- data/lib/fog/google/requests/compute/list_global_operations.rb +28 -0
- data/lib/fog/google/requests/compute/list_images.rb +29 -0
- data/lib/fog/google/requests/compute/list_machine_types.rb +29 -0
- data/lib/fog/google/requests/compute/list_networks.rb +29 -0
- data/lib/fog/google/requests/compute/list_servers.rb +30 -0
- data/lib/fog/google/requests/compute/list_zone_operations.rb +28 -0
- data/lib/fog/google/requests/compute/list_zones.rb +29 -0
- data/lib/fog/google/requests/compute/set_metadata.rb +36 -0
- data/lib/fog/hp.rb +1 -1
- data/lib/fog/hp/storage.rb +1 -1
- data/lib/fog/internet_archive/models/storage/ia_attributes.rb +1 -1
- data/lib/fog/internet_archive/requests/storage/head_object.rb +1 -2
- data/lib/fog/internet_archive/requests/storage/list_multipart_uploads.rb +5 -6
- data/lib/fog/openstack.rb +29 -1
- data/lib/fog/openstack/CHANGELOG.md +1 -1
- data/lib/fog/openstack/compute.rb +3 -2
- data/lib/fog/openstack/identity.rb +1 -5
- data/lib/fog/openstack/image.rb +8 -9
- data/lib/fog/openstack/models/compute/server.rb +24 -0
- data/lib/fog/openstack/network.rb +7 -28
- data/lib/fog/openstack/requests/compute/allocate_address.rb +1 -1
- data/lib/fog/openstack/requests/compute/attach_volume.rb +11 -6
- data/lib/fog/openstack/requests/compute/boot_from_snapshot.rb +1 -1
- data/lib/fog/openstack/requests/compute/create_flavor.rb +1 -1
- data/lib/fog/openstack/requests/compute/create_key_pair.rb +1 -1
- data/lib/fog/openstack/requests/compute/create_security_group.rb +1 -1
- data/lib/fog/openstack/requests/compute/create_security_group_rule.rb +1 -1
- data/lib/fog/openstack/requests/compute/create_volume.rb +15 -14
- data/lib/fog/openstack/requests/compute/create_volume_snapshot.rb +1 -1
- data/lib/fog/openstack/requests/compute/delete_volume.rb +9 -2
- data/lib/fog/openstack/requests/compute/detach_volume.rb +7 -2
- data/lib/fog/openstack/requests/compute/get_server_volumes.rb +10 -0
- data/lib/fog/openstack/requests/compute/get_volume_details.rb +7 -16
- data/lib/fog/openstack/requests/compute/list_tenants.rb +1 -1
- data/lib/fog/openstack/requests/compute/list_volumes.rb +4 -26
- data/lib/fog/openstack/requests/compute/revert_resize_server.rb +2 -2
- data/lib/fog/openstack/requests/compute/update_quota.rb +1 -1
- data/lib/fog/openstack/requests/identity/create_ec2_credential.rb +1 -1
- data/lib/fog/openstack/requests/identity/create_role.rb +1 -1
- data/lib/fog/openstack/requests/identity/create_user.rb +1 -1
- data/lib/fog/openstack/requests/identity/update_user.rb +1 -1
- data/lib/fog/openstack/requests/image/update_image_members.rb +1 -1
- data/lib/fog/openstack/requests/volume/create_volume.rb +1 -1
- data/lib/fog/openstack/requests/volume/create_volume_snapshot.rb +1 -1
- data/lib/fog/openstack/requests/volume/get_quota.rb +31 -0
- data/lib/fog/openstack/requests/volume/get_quota_defaults.rb +31 -0
- data/lib/fog/openstack/requests/volume/update_quota.rb +32 -0
- data/lib/fog/openstack/volume.rb +11 -7
- data/lib/fog/rackspace.rb +11 -5
- data/lib/fog/rackspace/block_storage.rb +2 -1
- data/lib/fog/rackspace/cdn.rb +15 -15
- data/lib/fog/rackspace/compute.rb +2 -2
- data/lib/fog/rackspace/compute_v2.rb +8 -5
- data/lib/fog/rackspace/databases.rb +2 -1
- data/lib/fog/rackspace/dns.rb +2 -1
- data/lib/fog/rackspace/errors.rb +27 -0
- data/lib/fog/rackspace/load_balancers.rb +2 -1
- data/lib/fog/rackspace/mock_data.rb +5 -6
- data/lib/fog/rackspace/models/block_storage/snapshot.rb +8 -8
- data/lib/fog/rackspace/models/block_storage/snapshots.rb +8 -8
- data/lib/fog/rackspace/models/block_storage/volume.rb +16 -16
- data/lib/fog/rackspace/models/block_storage/volume_types.rb +8 -8
- data/lib/fog/rackspace/models/block_storage/volumes.rb +8 -8
- data/lib/fog/rackspace/models/compute_v2/attachment.rb +8 -8
- data/lib/fog/rackspace/models/compute_v2/attachments.rb +8 -8
- data/lib/fog/rackspace/models/compute_v2/flavors.rb +8 -8
- data/lib/fog/rackspace/models/compute_v2/image.rb +8 -8
- data/lib/fog/rackspace/models/compute_v2/images.rb +8 -8
- data/lib/fog/rackspace/models/compute_v2/metadata.rb +12 -12
- data/lib/fog/rackspace/models/compute_v2/metadatum.rb +8 -8
- data/lib/fog/rackspace/models/compute_v2/server.rb +94 -55
- data/lib/fog/rackspace/models/compute_v2/servers.rb +12 -12
- data/lib/fog/rackspace/models/dns/records.rb +1 -1
- data/lib/fog/rackspace/models/dns/zones.rb +1 -1
- data/lib/fog/rackspace/models/storage/account.rb +8 -8
- data/lib/fog/rackspace/models/storage/directories.rb +8 -8
- data/lib/fog/rackspace/models/storage/directory.rb +32 -32
- data/lib/fog/rackspace/models/storage/file.rb +36 -36
- data/lib/fog/rackspace/models/storage/files.rb +20 -20
- data/lib/fog/rackspace/requests/block_storage/create_snapshot.rb +4 -4
- data/lib/fog/rackspace/requests/block_storage/create_volume.rb +4 -4
- data/lib/fog/rackspace/requests/block_storage/delete_snapshot.rb +4 -4
- data/lib/fog/rackspace/requests/block_storage/delete_volume.rb +4 -4
- data/lib/fog/rackspace/requests/block_storage/get_snapshot.rb +4 -4
- data/lib/fog/rackspace/requests/block_storage/get_volume.rb +4 -4
- data/lib/fog/rackspace/requests/block_storage/get_volume_type.rb +4 -4
- data/lib/fog/rackspace/requests/block_storage/list_snapshots.rb +4 -4
- data/lib/fog/rackspace/requests/block_storage/list_volume_types.rb +4 -4
- data/lib/fog/rackspace/requests/block_storage/list_volumes.rb +4 -4
- data/lib/fog/rackspace/requests/cdn/delete_object.rb +4 -4
- data/lib/fog/rackspace/requests/cdn/get_containers.rb +4 -4
- data/lib/fog/rackspace/requests/cdn/head_container.rb +4 -4
- data/lib/fog/rackspace/requests/cdn/post_container.rb +4 -4
- data/lib/fog/rackspace/requests/cdn/put_container.rb +4 -4
- data/lib/fog/rackspace/requests/compute/delete_image.rb +1 -1
- data/lib/fog/rackspace/requests/compute_v2/attach_volume.rb +4 -4
- data/lib/fog/rackspace/requests/compute_v2/change_server_password.rb +4 -4
- data/lib/fog/rackspace/requests/compute_v2/confirm_resize_server.rb +4 -4
- data/lib/fog/rackspace/requests/compute_v2/create_image.rb +4 -4
- data/lib/fog/rackspace/requests/compute_v2/create_server.rb +11 -5
- data/lib/fog/rackspace/requests/compute_v2/delete_attachment.rb +4 -4
- data/lib/fog/rackspace/requests/compute_v2/delete_image.rb +5 -4
- data/lib/fog/rackspace/requests/compute_v2/delete_metadata_item.rb +4 -4
- data/lib/fog/rackspace/requests/compute_v2/delete_server.rb +4 -4
- data/lib/fog/rackspace/requests/compute_v2/get_attachment.rb +4 -4
- data/lib/fog/rackspace/requests/compute_v2/get_flavor.rb +4 -4
- data/lib/fog/rackspace/requests/compute_v2/get_image.rb +4 -4
- data/lib/fog/rackspace/requests/compute_v2/get_metadata_item.rb +4 -4
- data/lib/fog/rackspace/requests/compute_v2/get_server.rb +4 -4
- data/lib/fog/rackspace/requests/compute_v2/list_addresses.rb +4 -4
- data/lib/fog/rackspace/requests/compute_v2/list_addresses_by_network.rb +4 -4
- data/lib/fog/rackspace/requests/compute_v2/list_attachments.rb +4 -4
- data/lib/fog/rackspace/requests/compute_v2/list_flavors.rb +4 -4
- data/lib/fog/rackspace/requests/compute_v2/list_images.rb +4 -4
- data/lib/fog/rackspace/requests/compute_v2/list_metadata.rb +4 -4
- data/lib/fog/rackspace/requests/compute_v2/list_servers.rb +4 -4
- data/lib/fog/rackspace/requests/compute_v2/reboot_server.rb +4 -4
- data/lib/fog/rackspace/requests/compute_v2/rebuild_server.rb +4 -4
- data/lib/fog/rackspace/requests/compute_v2/rescue_server.rb +43 -0
- data/lib/fog/rackspace/requests/compute_v2/resize_server.rb +4 -4
- data/lib/fog/rackspace/requests/compute_v2/revert_resize_server.rb +4 -4
- data/lib/fog/rackspace/requests/compute_v2/set_metadata.rb +4 -4
- data/lib/fog/rackspace/requests/compute_v2/set_metadata_item.rb +4 -4
- data/lib/fog/rackspace/requests/compute_v2/unrescue_server.rb +40 -0
- data/lib/fog/rackspace/requests/compute_v2/update_metadata.rb +4 -4
- data/lib/fog/rackspace/requests/compute_v2/update_server.rb +4 -4
- data/lib/fog/rackspace/requests/storage/copy_object.rb +4 -4
- data/lib/fog/rackspace/requests/storage/delete_container.rb +4 -4
- data/lib/fog/rackspace/requests/storage/delete_object.rb +4 -4
- data/lib/fog/rackspace/requests/storage/get_container.rb +4 -4
- data/lib/fog/rackspace/requests/storage/get_containers.rb +4 -4
- data/lib/fog/rackspace/requests/storage/get_object.rb +4 -4
- data/lib/fog/rackspace/requests/storage/get_object_https_url.rb +4 -4
- data/lib/fog/rackspace/requests/storage/head_container.rb +4 -4
- data/lib/fog/rackspace/requests/storage/head_containers.rb +4 -4
- data/lib/fog/rackspace/requests/storage/head_object.rb +4 -4
- data/lib/fog/rackspace/requests/storage/post_set_meta_temp_url_key.rb +4 -4
- data/lib/fog/rackspace/requests/storage/put_container.rb +4 -4
- data/lib/fog/rackspace/requests/storage/put_object.rb +4 -4
- data/lib/fog/rackspace/requests/storage/put_object_manifest.rb +4 -4
- data/lib/fog/rackspace/service.rb +1 -1
- data/lib/fog/rackspace/storage.rb +12 -6
- data/lib/fog/riakcs.rb +3 -3
- data/lib/fog/riakcs/provisioning.rb +1 -3
- data/lib/fog/riakcs/requests/provisioning/create_user.rb +2 -2
- data/lib/fog/riakcs/requests/provisioning/get_user.rb +1 -1
- data/lib/fog/riakcs/requests/provisioning/list_users.rb +1 -1
- data/lib/fog/riakcs/requests/usage/get_usage.rb +1 -1
- data/lib/fog/riakcs/usage.rb +0 -1
- data/lib/fog/version.rb +1 -1
- data/lib/fog/vsphere/compute.rb +21 -14
- data/lib/fog/vsphere/models/compute/networks.rb +2 -2
- data/lib/fog/vsphere/models/compute/server.rb +10 -0
- data/lib/fog/vsphere/requests/compute/get_resource_pool.rb +1 -1
- data/lib/fog/vsphere/requests/compute/get_template.rb +16 -0
- data/lib/fog/vsphere/requests/compute/list_datacenters.rb +1 -1
- data/lib/fog/vsphere/requests/compute/list_templates.rb +49 -0
- data/lib/fog/vsphere/requests/compute/list_virtual_machines.rb +9 -6
- data/lib/fog/vsphere/requests/compute/vm_clone.rb +41 -27
- data/lib/fog/xenserver/CHANGELOG.md +1 -1
- data/lib/fog/xenserver/models/compute/network.rb +2 -2
- data/lib/tasks/changelog_task.rb +2 -1
- data/tests/aws/models/storage/directory_tests.rb +41 -5
- data/tests/aws/models/storage/file_tests.rb +1 -2
- data/tests/aws/models/storage/files_tests.rb +6 -4
- data/tests/aws/models/storage/url_tests.rb +7 -5
- data/tests/aws/models/storage/version_tests.rb +2 -2
- data/tests/aws/models/storage/versions_tests.rb +5 -5
- data/tests/aws/requests/iam/user_tests.rb +10 -8
- data/tests/aws/requests/storage/multipart_upload_tests.rb +1 -1
- data/tests/aws/requests/storage/object_tests.rb +15 -13
- data/tests/brightbox/compute/image_selector_tests.rb +103 -0
- data/tests/cloudstack/compute/models/disk_offering_tests.rb +5 -0
- data/tests/cloudstack/compute/models/snapshot_tests.rb +5 -20
- data/tests/cloudstack/requests/disk_offering_tests.rb +3 -3
- data/tests/cloudstack/requests/os_type_tests.rb +2 -3
- data/tests/compute/helper.rb +9 -0
- data/tests/core/json_tests.rb +62 -0
- data/tests/dynect/requests/dns/dns_tests.rb +0 -3
- data/tests/google/models/compute/server_tests.rb +24 -0
- data/tests/google/requests/compute/disk_tests.rb +88 -0
- data/tests/google/requests/compute/firewall_tests.rb +85 -0
- data/tests/google/requests/compute/image_tests.rb +80 -0
- data/tests/google/requests/compute/network_tests.rb +74 -0
- data/tests/google/requests/compute/operation_tests.rb +19 -0
- data/tests/google/requests/compute/server_tests.rb +84 -0
- data/tests/google/requests/compute/zone_tests.rb +46 -0
- data/tests/helpers/mock_helper.rb +4 -0
- data/tests/openstack/models/compute/server_tests.rb +91 -1
- data/tests/openstack/requests/compute/volume_tests.rb +11 -9
- data/tests/openstack/requests/volume/quota_tests.rb +51 -0
- data/tests/openstack/version_tests.rb +55 -0
- data/tests/rackspace/helper.rb +10 -0
- data/tests/rackspace/models/compute_v2/server_tests.rb +26 -1
- data/tests/rackspace/requests/compute/image_tests.rb +1 -1
- data/tests/rackspace/requests/compute_v2/image_tests.rb +2 -2
- data/tests/rackspace/requests/compute_v2/server_tests.rb +13 -0
- data/tests/rackspace/requests/dns/dns_tests.rb +1 -1
- data/tests/rackspace/requests/dns/records_tests.rb +3 -3
- data/tests/vsphere/requests/compute/vm_clone_tests.rb +10 -0
- metadata +109 -747
@@ -22,7 +22,10 @@ module Fog
|
|
22
22
|
def list_all_virtual_machines_in_folder(path, datacenter_name)
|
23
23
|
folder = get_raw_vmfolder(path, datacenter_name)
|
24
24
|
|
25
|
-
folder.children.grep(RbVmomi::VIM::VirtualMachine)
|
25
|
+
vms = folder.children.grep(RbVmomi::VIM::VirtualMachine)
|
26
|
+
# remove all template based virtual machines
|
27
|
+
vms.delete_if { |v| v.config.nil? or v.config.template }
|
28
|
+
vms.map(&method(:convert_vm_mob_ref_to_attr_hash))
|
26
29
|
end
|
27
30
|
|
28
31
|
def list_all_virtual_machines(options = { })
|
@@ -35,12 +38,12 @@ module Fog
|
|
35
38
|
:recursive => true
|
36
39
|
}).view
|
37
40
|
end.flatten
|
38
|
-
# remove all template based virtual machines
|
39
|
-
vms.delete_if { |v| v.config.template }
|
40
41
|
|
41
|
-
vms
|
42
|
-
|
43
|
-
|
42
|
+
vms = convert_vm_view_to_attr_hash(vms)
|
43
|
+
|
44
|
+
# remove all template based virtual machines
|
45
|
+
vms.delete_if { |v| v['template'] }
|
46
|
+
vms
|
44
47
|
end
|
45
48
|
|
46
49
|
def get_folder_path(folder, root = nil)
|
@@ -18,7 +18,7 @@ module Fog
|
|
18
18
|
raise ArgumentError, "#{required_options.join(', ')} are required" unless options.has_key? param
|
19
19
|
end
|
20
20
|
# TODO This is ugly and needs to rethink mocks
|
21
|
-
unless
|
21
|
+
unless Fog.mock?
|
22
22
|
raise ArgumentError, "#{options["datacenter"]} Doesn't Exist!" unless get_datacenter(options["datacenter"])
|
23
23
|
raise ArgumentError, "#{options["template_path"]} Doesn't Exist!" unless get_virtual_machine(options["template_path"], options["datacenter"])
|
24
24
|
end
|
@@ -29,54 +29,55 @@ module Fog
|
|
29
29
|
class Real
|
30
30
|
include Shared
|
31
31
|
|
32
|
-
# Clones a VM from a template or existing machine on your vSphere
|
33
|
-
# Server.
|
32
|
+
# Clones a VM from a template or existing machine on your vSphere
|
33
|
+
# Server.
|
34
34
|
#
|
35
35
|
# ==== Parameters
|
36
36
|
# * options<~Hash>:
|
37
|
-
# * 'datacenter'<~String> - *REQUIRED* Datacenter name your cloning
|
37
|
+
# * 'datacenter'<~String> - *REQUIRED* Datacenter name your cloning
|
38
38
|
# in. Make sure this datacenter exists, should if you're using
|
39
39
|
# the clone function in server.rb model.
|
40
|
-
# * 'template_path'<~String> - *REQUIRED* The path to the machine you
|
40
|
+
# * 'template_path'<~String> - *REQUIRED* The path to the machine you
|
41
41
|
# want to clone FROM. Relative to Datacenter (Example:
|
42
42
|
# "FolderNameHere/VMNameHere")
|
43
|
-
# * 'name'<~String> - *REQUIRED* The VMName of the Destination
|
43
|
+
# * 'name'<~String> - *REQUIRED* The VMName of the Destination
|
44
44
|
# * 'dest_folder'<~String> - Destination Folder of where 'name' will
|
45
45
|
# be placed on your cluster. Relative Path to Datacenter E.G.
|
46
46
|
# "FolderPlaceHere/anotherSub Folder/onemore"
|
47
|
-
# * 'power_on'<~Boolean> - Whether to power on machine after clone.
|
47
|
+
# * 'power_on'<~Boolean> - Whether to power on machine after clone.
|
48
48
|
# Defaults to true.
|
49
49
|
# * 'wait'<~Boolean> - Whether the method should wait for the virtual
|
50
|
-
# machine to finish cloning before returning information from
|
50
|
+
# machine to finish cloning before returning information from
|
51
51
|
# vSphere. Broken right now as you cannot return a model of a serer
|
52
52
|
# that isn't finished cloning. Defaults to True
|
53
|
-
# * 'resource_pool'<~Array> - The resource pool on your datacenter
|
53
|
+
# * 'resource_pool'<~Array> - The resource pool on your datacenter
|
54
54
|
# cluster you want to use. Only works with clusters within same
|
55
55
|
# same datacenter as where you're cloning from. Datacenter grabbed
|
56
|
-
# from template_path option.
|
56
|
+
# from template_path option.
|
57
57
|
# Example: ['cluster_name_here','resource_pool_name_here']
|
58
58
|
# * 'datastore'<~String> - The datastore you'd like to use.
|
59
59
|
# (datacenterObj.datastoreFolder.find('name') in API)
|
60
60
|
# * 'transform'<~String> - Not documented - see http://www.vmware.com/support/developer/vc-sdk/visdk41pubs/ApiReference/vim.vm.RelocateSpec.html
|
61
|
+
# * 'numCPUs'<~Integer> - the number of Virtual CPUs of the Destination VM
|
62
|
+
# * 'memoryMB'<~Integer> - the size of memory of the Destination VM in MB
|
61
63
|
# * customization_spec<~Hash>: Options are marked as required if you
|
62
64
|
# use this customization_spec. Static IP Settings not configured.
|
63
65
|
# This only support cloning and setting DHCP on the first interface
|
64
|
-
# * 'domain'<~String> - *REQUIRED* This is put into
|
66
|
+
# * 'domain'<~String> - *REQUIRED* This is put into
|
65
67
|
# /etc/resolve.conf (we hope)
|
66
|
-
# * 'hostname'<~String> - Hostname of the Guest Os - default is
|
68
|
+
# * 'hostname'<~String> - Hostname of the Guest Os - default is
|
67
69
|
# options['name']
|
68
|
-
# * 'hw_utc_clock'<~Boolean> - *REQUIRED* Is hardware clock UTC?
|
70
|
+
# * 'hw_utc_clock'<~Boolean> - *REQUIRED* Is hardware clock UTC?
|
69
71
|
# Default true
|
70
|
-
# * 'time_zone'<~String> - *REQUIRED* Only valid linux options
|
72
|
+
# * 'time_zone'<~String> - *REQUIRED* Only valid linux options
|
71
73
|
# are valid - example: 'America/Denver'
|
72
|
-
#
|
73
74
|
def vm_clone(options = {})
|
74
75
|
# Option handling
|
75
76
|
options = vm_clone_check_options(options)
|
76
77
|
|
77
78
|
# Added for people still using options['path']
|
78
79
|
template_path = options['path'] || options['template_path']
|
79
|
-
|
80
|
+
|
80
81
|
# Default wait enabled
|
81
82
|
options['wait'] = true
|
82
83
|
|
@@ -107,16 +108,17 @@ module Fog
|
|
107
108
|
# If the vm given did return a valid resource pool, default to using it for the clone.
|
108
109
|
# Even if specific pools aren't implemented in this environment, we will still get back
|
109
110
|
# at least the cluster or host we can pass on to the clone task
|
110
|
-
# This catches if resource_pool option is set but comes back nil and if resourcePool is
|
111
|
-
# already set.
|
111
|
+
# This catches if resource_pool option is set but comes back nil and if resourcePool is
|
112
|
+
# already set.
|
112
113
|
resource_pool ||= vm_mob_ref.resourcePool.nil? ? esx_host.parent.resourcePool : vm_mob_ref.resourcePool
|
113
|
-
|
114
|
+
|
114
115
|
# Options['datastore']<~String>
|
115
116
|
# Grab the datastore object if option is set
|
116
117
|
datastore_obj = get_raw_datastore(options['datastore'], options['datacenter']) if options.has_key?('datastore')
|
117
118
|
# confirm nil if nil or option is not set
|
118
119
|
datastore_obj ||= nil
|
119
|
-
|
120
|
+
virtual_machine_config_spec = RbVmomi::VIM::VirtualMachineConfigSpec()
|
121
|
+
|
120
122
|
# Options['network']
|
121
123
|
# Build up the config spec
|
122
124
|
if ( options.has_key?('network_label') )
|
@@ -137,10 +139,13 @@ module Fog
|
|
137
139
|
device_spec = RbVmomi::VIM::VirtualDeviceConfigSpec(
|
138
140
|
:operation => config_spec_operation,
|
139
141
|
:device => device)
|
140
|
-
virtual_machine_config_spec =
|
141
|
-
:deviceChange => [device_spec])
|
142
|
+
virtual_machine_config_spec.deviceChange = [device_spec]
|
142
143
|
end
|
143
|
-
|
144
|
+
# Options['numCPUs'] or Options['memoryMB']
|
145
|
+
# Build up the specification for Hardware, for more details see ____________
|
146
|
+
# https://github.com/rlane/rbvmomi/blob/master/test/test_serialization.rb
|
147
|
+
virtual_machine_config_spec.numCPUs = options['numCPUs'] if ( options.has_key?('numCPUs') )
|
148
|
+
virtual_machine_config_spec.memoryMB = options['memoryMB'] if ( options.has_key?('memoryMB') )
|
144
149
|
# Options['customization_spec']
|
145
150
|
# Build up all the crappy tiered objects like the perl method
|
146
151
|
# Collect your variables ifset (writing at 11pm revist me)
|
@@ -186,7 +191,16 @@ module Fog
|
|
186
191
|
:nicSettingMap => cust_adapter_mapping)
|
187
192
|
end
|
188
193
|
customization_spec ||= nil
|
189
|
-
|
194
|
+
|
195
|
+
# FIXME: pad this out with the rest of the useful things in VirtualMachineConfigSpec
|
196
|
+
# http://www.vmware.com/support/developer/vc-sdk/visdk41pubs/ApiReference/vim.vm.ConfigSpec.html
|
197
|
+
if options.has_key?('memoryMB') || options.has_key?('numCPUs')
|
198
|
+
virtual_machine_config_spec = {
|
199
|
+
:memoryMB => options['memoryMB'],
|
200
|
+
:numCPUs => options['numCPUs']
|
201
|
+
}
|
202
|
+
end
|
203
|
+
|
190
204
|
relocation_spec=nil
|
191
205
|
if ( options['linked_clone'] )
|
192
206
|
# cribbed heavily from the rbvmomi clone_vm.rb
|
@@ -221,7 +235,7 @@ module Fog
|
|
221
235
|
:pool => resource_pool,
|
222
236
|
:diskMoveType => :moveChildMostDiskBacking)
|
223
237
|
else
|
224
|
-
relocation_spec = RbVmomi::VIM.VirtualMachineRelocateSpec(:datastore => datastore_obj,
|
238
|
+
relocation_spec = RbVmomi::VIM.VirtualMachineRelocateSpec(:datastore => datastore_obj,
|
225
239
|
:pool => resource_pool,
|
226
240
|
:transform => options['transform'] || 'sparse')
|
227
241
|
end
|
@@ -231,7 +245,7 @@ module Fog
|
|
231
245
|
:customization => customization_spec,
|
232
246
|
:powerOn => options.has_key?('power_on') ? options['power_on'] : true,
|
233
247
|
:template => false)
|
234
|
-
|
248
|
+
|
235
249
|
# Perform the actual Clone Task
|
236
250
|
task = vm_mob_ref.CloneVM_Task(:folder => dest_folder,
|
237
251
|
:name => options['name'],
|
@@ -260,7 +274,7 @@ module Fog
|
|
260
274
|
nil
|
261
275
|
end
|
262
276
|
end
|
263
|
-
|
277
|
+
|
264
278
|
# Return hash
|
265
279
|
{
|
266
280
|
'vm_ref' => new_vm ? new_vm._ref : nil,
|
@@ -59,7 +59,7 @@ module Fog
|
|
59
59
|
# net = service.networks.create :name => 'foonet',
|
60
60
|
# :description => 'test network'
|
61
61
|
#
|
62
|
-
# @
|
62
|
+
# @return [Boolean]
|
63
63
|
#
|
64
64
|
def save
|
65
65
|
requires :name
|
@@ -77,7 +77,7 @@ module Fog
|
|
77
77
|
# net = service.networks.find { |net| net.name == 'foonet' }
|
78
78
|
# net.destroy
|
79
79
|
#
|
80
|
-
# @
|
80
|
+
# @return [Boolean]
|
81
81
|
#
|
82
82
|
def destroy
|
83
83
|
requires :reference
|
data/lib/tasks/changelog_task.rb
CHANGED
@@ -14,7 +14,6 @@ module Fog
|
|
14
14
|
changelog << ('=' * changelog[0].length)
|
15
15
|
changelog << ''
|
16
16
|
|
17
|
-
require 'multi_json'
|
18
17
|
github_repo_data = Fog::JSON.decode(Excon.get('https://api.github.com/repos/fog/fog').body)
|
19
18
|
data = github_repo_data.reject {|key, value| !['forks', 'open_issues', 'watchers'].include?(key)}
|
20
19
|
github_collaborator_data = Fog::JSON.decode(Excon.get('https://api.github.com/repos/fog/fog/collaborators').body)
|
@@ -61,9 +60,11 @@ module Fog
|
|
61
60
|
'geemus',
|
62
61
|
'Henry Addison',
|
63
62
|
'Kevin Menard',
|
63
|
+
'Kyle Rames',
|
64
64
|
'Lincoln Stoll',
|
65
65
|
'Luqman Amjad',
|
66
66
|
'Michael Zeng',
|
67
|
+
'Nat Welch',
|
67
68
|
'Nick Osborn',
|
68
69
|
'nightshade427',
|
69
70
|
'Patrick Debois',
|
@@ -1,7 +1,43 @@
|
|
1
1
|
Shindo.tests("Storage[:aws] | directory", ["aws"]) do
|
2
2
|
|
3
3
|
directory_attributes = {
|
4
|
-
:key => 'fogdirectorytests'
|
4
|
+
:key => uniq_id('fogdirectorytests')
|
5
|
+
}
|
6
|
+
|
7
|
+
model_tests(Fog::Storage[:aws].directories, directory_attributes, Fog.mocking?) do
|
8
|
+
tests("#public_url").returns(nil) do
|
9
|
+
@instance.public_url
|
10
|
+
end
|
11
|
+
|
12
|
+
@instance.acl = 'public-read'
|
13
|
+
@instance.save
|
14
|
+
|
15
|
+
tests("#public_url").returns(true) do
|
16
|
+
if @instance.public_url =~ %r[\Ahttps://fogdirectorytests-[\da-f]+\.s3\.amazonaws\.com/\z]
|
17
|
+
true
|
18
|
+
else
|
19
|
+
@instance.public_url
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
directory_attributes = {
|
25
|
+
:key => uniq_id('different-region'),
|
26
|
+
:location => 'eu-west-1',
|
27
|
+
}
|
28
|
+
|
29
|
+
model_tests(Fog::Storage[:aws].directories, directory_attributes, Fog.mocking?) do
|
30
|
+
tests("#location").returns('eu-west-1') do
|
31
|
+
@instance.location
|
32
|
+
end
|
33
|
+
|
34
|
+
tests("#location").returns('eu-west-1') do
|
35
|
+
Fog::Storage[:aws].directories.get(@instance.identity).location
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
directory_attributes = {
|
40
|
+
:key => uniq_id('fogdirectorytests')
|
5
41
|
}
|
6
42
|
|
7
43
|
model_tests(Fog::Storage[:aws].directories, directory_attributes, Fog.mocking?) do
|
@@ -13,7 +49,7 @@ Shindo.tests("Storage[:aws] | directory", ["aws"]) do
|
|
13
49
|
|
14
50
|
tests("#versioning=(true) sets versioning to 'Enabled'").returns('Enabled') do
|
15
51
|
@instance.versioning = true
|
16
|
-
@instance.
|
52
|
+
@instance.service.get_bucket_versioning(@instance.key).body['VersioningConfiguration']['Status']
|
17
53
|
end
|
18
54
|
|
19
55
|
tests("#versioning=(false)").succeeds do
|
@@ -22,7 +58,7 @@ Shindo.tests("Storage[:aws] | directory", ["aws"]) do
|
|
22
58
|
|
23
59
|
tests("#versioning=(false) sets versioning to 'Suspended'").returns('Suspended') do
|
24
60
|
@instance.versioning = false
|
25
|
-
@instance.
|
61
|
+
@instance.service.get_bucket_versioning(@instance.key).body['VersioningConfiguration']['Status']
|
26
62
|
end
|
27
63
|
end
|
28
64
|
|
@@ -36,12 +72,12 @@ Shindo.tests("Storage[:aws] | directory", ["aws"]) do
|
|
36
72
|
end
|
37
73
|
|
38
74
|
tests("#versioning? true if enabled").returns(true) do
|
39
|
-
@instance.
|
75
|
+
@instance.service.put_bucket_versioning(@instance.key, 'Enabled')
|
40
76
|
@instance.versioning?
|
41
77
|
end
|
42
78
|
|
43
79
|
tests("#versioning? false if suspended").returns(false) do
|
44
|
-
@instance.
|
80
|
+
@instance.service.put_bucket_versioning(@instance.key, 'Suspended')
|
45
81
|
@instance.versioning?
|
46
82
|
end
|
47
83
|
end
|
@@ -9,8 +9,7 @@ Shindo.tests("Storage[:aws] | file", ["aws"]) do
|
|
9
9
|
}
|
10
10
|
|
11
11
|
directory_attributes = {
|
12
|
-
|
13
|
-
:key => "fogfilestests-#{rand(65536)}"
|
12
|
+
:key => uniq_id("fogfilestests")
|
14
13
|
}
|
15
14
|
|
16
15
|
@directory = Fog::Storage[:aws].directories.create(directory_attributes)
|
@@ -7,7 +7,7 @@ Shindo.tests("Storage[:aws] | files", ["aws"]) do
|
|
7
7
|
}
|
8
8
|
|
9
9
|
directory_attributes = {
|
10
|
-
:key => 'fogfilestests'
|
10
|
+
:key => uniq_id('fogfilestests')
|
11
11
|
}
|
12
12
|
|
13
13
|
@directory = Fog::Storage[:aws].directories.create(directory_attributes)
|
@@ -16,9 +16,9 @@ Shindo.tests("Storage[:aws] | files", ["aws"]) do
|
|
16
16
|
model_tests(@directory.files, file_attributes, Fog.mocking?) do
|
17
17
|
|
18
18
|
v1 = @instance.version
|
19
|
-
v2 = @directory.
|
20
|
-
v3 = @directory.
|
21
|
-
v4 = @directory.
|
19
|
+
v2 = @directory.service.put_object(@directory.key, @instance.key, 'version 2 content').headers['x-amz-version-id']
|
20
|
+
v3 = @directory.service.delete_object(@directory.key, @instance.key).headers['x-amz-version-id']
|
21
|
+
v4 = @directory.service.put_object(@directory.key, @instance.key, 'version 3 content').headers['x-amz-version-id']
|
22
22
|
|
23
23
|
tests("#get") do
|
24
24
|
tests("#get without version fetches the latest version").returns(v4) do
|
@@ -30,6 +30,7 @@ Shindo.tests("Storage[:aws] | files", ["aws"]) do
|
|
30
30
|
end
|
31
31
|
|
32
32
|
tests("#get with a deleted version returns nil").returns(nil) do
|
33
|
+
pending # getting 405 Method Not Allowed
|
33
34
|
@directory.files.get(@instance.key, 'versionId' => v3)
|
34
35
|
end
|
35
36
|
end
|
@@ -44,6 +45,7 @@ Shindo.tests("Storage[:aws] | files", ["aws"]) do
|
|
44
45
|
end
|
45
46
|
|
46
47
|
tests("#head with a deleted version returns nil").returns(nil) do
|
48
|
+
pending # getting 405 Method Not Allowed
|
47
49
|
@directory.files.head(@instance.key, 'versionId' => v3)
|
48
50
|
end
|
49
51
|
end
|
@@ -14,15 +14,17 @@ Shindo.tests('AWS | url', ["aws"]) do
|
|
14
14
|
@file = @storage.directories.new(:key => 'fognonbucket').files.new(:key => 'test.txt')
|
15
15
|
|
16
16
|
if Fog.mock?
|
17
|
-
signature = Fog::Storage::AWS.new.signature(nil)
|
17
|
+
signature = Fog::Storage::AWS.new.signature(nil, nil)
|
18
18
|
else
|
19
19
|
signature = 'tajHIhKHAdFYsigmzybCpaq8N0Q%3D'
|
20
20
|
end
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
22
|
+
if RUBY_VERSION > '1.8.7' # ruby 1.8.x doesn't provide hash ordering
|
23
|
+
tests('#url w/ response-cache-control').returns(
|
24
|
+
"https://fognonbucket.s3.amazonaws.com/test.txt?response-cache-control=No-cache&AWSAccessKeyId=123&Signature=#{signature}&Expires=1356998400"
|
25
|
+
) do
|
26
|
+
@file.url(@expires, :query => { 'response-cache-control' => 'No-cache' })
|
27
|
+
end
|
26
28
|
end
|
27
29
|
|
28
30
|
end
|
@@ -7,7 +7,7 @@ Shindo.tests("Storage[:aws] | version", ["aws"]) do
|
|
7
7
|
}
|
8
8
|
|
9
9
|
directory_attributes = {
|
10
|
-
:key => 'fogfilestests'
|
10
|
+
:key => uniq_id('fogfilestests')
|
11
11
|
}
|
12
12
|
|
13
13
|
@directory = Fog::Storage[:aws].directories.create(directory_attributes)
|
@@ -16,7 +16,7 @@ Shindo.tests("Storage[:aws] | version", ["aws"]) do
|
|
16
16
|
model_tests(@directory.files, file_attributes, Fog.mocking?) do
|
17
17
|
|
18
18
|
@version_instance = @instance.versions.first
|
19
|
-
@directory.
|
19
|
+
@directory.service.put_object(@directory.key, @instance.key, 'second version content')
|
20
20
|
|
21
21
|
tests("#file") do
|
22
22
|
tests("#file should return the object associated with the version").returns(@version_instance.version) do
|
@@ -7,24 +7,24 @@ Shindo.tests("Storage[:aws] | versions", ["aws"]) do
|
|
7
7
|
}
|
8
8
|
|
9
9
|
directory_attributes = {
|
10
|
-
:key => 'fogfilestests'
|
10
|
+
:key => uniq_id('fogfilestests')
|
11
11
|
}
|
12
12
|
|
13
13
|
model_tests(Fog::Storage[:aws].directories, directory_attributes, Fog.mocking?) do
|
14
14
|
@instance.versioning = true
|
15
15
|
|
16
16
|
versions = []
|
17
|
-
versions << @instance.
|
17
|
+
versions << @instance.service.put_object(@instance.key, 'one', 'abcde').headers['x-amz-version-id']
|
18
18
|
|
19
19
|
puts versions.first
|
20
20
|
|
21
|
-
versions << @instance.
|
22
|
-
versions << @instance.
|
21
|
+
versions << @instance.service.put_object(@instance.key, 'one', '32423').headers['x-amz-version-id']
|
22
|
+
versions << @instance.service.delete_object(@instance.key, 'one').headers['x-amz-version-id']
|
23
23
|
versions.reverse!
|
24
24
|
|
25
25
|
puts versions.first
|
26
26
|
|
27
|
-
versions << @instance.
|
27
|
+
versions << @instance.service.put_object(@instance.key, 'two', 'aoeu').headers['x-amz-version-id']
|
28
28
|
|
29
29
|
tests('#versions') do
|
30
30
|
tests('#versions.size includes versions (including DeleteMarkers) for all keys').returns(4) do
|
@@ -6,10 +6,11 @@ Shindo.tests('AWS::IAM | user requests', ['aws']) do
|
|
6
6
|
|
7
7
|
@user_format = {
|
8
8
|
'User' => {
|
9
|
-
'Arn'
|
10
|
-
'Path'
|
11
|
-
'UserId'
|
12
|
-
'UserName'
|
9
|
+
'Arn' => String,
|
10
|
+
'Path' => String,
|
11
|
+
'UserId' => String,
|
12
|
+
'UserName' => String,
|
13
|
+
'CreateDate' => Time
|
13
14
|
},
|
14
15
|
'RequestId' => String
|
15
16
|
}
|
@@ -20,10 +21,11 @@ Shindo.tests('AWS::IAM | user requests', ['aws']) do
|
|
20
21
|
|
21
22
|
@users_format = {
|
22
23
|
'Users' => [{
|
23
|
-
'Arn'
|
24
|
-
'Path'
|
25
|
-
'UserId'
|
26
|
-
'UserName'
|
24
|
+
'Arn' => String,
|
25
|
+
'Path' => String,
|
26
|
+
'UserId' => String,
|
27
|
+
'UserName' => String,
|
28
|
+
'CreateDate' => Time
|
27
29
|
}],
|
28
30
|
'IsTruncated' => Fog::Boolean,
|
29
31
|
'RequestId' => String
|