server/vmmanager/vmmanager.py
changeset 12 11dc05750aea
parent 11 27aa3b16eebb
     1.1 --- a/server/vmmanager/vmmanager.py	Wed Dec 04 18:01:06 2013 +0100
     1.2 +++ b/server/vmmanager/vmmanager.py	Fri Dec 06 10:47:26 2013 +0100
     1.3 @@ -83,7 +83,7 @@
     1.4          
     1.5      def listRSDS(self):
     1.6          cmd = 'VBoxManage list usbhost'
     1.7 -        results = self.execute(cmd)
     1.8 +        results = self.execute(cmd)[1]
     1.9          results = results.split('Host USB Devices:')[1].strip()
    1.10          
    1.11          items = list( "UUID:"+result for result in results.split('UUID:') if result != '')
    1.12 @@ -134,7 +134,7 @@
    1.13          attached_devices = dict()
    1.14          for vm in vms:
    1.15              rsd_filter = self.getUSBFilter(vm)
    1.16 -            if filter != None:
    1.17 +            if rsd_filter != None:
    1.18                  attached_devices[vm] = rsd_filter
    1.19          return attached_devices
    1.20      
    1.21 @@ -163,7 +163,8 @@
    1.22          self.execute(cmd)
    1.23          cmd = 'VBoxManage storagectl ' + vm_name + ' --name contr1 --add sata --portcount 2'
    1.24          self.execute(cmd)
    1.25 -        cmd = 'VBoxManage storageattach ' + vm_name + ' --storagectl contr1 --port 0 --device 0 --type hdd --mtype normal --medium \"'+ machineFolder + '\SecurityDVM\SecurityDVM.vmdk\"'
    1.26 +        cmd = 'VBoxManage storageattach ' + vm_name + ' --storagectl contr1 --port 0 --device 0 --type hdd --medium \"'+ machineFolder + '\SecurityDVM\SecurityDVM.vmdk\"'
    1.27 +        #--mtype immutable
    1.28          self.execute(cmd)
    1.29          return
    1.30      
    1.31 @@ -207,7 +208,7 @@
    1.32      # return the description set for an existing VM
    1.33      def getVMInfo(self, vm_name):
    1.34          cmd = 'VBoxManage showvminfo ' + vm_name + ' --machinereadable'
    1.35 -        results = self.execute(cmd)
    1.36 +        results = self.execute(cmd)[1]
    1.37          props = dict((k.strip(),v.strip().strip('"')) for k,v in (line.split('=', 1) for line in results.splitlines()))
    1.38          return props
    1.39      
    1.40 @@ -256,19 +257,25 @@
    1.41          attached_devices = self.getAttachedRSDs()
    1.42          connected_devices = self.listRSDS()
    1.43          for vm_name in attached_devices.keys():
    1.44 -            if attached_devices[vm_name] not in connected_devices.values():
    1.45 +            if connected_devices and attached_devices[vm_name] not in connected_devices.values():
    1.46 +                # self.netUse(vm_name)
    1.47                  self.stopVM(vm_name)
    1.48                  self.removeVM(vm_name)
    1.49          
    1.50          attached_devices = self.getAttachedRSDs()
    1.51          for connected_device in connected_devices.values():
    1.52 -            if connected_device not in attached_devices.values():
    1.53 +            if attached_devices or connected_device not in attached_devices.values():
    1.54                  new_sdvm = self.generateSDVMName()
    1.55                  self.createVM(new_sdvm)
    1.56 -                self.genCertificateISO(new_sdvm)
    1.57 -                self.attachCertificateISO(new_sdvm)
    1.58                  self.attachRSD(new_sdvm, connected_device)
    1.59                  self.startVM(new_sdvm)
    1.60 +                self.netUse(new_sdvm)
    1.61 +    
    1.62 +    def handleBrowsingRequest(self):
    1.63 +        new_sdvm = self.generateSDVMName()
    1.64 +        self.createVM(new_sdvm)
    1.65 +        self.genCertificateISO(new_sdvm)
    1.66 +        self.attachCertificateISO(new_sdvm)
    1.67      
    1.68      # executes command over ssh on guest vm
    1.69      def sshGuestExecute(self, vm_name, prog, user_name='opensec'):
    1.70 @@ -292,7 +299,7 @@
    1.71      # executes NET USE and connects to samba share on guestos 
    1.72      def netUse(self, vm_name):
    1.73          ip = self.getHostOnlyIP(vm_name)
    1.74 -        cmd = 'net use H: \\' + ip + '\RSD_Device'
    1.75 +        cmd = 'net use H: \\' + ip + '\USB'
    1.76          return self.execute(cmd)
    1.77          
    1.78