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,168 @@
|
|
|
1
|
+
require 'date'
|
|
2
|
+
|
|
3
|
+
module Fog
|
|
4
|
+
module Compute
|
|
5
|
+
class VcloudDirector
|
|
6
|
+
class Real
|
|
7
|
+
# Retrieve a task.
|
|
8
|
+
#
|
|
9
|
+
# @param [String] id The object identifier of the task.
|
|
10
|
+
# @return [Excon::Response]
|
|
11
|
+
# * body<~Hash>:
|
|
12
|
+
# * :href<~String> - The URI of the entity.
|
|
13
|
+
# * :type<~String> - The MIME type of the entity.
|
|
14
|
+
# * :id<~String> - The entity identifier, expressed in URN format.
|
|
15
|
+
# The value of this attribute uniquely identifies the entity,
|
|
16
|
+
# persists for the life of the entity, and is never reused.
|
|
17
|
+
# * :operationKey<~String> - Optional unique identifier to support
|
|
18
|
+
# idempotent semantics for create and delete operations.
|
|
19
|
+
# * :name<~String> - The name of the entity.
|
|
20
|
+
# * :cancelRequested<~String> - Whether user has requested this
|
|
21
|
+
# processing to be canceled.
|
|
22
|
+
# * :endTime<~String> - The date and time that processing of the
|
|
23
|
+
# task was completed. May not be present if the task is still
|
|
24
|
+
# being executed.
|
|
25
|
+
# * :expiryTime<~String> - The date and time at which the task
|
|
26
|
+
# resource will be destroyed and no longer available for
|
|
27
|
+
# retrieval. May not be present if the task has not been executed
|
|
28
|
+
# or is still being executed.
|
|
29
|
+
# * :operation<~String> - A message describing the operation that
|
|
30
|
+
# is tracked by this task.
|
|
31
|
+
# * :operationName<~String> - The short name of the operation that
|
|
32
|
+
# is tracked by this task.
|
|
33
|
+
# * :serviceNamespace<~String> - Identifier of the service that
|
|
34
|
+
# created the task.
|
|
35
|
+
# * :startTime<~String> - The date and time the system started
|
|
36
|
+
# executing the task. May not be present if the task has not been
|
|
37
|
+
# executed yet.
|
|
38
|
+
# * :status<~String> - The execution status of the task.
|
|
39
|
+
# * :Link<~Array<Hash>>:
|
|
40
|
+
# * :Description<~String> - Optional description.
|
|
41
|
+
# * :Owner<~Hash> - Reference to the owner of the task. This is
|
|
42
|
+
# typically the object that the task is creating or updating.
|
|
43
|
+
# * :href<~String> - Contains the URI to the entity.
|
|
44
|
+
# * :name<~String> - Contains the name of the entity.
|
|
45
|
+
# * :type<~String> - Contains the type of the entity.
|
|
46
|
+
# * :Error<~Hash> - Represents error information from a failed
|
|
47
|
+
# task.
|
|
48
|
+
# * :majorErrorCode<~String> - The class of the error. Matches
|
|
49
|
+
# the HTTP status code.
|
|
50
|
+
# * :message<~String> - An one line, human-readable message
|
|
51
|
+
# describing the error that occurred.
|
|
52
|
+
# * :minorErrorCode<~String> - Resource-specific error code.
|
|
53
|
+
# * :stackTrace<~String> - The stack trace of the exception.
|
|
54
|
+
# * :vendorSpecificErrorCode<~String> - A vendor- or
|
|
55
|
+
# implementation-specific error code that can reference
|
|
56
|
+
# specific modules or source lines for diagnostic purposes.
|
|
57
|
+
# * :User<~Hash> - The user who started the task.
|
|
58
|
+
# * :href<~String> - Contains the URI to the entity.
|
|
59
|
+
# * :name<~String> - Contains the name of the entity.
|
|
60
|
+
# * :type<~String> - Contains the type of the entity.
|
|
61
|
+
# * :Organization<~Hash> - The organization to which the :User
|
|
62
|
+
# belongs.
|
|
63
|
+
# * :href<~String> - Contains the URI to the entity.
|
|
64
|
+
# * :name<~String> - Contains the name of the entity.
|
|
65
|
+
# * :type<~String> - Contains the type of the entity.
|
|
66
|
+
# * :Progress<~String> - Read-only indicator of task progress as an
|
|
67
|
+
# approximate percentage between 0 and 100. Not available for all
|
|
68
|
+
# tasks.
|
|
69
|
+
# * :Params
|
|
70
|
+
# * :Details<~String> - Detailed message about the task. Also
|
|
71
|
+
# contained by the :Owner entity when task status is preRunning.
|
|
72
|
+
#
|
|
73
|
+
# @raise [Fog::Compute::VcloudDirector::Forbidden]
|
|
74
|
+
#
|
|
75
|
+
# @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/GET-Task.html
|
|
76
|
+
# @since vCloud API version 0.9
|
|
77
|
+
def get_task(id)
|
|
78
|
+
response = request(
|
|
79
|
+
:expects => 200,
|
|
80
|
+
:idempotent => true,
|
|
81
|
+
:method => 'GET',
|
|
82
|
+
:parser => Fog::ToHashDocument.new,
|
|
83
|
+
:path => "task/#{id}"
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
# vCloud Director bug: Owner may be absent for some tasks, fix
|
|
87
|
+
# targeted for 5.1.3 (due out at the beginning Q1 2014).
|
|
88
|
+
#
|
|
89
|
+
# We'd prefer that Owner is always present; if nothing else, this
|
|
90
|
+
# let's the tests pass.
|
|
91
|
+
response.body[:Owner] ||= {:href => '', :name => nil, :type => nil}
|
|
92
|
+
|
|
93
|
+
response
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
class Mock
|
|
98
|
+
def get_task(id)
|
|
99
|
+
unless data[:tasks][id]
|
|
100
|
+
raise Fog::Compute::VcloudDirector::Forbidden.new(
|
|
101
|
+
'This operation is denied.'
|
|
102
|
+
)
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
body = {
|
|
106
|
+
:xmlns => xmlns,
|
|
107
|
+
:xmlns_xsi => xmlns_xsi,
|
|
108
|
+
:xsi_schemaLocation => xsi_schema_location
|
|
109
|
+
}.merge(task_body(id))
|
|
110
|
+
|
|
111
|
+
Excon::Response.new(
|
|
112
|
+
:status => 200,
|
|
113
|
+
:headers => {'Type' => "application/#{body[:type]};version=#{api_version}"},
|
|
114
|
+
:body => body
|
|
115
|
+
)
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
private
|
|
119
|
+
|
|
120
|
+
# @param [String] id Object identifier of the task.
|
|
121
|
+
# @return [Hash]
|
|
122
|
+
def task_body(id)
|
|
123
|
+
task = data[:tasks][id]
|
|
124
|
+
|
|
125
|
+
body = {
|
|
126
|
+
:href => make_href("tasks/#{id}"),
|
|
127
|
+
:type => 'application/vnd.vmware.vcloud.task+xml',
|
|
128
|
+
:id => "urn:vcloud:tasl:#{id}",
|
|
129
|
+
:name => task[:name],
|
|
130
|
+
:cancelRequested => task[:cancel_requested].to_s,
|
|
131
|
+
:expiryTime => task[:expiry_time].strftime('%Y-%m-%dT%H:%M:%S%z'),
|
|
132
|
+
:operation => task[:operation],
|
|
133
|
+
:operationName => task[:operation_name],
|
|
134
|
+
:serviceNamespace => task[:service_namespace],
|
|
135
|
+
:status => task[:status],
|
|
136
|
+
:Link => [],
|
|
137
|
+
:Owner => task[:owner],
|
|
138
|
+
:User => { # for now, always the current user
|
|
139
|
+
:href => make_href("admin/user/#{user_uuid}"),
|
|
140
|
+
:name => user_name,
|
|
141
|
+
:type => 'application/vnd.vmware.admin.user+xml',
|
|
142
|
+
},
|
|
143
|
+
:Organization => { # for now, always the current org
|
|
144
|
+
:href => make_href("org/#{data[:org][:uuid]}"),
|
|
145
|
+
:name => data[:org][:name],
|
|
146
|
+
:type => 'application/vnd.vmware.vcloud.org+xml',
|
|
147
|
+
},
|
|
148
|
+
:Progress => task[:progress].to_s,
|
|
149
|
+
:Details => task[:details] || '',
|
|
150
|
+
}
|
|
151
|
+
body[:endTime] = task[:end_time].strftime('%Y-%m-%dT%H:%M:%S%z') if task[:end_time]
|
|
152
|
+
body[:startTime] = task[:start_time].strftime('%Y-%m-%dT%H:%M:%S%z') if task[:start_time]
|
|
153
|
+
body[:Description] = task[:description] if task[:description]
|
|
154
|
+
|
|
155
|
+
if task[:status] == 'running'
|
|
156
|
+
body[:Link] << {
|
|
157
|
+
:href => make_href("task/#{id}/action/cancel"),
|
|
158
|
+
:type => 'application/vnd.vmware.vcloud.task+xml',
|
|
159
|
+
:rel => 'cancel',
|
|
160
|
+
}
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
body
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
end
|
|
168
|
+
end
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class VcloudDirector
|
|
4
|
+
class Real
|
|
5
|
+
extend Fog::Deprecation
|
|
6
|
+
deprecate :get_tasks_list, :get_task_list
|
|
7
|
+
|
|
8
|
+
# Retrieve a list of this organization's queued, running, or recently
|
|
9
|
+
# completed tasks.
|
|
10
|
+
#
|
|
11
|
+
# @param [String] id Object identifier of the organization.
|
|
12
|
+
# @return [Excon::Response]
|
|
13
|
+
# * body<~Hash>:
|
|
14
|
+
# * :href<~String> - The URI of the entity.
|
|
15
|
+
# * :type<~String> - The MIME type of the entity.
|
|
16
|
+
# * :id<~String> - The entity identifier, expressed in URN format.
|
|
17
|
+
# The value of this attribute uniquely identifies the entity,
|
|
18
|
+
# persists for the life of the entity, and is never reused.
|
|
19
|
+
# * :name<~String> - The name of the entity.
|
|
20
|
+
# * :Task<~Array<Hash>>:
|
|
21
|
+
# * :href<~String> - The URI of the entity.
|
|
22
|
+
# * :type<~String> - The MIME type of the entity.
|
|
23
|
+
# * :id<~String> - The entity identifier, expressed in URN
|
|
24
|
+
# format. The value of this attribute uniquely identifies the
|
|
25
|
+
# entity, persists for the life of the entity, and is never
|
|
26
|
+
# reused.
|
|
27
|
+
# * :operationKey<~String> - Optional unique identifier to
|
|
28
|
+
# support idempotent semantics for create and delete
|
|
29
|
+
# operations.
|
|
30
|
+
# * :name<~String> - The name of the entity.
|
|
31
|
+
# * :cancelRequested<~String> - Whether user has requested this
|
|
32
|
+
# processing to be canceled.
|
|
33
|
+
# * :endTime<~String> - The date and time that processing of the
|
|
34
|
+
# task was completed. May not be present if the task is still
|
|
35
|
+
# being executed.
|
|
36
|
+
# * :expiryTime<~String> - The date and time at which the task
|
|
37
|
+
# resource will be destroyed and no longer available for
|
|
38
|
+
# retrieval. May not be present if the task has not been
|
|
39
|
+
# executed or is still being executed.
|
|
40
|
+
# * :operation<~String> - A message describing the operation that
|
|
41
|
+
# is tracked by this task.
|
|
42
|
+
# * :operationName<~String> - The short name of the operation
|
|
43
|
+
# that is tracked by this task.
|
|
44
|
+
# * :serviceNamespace<~String> - Identifier of the service that
|
|
45
|
+
# created the task.
|
|
46
|
+
# * :startTime<~String> - The date and time the system started
|
|
47
|
+
# executing the task. May not be present if the task has not
|
|
48
|
+
# been executed yet.
|
|
49
|
+
# * :status<~String> - The execution status of the task.
|
|
50
|
+
# * :Link<~Array<Hash>>:
|
|
51
|
+
# * :Description<~String> - Optional description.
|
|
52
|
+
# * :Owner<~Hash> - Reference to the owner of the task. This is
|
|
53
|
+
# typically the object that the task is creating or updating.
|
|
54
|
+
# * :href<~String> - Contains the URI to the entity.
|
|
55
|
+
# * :name<~String> - Contains the name of the entity.
|
|
56
|
+
# * :type<~String> - Contains the type of the entity.
|
|
57
|
+
# * :Error<~Hash> - Represents error information from a failed
|
|
58
|
+
# task.
|
|
59
|
+
# * :majorErrorCode<~String> - The class of the error. Matches
|
|
60
|
+
# the HTTP status code.
|
|
61
|
+
# * :message<~String> - An one line, human-readable message
|
|
62
|
+
# describing the error that occurred.
|
|
63
|
+
# * :minorErrorCode<~String> - Resource-specific error code.
|
|
64
|
+
# * :stackTrace<~String> - The stack trace of the exception.
|
|
65
|
+
# * :vendorSpecificErrorCode<~String> - A vendor- or
|
|
66
|
+
# implementation-specific error code that can reference
|
|
67
|
+
# specific modules or source lines for diagnostic purposes.
|
|
68
|
+
# * :User<~Hash> - The user who started the task.
|
|
69
|
+
# * :href<~String> - Contains the URI to the entity.
|
|
70
|
+
# * :name<~String> - Contains the name of the entity.
|
|
71
|
+
# * :type<~String> - Contains the type of the entity.
|
|
72
|
+
# * :Organization<~Hash> - The organization to which the :User
|
|
73
|
+
# belongs.
|
|
74
|
+
# * :href<~String> - Contains the URI to the entity.
|
|
75
|
+
# * :name<~String> - Contains the name of the entity.
|
|
76
|
+
# * :type<~String> - Contains the type of the entity.
|
|
77
|
+
# * :Progress<~String> - Read-only indicator of task progress as
|
|
78
|
+
# an approximate percentage between 0 and 100. Not available
|
|
79
|
+
# for all tasks.
|
|
80
|
+
# * :Params
|
|
81
|
+
# * :Details<~String> - Detailed message about the task. Also
|
|
82
|
+
# contained by the :Owner entity when task status is
|
|
83
|
+
# preRunning.
|
|
84
|
+
#
|
|
85
|
+
# @raise [Fog::Compute::VcloudDirector::BadRequest]
|
|
86
|
+
# @raise [Fog::Compute::VcloudDirector::Forbidden]
|
|
87
|
+
#
|
|
88
|
+
# @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/GET-TaskList.html
|
|
89
|
+
# @since vCloud API version 0.9
|
|
90
|
+
def get_task_list(id)
|
|
91
|
+
response = request(
|
|
92
|
+
:expects => 200,
|
|
93
|
+
:idempotent => true,
|
|
94
|
+
:method => 'GET',
|
|
95
|
+
:parser => Fog::ToHashDocument.new,
|
|
96
|
+
:path => "tasksList/#{id}"
|
|
97
|
+
)
|
|
98
|
+
ensure_list! response.body, :Task
|
|
99
|
+
response
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
class Mock
|
|
104
|
+
def get_task_list(id)
|
|
105
|
+
unless id == data[:org][:uuid]
|
|
106
|
+
raise Fog::Compute::VcloudDirector::Forbidden.new(
|
|
107
|
+
"No access to entity \"com.vmware.vcloud.entity.org:#{id}\"."
|
|
108
|
+
)
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
body = {
|
|
112
|
+
:xmlns => xmlns,
|
|
113
|
+
:xmlns_xsi => xmlns_xsi,
|
|
114
|
+
:xsi_schemaLocation => xsi_schema_location,
|
|
115
|
+
:href => make_href("tasksList/#{id}"),
|
|
116
|
+
:type => "application/vnd.vmware.vcloud.tasksList+xml",
|
|
117
|
+
:name => "Tasks Lists",
|
|
118
|
+
:Task => data[:tasks].keys.map {|task_id| task_body(task_id)}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
Excon::Response.new(
|
|
122
|
+
:status => 200,
|
|
123
|
+
:headers => {'Content-Type' => "#{body[:type]};version=#{api_version}"},
|
|
124
|
+
:body => body
|
|
125
|
+
)
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
end
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class VcloudDirector
|
|
4
|
+
class Real
|
|
5
|
+
require 'fog/vcloud_director/parsers/compute/vm'
|
|
6
|
+
|
|
7
|
+
# Retrieve a vApp or VM.
|
|
8
|
+
#
|
|
9
|
+
# @note This should probably be deprecated.
|
|
10
|
+
#
|
|
11
|
+
# @param [String] id Object identifier of the vApp or VM.
|
|
12
|
+
# @return [Excon::Response]
|
|
13
|
+
# * body<~Hash>:
|
|
14
|
+
#
|
|
15
|
+
# @see #get_vapp
|
|
16
|
+
def get_vm(id)
|
|
17
|
+
request(
|
|
18
|
+
:expects => 200,
|
|
19
|
+
:idempotent => true,
|
|
20
|
+
:method => 'GET',
|
|
21
|
+
:parser => Fog::Parsers::Compute::VcloudDirector::Vm.new,
|
|
22
|
+
:path => "vAppTemplate/#{id}"
|
|
23
|
+
)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
class Mock
|
|
27
|
+
def get_vm(id)
|
|
28
|
+
vapp = get_vapp(id).body
|
|
29
|
+
vm = parse_vapp_to_vm(vapp)
|
|
30
|
+
body = {:type => vapp[:type], :vm => vm}
|
|
31
|
+
Excon::Response.new(
|
|
32
|
+
:status => 200,
|
|
33
|
+
:headers => {'Content-Type' => "#{body[:type]};version=#{api_version}"},
|
|
34
|
+
:body => body
|
|
35
|
+
)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Mock equivalent of Fog::Parsers::Compute::VcloudDirector::Vm
|
|
39
|
+
def parse_vapp_to_vm(vapp)
|
|
40
|
+
parser = Fog::Parsers::Compute::VcloudDirector::Vm.new
|
|
41
|
+
vm = vapp.select {|k| [:href, :name, :status, :type].include? k}
|
|
42
|
+
network = vapp[:NetworkConnectionSection]
|
|
43
|
+
vm.merge({
|
|
44
|
+
:id => vapp[:href].split('/').last,
|
|
45
|
+
:status => parser.human_status(vapp[:status]),
|
|
46
|
+
:ip_address => network[:NetworkConnection][:IpAddress],
|
|
47
|
+
:description => vapp[:Description],
|
|
48
|
+
:cpu => get_hardware(vapp, 3),
|
|
49
|
+
:memory => get_hardware(vapp, 4),
|
|
50
|
+
:disks => get_disks(vapp),
|
|
51
|
+
:links => [vapp[:GuestCustomizationSection][:Link]],
|
|
52
|
+
})
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def get_hardware(vapp, resource_type)
|
|
56
|
+
hardware = vapp[:"ovf:VirtualHardwareSection"][:"ovf:Item"]
|
|
57
|
+
item = hardware.find {|h| h[:"rasd:ResourceType"].to_i == resource_type}
|
|
58
|
+
if item and item.key? :"rasd:VirtualQuantity"
|
|
59
|
+
item[:"rasd:VirtualQuantity"].to_i
|
|
60
|
+
else
|
|
61
|
+
nil
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def get_disks(vapp)
|
|
66
|
+
hardware = vapp[:"ovf:VirtualHardwareSection"][:"ovf:Item"]
|
|
67
|
+
disks = hardware.select {|h| h[:"rasd:ResourceType"].to_i == 17}
|
|
68
|
+
disks.map {|d| {d[:"rasd:ElementName"] => d[:"rasd:HostResource"][:ns12_capacity].to_i}}
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class VcloudDirector
|
|
4
|
+
class Real
|
|
5
|
+
require 'fog/vcloud_director/parsers/compute/vms'
|
|
6
|
+
|
|
7
|
+
# Retrieve a vApp or VM.
|
|
8
|
+
#
|
|
9
|
+
# @note This should probably be deprecated.
|
|
10
|
+
#
|
|
11
|
+
# @param [String] id Object identifier of the vApp or VM.
|
|
12
|
+
# @return [Excon::Response]
|
|
13
|
+
# * body<~Hash>:
|
|
14
|
+
#
|
|
15
|
+
# @see #get_vapp
|
|
16
|
+
def get_template_vms(id)
|
|
17
|
+
request(
|
|
18
|
+
:expects => 200,
|
|
19
|
+
:idempotent => true,
|
|
20
|
+
:method => 'GET',
|
|
21
|
+
:parser => Fog::Parsers::Compute::VcloudDirector::Vms.new,
|
|
22
|
+
:path => "vAppTemplate/#{id}"
|
|
23
|
+
)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
class Mock
|
|
27
|
+
def get_vms(id)
|
|
28
|
+
vapptemplate = get_vapp(id).body
|
|
29
|
+
parser = Fog::Parsers::Compute::VcloudDirector::Vms.new
|
|
30
|
+
vms = vapp[:Children][:Vm].map {|child| parse_vapp_to_vm(child) }
|
|
31
|
+
body = {:type => vapp[:type], :vms => vms}
|
|
32
|
+
Excon::Response.new(
|
|
33
|
+
:status => 200,
|
|
34
|
+
:headers => {'Content-Type' => "#{body[:type]};version=#{api_version}"},
|
|
35
|
+
:body => body
|
|
36
|
+
)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class VcloudDirector
|
|
4
|
+
class Real
|
|
5
|
+
# Retrieves a thumbnail image of a VM console.
|
|
6
|
+
#
|
|
7
|
+
# The content type of the response can be any of `image/png`,
|
|
8
|
+
# `image/gif`.
|
|
9
|
+
#
|
|
10
|
+
# @param [String] id Object identifier of the VM.
|
|
11
|
+
# @return [Excon::Response]
|
|
12
|
+
# * body<~String> - the thumbnail image.
|
|
13
|
+
#
|
|
14
|
+
# @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/GET-Thumbnail.html
|
|
15
|
+
# @since vCloud API version 0.9
|
|
16
|
+
def get_thumbnail(id)
|
|
17
|
+
request(
|
|
18
|
+
:expects => 200,
|
|
19
|
+
:headers => {'Accept' => "image/*;version=#{@api_version}"},
|
|
20
|
+
:idempotent => true,
|
|
21
|
+
:method => 'GET',
|
|
22
|
+
:path => "vApp/#{id}/screen"
|
|
23
|
+
)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class VcloudDirector
|
|
4
|
+
class Real
|
|
5
|
+
# Retrieves a list of users for organization the org admin belongs to
|
|
6
|
+
# by using REST API general QueryHandler.
|
|
7
|
+
#
|
|
8
|
+
# @param [Hash] options
|
|
9
|
+
# @option options [String] :sortAsc (Sorted by database ID) Sort
|
|
10
|
+
# results by attribute-name in ascending order. attribute-name cannot
|
|
11
|
+
# include metadata.
|
|
12
|
+
# @option options [String] :sortDesc (Sorted by database ID) Sort
|
|
13
|
+
# results by attribute-name in descending order. attribute-name
|
|
14
|
+
# cannot include metadata.
|
|
15
|
+
# @option options [Integer] :page (1) If the query results span
|
|
16
|
+
# multiple pages, return this page.
|
|
17
|
+
# @option options [Integer] :pageSize (25) Number of results per page,
|
|
18
|
+
# to a maximum of 128.
|
|
19
|
+
# @option options [String] :format (records) One of the following
|
|
20
|
+
# types:
|
|
21
|
+
# - *references* Returns a reference to each object, including its
|
|
22
|
+
# :name, :type, and :href attributes.
|
|
23
|
+
# - *records* Returns all database records for each object, with each
|
|
24
|
+
# record as an attribute.
|
|
25
|
+
# - *idrecords* Identical to the records format, except that object
|
|
26
|
+
# references are returned in :id format rather than :href format.
|
|
27
|
+
# @option options [Array<String>] :fields (all static attribute names)
|
|
28
|
+
# List of attribute names or metadata key names to return.
|
|
29
|
+
# @option options [Integer] :offset (0) Integer value specifying the
|
|
30
|
+
# first record to return. Record numbers < offset are not returned.
|
|
31
|
+
# @option options [String] :filter (none) Filter expression.
|
|
32
|
+
# @return [Excon::Response]
|
|
33
|
+
# * hash<~Hash>:
|
|
34
|
+
# * :href<~String> - The URI of the entity.
|
|
35
|
+
# * :type<~String> - The MIME type of the entity.
|
|
36
|
+
# * :name<~String> - Query name that generated this result set.
|
|
37
|
+
# * :page<~String> - Page of the result set that this container
|
|
38
|
+
# holds. The first page is page number 1.
|
|
39
|
+
# * :pageSize<~String> - Page size, as a number of records or
|
|
40
|
+
# references.
|
|
41
|
+
# * :total<~String> - Total number of records or references in the
|
|
42
|
+
# container.
|
|
43
|
+
# * :Link<~Array<Hash>>:
|
|
44
|
+
# * :href<~String> - Contains the URI to the entity.
|
|
45
|
+
# * :type<~String> - Contains the type of the entity.
|
|
46
|
+
# * :rel<~String> - Defines the relationship of the link to the
|
|
47
|
+
# object that contains it.
|
|
48
|
+
# * :UserRecord<~Array<Hash>>:
|
|
49
|
+
# * TODO
|
|
50
|
+
# * :firstPage<~Integer> - First page in the result set.
|
|
51
|
+
# * :previousPage<~Integer> - Previous page in the result set.
|
|
52
|
+
# * :nextPage<~Integer> - Next page in the result set.
|
|
53
|
+
# * :lastPage<~Integer> - Last page in the result set.
|
|
54
|
+
#
|
|
55
|
+
# @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/GET-UsersFromQuery-query.html
|
|
56
|
+
# @since vCloud API version 1.5
|
|
57
|
+
def get_users_from_query(options={})
|
|
58
|
+
query = []
|
|
59
|
+
query << "sortAsc=#{options[:sortAsc]}" if options[:sortAsc]
|
|
60
|
+
query << "sortDesc=#{options[:sortDesc]}" if options[:sortDesc]
|
|
61
|
+
query << "page=#{options[:page]}" if options[:page]
|
|
62
|
+
query << "pageSize=#{options[:pageSize]}" if options[:pageSize]
|
|
63
|
+
query << "format=#{options[:format]}" if options[:format]
|
|
64
|
+
query << "fields=#{Array(options[:fields]).join(',')}" if options[:fields]
|
|
65
|
+
query << "offset=#{options[:offset]}" if options[:offset]
|
|
66
|
+
query << "filter=#{options[:filter]}" if options[:filter]
|
|
67
|
+
|
|
68
|
+
response = request(
|
|
69
|
+
:expects => 200,
|
|
70
|
+
:idempotent => true,
|
|
71
|
+
:method => 'GET',
|
|
72
|
+
:parser => Fog::ToHashDocument.new,
|
|
73
|
+
:path => 'admin/users/query',
|
|
74
|
+
:query => query.map {|q| URI.escape(q)}.join('&')
|
|
75
|
+
)
|
|
76
|
+
ensure_list! response.body, :Link
|
|
77
|
+
ensure_list! response.body,
|
|
78
|
+
response.body[:type] == 'application/vnd.vmware.vcloud.query.references+xml' ?
|
|
79
|
+
:UserReference : :UserRecord
|
|
80
|
+
|
|
81
|
+
%w[firstPage previousPage nextPage lastPage].each do |rel|
|
|
82
|
+
if link = response.body[:Link].find {|l| l[:rel] == rel}
|
|
83
|
+
href = Nokogiri::XML.fragment(link[:href])
|
|
84
|
+
query = CGI.parse(URI.parse(href.text).query)
|
|
85
|
+
response.body[rel.to_sym] = query['page'].first.to_i
|
|
86
|
+
response.body[:pageSize] ||= query['pageSize'].first.to_i
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
response
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|