| # |
| # Copyright 2007 Google Inc. Released under the GPL v2 |
| |
| """ |
| This module defines the Guest class in the Host hierarchy. |
| |
| Implementation details: |
| You should import the "hosts" package instead of importing each type of host. |
| |
| Guest: a virtual machine on which you can run programs |
| """ |
| |
| __author__ = """ |
| mbligh@google.com (Martin J. Bligh), |
| poirier@google.com (Benjamin Poirier), |
| stutsman@google.com (Ryan Stutsman) |
| """ |
| |
| |
| from autotest_lib.server.hosts import ssh_host |
| |
| |
| class Guest(ssh_host.SSHHost): |
| """ |
| This class represents a virtual machine on which you can run |
| programs. |
| |
| It is not the machine autoserv is running on. |
| |
| Implementation details: |
| This is an abstract class, leaf subclasses must implement the methods |
| listed here and in parent classes which have no implementation. They |
| may reimplement methods which already have an implementation. You |
| must not instantiate this class but should instantiate one of those |
| leaf subclasses. |
| """ |
| |
| controlling_hypervisor = None |
| |
| |
| def _initialize(self, controlling_hypervisor, *args, **dargs): |
| """ |
| Construct a Guest object |
| |
| Args: |
| controlling_hypervisor: Hypervisor object that is |
| responsible for the creation and management of |
| this guest |
| """ |
| hostname = controlling_hypervisor.new_guest() |
| super(Guest, self)._initialize(hostname, *args, **dargs) |
| self.controlling_hypervisor = controlling_hypervisor |
| |
| |
| def __del__(self): |
| """ |
| Destroy a Guest object |
| """ |
| super(Guest, self).__del__() |
| self.controlling_hypervisor.delete_guest(self.hostname) |
| |
| |
| def hardreset(self, timeout=600, wait=True): |
| """ |
| Perform a "hardreset" of the guest. |
| |
| It is restarted through the hypervisor. That will restart it |
| even if the guest otherwise innaccessible through ssh. |
| """ |
| return self.controlling_hypervisor.reset_guest(self.hostname) |