VMware Compute Driver OVF Support
blueprint vmware-compute-driver Launch OVF disk image DocImpact Add support for VMware disk and adapter type vmware_disktype: eagerZeroedThick, preallocated and sparse Default value is 'preallocated'. 'sparse' disk refers to OVF supported VMDK format (sparse or streamOptimized). A sparse disk is copied to thin disk upon deployment. vmware_adaptertype: ide, busLogic and lsiLogic Default value is 'lsiLogic'. Usage: glance add name="Ubuntu" disk_format=vmdk container_format=ovf is_public=true vmware_adaptertype="lsiLogic" vmware_ostype="ubuntuGuest" vmware_disktype="sparse" < ubuntu-disk1.vmdk Add support for VNC console Nova conf: vnc_enabled=[true|false] defaults to true vnc_port=[port #] defaults to 5900 vnc_port_total=[total port #] defaults to 10000, the actual VM VNC port is vnc_port + VM ID % vnc_port_total vnc_password=[optional] Change-Id: I912b46b9f72f9089b448e03a04327fb79b9f0f3f
This commit is contained in:
		| @@ -317,7 +317,15 @@ class InstanceSuspendFailure(Invalid): | ||||
|  | ||||
|  | ||||
| class InstanceResumeFailure(Invalid): | ||||
|     message = _("Failed to resume server") + ": %(reason)s." | ||||
|     message = _("Failed to resume instance: %(reason)s.") | ||||
|  | ||||
|  | ||||
| class InstancePowerOnFailure(Invalid): | ||||
|     message = _("Failed to power on instance: %(reason)s.") | ||||
|  | ||||
|  | ||||
| class InstancePowerOffFailure(Invalid): | ||||
|     message = _("Failed to power off instance: %(reason)s.") | ||||
|  | ||||
|  | ||||
| class InstanceRebootFailure(Invalid): | ||||
|   | ||||
| @@ -1,5 +1,6 @@ | ||||
| # vim: tabstop=4 shiftwidth=4 softtabstop=4 | ||||
|  | ||||
| # Copyright (c) 2012 VMware, Inc. | ||||
| # Copyright (c) 2011 Citrix Systems, Inc. | ||||
| # Copyright 2011 OpenStack LLC. | ||||
| # | ||||
| @@ -41,7 +42,9 @@ class VMwareAPIVMTestCase(test.TestCase): | ||||
|         self.context = context.RequestContext('fake', 'fake', is_admin=False) | ||||
|         self.flags(vmwareapi_host_ip='test_url', | ||||
|                    vmwareapi_host_username='test_username', | ||||
|                    vmwareapi_host_password='test_pass') | ||||
|                    vmwareapi_host_password='test_pass', | ||||
|                    vnc_enabled=False, | ||||
|                    use_linked_clone=False) | ||||
|         self.user_id = 'fake' | ||||
|         self.project_id = 'fake' | ||||
|         self.context = context.RequestContext(self.user_id, self.project_id) | ||||
| @@ -211,7 +214,7 @@ class VMwareAPIVMTestCase(test.TestCase): | ||||
|         self._check_vm_info(info, power_state.RUNNING) | ||||
|         self.conn.suspend(self.instance) | ||||
|         info = self.conn.get_info({'name': 1}) | ||||
|         self._check_vm_info(info, power_state.PAUSED) | ||||
|         self._check_vm_info(info, power_state.SUSPENDED) | ||||
|         self.assertRaises(exception.InstanceRebootFailure, self.conn.reboot, | ||||
|                           self.instance, self.network_info, 'SOFT') | ||||
|  | ||||
| @@ -221,7 +224,7 @@ class VMwareAPIVMTestCase(test.TestCase): | ||||
|         self._check_vm_info(info, power_state.RUNNING) | ||||
|         self.conn.suspend(self.instance) | ||||
|         info = self.conn.get_info({'name': 1}) | ||||
|         self._check_vm_info(info, power_state.PAUSED) | ||||
|         self._check_vm_info(info, power_state.SUSPENDED) | ||||
|  | ||||
|     def test_suspend_non_existent(self): | ||||
|         self._create_instance_in_the_db() | ||||
| @@ -234,7 +237,7 @@ class VMwareAPIVMTestCase(test.TestCase): | ||||
|         self._check_vm_info(info, power_state.RUNNING) | ||||
|         self.conn.suspend(self.instance) | ||||
|         info = self.conn.get_info({'name': 1}) | ||||
|         self._check_vm_info(info, power_state.PAUSED) | ||||
|         self._check_vm_info(info, power_state.SUSPENDED) | ||||
|         self.conn.resume(self.instance, self.network_info) | ||||
|         info = self.conn.get_info({'name': 1}) | ||||
|         self._check_vm_info(info, power_state.RUNNING) | ||||
| @@ -251,6 +254,43 @@ class VMwareAPIVMTestCase(test.TestCase): | ||||
|         self.assertRaises(exception.InstanceResumeFailure, self.conn.resume, | ||||
|                           self.instance, self.network_info) | ||||
|  | ||||
|     def test_power_on(self): | ||||
|         self._create_vm() | ||||
|         info = self.conn.get_info({'name': 1}) | ||||
|         self._check_vm_info(info, power_state.RUNNING) | ||||
|         self.conn.power_off(self.instance) | ||||
|         info = self.conn.get_info({'name': 1}) | ||||
|         self._check_vm_info(info, power_state.SHUTDOWN) | ||||
|         self.conn.power_on(self.instance) | ||||
|         info = self.conn.get_info({'name': 1}) | ||||
|         self._check_vm_info(info, power_state.RUNNING) | ||||
|  | ||||
|     def test_power_on_non_existent(self): | ||||
|         self._create_instance_in_the_db() | ||||
|         self.assertRaises(exception.InstanceNotFound, self.conn.power_on, | ||||
|                           self.instance) | ||||
|  | ||||
|     def test_power_off(self): | ||||
|         self._create_vm() | ||||
|         info = self.conn.get_info({'name': 1}) | ||||
|         self._check_vm_info(info, power_state.RUNNING) | ||||
|         self.conn.power_off(self.instance) | ||||
|         info = self.conn.get_info({'name': 1}) | ||||
|         self._check_vm_info(info, power_state.SHUTDOWN) | ||||
|  | ||||
|     def test_power_off_non_existent(self): | ||||
|         self._create_instance_in_the_db() | ||||
|         self.assertRaises(exception.InstanceNotFound, self.conn.power_off, | ||||
|                           self.instance) | ||||
|  | ||||
|     def test_power_off_suspended(self): | ||||
|         self._create_vm() | ||||
|         self.conn.suspend(self.instance) | ||||
|         info = self.conn.get_info({'name': 1}) | ||||
|         self._check_vm_info(info, power_state.SUSPENDED) | ||||
|         self.assertRaises(exception.InstancePowerOffFailure, | ||||
|                           self.conn.power_off, self.instance) | ||||
|  | ||||
|     def test_get_info(self): | ||||
|         self._create_vm() | ||||
|         info = self.conn.get_info({'name': 1}) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Sean Chen
					Sean Chen