def start(self, mac): # login login = self.client.IWebsessionManager_logon(username=self.username, password=self.password) # let's see what do we have vms = self.client.IVirtualBox_getMachines(_this=login) mac_vm = dict() for vm in vms: netadp = self.client.IMachine_getNetworkAdapter(_this=vm, slot=SOAPpy.unsignedIntType(0)) macAdrr = self.client.INetworkAdapter_getMACAddress(_this=netadp) mac_vm[macAdrr] = self.client.IMachine_getId(_this=vm) vm = self.client.IVirtualBox_findMachine(_this=login, nameOrId=mac_vm[mac]) if (vm != None) : vmstate = self.client.IMachine_getState(_this=vm) if (vmstate == "PoweredOff" or vmstate == "Aborted"): try: logger.info('Starting "%r"', self.client.IMachine_getName(_this=vm)) # to work with vm we need session sess = self.client.IWebsessionManager_getSessionObject(refIVirtualBox=login) #self.client.IMachine_lockMachine(_this=vm, session=sess, lockType='Shared') progress = self.client.IMachine_launchVMProcess(_this=vm, session=sess, name='headless') p = self.client.IProgress_waitForCompletion(_this=progress) #self.client.ISession_unlockMachine(_this=sess) self.client.IWebsessionManager_logoff(refIVirtualBox=sess) except Exception, msg: logger.error('Failed to create socket. Error Code : %d (%r)\n', msg.errno, msg.strerror)
def list(self): login = self.client.IWebsessionManager_logon(username=self.username, password=self.password) vms = self.client.IVirtualBox_getMachines(_this=login) mac_vm = dict() for vm in vms: netadp = self.client.IMachine_getNetworkAdapter(_this=vm, slot=SOAPpy.unsignedIntType(0)) macAdrr = self.client.INetworkAdapter_getMACAddress(_this=netadp) mac_vm[macAdrr] = self.client.IMachine_getId(_this=vm) print mac_vm