OpenSecurity/bin/vmmanager.pyw
changeset 131 8b4df474e577
parent 129 abf3500eaf87
child 133 6649faffb63c
     1.1 --- a/OpenSecurity/bin/vmmanager.pyw	Wed Apr 23 14:55:02 2014 +0200
     1.2 +++ b/OpenSecurity/bin/vmmanager.pyw	Fri Apr 25 12:44:12 2014 +0200
     1.3 @@ -54,26 +54,67 @@
     1.4      #    return self.coords[item]
     1.5   
     1.6  class VMManager(object):
     1.7 +
     1.8      vmRootName = "SecurityDVM"
     1.9      systemProperties = None
    1.10      _instance = None
    1.11      machineFolder = ''
    1.12      rsdHandler = None
    1.13 +    status_message = 'Starting up...'
    1.14 +
    1.15 + 
    1.16 +    def __init__(self):
    1.17 +
    1.18 +        self.systemProperties = self.getSystemProperties()
    1.19 +
    1.20 +        # only proceed if we have a working background environment
    1.21 +        if self.backend_ok():
    1.22 +            self.machineFolder = self.systemProperties["Default machine folder"]
    1.23 +            self.cleanup()
    1.24 +            self.rsdHandler = DeviceHandler(self)
    1.25 +            self.rsdHandler.start()
    1.26 +        else:
    1.27 +            logger.critical(self.status_message)
    1.28      
    1.29 -    def __init__(self):
    1.30 -        self.systemProperties = self.getSystemProperties()
    1.31 -        self.machineFolder = self.systemProperties["Default machine folder"]
    1.32 -        self.cleanup()
    1.33 -        self.rsdHandler = DeviceHandler(self)
    1.34 -        self.rsdHandler.start()
    1.35 -        return
    1.36 -    
    1.37 +
    1.38      @staticmethod
    1.39      def getInstance():
    1.40          if VMManager._instance == None:
    1.41              VMManager._instance = VMManager()
    1.42          return VMManager._instance
    1.43      
    1.44 +
    1.45 +    def backend_ok(self):
    1.46 +
    1.47 +        """check if the backend (VirtualBox) is sufficient for our task"""
    1.48 +
    1.49 +        # ensure we have our system props
    1.50 +        if self.systemProperties == None:
    1.51 +            self.systemProperties = self.getSystemProperties()
    1.52 +        if self.systemProperties == None:
    1.53 +            self.status_message = 'Failed to get backend system properties. Is Backend (VirtualBox?) installed?'
    1.54 +            return False
    1.55 +
    1.56 +        # check for existing Extension pack
    1.57 +        if not 'Remote desktop ExtPack' in self.systemProperties:
    1.58 +            self.status_message = 'No remote desktop extension pack found. Please install the "Oracle VM VirtualBox Extension Pack" from https://www.virtualbox.org/wiki/Downloads.'
    1.59 +            return False
    1.60 +        if self.systemProperties['Remote desktop ExtPack'] == 'Oracle VM VirtualBox Extension Pack ':
    1.61 +            self.status_message = 'Unsure if suitable extension pack is installed. Please install the "Oracle VM VirtualBox Extension Pack" from https://www.virtualbox.org/wiki/Downloads.'
    1.62 +            return False
    1.63 +
    1.64 +        # check if we do have our root VMs installed
    1.65 +        vms = self.listVM()
    1.66 +        if not self.vmRootName in vms:
    1.67 +            self.status_message = 'Unable to locate root SecurityDVM. Please download and setup the initial image.'
    1.68 +            return False
    1.69 +
    1.70 +        # basically all seems nice and ready to rumble
    1.71 +        self.status_message = 'All is ok.'
    1.72 +
    1.73 +        return True
    1.74 +
    1.75 +
    1.76      def cleanup(self):
    1.77          if self.rsdHandler != None:
    1.78              self.rsdHandler.stop()