def new_machine(self, machine_key, image=None): import testvm machine_class = self.machine_class if opts.address: if machine_class: raise unittest.SkipTest( "Cannot run this test when specific machine address is specified" ) if len(self.machines) != 0: raise unittest.SkipTest( "Cannot run multiple machines if a specific machine address is specified" ) machine = testvm.Machine(address=opts.address, image=image, verbose=opts.trace, label=self.label()) self.addCleanup(lambda: machine.disconnect()) else: if not machine_class: machine_class = testvm.VirtMachine machine = machine_class(verbose=opts.trace, image=image, label=self.label(), fetch=opts.network) self.addCleanup(lambda: machine.kill()) self.machines[machine_key] = machine return machine
def new_machine(self, image=None, forward={}, **kwargs): import testvm machine_class = self.machine_class if image is None: image = self.image if opts.address: if machine_class or forward: raise unittest.SkipTest( "Cannot run this test when specific machine address is specified" ) machine = testvm.Machine(address=opts.address, image=image, verbose=opts.trace, browser=opts.browser) self.addCleanup(lambda: machine.disconnect()) else: if not machine_class: machine_class = testvm.VirtMachine if not self.network: network = testvm.VirtNetwork() self.addCleanup(lambda: network.kill()) self.network = network networking = self.network.host(restrict=True, forward=forward) machine = machine_class(verbose=opts.trace, networking=networking, image=image, **kwargs) if opts.fetch and not os.path.exists(machine.image_file): machine.pull(machine.image_file) self.addCleanup(lambda: machine.kill()) return machine