fog 1.1.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +6 -0
- data/README.rdoc +1 -1
- data/Rakefile +6 -19
- data/changelog.txt +614 -2
- data/docs/_layouts/default.html +1 -1
- data/docs/compute/index.markdown +15 -1
- data/docs/index.markdown +2 -2
- data/docs/storage/index.markdown +4 -4
- data/fog.gemspec +7 -4
- data/lib/fog/aws/auto_scaling.rb +2 -17
- data/lib/fog/aws/beanstalk.rb +140 -0
- data/lib/fog/aws/cloud_formation.rb +1 -16
- data/lib/fog/aws/cloud_watch.rb +2 -17
- data/lib/fog/aws/compute.rb +22 -21
- data/lib/fog/aws/dns.rb +2 -2
- data/lib/fog/aws/dynamodb.rb +162 -0
- data/lib/fog/aws/elasticache.rb +1 -7
- data/lib/fog/aws/elb/policy_types.rb +35 -0
- data/lib/fog/aws/elb.rb +34 -24
- data/lib/fog/aws/emr.rb +5 -4
- data/lib/fog/aws/iam.rb +16 -1
- data/lib/fog/aws/models/auto_scaling/activity.rb +1 -1
- data/lib/fog/aws/models/auto_scaling/group.rb +2 -2
- data/lib/fog/aws/models/beanstalk/application.rb +62 -0
- data/lib/fog/aws/models/beanstalk/applications.rb +25 -0
- data/lib/fog/aws/models/beanstalk/environment.rb +129 -0
- data/lib/fog/aws/models/beanstalk/environments.rb +29 -0
- data/lib/fog/aws/models/beanstalk/event.rb +20 -0
- data/lib/fog/aws/models/beanstalk/events.rb +19 -0
- data/lib/fog/aws/models/beanstalk/template.rb +62 -0
- data/lib/fog/aws/models/beanstalk/templates.rb +70 -0
- data/lib/fog/aws/models/beanstalk/version.rb +79 -0
- data/lib/fog/aws/models/beanstalk/versions.rb +31 -0
- data/lib/fog/aws/models/cloud_watch/metric_statistic.rb +1 -2
- data/lib/fog/aws/models/compute/address.rb +7 -4
- data/lib/fog/aws/models/compute/addresses.rb +2 -2
- data/lib/fog/aws/models/compute/flavors.rb +1 -1
- data/lib/fog/aws/models/compute/key_pairs.rb +2 -2
- data/lib/fog/aws/models/compute/security_group.rb +3 -3
- data/lib/fog/aws/models/compute/security_groups.rb +30 -5
- data/lib/fog/aws/models/compute/server.rb +5 -1
- data/lib/fog/aws/models/compute/servers.rb +2 -2
- data/lib/fog/aws/models/compute/subnet.rb +58 -0
- data/lib/fog/aws/models/compute/subnets.rb +99 -0
- data/lib/fog/aws/models/compute/volumes.rb +3 -3
- data/lib/fog/aws/models/compute/vpc.rb +63 -0
- data/lib/fog/aws/models/compute/vpcs.rb +93 -0
- data/lib/fog/aws/models/dns/record.rb +37 -23
- data/lib/fog/aws/models/dns/records.rb +3 -3
- data/lib/fog/aws/models/elasticache/cluster.rb +1 -1
- data/lib/fog/aws/models/elb/listener.rb +9 -7
- data/lib/fog/aws/models/elb/load_balancer.rb +6 -0
- data/lib/fog/aws/models/storage/directory.rb +22 -1
- data/lib/fog/aws/models/storage/file.rb +60 -9
- data/lib/fog/aws/models/storage/files.rb +4 -4
- data/lib/fog/aws/models/storage/version.rb +36 -0
- data/lib/fog/aws/models/storage/versions.rb +38 -0
- data/lib/fog/aws/parsers/auto_scaling/describe_scheduled_actions.rb +3 -3
- data/lib/fog/aws/parsers/beanstalk/check_dns_availability.rb +19 -0
- data/lib/fog/aws/parsers/beanstalk/create_application.rb +24 -0
- data/lib/fog/aws/parsers/beanstalk/create_application_version.rb +26 -0
- data/lib/fog/aws/parsers/beanstalk/create_configuration_template.rb +29 -0
- data/lib/fog/aws/parsers/beanstalk/create_environment.rb +37 -0
- data/lib/fog/aws/parsers/beanstalk/create_storage_location.rb +18 -0
- data/lib/fog/aws/parsers/beanstalk/describe_application_versions.rb +26 -0
- data/lib/fog/aws/parsers/beanstalk/describe_applications.rb +24 -0
- data/lib/fog/aws/parsers/beanstalk/describe_configuration_options.rb +32 -0
- data/lib/fog/aws/parsers/beanstalk/describe_configuration_settings.rb +30 -0
- data/lib/fog/aws/parsers/beanstalk/describe_environment_resources.rb +26 -0
- data/lib/fog/aws/parsers/beanstalk/describe_environments.rb +38 -0
- data/lib/fog/aws/parsers/beanstalk/describe_events.rb +27 -0
- data/lib/fog/aws/parsers/beanstalk/empty.rb +27 -0
- data/lib/fog/aws/parsers/beanstalk/list_available_solution_stacks.rb +21 -0
- data/lib/fog/aws/parsers/beanstalk/parser.rb +93 -0
- data/lib/fog/aws/parsers/beanstalk/retrieve_environment_info.rb +22 -0
- data/lib/fog/aws/parsers/beanstalk/terminate_environment.rb +37 -0
- data/lib/fog/aws/parsers/beanstalk/update_application.rb +24 -0
- data/lib/fog/aws/parsers/beanstalk/update_application_version.rb +26 -0
- data/lib/fog/aws/parsers/beanstalk/update_configuration_template.rb +29 -0
- data/lib/fog/aws/parsers/beanstalk/update_environment.rb +37 -0
- data/lib/fog/aws/parsers/beanstalk/validate_configuration_settings.rb +22 -0
- data/lib/fog/aws/parsers/compute/allocate_address.rb +1 -1
- data/lib/fog/aws/parsers/compute/associate_address.rb +25 -0
- data/lib/fog/aws/parsers/compute/create_subnet.rb +51 -0
- data/lib/fog/aws/parsers/compute/create_vpc.rb +51 -0
- data/lib/fog/aws/parsers/compute/delete_subnet.rb +24 -0
- data/lib/fog/aws/parsers/compute/delete_vpc.rb +24 -0
- data/lib/fog/aws/parsers/compute/describe_addresses.rb +1 -1
- data/lib/fog/aws/parsers/compute/describe_images.rb +20 -13
- data/lib/fog/aws/parsers/compute/describe_instance_status.rb +97 -0
- data/lib/fog/aws/parsers/compute/describe_instances.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_security_groups.rb +4 -4
- data/lib/fog/aws/parsers/compute/describe_subnets.rb +49 -0
- data/lib/fog/aws/parsers/compute/describe_volume_status.rb +70 -0
- data/lib/fog/aws/parsers/compute/describe_vpcs.rb +49 -0
- data/lib/fog/aws/parsers/dns/list_resource_record_sets.rb +15 -7
- data/lib/fog/aws/parsers/elb/describe_load_balancer_policies.rb +64 -0
- data/lib/fog/aws/parsers/elb/describe_load_balancer_policy_types.rb +70 -0
- data/lib/fog/aws/parsers/sns/confirm_subscription.rb +1 -1
- data/lib/fog/aws/parsers/sns/create_topic.rb +1 -1
- data/lib/fog/aws/parsers/sns/list_subscriptions.rb +2 -2
- data/lib/fog/aws/parsers/sns/list_topics.rb +1 -1
- data/lib/fog/aws/parsers/sns/subscribe.rb +1 -1
- data/lib/fog/aws/parsers/sqs/receive_message.rb +1 -1
- data/lib/fog/aws/parsers/storage/get_bucket_lifecycle.rb +32 -0
- data/lib/fog/aws/parsers/storage/get_bucket_object_versions.rb +1 -1
- data/lib/fog/aws/parsers/storage/get_bucket_versioning.rb +1 -1
- data/lib/fog/aws/parsers/sts/get_session_token.rb +31 -0
- data/lib/fog/aws/rds.rb +51 -18
- data/lib/fog/aws/requests/auto_scaling/delete_launch_configuration.rb +10 -1
- data/lib/fog/aws/requests/auto_scaling/describe_launch_configurations.rb +16 -7
- data/lib/fog/aws/requests/auto_scaling/describe_scheduled_actions.rb +5 -0
- data/lib/fog/aws/requests/auto_scaling/put_scheduled_update_group_action.rb +13 -3
- data/lib/fog/aws/requests/beanstalk/check_dns_availability.rb +27 -0
- data/lib/fog/aws/requests/beanstalk/create_application.rb +29 -0
- data/lib/fog/aws/requests/beanstalk/create_application_version.rb +41 -0
- data/lib/fog/aws/requests/beanstalk/create_configuration_template.rb +44 -0
- data/lib/fog/aws/requests/beanstalk/create_environment.rb +50 -0
- data/lib/fog/aws/requests/beanstalk/create_storage_location.rb +27 -0
- data/lib/fog/aws/requests/beanstalk/delete_application.rb +29 -0
- data/lib/fog/aws/requests/beanstalk/delete_application_version.rb +36 -0
- data/lib/fog/aws/requests/beanstalk/delete_configuration_template.rb +34 -0
- data/lib/fog/aws/requests/beanstalk/delete_environment_configuration.rb +34 -0
- data/lib/fog/aws/requests/beanstalk/describe_application_versions.rb +34 -0
- data/lib/fog/aws/requests/beanstalk/describe_applications.rb +30 -0
- data/lib/fog/aws/requests/beanstalk/describe_configuration_options.rb +40 -0
- data/lib/fog/aws/requests/beanstalk/describe_configuration_settings.rb +31 -0
- data/lib/fog/aws/requests/beanstalk/describe_environment_resources.rb +29 -0
- data/lib/fog/aws/requests/beanstalk/describe_environments.rb +40 -0
- data/lib/fog/aws/requests/beanstalk/describe_events.rb +29 -0
- data/lib/fog/aws/requests/beanstalk/list_available_solution_stacks.rb +27 -0
- data/lib/fog/aws/requests/beanstalk/rebuild_environment.rb +30 -0
- data/lib/fog/aws/requests/beanstalk/request_environment_info.rb +29 -0
- data/lib/fog/aws/requests/beanstalk/restart_app_server.rb +29 -0
- data/lib/fog/aws/requests/beanstalk/retrieve_environment_info.rb +29 -0
- data/lib/fog/aws/requests/beanstalk/swap_environment_cnames.rb +29 -0
- data/lib/fog/aws/requests/beanstalk/terminate_environment.rb +31 -0
- data/lib/fog/aws/requests/beanstalk/update_application.rb +30 -0
- data/lib/fog/aws/requests/beanstalk/update_application_version.rb +30 -0
- data/lib/fog/aws/requests/beanstalk/update_configuration_template.rb +36 -0
- data/lib/fog/aws/requests/beanstalk/update_environment.rb +42 -0
- data/lib/fog/aws/requests/beanstalk/validate_configuration_settings.rb +33 -0
- data/lib/fog/aws/requests/compute/allocate_address.rb +11 -4
- data/lib/fog/aws/requests/compute/associate_address.rb +44 -17
- data/lib/fog/aws/requests/compute/authorize_security_group_ingress.rb +15 -17
- data/lib/fog/aws/requests/compute/create_security_group.rb +8 -4
- data/lib/fog/aws/requests/compute/create_subnet.rb +79 -0
- data/lib/fog/aws/requests/compute/create_tags.rb +3 -2
- data/lib/fog/aws/requests/compute/create_vpc.rb +71 -0
- data/lib/fog/aws/requests/compute/delete_security_group.rb +22 -4
- data/lib/fog/aws/requests/compute/delete_subnet.rb +49 -0
- data/lib/fog/aws/requests/compute/delete_vpc.rb +52 -0
- data/lib/fog/aws/requests/compute/describe_availability_zones.rb +3 -0
- data/lib/fog/aws/requests/compute/describe_instance_status.rb +36 -0
- data/lib/fog/aws/requests/compute/describe_security_groups.rb +4 -0
- data/lib/fog/aws/requests/compute/describe_subnets.rb +66 -0
- data/lib/fog/aws/requests/compute/describe_volume_status.rb +50 -0
- data/lib/fog/aws/requests/compute/describe_vpcs.rb +62 -0
- data/lib/fog/aws/requests/compute/detach_volume.rb +13 -8
- data/lib/fog/aws/requests/compute/disassociate_address.rb +7 -5
- data/lib/fog/aws/requests/compute/request_spot_instances.rb +5 -1
- data/lib/fog/aws/requests/compute/revoke_security_group_ingress.rb +11 -13
- data/lib/fog/aws/requests/compute/run_instances.rb +5 -1
- data/lib/fog/aws/requests/dns/change_resource_record_sets.rb +43 -28
- data/lib/fog/aws/requests/dns/create_hosted_zone.rb +9 -9
- data/lib/fog/aws/requests/dns/delete_hosted_zone.rb +7 -7
- data/lib/fog/aws/requests/dns/get_change.rb +5 -5
- data/lib/fog/aws/requests/dns/get_hosted_zone.rb +8 -8
- data/lib/fog/aws/requests/dns/list_hosted_zones.rb +15 -15
- data/lib/fog/aws/requests/dns/list_resource_record_sets.rb +23 -20
- data/lib/fog/aws/requests/dynamodb/batch_get_item.rb +43 -0
- data/lib/fog/aws/requests/dynamodb/create_table.rb +55 -0
- data/lib/fog/aws/requests/dynamodb/delete_item.rb +45 -0
- data/lib/fog/aws/requests/dynamodb/delete_table.rb +42 -0
- data/lib/fog/aws/requests/dynamodb/describe_table.rb +44 -0
- data/lib/fog/aws/requests/dynamodb/get_item.rb +43 -0
- data/lib/fog/aws/requests/dynamodb/list_tables.rb +29 -0
- data/lib/fog/aws/requests/dynamodb/put_item.rb +41 -0
- data/lib/fog/aws/requests/dynamodb/query.rb +44 -0
- data/lib/fog/aws/requests/dynamodb/scan.rb +45 -0
- data/lib/fog/aws/requests/dynamodb/update_item.rb +49 -0
- data/lib/fog/aws/requests/dynamodb/update_table.rb +46 -0
- data/lib/fog/aws/requests/elasticache/create_cache_cluster.rb +2 -2
- data/lib/fog/aws/requests/elasticache/modify_cache_cluster.rb +2 -2
- data/lib/fog/aws/requests/elb/create_app_cookie_stickiness_policy.rb +2 -0
- data/lib/fog/aws/requests/elb/create_lb_cookie_stickiness_policy.rb +3 -1
- data/lib/fog/aws/requests/elb/create_load_balancer.rb +7 -2
- data/lib/fog/aws/requests/elb/create_load_balancer_listeners.rb +10 -1
- data/lib/fog/aws/requests/elb/create_load_balancer_policy.rb +79 -0
- data/lib/fog/aws/requests/elb/delete_load_balancer_policy.rb +1 -1
- data/lib/fog/aws/requests/elb/describe_load_balancer_policies.rb +71 -0
- data/lib/fog/aws/requests/elb/describe_load_balancer_policy_types.rb +68 -0
- data/lib/fog/aws/requests/elb/describe_load_balancers.rb +5 -1
- data/lib/fog/aws/requests/elb/set_load_balancer_listener_ssl_certificate.rb +27 -0
- data/lib/fog/aws/requests/elb/set_load_balancer_policies_of_listener.rb +1 -1
- data/lib/fog/aws/requests/emr/run_job_flow.rb +9 -7
- data/lib/fog/aws/requests/iam/add_user_to_group.rb +24 -0
- data/lib/fog/aws/requests/iam/create_access_key.rb +24 -0
- data/lib/fog/aws/requests/iam/create_group.rb +21 -0
- data/lib/fog/aws/requests/iam/create_user.rb +21 -0
- data/lib/fog/aws/requests/iam/delete_access_key.rb +17 -0
- data/lib/fog/aws/requests/iam/delete_group.rb +19 -0
- data/lib/fog/aws/requests/iam/delete_user.rb +17 -0
- data/lib/fog/aws/requests/iam/delete_user_policy.rb +16 -0
- data/lib/fog/aws/requests/iam/list_access_keys.rb +21 -0
- data/lib/fog/aws/requests/iam/list_groups.rb +18 -0
- data/lib/fog/aws/requests/iam/list_groups_for_user.rb +24 -0
- data/lib/fog/aws/requests/iam/list_user_policies.rb +18 -0
- data/lib/fog/aws/requests/iam/list_users.rb +17 -0
- data/lib/fog/aws/requests/iam/put_user_policy.rb +18 -0
- data/lib/fog/aws/requests/iam/remove_user_from_group.rb +19 -0
- data/lib/fog/aws/requests/iam/upload_server_certificate.rb +4 -1
- data/lib/fog/aws/requests/rds/authorize_db_security_group_ingress.rb +30 -1
- data/lib/fog/aws/requests/rds/create_db_instance.rb +73 -7
- data/lib/fog/aws/requests/rds/create_db_parameter_group.rb +19 -1
- data/lib/fog/aws/requests/rds/create_db_security_group.rb +19 -1
- data/lib/fog/aws/requests/rds/create_db_snapshot.rb +38 -2
- data/lib/fog/aws/requests/rds/delete_db_instance.rb +18 -3
- data/lib/fog/aws/requests/rds/delete_db_parameter_group.rb +11 -1
- data/lib/fog/aws/requests/rds/delete_db_security_group.rb +11 -1
- data/lib/fog/aws/requests/rds/delete_db_snapshot.rb +15 -4
- data/lib/fog/aws/requests/rds/describe_db_instances.rb +57 -2
- data/lib/fog/aws/requests/rds/describe_db_parameter_groups.rb +19 -1
- data/lib/fog/aws/requests/rds/describe_db_parameters.rb +0 -1
- data/lib/fog/aws/requests/rds/describe_db_reserved_instances.rb +1 -1
- data/lib/fog/aws/requests/rds/describe_db_security_groups.rb +49 -3
- data/lib/fog/aws/requests/rds/describe_db_snapshots.rb +28 -1
- data/lib/fog/aws/requests/rds/modify_db_instance.rb +26 -1
- data/lib/fog/aws/requests/rds/reboot_db_instance.rb +17 -1
- data/lib/fog/aws/requests/rds/revoke_db_security_group_ingress.rb +27 -1
- data/lib/fog/aws/requests/sns/confirm_subscription.rb +1 -1
- data/lib/fog/aws/requests/sns/delete_topic.rb +1 -1
- data/lib/fog/aws/requests/sns/get_topic_attributes.rb +1 -1
- data/lib/fog/aws/requests/sns/list_subscriptions_by_topic.rb +1 -1
- data/lib/fog/aws/requests/sns/publish.rb +1 -1
- data/lib/fog/aws/requests/sns/set_topic_attributes.rb +1 -1
- data/lib/fog/aws/requests/sns/subscribe.rb +1 -1
- data/lib/fog/aws/requests/sns/unsubscribe.rb +1 -1
- data/lib/fog/aws/requests/sqs/change_message_visibility.rb +1 -1
- data/lib/fog/aws/requests/sqs/delete_message.rb +1 -1
- data/lib/fog/aws/requests/sqs/receive_message.rb +13 -14
- data/lib/fog/aws/requests/storage/{hash_to_acl.rb → acl_utils.rb} +8 -0
- data/lib/fog/aws/requests/storage/copy_object.rb +11 -5
- data/lib/fog/aws/requests/storage/delete_bucket_lifecycle.rb +30 -0
- data/lib/fog/aws/requests/storage/delete_object.rb +73 -2
- data/lib/fog/aws/requests/storage/get_bucket.rb +3 -2
- data/lib/fog/aws/requests/storage/get_bucket_acl.rb +7 -1
- data/lib/fog/aws/requests/storage/get_bucket_lifecycle.rb +41 -0
- data/lib/fog/aws/requests/storage/get_bucket_object_versions.rb +95 -2
- data/lib/fog/aws/requests/storage/get_bucket_versioning.rb +32 -0
- data/lib/fog/aws/requests/storage/get_object.rb +42 -12
- data/lib/fog/aws/requests/storage/get_object_acl.rb +7 -1
- data/lib/fog/aws/requests/storage/get_object_http_url.rb +10 -4
- data/lib/fog/aws/requests/storage/get_object_https_url.rb +10 -4
- data/lib/fog/aws/requests/storage/head_object.rb +7 -6
- data/lib/fog/aws/requests/storage/put_bucket_acl.rb +2 -2
- data/lib/fog/aws/requests/storage/put_bucket_lifecycle.rb +48 -0
- data/lib/fog/aws/requests/storage/put_bucket_versioning.rb +41 -0
- data/lib/fog/aws/requests/storage/put_bucket_website.rb +17 -0
- data/lib/fog/aws/requests/storage/put_object.rb +26 -10
- data/lib/fog/aws/requests/storage/put_object_acl.rb +1 -1
- data/lib/fog/aws/requests/storage/sync_clock.rb +1 -1
- data/lib/fog/aws/requests/sts/get_federation_token.rb +21 -0
- data/lib/fog/aws/requests/sts/get_session_token.rb +19 -0
- data/lib/fog/aws/ses.rb +2 -7
- data/lib/fog/aws/simpledb.rb +4 -17
- data/lib/fog/aws/sns.rb +1 -14
- data/lib/fog/aws/sqs.rb +5 -11
- data/lib/fog/aws/storage.rb +7 -23
- data/lib/fog/aws/sts.rb +137 -0
- data/lib/fog/aws.rb +40 -5
- data/lib/fog/{new_servers → bare_metal_cloud}/compute.rb +14 -14
- data/lib/fog/{new_servers → bare_metal_cloud}/requests/compute/add_server.rb +1 -1
- data/lib/fog/{new_servers → bare_metal_cloud}/requests/compute/cancel_server.rb +1 -1
- data/lib/fog/{new_servers → bare_metal_cloud}/requests/compute/get_server.rb +1 -1
- data/lib/fog/{new_servers → bare_metal_cloud}/requests/compute/list_images.rb +1 -1
- data/lib/fog/{new_servers → bare_metal_cloud}/requests/compute/list_plans.rb +1 -1
- data/lib/fog/{new_servers → bare_metal_cloud}/requests/compute/list_servers.rb +1 -1
- data/lib/fog/{new_servers → bare_metal_cloud}/requests/compute/reboot_server.rb +1 -1
- data/lib/fog/{new_servers.rb → bare_metal_cloud.rb} +2 -2
- data/lib/fog/bin/aws.rb +11 -1
- data/lib/fog/bin/{new_servers.rb → bare_metal_cloud.rb} +5 -5
- data/lib/fog/bin/clodo.rb +31 -0
- data/lib/fog/bin/cloudstack.rb +30 -0
- data/lib/fog/bin/joyent.rb +31 -0
- data/lib/fog/bin/ovirt.rb +30 -0
- data/lib/fog/bin/voxel.rb +1 -1
- data/lib/fog/bin.rb +5 -1
- data/lib/fog/bluebox/compute.rb +4 -0
- data/lib/fog/bluebox/models/compute/location.rb +17 -0
- data/lib/fog/bluebox/models/compute/locations.rb +28 -0
- data/lib/fog/bluebox/models/compute/server.rb +12 -5
- data/lib/fog/bluebox/requests/compute/create_block.rb +2 -2
- data/lib/fog/bluebox/requests/compute/get_location.rb +26 -0
- data/lib/fog/bluebox/requests/compute/get_locations.rb +24 -0
- data/lib/fog/brightbox/compute.rb +8 -0
- data/lib/fog/brightbox/models/compute/cloud_ip.rb +10 -2
- data/lib/fog/brightbox/models/compute/firewall_policies.rb +29 -0
- data/lib/fog/brightbox/models/compute/firewall_policy.rb +65 -0
- data/lib/fog/brightbox/models/compute/firewall_rule.rb +54 -0
- data/lib/fog/brightbox/models/compute/firewall_rules.rb +24 -0
- data/lib/fog/brightbox/models/compute/image.rb +2 -0
- data/lib/fog/brightbox/models/compute/server.rb +41 -6
- data/lib/fog/brightbox/models/compute/server_group.rb +56 -17
- data/lib/fog/brightbox/requests/compute/remove_firewall_policy.rb +14 -0
- data/lib/fog/brightbox/requests/compute/update_firewall_rule.rb +13 -0
- data/lib/fog/clodo/compute.rb +152 -0
- data/lib/fog/clodo/models/compute/image.rb +31 -0
- data/lib/fog/clodo/models/compute/images.rb +28 -0
- data/lib/fog/clodo/models/compute/server.rb +163 -0
- data/lib/fog/clodo/models/compute/servers.rb +36 -0
- data/lib/fog/clodo/requests/compute/add_ip_address.rb +49 -0
- data/lib/fog/clodo/requests/compute/create_server.rb +112 -0
- data/lib/fog/clodo/requests/compute/delete_ip_address.rb +47 -0
- data/lib/fog/clodo/requests/compute/delete_server.rb +44 -0
- data/lib/fog/clodo/requests/compute/get_image_details.rb +20 -0
- data/lib/fog/clodo/requests/compute/get_server_details.rb +49 -0
- data/lib/fog/clodo/requests/compute/list_images.rb +48 -0
- data/lib/fog/clodo/requests/compute/list_images_detail.rb +61 -0
- data/lib/fog/clodo/requests/compute/list_servers.rb +50 -0
- data/lib/fog/clodo/requests/compute/list_servers_detail.rb +51 -0
- data/lib/fog/clodo/requests/compute/move_ip_address.rb +34 -0
- data/lib/fog/clodo/requests/compute/reboot_server.rb +19 -0
- data/lib/fog/clodo/requests/compute/rebuild_server.rb +21 -0
- data/lib/fog/clodo/requests/compute/server_action.rb +25 -0
- data/lib/fog/clodo/requests/compute/start_server.rb +19 -0
- data/lib/fog/clodo/requests/compute/stop_server.rb +19 -0
- data/lib/fog/clodo.rb +34 -0
- data/lib/fog/cloudstack/compute.rb +254 -0
- data/lib/fog/cloudstack/requests/compute/acquire_ip_address.rb +21 -0
- data/lib/fog/cloudstack/requests/compute/assign_to_load_balancer_rule.rb +25 -0
- data/lib/fog/cloudstack/requests/compute/attach_volume.rb +23 -0
- data/lib/fog/cloudstack/requests/compute/authorize_security_group_ingress.rb +22 -0
- data/lib/fog/cloudstack/requests/compute/change_service_for_virtual_machine.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/create_account.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/create_domain.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/create_load_balancer_rule.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/create_network.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/create_port_forwarding_rule.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/create_security_group.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/create_snapshot.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/create_snapshot_policy.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/create_ssh_key_pair.rb +22 -0
- data/lib/fog/cloudstack/requests/compute/create_user.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/create_volume.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/delete_account.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/delete_domain.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/delete_load_balancer_rule.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/delete_port_forwarding_rule.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/delete_security_group.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/delete_snapshot.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/delete_snapshot_policies.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/delete_ssh_key_pair.rb +21 -0
- data/lib/fog/cloudstack/requests/compute/delete_user.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/delete_volume.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/deploy_virtual_machine.rb +33 -0
- data/lib/fog/cloudstack/requests/compute/destroy_virtual_machine.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/detach_volume.rb +21 -0
- data/lib/fog/cloudstack/requests/compute/disable_account.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/disable_user.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/enable_account.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/enable_user.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/generate_usage_records.rb +28 -0
- data/lib/fog/cloudstack/requests/compute/get_vm_password.rb +21 -0
- data/lib/fog/cloudstack/requests/compute/list_accounts.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_alerts.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_async_jobs.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_capabilities.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_capacity.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_clusters.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_configurations.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_disk_offerings.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_domain_children.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_domains.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_events.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_external_firewalls.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_external_load_balancers.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_hosts.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_hypervisors.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_instance_groups.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_isos.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_load_balancer_rule_instances.rb +23 -0
- data/lib/fog/cloudstack/requests/compute/list_load_balancer_rules.rb +22 -0
- data/lib/fog/cloudstack/requests/compute/list_network_offerings.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_networks.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_os_categories.rb +22 -0
- data/lib/fog/cloudstack/requests/compute/list_os_types.rb +22 -0
- data/lib/fog/cloudstack/requests/compute/list_pods.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_port_forwarding_rules.rb +22 -0
- data/lib/fog/cloudstack/requests/compute/list_public_ip_addresses.rb +22 -0
- data/lib/fog/cloudstack/requests/compute/list_resource_limits.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_security_groups.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_service_offerings.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_snapshot_policies.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_snapshots.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_ssh_key_pairs.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_storage_pools.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_templates.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_usage_records.rb +28 -0
- data/lib/fog/cloudstack/requests/compute/list_users.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_virtual_machines.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_volumes.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/list_zones.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/migrate_virtual_machine.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/query_async_job_result.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/reboot_virtual_machine.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/recover_virtual_machine.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/register_ssh_key_pair.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/register_user_keys.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/remove_from_load_balancer_rule.rb +25 -0
- data/lib/fog/cloudstack/requests/compute/reset_password_for_virtual_machine.rb +21 -0
- data/lib/fog/cloudstack/requests/compute/revoke_security_group_ingress.rb +21 -0
- data/lib/fog/cloudstack/requests/compute/start_virtual_machine.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/stop_virtual_machine.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/update_account.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/update_domain.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/update_resource_count.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/update_user.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/update_virtual_machine.rb +20 -0
- data/lib/fog/cloudstack.rb +28 -0
- data/lib/fog/compute/models/server.rb +11 -0
- data/lib/fog/compute.rb +20 -3
- data/lib/fog/core/connection.rb +2 -2
- data/lib/fog/core/credentials.rb +3 -3
- data/lib/fog/core/errors.rb +10 -2
- data/lib/fog/core/model.rb +8 -0
- data/lib/fog/core/scp.rb +18 -2
- data/lib/fog/core/wait_for.rb +1 -1
- data/lib/fog/core.rb +1 -3
- data/lib/fog/dns.rb +1 -0
- data/lib/fog/dnsimple/dns.rb +1 -1
- data/lib/fog/dnsmadeeasy/dns.rb +1 -1
- data/lib/fog/dynect/models/dns/records.rb +2 -2
- data/lib/fog/dynect/requests/dns/get_node_list.rb +2 -1
- data/lib/fog/ecloud/compute.rb +1 -1
- data/lib/fog/ecloud/requests/compute/add_backup_internet_service.rb +1 -1
- data/lib/fog/ecloud/requests/compute/add_internet_service.rb +2 -2
- data/lib/fog/ecloud/requests/compute/add_node.rb +1 -1
- data/lib/fog/ecloud/requests/compute/clone_vapp.rb +1 -1
- data/lib/fog/ecloud/requests/compute/configure_internet_service.rb +1 -1
- data/lib/fog/ecloud/requests/compute/configure_network.rb +1 -1
- data/lib/fog/ecloud/requests/compute/configure_network_ip.rb +1 -1
- data/lib/fog/ecloud/requests/compute/configure_vapp.rb +1 -1
- data/lib/fog/ecloud/requests/compute/instantiate_vapp_template.rb +1 -1
- data/lib/fog/glesys/compute.rb +4 -2
- data/lib/fog/glesys/models/compute/server.rb +14 -14
- data/lib/fog/google/requests/storage/get_object.rb +22 -14
- data/lib/fog/joyent/compute.rb +228 -0
- data/lib/fog/joyent/errors.rb +90 -0
- data/lib/fog/joyent/models/compute/flavor.rb +17 -0
- data/lib/fog/joyent/models/compute/flavors.rb +25 -0
- data/lib/fog/joyent/models/compute/image.rb +18 -0
- data/lib/fog/joyent/models/compute/images.rb +25 -0
- data/lib/fog/joyent/models/compute/key.rb +19 -0
- data/lib/fog/joyent/models/compute/keys.rb +34 -0
- data/lib/fog/joyent/models/compute/server.rb +117 -0
- data/lib/fog/joyent/models/compute/servers.rb +35 -0
- data/lib/fog/joyent/models/compute/snapshot.rb +45 -0
- data/lib/fog/joyent/models/compute/snapshots.rb +37 -0
- data/lib/fog/joyent/requests/compute/add_machine_tags.rb +20 -0
- data/lib/fog/joyent/requests/compute/create_key.rb +56 -0
- data/lib/fog/joyent/requests/compute/create_machine.rb +16 -0
- data/lib/fog/joyent/requests/compute/create_machine_snapshot.rb +18 -0
- data/lib/fog/joyent/requests/compute/delete_all_machine_metadata.rb +16 -0
- data/lib/fog/joyent/requests/compute/delete_all_machine_tags.rb +15 -0
- data/lib/fog/joyent/requests/compute/delete_key.rb +29 -0
- data/lib/fog/joyent/requests/compute/delete_machine.rb +15 -0
- data/lib/fog/joyent/requests/compute/delete_machine_metadata.rb +18 -0
- data/lib/fog/joyent/requests/compute/delete_machine_snapshot.rb +21 -0
- data/lib/fog/joyent/requests/compute/delete_machine_tag.rb +15 -0
- data/lib/fog/joyent/requests/compute/get_dataset.rb +28 -0
- data/lib/fog/joyent/requests/compute/get_key.rb +29 -0
- data/lib/fog/joyent/requests/compute/get_machine.rb +29 -0
- data/lib/fog/joyent/requests/compute/get_machine_metadata.rb +25 -0
- data/lib/fog/joyent/requests/compute/get_machine_snapshot.rb +14 -0
- data/lib/fog/joyent/requests/compute/get_machine_tag.rb +19 -0
- data/lib/fog/joyent/requests/compute/get_package.rb +33 -0
- data/lib/fog/joyent/requests/compute/list_datasets.rb +24 -0
- data/lib/fog/joyent/requests/compute/list_keys.rb +25 -0
- data/lib/fog/joyent/requests/compute/list_machine_snapshots.rb +14 -0
- data/lib/fog/joyent/requests/compute/list_machine_tags.rb +20 -0
- data/lib/fog/joyent/requests/compute/list_machines.rb +25 -0
- data/lib/fog/joyent/requests/compute/list_packages.rb +36 -0
- data/lib/fog/joyent/requests/compute/reboot_machine.rb +15 -0
- data/lib/fog/joyent/requests/compute/resize_machine.rb +13 -0
- data/lib/fog/joyent/requests/compute/start_machine.rb +16 -0
- data/lib/fog/joyent/requests/compute/start_machine_from_snapshot.rb +15 -0
- data/lib/fog/joyent/requests/compute/stop_machine.rb +16 -0
- data/lib/fog/joyent/requests/compute/update_machine_metadata.rb +15 -0
- data/lib/fog/joyent.rb +8 -0
- data/lib/fog/libvirt/compute.rb +7 -3
- data/lib/fog/libvirt/models/compute/nodes.rb +1 -3
- data/lib/fog/libvirt/models/compute/server.rb +93 -99
- data/lib/fog/libvirt/models/compute/servers.rb +2 -1
- data/lib/fog/libvirt/models/compute/util.rb +1 -2
- data/lib/fog/local/models/storage/file.rb +8 -1
- data/lib/fog/local/storage.rb +8 -0
- data/lib/fog/ninefold/models/storage/file.rb +8 -0
- data/lib/fog/openstack/compute.rb +0 -2
- data/lib/fog/openstack.rb +9 -7
- data/lib/fog/ovirt/compute.rb +106 -0
- data/lib/fog/ovirt/models/compute/cluster.rb +24 -0
- data/lib/fog/ovirt/models/compute/clusters.rb +23 -0
- data/lib/fog/ovirt/models/compute/interface.rb +22 -0
- data/lib/fog/ovirt/models/compute/interfaces.rb +32 -0
- data/lib/fog/ovirt/models/compute/server.rb +112 -0
- data/lib/fog/ovirt/models/compute/servers.rb +30 -0
- data/lib/fog/ovirt/models/compute/template.rb +53 -0
- data/lib/fog/ovirt/models/compute/templates.rb +23 -0
- data/lib/fog/ovirt/requests/compute/add_interface.rb +23 -0
- data/lib/fog/ovirt/requests/compute/create_vm.rb +20 -0
- data/lib/fog/ovirt/requests/compute/datacenters.rb +22 -0
- data/lib/fog/ovirt/requests/compute/destroy_interface.rb +25 -0
- data/lib/fog/ovirt/requests/compute/destroy_vm.rb +22 -0
- data/lib/fog/ovirt/requests/compute/get_cluster.rb +18 -0
- data/lib/fog/ovirt/requests/compute/get_template.rb +18 -0
- data/lib/fog/ovirt/requests/compute/get_virtual_machine.rb +18 -0
- data/lib/fog/ovirt/requests/compute/list_clusters.rb +20 -0
- data/lib/fog/ovirt/requests/compute/list_networks.rb +17 -0
- data/lib/fog/ovirt/requests/compute/list_template_interfaces.rb +20 -0
- data/lib/fog/ovirt/requests/compute/list_templates.rb +20 -0
- data/lib/fog/ovirt/requests/compute/list_virtual_machines.rb +20 -0
- data/lib/fog/ovirt/requests/compute/list_vm_interfaces.rb +20 -0
- data/lib/fog/ovirt/requests/compute/mock_files/cluster.xml +20 -0
- data/lib/fog/ovirt/requests/compute/mock_files/clusters.xml +39 -0
- data/lib/fog/ovirt/requests/compute/mock_files/data_centers.xml +17 -0
- data/lib/fog/ovirt/requests/compute/mock_files/nics.xml +10 -0
- data/lib/fog/ovirt/requests/compute/mock_files/storage_domains.xml +36 -0
- data/lib/fog/ovirt/requests/compute/mock_files/template.xml +39 -0
- data/lib/fog/ovirt/requests/compute/mock_files/templates.xml +110 -0
- data/lib/fog/ovirt/requests/compute/mock_files/vm.xml +54 -0
- data/lib/fog/ovirt/requests/compute/mock_files/vms.xml +152 -0
- data/lib/fog/ovirt/requests/compute/storage_domains.rb +22 -0
- data/lib/fog/ovirt/requests/compute/update_interface.rb +25 -0
- data/lib/fog/ovirt/requests/compute/update_vm.rb +20 -0
- data/lib/fog/ovirt/requests/compute/vm_action.rb +26 -0
- data/lib/fog/ovirt.rb +17 -0
- data/lib/fog/providers.rb +5 -1
- data/lib/fog/rackspace/dns.rb +10 -2
- data/lib/fog/rackspace/load_balancers.rb +3 -0
- data/lib/fog/rackspace/models/compute/flavor.rb +2 -0
- data/lib/fog/rackspace/models/compute/server.rb +2 -2
- data/lib/fog/rackspace/models/dns/callback.rb +3 -1
- data/lib/fog/rackspace/models/dns/record.rb +4 -0
- data/lib/fog/rackspace/models/load_balancers/load_balancer.rb +18 -8
- data/lib/fog/rackspace/models/storage/directory.rb +5 -1
- data/lib/fog/rackspace/models/storage/file.rb +7 -0
- data/lib/fog/rackspace/requests/compute/create_image.rb +1 -3
- data/lib/fog/rackspace/requests/load_balancers/delete_nodes.rb +1 -2
- data/lib/fog/rackspace/requests/load_balancers/get_error_page.rb +15 -0
- data/lib/fog/rackspace/requests/load_balancers/list_load_balancers.rb +8 -2
- data/lib/fog/rackspace/requests/load_balancers/remove_error_page.rb +15 -0
- data/lib/fog/rackspace/requests/load_balancers/set_error_page.rb +21 -0
- data/lib/fog/rackspace/requests/storage/copy_object.rb +27 -0
- data/lib/fog/rackspace/requests/storage/get_object.rb +8 -2
- data/lib/fog/rackspace/requests/storage/put_object.rb +6 -5
- data/lib/fog/rackspace/storage.rb +1 -0
- data/lib/fog/storm_on_demand/compute.rb +1 -1
- data/lib/fog/vcloud/compute.rb +91 -30
- data/lib/fog/vcloud/models/compute/catalog.rb +1 -1
- data/lib/fog/vcloud/models/compute/catalog_item.rb +1 -1
- data/lib/fog/vcloud/models/compute/catalogs.rb +5 -8
- data/lib/fog/vcloud/models/compute/helpers/status.rb +37 -0
- data/lib/fog/vcloud/models/compute/ip.rb +2 -2
- data/lib/fog/vcloud/models/compute/network.rb +9 -51
- data/lib/fog/vcloud/models/compute/networks.rb +21 -7
- data/lib/fog/vcloud/models/compute/organization.rb +43 -0
- data/lib/fog/vcloud/models/compute/organizations.rb +32 -0
- data/lib/fog/vcloud/models/compute/server.rb +38 -58
- data/lib/fog/vcloud/models/compute/servers.rb +12 -18
- data/lib/fog/vcloud/models/compute/task.rb +1 -1
- data/lib/fog/vcloud/models/compute/tasks.rb +1 -3
- data/lib/fog/vcloud/models/compute/vapp.rb +43 -0
- data/lib/fog/vcloud/models/compute/vapps.rb +28 -0
- data/lib/fog/vcloud/models/compute/vdc.rb +14 -29
- data/lib/fog/vcloud/models/compute/vdcs.rb +6 -11
- data/lib/fog/vcloud/requests/compute/clone_vapp.rb +1 -1
- data/lib/fog/vcloud/requests/compute/configure_network.rb +1 -1
- data/lib/fog/vcloud/requests/compute/configure_network_ip.rb +1 -1
- data/lib/fog/vcloud/requests/compute/configure_vapp.rb +1 -1
- data/lib/fog/vcloud/requests/compute/configure_vm.rb +1 -1
- data/lib/fog/vcloud/requests/compute/get_server.rb +10 -0
- data/lib/fog/vcloud/requests/compute/instantiate_vapp_template.rb +1 -1
- data/lib/fog/vcloud/requests/compute/login.rb +8 -4
- data/lib/fog/virtual_box/compute.rb +4 -0
- data/lib/fog/vmfusion/models/compute/server.rb +120 -52
- data/lib/fog/vmfusion/models/compute/servers.rb +11 -7
- data/lib/fog/voxel/compute.rb +1 -1
- data/lib/fog/vsphere/compute.rb +6 -0
- data/lib/fog/vsphere/models/compute/server.rb +43 -0
- data/lib/fog/vsphere/models/compute/servers.rb +8 -2
- data/lib/fog/vsphere/requests/compute/datacenters.rb +34 -0
- data/lib/fog/vsphere/requests/compute/list_virtual_machines.rb +132 -91
- data/lib/fog/vsphere/requests/compute/vm_clone.rb +115 -41
- data/lib/fog/vsphere/requests/compute/vm_create.rb +97 -0
- data/lib/fog/vsphere/requests/compute/vm_migrate.rb +37 -0
- data/lib/fog/vsphere/requests/compute/vm_reconfig_cpus.rb +23 -0
- data/lib/fog/vsphere/requests/compute/vm_reconfig_hardware.rb +25 -0
- data/lib/fog/vsphere/requests/compute/vm_reconfig_memory.rb +23 -0
- data/lib/fog/zerigo/models/dns/record.rb +7 -5
- data/lib/fog/zerigo/parsers/dns/create_host.rb +3 -1
- data/lib/fog/zerigo/parsers/dns/find_hosts.rb +3 -1
- data/lib/fog/zerigo/parsers/dns/get_host.rb +3 -1
- data/lib/fog/zerigo/parsers/dns/get_zone.rb +3 -1
- data/lib/fog/zerigo/parsers/dns/list_hosts.rb +3 -1
- data/lib/fog/zerigo/requests/dns/update_host.rb +2 -2
- data/lib/fog.rb +1 -1
- data/spec/ecloud/spec_helper.rb +1 -1
- data/spec/lib/fog/aws/parsers/sqs/receive_message_spec.rb +58 -0
- data/tests/aws/models/beanstalk/application_tests.rb +70 -0
- data/tests/aws/models/beanstalk/applications_tests.rb +7 -0
- data/tests/aws/models/beanstalk/environment_tests.rb +132 -0
- data/tests/aws/models/beanstalk/environments_tests.rb +34 -0
- data/tests/aws/models/beanstalk/template_tests.rb +47 -0
- data/tests/aws/models/beanstalk/templates_tests.rb +62 -0
- data/tests/aws/models/beanstalk/version_tests.rb +66 -0
- data/tests/aws/models/beanstalk/versions_tests.rb +61 -0
- data/tests/aws/models/compute/subnet_tests.rb +5 -0
- data/tests/aws/models/compute/subnets_tests.rb +6 -0
- data/tests/aws/models/compute/vpc_tests.rb +4 -0
- data/tests/aws/models/compute/vpcs_tests.rb +6 -0
- data/tests/aws/models/dns/record_tests.rb +23 -0
- data/tests/aws/models/dns/records_tests.rb +23 -0
- data/tests/aws/models/dns/zone_tests.rb +4 -0
- data/tests/aws/models/dns/zones_tests.rb +4 -0
- data/tests/aws/models/elb/model_tests.rb +15 -6
- data/tests/aws/models/rds/security_group_tests.rb +6 -3
- data/tests/aws/models/rds/security_groups_tests.rb +1 -2
- data/tests/aws/models/rds/server_tests.rb +5 -3
- data/tests/aws/models/rds/servers_tests.rb +1 -3
- data/tests/aws/models/rds/snapshot_tests.rb +1 -3
- data/tests/aws/models/rds/snapshots_tests.rb +1 -3
- data/tests/aws/models/storage/directory_tests.rb +51 -0
- data/tests/aws/models/storage/file_tests.rb +80 -0
- data/tests/aws/models/storage/files_tests.rb +56 -0
- data/tests/aws/models/storage/version_tests.rb +52 -0
- data/tests/aws/models/storage/versions_tests.rb +56 -0
- data/tests/aws/requests/auto_scaling/helper.rb +2 -2
- data/tests/aws/requests/beanstalk/application_tests.rb +140 -0
- data/tests/aws/requests/beanstalk/solution_stack_tests.rb +22 -0
- data/tests/aws/requests/compute/address_tests.rb +7 -5
- data/tests/aws/requests/compute/instance_tests.rb +37 -0
- data/tests/aws/requests/compute/security_group_tests.rb +78 -4
- data/tests/aws/requests/compute/subnet_tests.rb +36 -0
- data/tests/aws/requests/compute/volume_tests.rb +4 -0
- data/tests/aws/requests/compute/vpc_tests.rb +34 -0
- data/tests/aws/requests/dns/dns_tests.rb +106 -99
- data/tests/aws/requests/dns/helper.rb +21 -0
- data/tests/aws/requests/dynamodb/item_tests.rb +117 -0
- data/tests/aws/requests/dynamodb/table_tests.rb +99 -0
- data/tests/aws/requests/elb/helper.rb +33 -0
- data/tests/aws/requests/elb/listener_tests.rb +22 -4
- data/tests/aws/requests/elb/policy_tests.rb +13 -0
- data/tests/aws/requests/iam/access_key_tests.rb +2 -7
- data/tests/aws/requests/iam/group_tests.rb +1 -4
- data/tests/aws/requests/iam/helper.rb +19 -0
- data/tests/aws/requests/iam/server_certificate_tests.rb +5 -0
- data/tests/aws/requests/iam/user_policy_tests.rb +4 -11
- data/tests/aws/requests/iam/user_tests.rb +19 -12
- data/tests/aws/requests/rds/helper.rb +45 -11
- data/tests/aws/requests/rds/instance_tests.rb +2 -3
- data/tests/aws/requests/rds/parameter_group_tests.rb +1 -7
- data/tests/aws/requests/rds/security_group_tests.rb +101 -0
- data/tests/aws/requests/storage/{hash_to_acl_tests.rb → acl_utils_tests.rb} +38 -2
- data/tests/aws/requests/storage/bucket_tests.rb +66 -4
- data/tests/aws/requests/storage/object_tests.rb +2 -4
- data/tests/aws/requests/storage/versioning_tests.rb +188 -0
- data/tests/aws/requests/sts/get_federation_token_tests.rb +21 -0
- data/tests/aws/requests/sts/session_token_tests.rb +16 -0
- data/tests/bluebox/requests/compute/block_tests.rb +9 -8
- data/tests/bluebox/requests/compute/helper.rb +5 -0
- data/tests/bluebox/requests/compute/location_tests.rb +32 -0
- data/tests/bluebox/requests/compute/product_tests.rb +10 -4
- data/tests/bluebox/requests/compute/template_tests.rb +4 -2
- data/tests/brightbox/requests/compute/account_tests.rb +11 -6
- data/tests/brightbox/requests/compute/api_client_tests.rb +23 -12
- data/tests/brightbox/requests/compute/cloud_ip_tests.rb +32 -17
- data/tests/brightbox/requests/compute/helper.rb +62 -11
- data/tests/brightbox/requests/compute/image_tests.rb +17 -14
- data/tests/brightbox/requests/compute/interface_tests.rb +3 -2
- data/tests/brightbox/requests/compute/load_balancer_tests.rb +57 -11
- data/tests/brightbox/requests/compute/server_group_tests.rb +29 -22
- data/tests/brightbox/requests/compute/server_tests.rb +43 -22
- data/tests/brightbox/requests/compute/server_type_tests.rb +7 -6
- data/tests/brightbox/requests/compute/user_tests.rb +11 -16
- data/tests/brightbox/requests/compute/zone_tests.rb +7 -6
- data/tests/clodo/requests/compute/image_tests.rb +36 -0
- data/tests/clodo/requests/compute/server_tests.rb +152 -0
- data/tests/cloudstack/requests/disk_offering_tests.rb +29 -0
- data/tests/cloudstack/requests/os_type_tests.rb +38 -0
- data/tests/cloudstack/requests/security_group_tests.rb +29 -0
- data/tests/cloudstack/requests/service_offering_tests.rb +38 -0
- data/tests/cloudstack/requests/snapshot_tests.rb +32 -0
- data/tests/cloudstack/requests/ssh_key_pair_tests.rb +23 -0
- data/tests/cloudstack/requests/template_tests.rb +53 -0
- data/tests/cloudstack/requests/virtual_machine_tests.rb +71 -0
- data/tests/cloudstack/requests/volume_tests.rb +48 -0
- data/tests/cloudstack/requests/zone_tests.rb +33 -0
- data/tests/cloudstack/signed_params_tests.rb +12 -0
- data/tests/compute/helper.rb +8 -3
- data/tests/core/credential_tests.rb +2 -2
- data/tests/glesys/requests/compute/helper.rb +187 -139
- data/tests/glesys/requests/compute/ip_tests.rb +4 -4
- data/tests/glesys/requests/compute/server_tests.rb +55 -17
- data/tests/helper.rb +1 -1
- data/tests/helpers/formats_helper.rb +1 -1
- data/tests/helpers/mock_helper.rb +9 -2
- data/tests/joyent/requests/compute/datasets_tests.rb +49 -0
- data/tests/joyent/requests/compute/keys_tests.rb +47 -0
- data/tests/joyent/requests/compute/machines_tests.rb +67 -0
- data/tests/joyent/requests/compute/packages_tests.rb +68 -0
- data/tests/ovirt/compute_tests.rb +24 -0
- data/tests/ovirt/models/compute/cluster_tests.rb +31 -0
- data/tests/ovirt/models/compute/clusters_tests.rb +9 -0
- data/tests/ovirt/models/compute/interface_tests.rb +27 -0
- data/tests/ovirt/models/compute/interfaces_tests.rb +9 -0
- data/tests/ovirt/models/compute/server_tests.rb +51 -0
- data/tests/ovirt/models/compute/servers_tests.rb +14 -0
- data/tests/ovirt/models/compute/template_tests.rb +28 -0
- data/tests/ovirt/models/compute/templates_tests.rb +9 -0
- data/tests/ovirt/requests/compute/create_vm_tests.rb +26 -0
- data/tests/ovirt/requests/compute/destroy_vm_tests.rb +18 -0
- data/tests/ovirt/requests/compute/list_datacenters_tests.rb +13 -0
- data/tests/ovirt/requests/compute/list_storage_domains_tests.rb +13 -0
- data/tests/ovirt/requests/compute/update_vm_tests.rb +18 -0
- data/tests/rackspace/models/dns/zone_tests.rb +14 -0
- data/tests/rackspace/models/{load_balancer_tests.rb → load_balancers/load_balancer_tests.rb} +25 -0
- data/tests/rackspace/requests/dns/dns_tests.rb +4 -2
- data/tests/rackspace/requests/load_balancers/error_page_tests.rb +31 -0
- data/tests/rackspace/requests/load_balancers/helper.rb +27 -11
- data/tests/rackspace/requests/load_balancers/load_balancer_tests.rb +4 -1
- data/tests/rackspace/requests/load_balancers/node_tests.rb +24 -25
- data/tests/slicehost/requests/compute/slice_tests.rb +2 -2
- data/tests/storm_on_demand/requests/compute/server_tests.rb +3 -3
- data/tests/vcloud/data/api_+_admin_+_network_+_2 +110 -0
- data/tests/vcloud/data/api_+_network_+_1 +44 -0
- data/tests/vcloud/data/api_+_org_+_ +5 -0
- data/tests/vcloud/data/api_+_org_+_1 +17 -0
- data/tests/vcloud/data/api_+_sessions +8 -0
- data/tests/vcloud/data/api_+_v1.0_+_admin_+_network_+_2 +110 -0
- data/tests/vcloud/data/api_+_v1.0_+_login +5 -0
- data/tests/vcloud/data/api_+_v1.0_+_network_+_1 +44 -0
- data/tests/vcloud/data/api_+_v1.0_+_network_+_2 +31 -0
- data/tests/vcloud/data/api_+_v1.0_+_org_+_1 +17 -0
- data/tests/vcloud/data/api_+_v1.0_+_vApp_+_vapp-1 +369 -0
- data/tests/vcloud/data/api_+_v1.0_+_vApp_+_vm-1 +139 -0
- data/tests/vcloud/data/api_+_v1.0_+_vApp_+_vm-2 +155 -0
- data/tests/vcloud/data/api_+_v1.0_+_vdc_+_1 +61 -0
- data/tests/vcloud/data/api_+_vApp_+_vapp-1 +369 -0
- data/tests/vcloud/data/api_+_vApp_+_vm-2 +155 -0
- data/tests/vcloud/data/api_+_vdc_+_1 +61 -0
- data/tests/vcloud/models/compute/conn_helper.rb +20 -0
- data/tests/vcloud/models/compute/network_tests.rb +67 -0
- data/tests/vcloud/models/compute/networks_tests.rb +61 -0
- data/tests/vcloud/models/compute/organization_tests.rb +20 -0
- data/tests/vcloud/models/compute/organizations_tests.rb +16 -0
- data/tests/vcloud/models/compute/server_tests.rb +142 -0
- data/tests/vcloud/models/compute/servers_tests.rb +18 -90
- data/tests/vcloud/models/compute/vapp_tests.rb +32 -0
- data/tests/vcloud/models/compute/vapps_tests.rb +19 -0
- data/tests/vcloud/models/compute/vdc_tests.rb +48 -0
- data/tests/vcloud/models/compute/vdcs_tests.rb +24 -0
- data/tests/vsphere/requests/compute/vm_clone_tests.rb +16 -8
- data/tests/vsphere/requests/compute/vm_create_tests.rb +20 -0
- data/tests/vsphere/requests/compute/vm_migrate_tests.rb +16 -0
- data/tests/vsphere/requests/compute/vm_power_on_tests.rb +1 -1
- data/tests/vsphere/requests/compute/vm_reconfig_cpus_tests.rb +19 -0
- data/tests/vsphere/requests/compute/vm_reconfig_hardware_tests.rb +19 -0
- data/tests/vsphere/requests/compute/vm_reconfig_memory_tests.rb +19 -0
- metadata +634 -69
- data/examples/compute_tests.rb +0 -71
- data/examples/dns_tests.rb +0 -78
- data/examples/storage_tests.rb +0 -105
- /data/tests/rackspace/models/{access_list_tests.rb → load_balancers/access_list_tests.rb} +0 -0
- /data/tests/rackspace/models/{access_lists_tests.rb → load_balancers/access_lists_tests.rb} +0 -0
- /data/tests/rackspace/models/{load_balancers_tests.rb → load_balancers/load_balancers_tests.rb} +0 -0
- /data/tests/rackspace/models/{node_tests.rb → load_balancers/node_tests.rb} +0 -0
- /data/tests/rackspace/models/{nodes_tests.rb → load_balancers/nodes_tests.rb} +0 -0
- /data/tests/rackspace/models/{virtual_ip_tests.rb → load_balancers/virtual_ip_tests.rb} +0 -0
- /data/tests/rackspace/models/{virtual_ips_tests.rb → load_balancers/virtual_ips_tests.rb} +0 -0
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
module Fog
|
|
2
2
|
module Compute
|
|
3
3
|
class Vsphere
|
|
4
|
-
|
|
5
4
|
class Real
|
|
6
|
-
|
|
7
5
|
def list_virtual_machines(options = {})
|
|
8
|
-
#
|
|
6
|
+
# Listing all VM's can be quite slow and expensive. Try and optimize
|
|
7
|
+
# based on the available options we have. These conditions are in
|
|
8
|
+
# ascending order of time to complete for large deployments.
|
|
9
9
|
if options['instance_uuid'] then
|
|
10
10
|
list_all_virtual_machines_by_instance_uuid(options)
|
|
11
|
+
elsif options['folder'] then
|
|
12
|
+
list_all_virtual_machines_in_folder(options)
|
|
11
13
|
else
|
|
12
14
|
list_all_virtual_machines
|
|
13
15
|
end
|
|
@@ -15,6 +17,48 @@ module Fog
|
|
|
15
17
|
|
|
16
18
|
private
|
|
17
19
|
|
|
20
|
+
def list_all_virtual_machines_in_folder(options = {})
|
|
21
|
+
# Tap gets rid of the leading empty string and "Datacenters" element
|
|
22
|
+
# and returns the array.
|
|
23
|
+
path_elements = options['folder'].split('/').tap { |ary| ary.shift 2 }
|
|
24
|
+
# The DC name itself.
|
|
25
|
+
dc_name = path_elements.shift
|
|
26
|
+
# If the first path element contains "vm" this denotes the vmFolder
|
|
27
|
+
# and needs to be shifted out since each DC contains only one
|
|
28
|
+
# vmFolder
|
|
29
|
+
path_elements.shift if path_elements[0] == 'vm'
|
|
30
|
+
# Make sure @datacenters is populated (the keys are DataCenter instances)
|
|
31
|
+
self.datacenters.include? dc_name or raise ArgumentError, "Could not find a Datacenter named #{dc_name}"
|
|
32
|
+
# Get the datacenter managed object
|
|
33
|
+
dc = @datacenters[dc_name]
|
|
34
|
+
|
|
35
|
+
# Get the VM Folder (Group) efficiently
|
|
36
|
+
vm_folder = dc.vmFolder
|
|
37
|
+
|
|
38
|
+
# Walk the tree resetting the folder pointer as we go
|
|
39
|
+
folder = path_elements.inject(vm_folder) do |current_folder, sub_folder_name|
|
|
40
|
+
# JJM VIM::Folder#find appears to be quite efficient as it uses the
|
|
41
|
+
# searchIndex It certainly appears to be faster than
|
|
42
|
+
# VIM::Folder#inventory since that returns _all_ managed objects of
|
|
43
|
+
# a certain type _and_ their properties.
|
|
44
|
+
sub_folder = current_folder.find(sub_folder_name, RbVmomi::VIM::Folder)
|
|
45
|
+
raise ArgumentError, "Could not descend into #{sub_folder_name}. Please check your path." unless sub_folder
|
|
46
|
+
sub_folder
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# This should be efficient since we're not obtaining properties
|
|
50
|
+
virtual_machines = folder.children.inject([]) do |ary, child|
|
|
51
|
+
if child.is_a? RbVmomi::VIM::VirtualMachine then
|
|
52
|
+
ary << convert_vm_mob_ref_to_attr_hash(child)
|
|
53
|
+
end
|
|
54
|
+
ary
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Return the managed objects themselves as an array. These may be converted
|
|
58
|
+
# to an attribute has using convert_vm_mob_ref_to_attr_hash
|
|
59
|
+
{ 'virtual_machines' => virtual_machines }
|
|
60
|
+
end
|
|
61
|
+
|
|
18
62
|
def list_all_virtual_machines_by_instance_uuid(options = {})
|
|
19
63
|
uuid = options['instance_uuid']
|
|
20
64
|
search_filter = { :uuid => uuid, 'vmSearch' => true, 'instanceUuid' => true }
|
|
@@ -94,102 +138,99 @@ module Fog
|
|
|
94
138
|
case options['instance_uuid']
|
|
95
139
|
when nil
|
|
96
140
|
rval = YAML.load <<-'ENDvmLISTING'
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
141
|
+
---
|
|
142
|
+
virtual_machines:
|
|
143
|
+
- name: centos56gm
|
|
144
|
+
hypervisor: gunab.puppetlabs.lan
|
|
145
|
+
tools_version: guestToolsCurrent
|
|
146
|
+
ipaddress:
|
|
147
|
+
mo_ref: vm-698
|
|
148
|
+
power_state: poweredOff
|
|
149
|
+
uuid: 42322347-d791-cd34-80b9-e25fe28ad37c
|
|
150
|
+
is_a_template: true
|
|
151
|
+
id: 50323f93-6835-1178-8b8f-9e2109890e1a
|
|
152
|
+
tools_state: toolsNotRunning
|
|
153
|
+
connection_state: connected
|
|
154
|
+
instance_uuid: 50323f93-6835-1178-8b8f-9e2109890e1a
|
|
155
|
+
hostname:
|
|
156
|
+
mac_addresses:
|
|
157
|
+
Network adapter 1: 00:50:56:b2:00:a1
|
|
158
|
+
operatingsystem:
|
|
159
|
+
- name: centos56gm2
|
|
160
|
+
hypervisor: gunab.puppetlabs.lan
|
|
161
|
+
tools_version: guestToolsCurrent
|
|
162
|
+
ipaddress:
|
|
163
|
+
mo_ref: vm-640
|
|
164
|
+
power_state: poweredOff
|
|
165
|
+
uuid: 564ddcbe-853a-d29a-b329-a0a3693a004d
|
|
166
|
+
is_a_template: true
|
|
167
|
+
id: 5257dee8-050c-cbcd-ae25-db0e582ab530
|
|
168
|
+
tools_state: toolsNotRunning
|
|
169
|
+
connection_state: connected
|
|
170
|
+
instance_uuid: 5257dee8-050c-cbcd-ae25-db0e582ab530
|
|
171
|
+
hostname:
|
|
172
|
+
mac_addresses:
|
|
173
|
+
Network adapter 1: 00:0c:29:3a:00:4d
|
|
174
|
+
operatingsystem:
|
|
175
|
+
- name: dashboard_gm
|
|
176
|
+
hypervisor: gunab.puppetlabs.lan
|
|
177
|
+
tools_version: guestToolsCurrent
|
|
178
|
+
ipaddress: 192.168.100.184
|
|
179
|
+
mo_ref: vm-669
|
|
180
|
+
power_state: poweredOn
|
|
181
|
+
uuid: 564d3f91-3452-a509-a678-1246f7897979
|
|
182
|
+
is_a_template: false
|
|
183
|
+
id: 5032739c-c871-c0d2-034f-9700a0b5383e
|
|
184
|
+
tools_state: toolsOk
|
|
185
|
+
connection_state: connected
|
|
186
|
+
instance_uuid: 5032739c-c871-c0d2-034f-9700a0b5383e
|
|
187
|
+
hostname: compliance.puppetlabs.vm
|
|
188
|
+
mac_addresses:
|
|
189
|
+
Network adapter 1: 00:50:56:b2:00:96
|
|
190
|
+
operatingsystem: Red Hat Enterprise Linux 6 (64-bit)
|
|
191
|
+
- name: jefftest
|
|
192
|
+
hypervisor: gunab.puppetlabs.lan
|
|
193
|
+
tools_version: guestToolsCurrent
|
|
194
|
+
ipaddress: 192.168.100.187
|
|
195
|
+
mo_ref: vm-715
|
|
196
|
+
power_state: poweredOn
|
|
197
|
+
uuid: 42329da7-e8ab-29ec-1892-d6a4a964912a
|
|
198
|
+
is_a_template: false
|
|
199
|
+
id: 5032c8a5-9c5e-ba7a-3804-832a03e16381
|
|
200
|
+
tools_state: toolsOk
|
|
201
|
+
connection_state: connected
|
|
202
|
+
instance_uuid: 5032c8a5-9c5e-ba7a-3804-832a03e16381
|
|
203
|
+
hostname: centos56gm.localdomain
|
|
204
|
+
mac_addresses:
|
|
205
|
+
Network adapter 1: 00:50:56:b2:00:af
|
|
206
|
+
operatingsystem: CentOS 4/5 (32-bit)
|
|
207
|
+
ENDvmLISTING
|
|
164
208
|
when '5032c8a5-9c5e-ba7a-3804-832a03e16381'
|
|
165
209
|
YAML.load <<-'5032c8a5-9c5e-ba7a-3804-832a03e16381'
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
210
|
+
---
|
|
211
|
+
virtual_machines:
|
|
212
|
+
- name: jefftest
|
|
213
|
+
hypervisor: gunab.puppetlabs.lan
|
|
214
|
+
tools_version: guestToolsCurrent
|
|
215
|
+
ipaddress: 192.168.100.187
|
|
216
|
+
mo_ref: vm-715
|
|
217
|
+
power_state: poweredOn
|
|
218
|
+
uuid: 42329da7-e8ab-29ec-1892-d6a4a964912a
|
|
219
|
+
is_a_template: false
|
|
220
|
+
id: 5032c8a5-9c5e-ba7a-3804-832a03e16381
|
|
221
|
+
tools_state: toolsOk
|
|
222
|
+
connection_state: connected
|
|
223
|
+
instance_uuid: 5032c8a5-9c5e-ba7a-3804-832a03e16381
|
|
224
|
+
hostname: centos56gm.localdomain
|
|
225
|
+
mac_addresses:
|
|
226
|
+
Network adapter 1: 00:50:56:b2:00:af
|
|
227
|
+
operatingsystem: CentOS 4/5 (32-bit)
|
|
184
228
|
5032c8a5-9c5e-ba7a-3804-832a03e16381
|
|
185
229
|
when 'does-not-exist-and-is-not-a-uuid', '50323f93-6835-1178-8b8f-9e2109890e1a'
|
|
186
230
|
{ 'virtual_machines' => [] }
|
|
187
231
|
end
|
|
188
232
|
end
|
|
189
|
-
|
|
190
233
|
end
|
|
191
|
-
|
|
192
234
|
end
|
|
193
235
|
end
|
|
194
236
|
end
|
|
195
|
-
|
|
@@ -5,15 +5,24 @@ module Fog
|
|
|
5
5
|
module Shared
|
|
6
6
|
private
|
|
7
7
|
def vm_clone_check_options(options)
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
default_options = {
|
|
9
|
+
'force' => false,
|
|
10
|
+
'linked_clone' => false,
|
|
11
|
+
}
|
|
12
|
+
options = default_options.merge(options)
|
|
13
|
+
required_options = %w{ path name }
|
|
10
14
|
required_options.each do |param|
|
|
11
15
|
raise ArgumentError, "#{required_options.join(', ')} are required" unless options.has_key? param
|
|
12
16
|
end
|
|
13
|
-
#
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
+
# The tap removes the leading empty string
|
|
18
|
+
path_elements = options['path'].split('/').tap { |o| o.shift }
|
|
19
|
+
first_folder = path_elements.shift
|
|
20
|
+
if first_folder != 'Datacenters' then
|
|
21
|
+
raise ArgumentError, "vm_clone path option must start with /Datacenters. Got: #{options['path']}"
|
|
22
|
+
end
|
|
23
|
+
dc_name = path_elements.shift
|
|
24
|
+
if not self.datacenters.include? dc_name then
|
|
25
|
+
raise ArgumentError, "Datacenter #{dc_name} does not exist, only datacenters #{self.dacenters.join(",")} are accessible."
|
|
17
26
|
end
|
|
18
27
|
options
|
|
19
28
|
end
|
|
@@ -25,52 +34,117 @@ module Fog
|
|
|
25
34
|
# Option handling
|
|
26
35
|
options = vm_clone_check_options(options)
|
|
27
36
|
|
|
28
|
-
notfound = lambda { raise Fog::Compute::Vsphere::NotFound, "
|
|
37
|
+
notfound = lambda { raise Fog::Compute::Vsphere::NotFound, "Could not find VM template" }
|
|
29
38
|
|
|
30
|
-
#
|
|
31
|
-
#
|
|
32
|
-
|
|
33
|
-
|
|
39
|
+
# Find the template in the folder. This is more efficient than
|
|
40
|
+
# searching ALL VM's looking for the template.
|
|
41
|
+
# Tap gets rid of the leading empty string and "Datacenters" element
|
|
42
|
+
# and returns the array.
|
|
43
|
+
path_elements = options['path'].split('/').tap { |ary| ary.shift 2 }
|
|
44
|
+
# The DC name itself.
|
|
45
|
+
template_dc = path_elements.shift
|
|
46
|
+
# If the first path element contains "vm" this denotes the vmFolder
|
|
47
|
+
# and needs to be shifted out
|
|
48
|
+
path_elements.shift if path_elements[0] == 'vm'
|
|
49
|
+
# The template name. The remaining elements are the folders in the
|
|
50
|
+
# datacenter.
|
|
51
|
+
template_name = path_elements.pop
|
|
52
|
+
# Make sure @datacenters is populated. We need the instances from the Hash keys.
|
|
53
|
+
self.datacenters
|
|
54
|
+
# Get the datacenter managed object from the hash
|
|
55
|
+
dc = @datacenters[template_dc]
|
|
56
|
+
# Get the VM Folder (Group) efficiently
|
|
57
|
+
vm_folder = dc.vmFolder
|
|
58
|
+
# Walk the tree resetting the folder pointer as we go
|
|
59
|
+
folder = path_elements.inject(vm_folder) do |current_folder, sub_folder_name|
|
|
60
|
+
# JJM VIM::Folder#find appears to be quite efficient as it uses the
|
|
61
|
+
# searchIndex It certainly appears to be faster than
|
|
62
|
+
# VIM::Folder#inventory since that returns _all_ managed objects of
|
|
63
|
+
# a certain type _and_ their properties.
|
|
64
|
+
sub_folder = current_folder.find(sub_folder_name, RbVmomi::VIM::Folder)
|
|
65
|
+
raise ArgumentError, "Could not descend into #{sub_folder_name}. Please check your path." unless sub_folder
|
|
66
|
+
sub_folder
|
|
34
67
|
end
|
|
35
68
|
|
|
36
|
-
#
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
69
|
+
# Now find the template itself using the efficient find method
|
|
70
|
+
vm_mob_ref = folder.find(template_name, RbVmomi::VIM::VirtualMachine)
|
|
71
|
+
|
|
72
|
+
# Now find _a_ resource pool of the template's host (REVISIT: We need
|
|
73
|
+
# to support cloning into a specific RP)
|
|
74
|
+
esx_host = vm_mob_ref.collect!('runtime.host')['runtime.host']
|
|
75
|
+
# The parent of the ESX host itself is a ComputeResource which has a resourcePool
|
|
76
|
+
resource_pool = esx_host.parent.resourcePool
|
|
77
|
+
relocation_spec=nil
|
|
78
|
+
if ( options['linked_clone'] )
|
|
79
|
+
# cribbed heavily from the rbvmomi clone_vm.rb
|
|
80
|
+
# this chunk of code reconfigures the disk of the clone source to be read only,
|
|
81
|
+
# and then creates a delta disk on top of that, this is required by the API in order to create
|
|
82
|
+
# linked clondes
|
|
83
|
+
disks = vm_mob_ref.config.hardware.device.select do |vm_device|
|
|
84
|
+
vm_device.class == RbVmomi::VIM::VirtualDisk
|
|
85
|
+
end
|
|
86
|
+
disks.select{|vm_device| vm_device.backing.parent == nil}.each do |disk|
|
|
87
|
+
disk_spec = {
|
|
88
|
+
:deviceChange => [
|
|
89
|
+
{
|
|
90
|
+
:operation => :remove,
|
|
91
|
+
:device => disk
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
:operation => :add,
|
|
95
|
+
:fileOperation => :create,
|
|
96
|
+
:device => disk.dup.tap{|disk_backing|
|
|
97
|
+
disk_backing.backing = disk_backing.backing.dup;
|
|
98
|
+
disk_backing.backing.fileName = "[#{disk.backing.datastore.name}]";
|
|
99
|
+
disk_backing.backing.parent = disk.backing
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
]
|
|
103
|
+
}
|
|
104
|
+
vm_mob_ref.ReconfigVM_Task(:spec => disk_spec).wait_for_completion
|
|
105
|
+
end
|
|
106
|
+
# Next, create a Relocation Spec instance
|
|
107
|
+
relocation_spec = RbVmomi::VIM.VirtualMachineRelocateSpec(:pool => resource_pool,
|
|
108
|
+
:diskMoveType => :moveChildMostDiskBacking)
|
|
109
|
+
else
|
|
110
|
+
relocation_spec = RbVmomi::VIM.VirtualMachineRelocateSpec(:pool => resource_pool,
|
|
111
|
+
:transform => options['transform'] || 'sparse')
|
|
41
112
|
end
|
|
42
|
-
dc = container
|
|
43
|
-
# With the Datacenter Object we can obtain the resource pool
|
|
44
|
-
resource_pool = dc.hostFolder.children.first.resourcePool
|
|
45
|
-
# Next, create a Relocation Spec instance
|
|
46
|
-
relocation_spec = RbVmomi::VIM.VirtualMachineRelocateSpec(:pool => resource_pool,
|
|
47
|
-
:transform => options['transform'] || 'sparse')
|
|
48
113
|
# And the clone specification
|
|
49
114
|
clone_spec = RbVmomi::VIM.VirtualMachineCloneSpec(:location => relocation_spec,
|
|
50
115
|
:powerOn => options['power_on'] || true,
|
|
51
116
|
:template => false)
|
|
52
117
|
task = vm_mob_ref.CloneVM_Task(:folder => vm_mob_ref.parent, :name => options['name'], :spec => clone_spec)
|
|
53
|
-
#
|
|
54
|
-
#
|
|
55
|
-
#
|
|
56
|
-
#
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
118
|
+
# Waiting for the VM to complete allows us to get the VirtulMachine
|
|
119
|
+
# object of the new machine when it's done. It is HIGHLY recommended
|
|
120
|
+
# to set 'wait' => true if your app wants to wait. Otherwise, you're
|
|
121
|
+
# going to have to reload the server model over and over which
|
|
122
|
+
# generates a lot of time consuming API calls to vmware.
|
|
123
|
+
if options['wait'] then
|
|
124
|
+
# REVISIT: It would be awesome to call a block passed to this
|
|
125
|
+
# request to notify the application how far along in the process we
|
|
126
|
+
# are. I'm thinking of updating a progress bar, etc...
|
|
127
|
+
new_vm = task.wait_for_completion
|
|
128
|
+
else
|
|
129
|
+
tries = 0
|
|
130
|
+
new_vm = begin
|
|
131
|
+
# Try and find the new VM (folder.find is quite efficient)
|
|
132
|
+
folder.find(options['name'], RbVmomi::VIM::VirtualMachine) or raise Fog::Vsphere::Errors::NotFound
|
|
133
|
+
rescue Fog::Vsphere::Errors::NotFound
|
|
134
|
+
tries += 1
|
|
135
|
+
if tries <= 10 then
|
|
136
|
+
sleep 15
|
|
137
|
+
retry
|
|
138
|
+
end
|
|
139
|
+
nil
|
|
61
140
|
end
|
|
62
|
-
rescue Fog::Vsphere::Errors::NotFound
|
|
63
|
-
tries += 1
|
|
64
|
-
if tries <= 10 then
|
|
65
|
-
sleep 1
|
|
66
|
-
retry
|
|
67
|
-
end
|
|
68
|
-
nil
|
|
69
141
|
end
|
|
142
|
+
|
|
70
143
|
# Return hash
|
|
71
144
|
{
|
|
72
|
-
'vm_ref'
|
|
73
|
-
'
|
|
145
|
+
'vm_ref' => new_vm ? new_vm._ref : nil,
|
|
146
|
+
'vm_attributes' => new_vm ? convert_vm_mob_ref_to_attr_hash(new_vm) : {},
|
|
147
|
+
'task_ref' => task._ref
|
|
74
148
|
}
|
|
75
149
|
end
|
|
76
150
|
|
|
@@ -83,11 +157,11 @@ module Fog
|
|
|
83
157
|
options = vm_clone_check_options(options)
|
|
84
158
|
notfound = lambda { raise Fog::Compute::Vsphere::NotFound, "Cloud not find VM template" }
|
|
85
159
|
vm_mob_ref = list_virtual_machines['virtual_machines'].find(notfound) do |vm|
|
|
86
|
-
vm['
|
|
160
|
+
vm['name'] == options['path'].split("/")[-1]
|
|
87
161
|
end
|
|
88
162
|
{
|
|
89
163
|
'vm_ref' => 'vm-123',
|
|
90
|
-
'task_ref' => 'task-1234'
|
|
164
|
+
'task_ref' => 'task-1234',
|
|
91
165
|
}
|
|
92
166
|
end
|
|
93
167
|
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class Vsphere
|
|
4
|
+
|
|
5
|
+
module Shared
|
|
6
|
+
private
|
|
7
|
+
def vm_create_check_options(options)
|
|
8
|
+
options = { 'force' => false }.merge(options)
|
|
9
|
+
required_options = %w{ path name cluster }
|
|
10
|
+
required_options.each do |param|
|
|
11
|
+
raise ArgumentError, "#{required_options.join(', ')} are required" unless options.has_key? param
|
|
12
|
+
end
|
|
13
|
+
# The tap removes the leading empty string
|
|
14
|
+
path_elements = options['path'].split('/').tap { |o| o.shift }
|
|
15
|
+
first_folder = path_elements.shift
|
|
16
|
+
if first_folder != 'Datacenters' then
|
|
17
|
+
raise ArgumentError, "vm_create path option must start with /Datacenters. Got: #{options['path']}"
|
|
18
|
+
end
|
|
19
|
+
dc_name = path_elements.shift
|
|
20
|
+
if not self.datacenters.include? dc_name then
|
|
21
|
+
raise ArgumentError, "Datacenter #{dc_name} does not exist, only datacenters #{self.datacenters.join(",")} are accessible."
|
|
22
|
+
end
|
|
23
|
+
options
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
class Real
|
|
28
|
+
include Shared
|
|
29
|
+
def vm_create(options = {})
|
|
30
|
+
# Option handling
|
|
31
|
+
options = vm_create_check_options(options)
|
|
32
|
+
path_elements = options['path'].split('/').tap { |ary| ary.shift 2 }
|
|
33
|
+
dc_name = path_elements.shift
|
|
34
|
+
vm_cfg = {
|
|
35
|
+
:name => options['name'],
|
|
36
|
+
:guestId => options['guest_id'] ? options['guest_id'] : 'otherGuest',
|
|
37
|
+
:files => { :vmPathName => "[#{options['datastore']}]" },
|
|
38
|
+
:numCPUs => options['num_cpus'] ? options['num_cpus'] : 1 ,
|
|
39
|
+
:memoryMB => options['memory'] ? options['memory'] : 512,
|
|
40
|
+
:memoryHotAddEnabled => options['memory_hot_add_enabled'] ? options['memory_hot_add_enabled'] : 0,
|
|
41
|
+
:cpuHotAddEnabled => options['cpu_hot_add_enabled'] ? options['cpu_hot_add_enabled'] : 0,
|
|
42
|
+
:deviceChange => options['device_array'].class == Array ? options['device_array'] : nil,
|
|
43
|
+
:extraConfig => options['extra_config'].class == Array ? options['extra_config'] : nil,
|
|
44
|
+
}
|
|
45
|
+
self.datacenters
|
|
46
|
+
dc = @datacenters[dc_name]
|
|
47
|
+
vm_folder = dc.vmFolder
|
|
48
|
+
folder = path_elements.inject(vm_folder) do |current_folder, sub_folder_name|
|
|
49
|
+
sub_folder = current_folder.find(sub_folder_name, RbVmomi::VIM::Folder)
|
|
50
|
+
raise ArgumentError, "Could not descend into #{sub_folder_name}. Please check your path." unless sub_folder
|
|
51
|
+
sub_folder
|
|
52
|
+
end
|
|
53
|
+
clusters = dc.hostFolder.children
|
|
54
|
+
build_cluster=''
|
|
55
|
+
clusters.each { |my_cluster|
|
|
56
|
+
if "#{my_cluster.name}" == "#{options['cluster']}"
|
|
57
|
+
build_cluster=my_cluster
|
|
58
|
+
end
|
|
59
|
+
}
|
|
60
|
+
resource_pool = build_cluster.resourcePool
|
|
61
|
+
task=folder.CreateVM_Task(:config => vm_cfg, :pool => resource_pool)
|
|
62
|
+
if options['wait'] then
|
|
63
|
+
new_vm = task.wait_for_completion
|
|
64
|
+
else
|
|
65
|
+
tries = 0
|
|
66
|
+
new_vm = begin
|
|
67
|
+
folder.find(options['name'], RbVmomi::VIM::VirtualMachine) or raise Fog::Vsphere::Errors::NotFound
|
|
68
|
+
rescue Fog::Vsphere::Errors::NotFound
|
|
69
|
+
tries += 1
|
|
70
|
+
if tries <= 10 then
|
|
71
|
+
sleep 15
|
|
72
|
+
retry
|
|
73
|
+
end
|
|
74
|
+
nil
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
{
|
|
78
|
+
'vm_ref' => new_vm ? new_vm._ref : nil,
|
|
79
|
+
'vm_attributes' => new_vm ? convert_vm_mob_ref_to_attr_hash(new_vm) : {},
|
|
80
|
+
'task_ref' => task._ref
|
|
81
|
+
}
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
class Mock
|
|
85
|
+
include Shared
|
|
86
|
+
def vm_create(options = {})
|
|
87
|
+
# Option handling
|
|
88
|
+
options = vm_create_check_options(options)
|
|
89
|
+
{
|
|
90
|
+
'vm_ref' => 'vm-123',
|
|
91
|
+
'task_ref' => 'task-1234'
|
|
92
|
+
}
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class Vsphere
|
|
4
|
+
class Real
|
|
5
|
+
|
|
6
|
+
def vm_migrate(options = {})
|
|
7
|
+
#priority is the only required option, and it has a sane default option.
|
|
8
|
+
priority = options['priority'].nil? ? 'defaultPriority' : options["priority"]
|
|
9
|
+
raise ArgumentError, "instance_uuid is a required parameter" unless options.has_key? 'instance_uuid'
|
|
10
|
+
|
|
11
|
+
# Find the VM Object
|
|
12
|
+
search_filter = { :uuid => options['instance_uuid'], 'vmSearch' => true, 'instanceUuid' => true }
|
|
13
|
+
vm_mob_ref = @connection.searchIndex.FindAllByUuid(search_filter).first
|
|
14
|
+
|
|
15
|
+
unless vm_mob_ref.kind_of? RbVmomi::VIM::VirtualMachine
|
|
16
|
+
raise Fog::Vsphere::Errors::NotFound,
|
|
17
|
+
"Could not find VirtualMachine with instance uuid #{options['instance_uuid']}"
|
|
18
|
+
end
|
|
19
|
+
task = vm_mob_ref.MigrateVM_Task(:pool => options['pool'], :host => options['host'], :priority => "#{priority}", :state => options['state'] )
|
|
20
|
+
task.wait_for_completion
|
|
21
|
+
{ 'task_state' => task.info.state }
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
class Mock
|
|
27
|
+
|
|
28
|
+
def vm_migrate(options = {})
|
|
29
|
+
priority = options['priority'].nil? ? 'defaultPriority' : options["priority"]
|
|
30
|
+
raise ArgumentError, "instance_uuid is a required parameter" unless options.has_key? 'instance_uuid'
|
|
31
|
+
{ 'task_state' => 'success' }
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class Vsphere
|
|
4
|
+
class Real
|
|
5
|
+
def vm_reconfig_cpus(options = {})
|
|
6
|
+
raise ArgumentError, "cpus is a required parameter" unless options.has_key? 'cpus'
|
|
7
|
+
raise ArgumentError, "instance_uuid is a required parameter" unless options.has_key? 'instance_uuid'
|
|
8
|
+
hardware_spec={'numCPUs' => options['cpus']}
|
|
9
|
+
vm_reconfig_hardware('instance_uuid' => options['instance_uuid'], 'hardware_spec' => hardware_spec )
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
class Mock
|
|
14
|
+
def vm_reconfig_cpus(options = {})
|
|
15
|
+
raise ArgumentError, "cpus is a required parameter" unless options.has_key? 'cpus'
|
|
16
|
+
raise ArgumentError, "instance_uuid is a required parameter" unless options.has_key? 'instance_uuid'
|
|
17
|
+
hardware_spec={'numCPUs' => options['cpus']}
|
|
18
|
+
vm_reconfig_hardware('instance_uuid' => options['instance_uuid'], 'hardware_spec' => hardware_spec )
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class Vsphere
|
|
4
|
+
class Real
|
|
5
|
+
def vm_reconfig_hardware(options = {})
|
|
6
|
+
raise ArgumentError, "hardware_spec is a required parameter" unless options.has_key? 'hardware_spec'
|
|
7
|
+
raise ArgumentError, "instance_uuid is a required parameter" unless options.has_key? 'instance_uuid'
|
|
8
|
+
search_filter = { :uuid => options['instance_uuid'], 'vmSearch' => true, 'instanceUuid' => true }
|
|
9
|
+
vm_mob_ref = @connection.searchIndex.FindAllByUuid(search_filter).first
|
|
10
|
+
task = vm_mob_ref.ReconfigVM_Task(:spec => RbVmomi::VIM.VirtualMachineConfigSpec(options['hardware_spec']))
|
|
11
|
+
task.wait_for_completion
|
|
12
|
+
{ 'task_state' => task.info.state }
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
class Mock
|
|
17
|
+
def vm_reconfig_hardware(options = {})
|
|
18
|
+
raise ArgumentError, "hardware_spec is a required parameter" unless options.has_key? 'hardware_spec'
|
|
19
|
+
raise ArgumentError, "instance_uuid is a required parameter" unless options.has_key? 'instance_uuid'
|
|
20
|
+
{ 'task_state' => 'success' }
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|