fog-vcloud-director 0.1.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.
- checksums.yaml +7 -0
- data/.editorconfig +11 -0
- data/.gitignore +17 -0
- data/.hound.yml +2 -0
- data/.rubocop.yml +240 -0
- data/.ruby-gemset +1 -0
- data/.travis.yml +15 -0
- data/Gemfile +4 -0
- data/LICENSE.md +20 -0
- data/README.md +962 -0
- data/Rakefile +19 -0
- data/fog-vcloud-director.gemspec +31 -0
- data/lib/fog/vcloud_director.rb +1 -0
- data/lib/fog/vcloud_director/compute.rb +916 -0
- data/lib/fog/vcloud_director/core.rb +69 -0
- data/lib/fog/vcloud_director/generators/compute/compose_common.rb +122 -0
- data/lib/fog/vcloud_director/generators/compute/compose_vapp.rb +25 -0
- data/lib/fog/vcloud_director/generators/compute/create_snapshot.rb +25 -0
- data/lib/fog/vcloud_director/generators/compute/customization.rb +105 -0
- data/lib/fog/vcloud_director/generators/compute/disks.rb +186 -0
- data/lib/fog/vcloud_director/generators/compute/edge_gateway_service_configuration.rb +243 -0
- data/lib/fog/vcloud_director/generators/compute/instantiate_vapp_template_params.rb +30 -0
- data/lib/fog/vcloud_director/generators/compute/metadata.rb +104 -0
- data/lib/fog/vcloud_director/generators/compute/org_vdc_network.rb +88 -0
- data/lib/fog/vcloud_director/generators/compute/recompose_vapp.rb +34 -0
- data/lib/fog/vcloud_director/generators/compute/vapp.rb +28 -0
- data/lib/fog/vcloud_director/generators/compute/vm.rb +32 -0
- data/lib/fog/vcloud_director/generators/compute/vm_network.rb +119 -0
- data/lib/fog/vcloud_director/models/compute/catalog.rb +22 -0
- data/lib/fog/vcloud_director/models/compute/catalog_item.rb +30 -0
- data/lib/fog/vcloud_director/models/compute/catalog_items.rb +33 -0
- data/lib/fog/vcloud_director/models/compute/catalogs.rb +30 -0
- data/lib/fog/vcloud_director/models/compute/custom_field.rb +18 -0
- data/lib/fog/vcloud_director/models/compute/custom_fields.rb +67 -0
- data/lib/fog/vcloud_director/models/compute/disk.rb +53 -0
- data/lib/fog/vcloud_director/models/compute/disks.rb +44 -0
- data/lib/fog/vcloud_director/models/compute/media.rb +26 -0
- data/lib/fog/vcloud_director/models/compute/medias.rb +75 -0
- data/lib/fog/vcloud_director/models/compute/network.rb +25 -0
- data/lib/fog/vcloud_director/models/compute/networks.rb +62 -0
- data/lib/fog/vcloud_director/models/compute/organization.rb +37 -0
- data/lib/fog/vcloud_director/models/compute/organizations.rb +28 -0
- data/lib/fog/vcloud_director/models/compute/tag.rb +31 -0
- data/lib/fog/vcloud_director/models/compute/tags.rb +41 -0
- data/lib/fog/vcloud_director/models/compute/task.rb +55 -0
- data/lib/fog/vcloud_director/models/compute/tasks.rb +36 -0
- data/lib/fog/vcloud_director/models/compute/template_vm.rb +52 -0
- data/lib/fog/vcloud_director/models/compute/template_vms.rb +41 -0
- data/lib/fog/vcloud_director/models/compute/vapp.rb +144 -0
- data/lib/fog/vcloud_director/models/compute/vapp_template.rb +26 -0
- data/lib/fog/vcloud_director/models/compute/vapp_templates.rb +40 -0
- data/lib/fog/vcloud_director/models/compute/vapps.rb +40 -0
- data/lib/fog/vcloud_director/models/compute/vdc.rb +45 -0
- data/lib/fog/vcloud_director/models/compute/vdcs.rb +37 -0
- data/lib/fog/vcloud_director/models/compute/vm.rb +197 -0
- data/lib/fog/vcloud_director/models/compute/vm_customization.rb +40 -0
- data/lib/fog/vcloud_director/models/compute/vm_customizations.rb +29 -0
- data/lib/fog/vcloud_director/models/compute/vm_network.rb +27 -0
- data/lib/fog/vcloud_director/models/compute/vm_networks.rb +19 -0
- data/lib/fog/vcloud_director/models/compute/vms.rb +46 -0
- data/lib/fog/vcloud_director/parsers/compute/disks.rb +53 -0
- data/lib/fog/vcloud_director/parsers/compute/metadata.rb +61 -0
- data/lib/fog/vcloud_director/parsers/compute/network.rb +104 -0
- data/lib/fog/vcloud_director/parsers/compute/vm.rb +86 -0
- data/lib/fog/vcloud_director/parsers/compute/vm_customization.rb +55 -0
- data/lib/fog/vcloud_director/parsers/compute/vm_network.rb +107 -0
- data/lib/fog/vcloud_director/parsers/compute/vm_parser_helper.rb +62 -0
- data/lib/fog/vcloud_director/parsers/compute/vms.rb +68 -0
- data/lib/fog/vcloud_director/parsers/compute/vms_by_metadata.rb +37 -0
- data/lib/fog/vcloud_director/query.rb +59 -0
- data/lib/fog/vcloud_director/requests/compute/delete_catalog_item.rb +22 -0
- data/lib/fog/vcloud_director/requests/compute/delete_catalog_item_metadata_item_metadata.rb +25 -0
- data/lib/fog/vcloud_director/requests/compute/delete_disk.rb +60 -0
- data/lib/fog/vcloud_director/requests/compute/delete_disk_metadata_item_metadata.rb +25 -0
- data/lib/fog/vcloud_director/requests/compute/delete_logout.rb +18 -0
- data/lib/fog/vcloud_director/requests/compute/delete_media.rb +122 -0
- data/lib/fog/vcloud_director/requests/compute/delete_media_metadata_item_metadata.rb +25 -0
- data/lib/fog/vcloud_director/requests/compute/delete_network.rb +62 -0
- data/lib/fog/vcloud_director/requests/compute/delete_shadow_vm.rb +30 -0
- data/lib/fog/vcloud_director/requests/compute/delete_vapp.rb +59 -0
- data/lib/fog/vcloud_director/requests/compute/delete_vapp_metadata_item_metadata.rb +30 -0
- data/lib/fog/vcloud_director/requests/compute/delete_vapp_template.rb +27 -0
- data/lib/fog/vcloud_director/requests/compute/delete_vapp_template_metadata_item_metadata.rb +26 -0
- data/lib/fog/vcloud_director/requests/compute/get_allocated_ip_addresses.rb +25 -0
- data/lib/fog/vcloud_director/requests/compute/get_catalog.rb +63 -0
- data/lib/fog/vcloud_director/requests/compute/get_catalog_item.rb +48 -0
- data/lib/fog/vcloud_director/requests/compute/get_catalog_item_metadata.rb +25 -0
- data/lib/fog/vcloud_director/requests/compute/get_catalog_item_metadata_item_metadata.rb +26 -0
- data/lib/fog/vcloud_director/requests/compute/get_catalog_metadata.rb +25 -0
- data/lib/fog/vcloud_director/requests/compute/get_catalog_metadata_item_metadata.rb +26 -0
- data/lib/fog/vcloud_director/requests/compute/get_catalogs_from_query.rb +94 -0
- data/lib/fog/vcloud_director/requests/compute/get_control_access_params_catalog.rb +26 -0
- data/lib/fog/vcloud_director/requests/compute/get_control_access_params_vapp.rb +25 -0
- data/lib/fog/vcloud_director/requests/compute/get_cpu_rasd_item.rb +65 -0
- data/lib/fog/vcloud_director/requests/compute/get_current_session.rb +83 -0
- data/lib/fog/vcloud_director/requests/compute/get_disk.rb +123 -0
- data/lib/fog/vcloud_director/requests/compute/get_disk_metadata.rb +25 -0
- data/lib/fog/vcloud_director/requests/compute/get_disk_metadata_item_metadata.rb +26 -0
- data/lib/fog/vcloud_director/requests/compute/get_disk_owner.rb +70 -0
- data/lib/fog/vcloud_director/requests/compute/get_disks_from_query.rb +94 -0
- data/lib/fog/vcloud_director/requests/compute/get_disks_rasd_items_list.rb +90 -0
- data/lib/fog/vcloud_director/requests/compute/get_edge_gateway.rb +109 -0
- data/lib/fog/vcloud_director/requests/compute/get_entity.rb +38 -0
- data/lib/fog/vcloud_director/requests/compute/get_execute_query.rb +736 -0
- data/lib/fog/vcloud_director/requests/compute/get_groups_from_query.rb +95 -0
- data/lib/fog/vcloud_director/requests/compute/get_guest_customization_system_section_vapp.rb +69 -0
- data/lib/fog/vcloud_director/requests/compute/get_guest_customization_system_section_vapp_template.rb +25 -0
- data/lib/fog/vcloud_director/requests/compute/get_href.rb +21 -0
- data/lib/fog/vcloud_director/requests/compute/get_lease_settings_section_vapp.rb +59 -0
- data/lib/fog/vcloud_director/requests/compute/get_lease_settings_section_vapp_template.rb +25 -0
- data/lib/fog/vcloud_director/requests/compute/get_media.rb +111 -0
- data/lib/fog/vcloud_director/requests/compute/get_media_drives_rasd_items_list.rb +92 -0
- data/lib/fog/vcloud_director/requests/compute/get_media_metadata.rb +25 -0
- data/lib/fog/vcloud_director/requests/compute/get_media_metadata_item_metadata.rb +26 -0
- data/lib/fog/vcloud_director/requests/compute/get_media_owner.rb +70 -0
- data/lib/fog/vcloud_director/requests/compute/get_medias_from_query.rb +94 -0
- data/lib/fog/vcloud_director/requests/compute/get_memory_rasd_item.rb +64 -0
- data/lib/fog/vcloud_director/requests/compute/get_metadata.rb +41 -0
- data/lib/fog/vcloud_director/requests/compute/get_network.rb +67 -0
- data/lib/fog/vcloud_director/requests/compute/get_network_cards_items_list.rb +70 -0
- data/lib/fog/vcloud_director/requests/compute/get_network_complete.rb +78 -0
- data/lib/fog/vcloud_director/requests/compute/get_network_config_section_vapp.rb +61 -0
- data/lib/fog/vcloud_director/requests/compute/get_network_config_section_vapp_template.rb +25 -0
- data/lib/fog/vcloud_director/requests/compute/get_network_connection_system_section_vapp.rb +68 -0
- data/lib/fog/vcloud_director/requests/compute/get_network_connection_system_section_vapp_template.rb +25 -0
- data/lib/fog/vcloud_director/requests/compute/get_network_metadata.rb +25 -0
- data/lib/fog/vcloud_director/requests/compute/get_network_metadata_item_metadata.rb +26 -0
- data/lib/fog/vcloud_director/requests/compute/get_network_section_vapp.rb +25 -0
- data/lib/fog/vcloud_director/requests/compute/get_network_section_vapp_template.rb +25 -0
- data/lib/fog/vcloud_director/requests/compute/get_operating_system_section.rb +59 -0
- data/lib/fog/vcloud_director/requests/compute/get_org_settings.rb +38 -0
- data/lib/fog/vcloud_director/requests/compute/get_org_vdc_gateways.rb +83 -0
- data/lib/fog/vcloud_director/requests/compute/get_organization.rb +100 -0
- data/lib/fog/vcloud_director/requests/compute/get_organization_metadata.rb +25 -0
- data/lib/fog/vcloud_director/requests/compute/get_organization_metadata_item_metadata.rb +28 -0
- data/lib/fog/vcloud_director/requests/compute/get_organizations.rb +52 -0
- data/lib/fog/vcloud_director/requests/compute/get_organizations_from_query.rb +95 -0
- data/lib/fog/vcloud_director/requests/compute/get_product_sections_vapp.rb +25 -0
- data/lib/fog/vcloud_director/requests/compute/get_product_sections_vapp_template.rb +26 -0
- data/lib/fog/vcloud_director/requests/compute/get_request.rb +19 -0
- data/lib/fog/vcloud_director/requests/compute/get_runtime_info_section_type.rb +57 -0
- data/lib/fog/vcloud_director/requests/compute/get_serial_ports_items_list.rb +25 -0
- data/lib/fog/vcloud_director/requests/compute/get_shadow_vm.rb +24 -0
- data/lib/fog/vcloud_director/requests/compute/get_snapshot_section.rb +55 -0
- data/lib/fog/vcloud_director/requests/compute/get_startup_section.rb +64 -0
- data/lib/fog/vcloud_director/requests/compute/get_supported_systems_info.rb +239 -0
- data/lib/fog/vcloud_director/requests/compute/get_supported_versions.rb +1159 -0
- data/lib/fog/vcloud_director/requests/compute/get_task.rb +168 -0
- data/lib/fog/vcloud_director/requests/compute/get_task_list.rb +130 -0
- data/lib/fog/vcloud_director/requests/compute/get_template_vm.rb +74 -0
- data/lib/fog/vcloud_director/requests/compute/get_template_vms.rb +41 -0
- data/lib/fog/vcloud_director/requests/compute/get_thumbnail.rb +28 -0
- data/lib/fog/vcloud_director/requests/compute/get_users_from_query.rb +95 -0
- data/lib/fog/vcloud_director/requests/compute/get_vapp.rb +176 -0
- data/lib/fog/vcloud_director/requests/compute/get_vapp_metadata.rb +84 -0
- data/lib/fog/vcloud_director/requests/compute/get_vapp_metadata_item_metadata.rb +26 -0
- data/lib/fog/vcloud_director/requests/compute/get_vapp_ovf_descriptor.rb +24 -0
- data/lib/fog/vcloud_director/requests/compute/get_vapp_owner.rb +58 -0
- data/lib/fog/vcloud_director/requests/compute/get_vapp_template.rb +25 -0
- data/lib/fog/vcloud_director/requests/compute/get_vapp_template_customization_system_section.rb +25 -0
- data/lib/fog/vcloud_director/requests/compute/get_vapp_template_metadata.rb +25 -0
- data/lib/fog/vcloud_director/requests/compute/get_vapp_template_metadata_item_metadata.rb +27 -0
- data/lib/fog/vcloud_director/requests/compute/get_vapp_template_ovf_descriptor.rb +24 -0
- data/lib/fog/vcloud_director/requests/compute/get_vapp_template_owner.rb +25 -0
- data/lib/fog/vcloud_director/requests/compute/get_vapp_templates_from_query.rb +95 -0
- data/lib/fog/vcloud_director/requests/compute/get_vapps_in_lease_from_query.rb +94 -0
- data/lib/fog/vcloud_director/requests/compute/get_vcloud.rb +76 -0
- data/lib/fog/vcloud_director/requests/compute/get_vdc.rb +174 -0
- data/lib/fog/vcloud_director/requests/compute/get_vdc_metadata.rb +25 -0
- data/lib/fog/vcloud_director/requests/compute/get_vdc_metadata_item_metadata.rb +28 -0
- data/lib/fog/vcloud_director/requests/compute/get_vdc_storage_class.rb +83 -0
- data/lib/fog/vcloud_director/requests/compute/get_vdc_storage_class_metadata.rb +27 -0
- data/lib/fog/vcloud_director/requests/compute/get_vdc_storage_class_metadata_item_metadata.rb +25 -0
- data/lib/fog/vcloud_director/requests/compute/get_vdcs_from_query.rb +94 -0
- data/lib/fog/vcloud_director/requests/compute/get_virtual_hardware_section.rb +29 -0
- data/lib/fog/vcloud_director/requests/compute/get_vm.rb +74 -0
- data/lib/fog/vcloud_director/requests/compute/get_vm_capabilities.rb +61 -0
- data/lib/fog/vcloud_director/requests/compute/get_vm_compliance_results.rb +24 -0
- data/lib/fog/vcloud_director/requests/compute/get_vm_customization.rb +31 -0
- data/lib/fog/vcloud_director/requests/compute/get_vm_disks.rb +51 -0
- data/lib/fog/vcloud_director/requests/compute/get_vm_network.rb +56 -0
- data/lib/fog/vcloud_director/requests/compute/get_vm_pending_question.rb +34 -0
- data/lib/fog/vcloud_director/requests/compute/get_vms.rb +41 -0
- data/lib/fog/vcloud_director/requests/compute/get_vms_by_metadata.rb +20 -0
- data/lib/fog/vcloud_director/requests/compute/get_vms_disk_attached_to.rb +39 -0
- data/lib/fog/vcloud_director/requests/compute/get_vms_in_lease_from_query.rb +150 -0
- data/lib/fog/vcloud_director/requests/compute/instantiate_vapp_template.rb +173 -0
- data/lib/fog/vcloud_director/requests/compute/post_acquire_ticket.rb +27 -0
- data/lib/fog/vcloud_director/requests/compute/post_answer_vm_pending_question.rb +36 -0
- data/lib/fog/vcloud_director/requests/compute/post_attach_disk.rb +51 -0
- data/lib/fog/vcloud_director/requests/compute/post_cancel_task.rb +43 -0
- data/lib/fog/vcloud_director/requests/compute/post_capture_vapp.rb +70 -0
- data/lib/fog/vcloud_director/requests/compute/post_check_vm_compliance.rb +28 -0
- data/lib/fog/vcloud_director/requests/compute/post_clone_media.rb +102 -0
- data/lib/fog/vcloud_director/requests/compute/post_clone_vapp.rb +62 -0
- data/lib/fog/vcloud_director/requests/compute/post_clone_vapp_template.rb +52 -0
- data/lib/fog/vcloud_director/requests/compute/post_compose_vapp.rb +45 -0
- data/lib/fog/vcloud_director/requests/compute/post_configure_edge_gateway_services.rb +73 -0
- data/lib/fog/vcloud_director/requests/compute/post_consolidate_vm_vapp.rb +27 -0
- data/lib/fog/vcloud_director/requests/compute/post_consolidate_vm_vapp_template.rb +27 -0
- data/lib/fog/vcloud_director/requests/compute/post_create_catalog_item.rb +56 -0
- data/lib/fog/vcloud_director/requests/compute/post_create_org_vdc_network.rb +171 -0
- data/lib/fog/vcloud_director/requests/compute/post_create_snapshot.rb +21 -0
- data/lib/fog/vcloud_director/requests/compute/post_deploy_vapp.rb +51 -0
- data/lib/fog/vcloud_director/requests/compute/post_detach_disk.rb +39 -0
- data/lib/fog/vcloud_director/requests/compute/post_disable_nested_hv.rb +27 -0
- data/lib/fog/vcloud_director/requests/compute/post_disable_vapp_template_download.rb +24 -0
- data/lib/fog/vcloud_director/requests/compute/post_discard_vapp_state.rb +30 -0
- data/lib/fog/vcloud_director/requests/compute/post_eject_cd_rom.rb +39 -0
- data/lib/fog/vcloud_director/requests/compute/post_enable_nested_hv.rb +27 -0
- data/lib/fog/vcloud_director/requests/compute/post_enable_vapp_template_download.rb +24 -0
- data/lib/fog/vcloud_director/requests/compute/post_enter_maintenance_mode.rb +26 -0
- data/lib/fog/vcloud_director/requests/compute/post_exit_maintenance_mode.rb +22 -0
- data/lib/fog/vcloud_director/requests/compute/post_insert_cd_rom.rb +39 -0
- data/lib/fog/vcloud_director/requests/compute/post_install_vmware_tools.rb +27 -0
- data/lib/fog/vcloud_director/requests/compute/post_instantiate_vapp_template.rb +196 -0
- data/lib/fog/vcloud_director/requests/compute/post_login_session.rb +39 -0
- data/lib/fog/vcloud_director/requests/compute/post_power_off_vapp.rb +36 -0
- data/lib/fog/vcloud_director/requests/compute/post_power_on_vapp.rb +71 -0
- data/lib/fog/vcloud_director/requests/compute/post_reboot_vapp.rb +33 -0
- data/lib/fog/vcloud_director/requests/compute/post_recompose_vapp.rb +21 -0
- data/lib/fog/vcloud_director/requests/compute/post_reconfigure_vm.rb +118 -0
- data/lib/fog/vcloud_director/requests/compute/post_remove_all_snapshots.rb +27 -0
- data/lib/fog/vcloud_director/requests/compute/post_reset_vapp.rb +33 -0
- data/lib/fog/vcloud_director/requests/compute/post_revert_snapshot.rb +27 -0
- data/lib/fog/vcloud_director/requests/compute/post_shutdown_vapp.rb +33 -0
- data/lib/fog/vcloud_director/requests/compute/post_suspend_vapp.rb +33 -0
- data/lib/fog/vcloud_director/requests/compute/post_undeploy_vapp.rb +66 -0
- data/lib/fog/vcloud_director/requests/compute/post_update_catalog_item_metadata.rb +52 -0
- data/lib/fog/vcloud_director/requests/compute/post_update_disk_metadata.rb +52 -0
- data/lib/fog/vcloud_director/requests/compute/post_update_media_metadata.rb +52 -0
- data/lib/fog/vcloud_director/requests/compute/post_update_vapp_metadata.rb +86 -0
- data/lib/fog/vcloud_director/requests/compute/post_update_vapp_template_metadata.rb +52 -0
- data/lib/fog/vcloud_director/requests/compute/post_upgrade_hw_version.rb +28 -0
- data/lib/fog/vcloud_director/requests/compute/post_upload_disk.rb +133 -0
- data/lib/fog/vcloud_director/requests/compute/post_upload_media.rb +120 -0
- data/lib/fog/vcloud_director/requests/compute/post_upload_vapp_template.rb +46 -0
- data/lib/fog/vcloud_director/requests/compute/put_catalog_item_metadata_item_metadata.rb +50 -0
- data/lib/fog/vcloud_director/requests/compute/put_cpu.rb +88 -0
- data/lib/fog/vcloud_director/requests/compute/put_disk_metadata_item_metadata.rb +46 -0
- data/lib/fog/vcloud_director/requests/compute/put_disks.rb +39 -0
- data/lib/fog/vcloud_director/requests/compute/put_guest_customization_section_vapp.rb +141 -0
- data/lib/fog/vcloud_director/requests/compute/put_media_metadata_item_metadata.rb +50 -0
- data/lib/fog/vcloud_director/requests/compute/put_memory.rb +89 -0
- data/lib/fog/vcloud_director/requests/compute/put_metadata_value.rb +26 -0
- data/lib/fog/vcloud_director/requests/compute/put_network.rb +162 -0
- data/lib/fog/vcloud_director/requests/compute/put_network_connection_system_section_vapp.rb +152 -0
- data/lib/fog/vcloud_director/requests/compute/put_product_sections.rb +46 -0
- data/lib/fog/vcloud_director/requests/compute/put_vapp_metadata_item_metadata.rb +85 -0
- data/lib/fog/vcloud_director/requests/compute/put_vapp_name_and_description.rb +36 -0
- data/lib/fog/vcloud_director/requests/compute/put_vapp_template_metadata_item_metadata.rb +50 -0
- data/lib/fog/vcloud_director/requests/compute/put_vm.rb +72 -0
- data/lib/fog/vcloud_director/requests/compute/put_vm_capabilities.rb +44 -0
- data/lib/fog/vcloud_director/version.rb +5 -0
- data/spec/spec_helper.rb +15 -0
- data/spec/vcloud_director/generators/compute/instantiate_vapp_template_params_spec.rb +68 -0
- data/spec/vcloud_director/requests/compute/instantiate_vapp_template_spec.rb +78 -0
- data/spec/vcloud_director/spec_helper.rb +11 -0
- data/tasks/bundler.rake +3 -0
- data/tasks/console.rake +12 -0
- data/tasks/lint.rake +3 -0
- data/tasks/test.rake +13 -0
- data/tests/helper.rb +32 -0
- data/tests/helpers/collection_helper.rb +97 -0
- data/tests/helpers/compute/flavors_helper.rb +32 -0
- data/tests/helpers/compute/server_helper.rb +25 -0
- data/tests/helpers/compute/servers_helper.rb +10 -0
- data/tests/helpers/formats_helper.rb +98 -0
- data/tests/helpers/formats_helper_tests.rb +110 -0
- data/tests/helpers/mock_helper.rb +95 -0
- data/tests/helpers/model_helper.rb +31 -0
- data/tests/helpers/responds_to_helper.rb +11 -0
- data/tests/helpers/schema_validator_tests.rb +107 -0
- data/tests/helpers/succeeds_helper.rb +9 -0
- data/tests/lorem.txt +1 -0
- data/tests/vcloud_director/ensure_list_tests.rb +84 -0
- data/tests/vcloud_director/fixtures/test.iso +1 -0
- data/tests/vcloud_director/fixtures/vapp.xml +532 -0
- data/tests/vcloud_director/fixtures/vm.xml +213 -0
- data/tests/vcloud_director/generators/compute/compose_vapp_tests.rb +108 -0
- data/tests/vcloud_director/models/compute/catalog_items_tests.rb +42 -0
- data/tests/vcloud_director/models/compute/catalogs_tests.rb +40 -0
- data/tests/vcloud_director/models/compute/helper.rb +60 -0
- data/tests/vcloud_director/models/compute/media_tests.rb +58 -0
- data/tests/vcloud_director/models/compute/network_tests.rb +108 -0
- data/tests/vcloud_director/models/compute/organizations_tests.rb +18 -0
- data/tests/vcloud_director/models/compute/tasks_tests.rb +56 -0
- data/tests/vcloud_director/models/compute/vapp_life_cycle_tests.rb +93 -0
- data/tests/vcloud_director/models/compute/vapp_template_tests.rb +29 -0
- data/tests/vcloud_director/models/compute/vapp_tests.rb +61 -0
- data/tests/vcloud_director/models/compute/vdcs_tests.rb +54 -0
- data/tests/vcloud_director/models/compute/vms_tests.rb +101 -0
- data/tests/vcloud_director/requests/compute/admin_tests.rb +16 -0
- data/tests/vcloud_director/requests/compute/catalog_tests.rb +42 -0
- data/tests/vcloud_director/requests/compute/disk_tests.rb +178 -0
- data/tests/vcloud_director/requests/compute/edge_gateway_tests.rb +217 -0
- data/tests/vcloud_director/requests/compute/groups_tests.rb +18 -0
- data/tests/vcloud_director/requests/compute/helper.rb +32 -0
- data/tests/vcloud_director/requests/compute/media_tests.rb +195 -0
- data/tests/vcloud_director/requests/compute/network_tests.rb +186 -0
- data/tests/vcloud_director/requests/compute/organization_tests.rb +37 -0
- data/tests/vcloud_director/requests/compute/ovf_descriptor_tests.rb +36 -0
- data/tests/vcloud_director/requests/compute/query_tests.rb +99 -0
- data/tests/vcloud_director/requests/compute/schema_helper.rb +663 -0
- data/tests/vcloud_director/requests/compute/session_tests.rb +14 -0
- data/tests/vcloud_director/requests/compute/supported_systems_tests.rb +11 -0
- data/tests/vcloud_director/requests/compute/task_tests.rb +35 -0
- data/tests/vcloud_director/requests/compute/users_tests.rb +18 -0
- data/tests/vcloud_director/requests/compute/vapp_tests.rb +123 -0
- data/tests/vcloud_director/requests/compute/vdc_storage_profile_tests.rb +27 -0
- data/tests/vcloud_director/requests/compute/vdc_tests.rb +36 -0
- data/tests/vcloud_director/requests/compute/versions_tests.rb +13 -0
- data/tests/vcloud_director/requests/compute/vm_tests.rb +185 -0
- data/tests/watchr.rb +22 -0
- metadata +461 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
require 'builder'
|
|
2
|
+
|
|
3
|
+
module Fog
|
|
4
|
+
module Compute
|
|
5
|
+
class VcloudDirector
|
|
6
|
+
class Real
|
|
7
|
+
require 'fog/vcloud_director/generators/compute/instantiate_vapp_template_params'
|
|
8
|
+
# Create a vApp from a vApp template.
|
|
9
|
+
#
|
|
10
|
+
# The response includes a Task element. You can monitor the task to to
|
|
11
|
+
# track the creation of the vApp.
|
|
12
|
+
#
|
|
13
|
+
# @param [String] vapp_name
|
|
14
|
+
# @param [String] template_id
|
|
15
|
+
# @param [Hash] options
|
|
16
|
+
# @return [Excon::Response]
|
|
17
|
+
# * body<~Hash>:
|
|
18
|
+
#
|
|
19
|
+
# @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-InstantiateVAppTemplate.html
|
|
20
|
+
# @since vCloud API version 0.9
|
|
21
|
+
def instantiate_vapp_template(vapp_name, template_id, options={})
|
|
22
|
+
params = populate_uris(options.merge(:vapp_name => vapp_name, :template_id => template_id))
|
|
23
|
+
|
|
24
|
+
# @todo Move all the logic to a generator.
|
|
25
|
+
data = generate_instantiate_vapp_template_request(params)
|
|
26
|
+
|
|
27
|
+
request(
|
|
28
|
+
:body => data,
|
|
29
|
+
:expects => 201,
|
|
30
|
+
:headers => {'Content-Type' => 'application/vnd.vmware.vcloud.instantiateVAppTemplateParams+xml'},
|
|
31
|
+
:method => 'POST',
|
|
32
|
+
:parser => Fog::ToHashDocument.new,
|
|
33
|
+
:path => "vdc/#{params[:vdc_id]}/action/instantiateVAppTemplate"
|
|
34
|
+
)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
private
|
|
38
|
+
|
|
39
|
+
def populate_uris(options = {})
|
|
40
|
+
options[:vdc_id] || raise("vdc_id option is required")
|
|
41
|
+
options[:vdc_uri] = vdc_end_point(options[:vdc_id])
|
|
42
|
+
options[:network_uri] = network_end_point(options[:network_id]) if options[:network_id]
|
|
43
|
+
options[:template_uri] = vapp_template_end_point(options[:template_id]) || raise("template_id option is required")
|
|
44
|
+
options
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def generate_instantiate_vapp_template_request(options ={})
|
|
48
|
+
|
|
49
|
+
#overriding some params so they work with new standardised generator
|
|
50
|
+
options[:InstantiationParams] =
|
|
51
|
+
{
|
|
52
|
+
:NetworkConfig =>
|
|
53
|
+
[{
|
|
54
|
+
:networkName => options[:network_name],
|
|
55
|
+
:networkHref => options[:network_uri],
|
|
56
|
+
:fenceMode => 'bridged'
|
|
57
|
+
}]
|
|
58
|
+
} unless options[:InstantiationParams]
|
|
59
|
+
options[:name] = options.delete(:vapp_name) if options[:vapp_name]
|
|
60
|
+
options[:Description] = options.delete(:description) unless options[:Description]
|
|
61
|
+
if options[:vms_config] then
|
|
62
|
+
options[:source_vms] = options.delete(:vms_config)
|
|
63
|
+
options[:source_vms].each_with_index {|vm, i|options[:source_vms][i][:StorageProfileHref] = options[:source_vms][i].delete(:storage_profile_href) }
|
|
64
|
+
end
|
|
65
|
+
options[:Source] = options.delete(:template_uri) if options[:template_uri]
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
Fog::Generators::Compute::VcloudDirector::InstantiateVappTemplateParams.new(options).generate_xml
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def xmlns
|
|
77
|
+
{
|
|
78
|
+
'xmlns' => "http://www.vmware.com/vcloud/v1.5",
|
|
79
|
+
"xmlns:ovf" => "http://schemas.dmtf.org/ovf/envelope/1",
|
|
80
|
+
"xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance",
|
|
81
|
+
"xmlns:xsd" => "http://www.w3.org/2001/XMLSchema"
|
|
82
|
+
}
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def vdc_end_point(vdc_id = nil)
|
|
86
|
+
end_point + ( vdc_id ? "vdc/#{vdc_id}" : "vdc" )
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def network_end_point(network_id = nil)
|
|
90
|
+
end_point + ( network_id ? "network/#{network_id}" : "network" )
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def vapp_template_end_point(vapp_template_id = nil)
|
|
94
|
+
end_point + ( vapp_template_id ? "vAppTemplate/#{vapp_template_id}" : "vAppTemplate" )
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def endpoint
|
|
98
|
+
end_point
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
class Mock
|
|
103
|
+
# Assume the template is a single VM with one network interface and one disk.
|
|
104
|
+
def instantiate_vapp_template(vapp_name, template_id, options={})
|
|
105
|
+
unless data[:catalog_items].values.find {|i| i[:template_id] == template_id}
|
|
106
|
+
raise Fog::Compute::VcloudDirector::Forbidden.new(
|
|
107
|
+
'No such template.'
|
|
108
|
+
)
|
|
109
|
+
end
|
|
110
|
+
unless vdc = data[:vdcs][options[:vdc_id]]
|
|
111
|
+
raise Fog::Compute::VcloudDirector::Forbidden.new(
|
|
112
|
+
'No such VDC.'
|
|
113
|
+
)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
vapp_uuid = uuid
|
|
117
|
+
vapp_id = "vapp-#{vapp_uuid}"
|
|
118
|
+
owner = {
|
|
119
|
+
:href => make_href("vApp/#{vapp_id}"),
|
|
120
|
+
:type => 'application/vnd.vmware.vcloud.vm+xml'
|
|
121
|
+
}
|
|
122
|
+
task_id = enqueue_task(
|
|
123
|
+
"Creating Virtual Application #{vapp_name}(#{vapp_uuid})", 'vdcInstantiateVapp', owner,
|
|
124
|
+
:on_success => lambda do
|
|
125
|
+
# Add to the VDC
|
|
126
|
+
data[:vapps][vapp_id] = {
|
|
127
|
+
:name => vapp_name,
|
|
128
|
+
:vdc_id => options[:vdc_id],
|
|
129
|
+
:description => 'From Template',
|
|
130
|
+
:networks => [
|
|
131
|
+
{:parent_id => default_network_uuid }
|
|
132
|
+
]
|
|
133
|
+
}
|
|
134
|
+
vm_id = "vm-#{uuid}"
|
|
135
|
+
data[:vms][vm_id] = {
|
|
136
|
+
:name => vapp_name,
|
|
137
|
+
:parent_vapp => vapp_id,
|
|
138
|
+
:nics => [
|
|
139
|
+
{
|
|
140
|
+
:network_name => 'Default Network',
|
|
141
|
+
:mac_address => '7d:68:a2:a0:a4:f8',
|
|
142
|
+
:ip_address => nil
|
|
143
|
+
}
|
|
144
|
+
]
|
|
145
|
+
}
|
|
146
|
+
data[:disks][uuid] = {
|
|
147
|
+
:name => 'Hard Disk 1',
|
|
148
|
+
:capacity => 10240,
|
|
149
|
+
:parent_vm => vm_id
|
|
150
|
+
}
|
|
151
|
+
end
|
|
152
|
+
)
|
|
153
|
+
body = {
|
|
154
|
+
:href => make_href("vApp/#{vapp_id}"),
|
|
155
|
+
:Tasks => {
|
|
156
|
+
:Task => {
|
|
157
|
+
:xmlns => xmlns,
|
|
158
|
+
:xmlns_xsi => xmlns_xsi,
|
|
159
|
+
:xsi_schemaLocation => xsi_schema_location,
|
|
160
|
+
}.merge(task_body(task_id))
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
Excon::Response.new(
|
|
165
|
+
:status => 202,
|
|
166
|
+
:headers => {'Content-Type' => "#{body[:type]};version=#{api_version}"},
|
|
167
|
+
:body => body
|
|
168
|
+
)
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class VcloudDirector
|
|
4
|
+
class Real
|
|
5
|
+
# Retrieve a screen ticket that you can use with the VMRC browser
|
|
6
|
+
# plug-in to gain access to the console of a running VM.
|
|
7
|
+
#
|
|
8
|
+
# @param [String] id Object identifier of the VM.
|
|
9
|
+
# @return [Excon::Response]
|
|
10
|
+
# * body<~Hash>:
|
|
11
|
+
#
|
|
12
|
+
# @raise [Fog::Compute::VcloudDirector::Conflict]
|
|
13
|
+
#
|
|
14
|
+
# @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-AcquireTicket.html
|
|
15
|
+
# @since vCloud API version 0.9
|
|
16
|
+
def post_acquire_ticket(id)
|
|
17
|
+
request(
|
|
18
|
+
:expects => 200,
|
|
19
|
+
:method => 'POST',
|
|
20
|
+
:parser => Fog::ToHashDocument.new,
|
|
21
|
+
:path => "vApp/#{id}/screen/action/acquireTicket"
|
|
22
|
+
)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class VcloudDirector
|
|
4
|
+
class Real
|
|
5
|
+
# Answer a question being asked by a VM.
|
|
6
|
+
#
|
|
7
|
+
# @param [String] id Object identifier of the VM.
|
|
8
|
+
# @param [Integer] choice_id Choice ID of this answer.
|
|
9
|
+
# @param [String] question_id Question ID of the question.
|
|
10
|
+
# @return [Excon::Response]
|
|
11
|
+
#
|
|
12
|
+
# @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-AnswerVmPendingQuestion.html
|
|
13
|
+
# @since vCloud API version 0.9
|
|
14
|
+
def post_answer_pending_vm_question(id, choice_id, question_id)
|
|
15
|
+
body = Nokogiri::XML::Builder.new do
|
|
16
|
+
attrs = {
|
|
17
|
+
:xmlns => 'http://www.vmware.com/vcloud/v1.5'
|
|
18
|
+
}
|
|
19
|
+
VmAnswerQuestion(attrs) {
|
|
20
|
+
ChoiceId choice_id
|
|
21
|
+
QuestionId question_id
|
|
22
|
+
}
|
|
23
|
+
end.to_xml
|
|
24
|
+
|
|
25
|
+
request(
|
|
26
|
+
:body => body,
|
|
27
|
+
:expects => 204, # this might be wrong
|
|
28
|
+
:headers => {'Content-Type' => 'application/vnd.vmware.vcloud.vmPendingAnswer+xml'},
|
|
29
|
+
:method => 'POST',
|
|
30
|
+
:path => "vApp/#{id}/quesiton/action/answer"
|
|
31
|
+
)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class VcloudDirector
|
|
4
|
+
class Real
|
|
5
|
+
# Attach a disk to a VM.
|
|
6
|
+
#
|
|
7
|
+
# This operation is asynchronous and returns a task that you can
|
|
8
|
+
# monitor to track the progress of the request.
|
|
9
|
+
#
|
|
10
|
+
# @param [String] id Object identifier of the VM.
|
|
11
|
+
# @param [String] disk_id Object identifier of the disk.
|
|
12
|
+
# @param [Hash] options
|
|
13
|
+
# @option options [Integer] :BusNumber Bus number on which to place the
|
|
14
|
+
# disk controller. If empty or missing, the system assigns a bus
|
|
15
|
+
# number and a unit number on that bus.
|
|
16
|
+
# @option options [Integer] :BusNumber Unit number (slot) on the bus
|
|
17
|
+
# specified by :BusNumber. Ignored if :BusNumber is empty or missing.
|
|
18
|
+
# @return [Excon::Response]
|
|
19
|
+
# * body<~Hash>:
|
|
20
|
+
#
|
|
21
|
+
# @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-AttachDisk.html
|
|
22
|
+
# @since vCloud API version 5.1
|
|
23
|
+
def post_attach_disk(id, disk_id, options={})
|
|
24
|
+
body = Nokogiri::XML::Builder.new do
|
|
25
|
+
attrs = {
|
|
26
|
+
:xmlns => 'http://www.vmware.com/vcloud/v1.5'
|
|
27
|
+
}
|
|
28
|
+
DiskAttachOrDetachParams(attrs) {
|
|
29
|
+
Disk(:href => "#{end_point}disk/#{disk_id}")
|
|
30
|
+
if options.key?(:BusNumber)
|
|
31
|
+
BusNumber options[:BusNumber]
|
|
32
|
+
end
|
|
33
|
+
if options.key?(:UnitNumber)
|
|
34
|
+
BusNumber options[:UnitNumber]
|
|
35
|
+
end
|
|
36
|
+
}
|
|
37
|
+
end.to_xml
|
|
38
|
+
|
|
39
|
+
request(
|
|
40
|
+
:body => body,
|
|
41
|
+
:expects => 202,
|
|
42
|
+
:headers => {'Content-Type' => 'application/vnd.vmware.vcloud.diskAttachOrDetachParams+xml'},
|
|
43
|
+
:method => 'POST',
|
|
44
|
+
:parser => Fog::ToHashDocument.new,
|
|
45
|
+
:path => "vApp/#{id}/disk/action/attach"
|
|
46
|
+
)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class VcloudDirector
|
|
4
|
+
class Real
|
|
5
|
+
extend Fog::Deprecation
|
|
6
|
+
deprecate :post_task_cancel, :post_cancel_task
|
|
7
|
+
|
|
8
|
+
# Cancel a task.
|
|
9
|
+
#
|
|
10
|
+
# @param [String] id Object identifier of the task.
|
|
11
|
+
# @return [Excon::Response]
|
|
12
|
+
#
|
|
13
|
+
# @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-CancelTask.html
|
|
14
|
+
# @since vCloud API version 1.5
|
|
15
|
+
def post_cancel_task(id)
|
|
16
|
+
request(
|
|
17
|
+
:expects => 204,
|
|
18
|
+
:method => 'POST',
|
|
19
|
+
:path => "task/#{id}/action/cancel"
|
|
20
|
+
)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
class Mock
|
|
25
|
+
def post_cancel_task(id)
|
|
26
|
+
unless task = data[:tasks][id]
|
|
27
|
+
raise Fog::Compute::VcloudDirector::Forbidden.new(
|
|
28
|
+
'No access to entity "com.vmware.vcloud.entity.task:%s"' % id
|
|
29
|
+
)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# @note Tasks don't actually get cancelled (confirmed VCloud Director
|
|
33
|
+
# bug) so we'll emulate that. Set the flag and we're done!
|
|
34
|
+
task[:cancel_requested] = true
|
|
35
|
+
|
|
36
|
+
Excon::Response.new(
|
|
37
|
+
:status => 204
|
|
38
|
+
)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class VcloudDirector
|
|
4
|
+
class Real
|
|
5
|
+
# Create a vApp template from a vApp.
|
|
6
|
+
#
|
|
7
|
+
# The response includes a Task element. You can monitor the task to to
|
|
8
|
+
# track the creation of the vApp template.
|
|
9
|
+
#
|
|
10
|
+
# @param [String] vdc_id Object identifier of the vDC.
|
|
11
|
+
# @param [String] name Name of the vApp template.
|
|
12
|
+
# @param [String] source_id Object identifier of the vApp to capture.
|
|
13
|
+
# @param [Hash] options
|
|
14
|
+
# @option options [String] :Description Optional description.
|
|
15
|
+
# @option options [Hash] :LeaseSettingsSection
|
|
16
|
+
# * :StorageLeaseInSeconds<~Integer> - Storage lease in seconds.
|
|
17
|
+
# @option options [Hash] :CustomizationSection
|
|
18
|
+
# * :goldMaster<~Boolean> - True if this template is a gold master.
|
|
19
|
+
# * :CustomizeOnInstantiate<~Boolean> - True if instantiating this
|
|
20
|
+
# template applies customization settings. Otherwise, instantiation
|
|
21
|
+
# creates an identical copy.
|
|
22
|
+
# @return [Excon::Response]
|
|
23
|
+
# * body<~Hash>:
|
|
24
|
+
#
|
|
25
|
+
# @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-CaptureVApp.html
|
|
26
|
+
# @since vCloud API version 0.9
|
|
27
|
+
def post_capture_vapp(vdc_id, name, source_id, options={})
|
|
28
|
+
body = Nokogiri::XML::Builder.new do
|
|
29
|
+
attrs = {
|
|
30
|
+
:xmlns => 'http://www.vmware.com/vcloud/v1.5',
|
|
31
|
+
'xmlns:ovf' => 'http://schemas.dmtf.org/ovf/envelope/1',
|
|
32
|
+
:name => name
|
|
33
|
+
}
|
|
34
|
+
CaptureVAppParams(attrs) {
|
|
35
|
+
if options.key?(:Description)
|
|
36
|
+
Description options[:Description]
|
|
37
|
+
end
|
|
38
|
+
Source(:href => "#{end_point}vApp/#{source_id}")
|
|
39
|
+
if section = options[:LeaseSettingsSection]
|
|
40
|
+
LeaseSettingsSection {
|
|
41
|
+
self['ovf'].Info 'Lease settings section'
|
|
42
|
+
if section.key?(:StorageLeaseInSeconds)
|
|
43
|
+
StorageLeaseInSeconds section[:StorageLeaseInSeconds]
|
|
44
|
+
end
|
|
45
|
+
}
|
|
46
|
+
end
|
|
47
|
+
if section = options[:CustomizationSection]
|
|
48
|
+
attrs = {}
|
|
49
|
+
attrs[:goldMaster] = section[:goldMaster] if section.key?(:goldMaster)
|
|
50
|
+
CustomizationSection(attrs) {
|
|
51
|
+
self['ovf'].Info 'VApp template customization section'
|
|
52
|
+
CustomizeOnInstantiate section[:CustomizeOnInstantiate]
|
|
53
|
+
}
|
|
54
|
+
end
|
|
55
|
+
}
|
|
56
|
+
end.to_xml
|
|
57
|
+
|
|
58
|
+
request(
|
|
59
|
+
:body => body,
|
|
60
|
+
:expects => 201,
|
|
61
|
+
:headers => {'Content-Type' => 'application/vnd.vmware.vcloud.captureVAppParams+xml'},
|
|
62
|
+
:method => 'POST',
|
|
63
|
+
:parser => Fog::ToHashDocument.new,
|
|
64
|
+
:path => "vdc/#{vdc_id}/action/captureVApp"
|
|
65
|
+
)
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class VcloudDirector
|
|
4
|
+
class Real
|
|
5
|
+
# Perform storage profile compliance check on a VM.
|
|
6
|
+
#
|
|
7
|
+
# This operation is asynchronous and return a task. When the task
|
|
8
|
+
# completes, the compliance check on the VM has been completed and the
|
|
9
|
+
# results can be retrieved.
|
|
10
|
+
#
|
|
11
|
+
# @param [String] id Object identifier of the VM.
|
|
12
|
+
# @return [Excon::Response]
|
|
13
|
+
# * body<~Hash>:
|
|
14
|
+
#
|
|
15
|
+
# @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-CheckVmCompliance.html
|
|
16
|
+
# @since vCloud API version 5.1
|
|
17
|
+
def post_check_vm_compliance(id)
|
|
18
|
+
request(
|
|
19
|
+
:expects => 202,
|
|
20
|
+
:method => 'POST',
|
|
21
|
+
:parser => Fog::ToHashDocument.new,
|
|
22
|
+
:path => "vApp/#{id}/action/checkCompliance"
|
|
23
|
+
)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class VcloudDirector
|
|
4
|
+
class Real
|
|
5
|
+
# Create a copy of a media object.
|
|
6
|
+
#
|
|
7
|
+
# The response includes a Task element. You can monitor the task to to
|
|
8
|
+
# track the creation of the vApp template.
|
|
9
|
+
#
|
|
10
|
+
# @param [String] vdc_id Object identifier of the vDC.
|
|
11
|
+
# @param [String] source_id Object identifier of the source media
|
|
12
|
+
# object.
|
|
13
|
+
# @param [Hash] options
|
|
14
|
+
# @option options [String] :Description Optional description.
|
|
15
|
+
# @option options [Boolean] :IsSourceDelete A value of true deletes the
|
|
16
|
+
# Source object after successful completion of the copy operation.
|
|
17
|
+
# Defaults to false if empty or missing.
|
|
18
|
+
# @return [Excon::Response]
|
|
19
|
+
# * body<~Hash>:
|
|
20
|
+
#
|
|
21
|
+
# @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-CloneMedia.html
|
|
22
|
+
# @since vCloud API version 0.9
|
|
23
|
+
def post_clone_media(vdc_id, source_id, options={})
|
|
24
|
+
body = Nokogiri::XML::Builder.new do
|
|
25
|
+
attrs = {
|
|
26
|
+
:xmlns => 'http://www.vmware.com/vcloud/v1.5'
|
|
27
|
+
}
|
|
28
|
+
CloneMediaParams(attrs) {
|
|
29
|
+
if options.key?(:Description)
|
|
30
|
+
Description options[:Description]
|
|
31
|
+
end
|
|
32
|
+
Source(:href => "#{end_point}media/#{source_id}")
|
|
33
|
+
if options.key?(:IsSourceDelete)
|
|
34
|
+
IsSourceDelete options[:IsSourceDelete]
|
|
35
|
+
end
|
|
36
|
+
}
|
|
37
|
+
end.to_xml
|
|
38
|
+
|
|
39
|
+
response = request(
|
|
40
|
+
:body => body,
|
|
41
|
+
:expects => 201,
|
|
42
|
+
:headers => {'Content-Type' => 'application/vnd.vmware.vcloud.cloneMediaParams+xml'},
|
|
43
|
+
:method => 'POST',
|
|
44
|
+
:parser => Fog::ToHashDocument.new,
|
|
45
|
+
:path => "vdc/#{vdc_id}/action/cloneMedia"
|
|
46
|
+
)
|
|
47
|
+
ensure_list! response.body, :Files, :File
|
|
48
|
+
response
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
class Mock
|
|
53
|
+
def post_clone_media(vdc_id, source_id, options={})
|
|
54
|
+
# TODO: check this happens.
|
|
55
|
+
unless source_media = data[:medias][source_id]
|
|
56
|
+
raise Fog::Compute::VcloudDirector::Forbidden.new(
|
|
57
|
+
"No access to entity \"(com.vmware.vcloud.entity.media:#{source_id})\"."
|
|
58
|
+
)
|
|
59
|
+
end
|
|
60
|
+
unless data[:vdcs][vdc_id]
|
|
61
|
+
raise Fog::Compute::VcloudDirector::Forbidden.new(
|
|
62
|
+
"No access to entity \"(com.vmware.vcloud.entity.vdc:#{vdc_id})\"."
|
|
63
|
+
)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
media_id = uuid
|
|
67
|
+
media_name = "#{source_media[:name]}-copy-#{uuid}"
|
|
68
|
+
|
|
69
|
+
owner = {
|
|
70
|
+
:href => make_href("media/#{media_id}"),
|
|
71
|
+
:type => 'application/vnd.vmware.vcloud.media+xml'
|
|
72
|
+
}
|
|
73
|
+
task_id = enqueue_task(
|
|
74
|
+
"Copy Media File #{media_name}(#{media_id})", 'vdcCopyMedia', owner,
|
|
75
|
+
:on_success => lambda do
|
|
76
|
+
data[:medias][media_id][:status] = 1
|
|
77
|
+
end
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
media = source_media.dup.merge(
|
|
81
|
+
:name => media_name,
|
|
82
|
+
:status => 0,
|
|
83
|
+
:tasks => [task_id]
|
|
84
|
+
)
|
|
85
|
+
data[:medias][media_id] = media
|
|
86
|
+
|
|
87
|
+
body = {
|
|
88
|
+
:xmlns => xmlns,
|
|
89
|
+
:xmlns_xsi => xmlns_xsi,
|
|
90
|
+
:xsi_schemaLocation => xsi_schema_location
|
|
91
|
+
}.merge(media_body(media_id))
|
|
92
|
+
|
|
93
|
+
Excon::Response.new(
|
|
94
|
+
:status => 201,
|
|
95
|
+
:headers => {'Content-Type' => "#{body[:type]};version=#{api_version}"},
|
|
96
|
+
:body => body
|
|
97
|
+
)
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|