On 06/11/2012 09:30 AM, Pradeep Kumar Surisetty wrote:
> * Chris Evich<[email protected]> [2012-06-08 10:45:29]:
>
>> On 06/08/2012 02:06 AM, Onkar N Mahajan wrote:
>>> On Thu, 2012-06-07 at 10:52 -0400, Chris Evich wrote:
>>>> On 06/07/2012 04:46 AM, Onkar N Mahajan wrote:
>>> See, I have tried making nxt_free_vnc_port() available for general usage
>>> (vnc/spice/etc) as you mentioned , but this requires virsh to have
>>> vncdisplay counterparts to spice/etc - which AFAIK are currently not
>>> available.
>>
>> Annoyingly, it must be extracted from the xml :( However, you're right
>> in that virsh only has a vncdisplay command. Along those lines, how
>> about adding a lower-level and more generic virsh_vncdisplay() function
>> that returns the port and ip address?
>>
>> I'd like the the vm class methods to support a wider usage, even if all
>> the capabilities aren't there immediately. When possible, methods
>> should not be tied closely to underlying implementation details.
>>
>> For example with graphics, I'd prefer a vm.graphics_info() (or similar
>> name) method provides details independent of the underlying graphics
>> device type. But it's perfectly acceptable if support for other types
>> gets added at a later date, and it just throws exceptions for the stubs.
>>
>> With this deign, we can easily extend the tests (later) by adding
>> support for additional graphics. It also allows for extending the
>> underlying support w/o disturbing the callers. Make sense?
Code example of the above:
virsh_vncdisplay(name, uri=""):
...
if cmdresult.exit_status:
... # other checks
raise virt_vm.UnsupportedDisplayError("VM %s doesn't use vnc"
"graphics" % name)
class VM(virt_vm.BaseVM):
...
def graphics_info(self):
d={}
# only VNC graphics supported for now
try:
vncinfo=virsh_vncdisplay(...)
d["ip"] = vncinfo[0]
d["port"] = vncinfo[1]
except virt_vm.UnsupportedDisplayError:
raise virt_vm.NotImplementedError("Only VMs with VNC
displays are supported")
return d
In this way, we can easily add spice or whatever support to
vm.graphics_info (or whatever name) later w/o affecting callers. If a
test needs to specifically only deal with VM's using VNC, they can just
call virst_vncdisplay directly. It also supports error testing in a
generic way by calling vm.graphics_info() and checking making sure it
does NOT raise UnsupportedDisplayError or NotImplementedError (presuming
bad guest XML raises a different exception).
--
Chris Evich, RHCA, RHCE, RHCDS, RHCSS
Quality Assurance Engineer
e-mail: cevich + `@' + redhat.com o: 1-888-RED-HAT1 x44214
_______________________________________________
Autotest mailing list
[email protected]
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest