def __init__(self, host, bundle_dir, vmcfg, assignment): self.host = host self.bundle_dir = bundle_dir self.vmcfg = vmcfg self.assignment = assignment self.asscfg = vmcfg.assignments() self.machine = self.asscfg.get(assignment, 'Machine') self.machinecfg = VmwareMachineConfig(vmcfg, self.machine) self.vmwarecfg = VmwareConfig(vmcfg.testers(), self.machinecfg.get_tester_id()) self.error_fname = os.path.join(bundle_dir, 'vmchecker-stderr.vmr') self.shell = self.machinecfg.guest_shell_path() self.username = self.machinecfg.guest_user() self.password = self.machinecfg.guest_pass()
def __init__(self, host, bundle_dir, sb_cfg): VM.__init__(self, host, bundle_dir, sb_cfg) self.machinecfg = VmwareMachineConfig(sb_cfg, 'Machine') self.vmwarecfg = VmwareConfig(sb_cfg, 'Tester') self.asscfg = AssignmentConfig(config = sb_cfg) self.testercfg = TesterConfig(config = sb_cfg) self.vmx_path = self.machinecfg.get_vmx_path() if self.vmx_path == None: self.vmx_path = self.get_submission_vmx_file() if self.vmx_path == None: # no vmx, nothing to do. _logger.error('Could not find a vmx to run') with open(self.error_fname, 'a') as handler: print >> handler, 'Error powering on the virtual machine.\n' + \ 'Unable to find .vmx file.\n' sys.exit(1) vmx_prefix = self.testercfg.vm_store_path('Tester') if vmx_prefix is not None: self.vmx_path = os.path.join(vmx_prefix, self.vmx_path) try: if self.vmwarecfg.vmware_type() == 3: self.vmhost = pyvix.vix.Host() elif self.vmwarecfg.vmware_type() == 2 or \ self.vmwarecfg.vmware_type() == 10: self.vmhost = pyvix.vix.Host(self.vmwarecfg.vmware_type(), self.vmwarecfg.vmware_url(), int(self.vmwarecfg.vmware_port()), self.vmwarecfg.vmware_username(), self.vmwarecfg.vmware_password()) except pyvix.vix.VIXException: _logger.exception('Exception thrown: ' + type(e).__name__ + "\n" + ", ".join(e.args) + "\n" + e.__str__()) with open(self.error_fname, 'a') as handler: print >> handler, 'Error powering on the virtual machine.\n' + \ 'Connecting to the host Vmware services failed.\n' sys.exit(1) if self.vmwarecfg.vmware_register_and_unregister(): self.vmhost.registerVM(self.vmwarecfg.vmware_rel_vmx_path(self.vmx_path)) vmx_path = self.vmx_path if not os.path.isfile(vmx_path): vmx_path = self.vmwarecfg.vmware_rel_vmx_path(self.vmx_path) if not os.path.isfile(vmx_path): # no vmx, nothing to do. _logger.error('Could not find a vmx to run') with open(self.error_fname, 'a') as handler: print >> handler, 'Error powering on the virtual machine.\n' + \ 'Unable to find .vmx file.\n' sys.exit(1) try: self.vminstance = self.vmhost.openVM(vmx_path) except pyvix.vix.VIXException: _logger.exception('Exception thrown: ' + type(e).__name__ + "\n" + ", ".join(e.args) + "\n" + e.__str__()) with open(self.error_fname, 'a') as handler: print >> handler, 'Error powering on the virtual machine.\n' + \ 'Unable to open the .vmx file..\n' sys.exit(1)