mirror of
				https://github.com/retspen/webvirtcloud
				synced 2025-07-31 12:41:08 +00:00 
			
		
		
		
	Check media before adding new/existing volume
This commit is contained in:
		
							parent
							
								
									ebf251ff5e
								
							
						
					
					
						commit
						2dc83f39a2
					
				
					 2 changed files with 12 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -195,6 +195,8 @@ def instance(request, compute_id, vname):
 | 
			
		|||
        return msg
 | 
			
		||||
 | 
			
		||||
    def get_new_disk_dev(media, disks, bus):
 | 
			
		||||
        existing_disk_devs = []
 | 
			
		||||
        existing_media_devs = []
 | 
			
		||||
        if bus == "virtio":
 | 
			
		||||
            dev_base = "vd"
 | 
			
		||||
        elif bus == "ide":
 | 
			
		||||
| 
						 | 
				
			
			@ -203,9 +205,14 @@ def instance(request, compute_id, vname):
 | 
			
		|||
            dev_base = "fd"
 | 
			
		||||
        else:
 | 
			
		||||
            dev_base = "sd"
 | 
			
		||||
        existing_disk_devs = [disk['dev'] for disk in disks]
 | 
			
		||||
 | 
			
		||||
        if disks:
 | 
			
		||||
            existing_disk_devs = [disk['dev'] for disk in disks]
 | 
			
		||||
 | 
			
		||||
        # cd-rom bus could be virtio/sata, because of that we should check it also
 | 
			
		||||
        existing_media_devs = [disk['dev'] for disk in media]
 | 
			
		||||
        if media:
 | 
			
		||||
            existing_media_devs = [m['dev'] for m in media]
 | 
			
		||||
 | 
			
		||||
        for l in string.lowercase:
 | 
			
		||||
            dev = dev_base + l
 | 
			
		||||
            if dev not in existing_disk_devs and dev not in existing_media_devs:
 | 
			
		||||
| 
						 | 
				
			
			@ -465,7 +472,7 @@ def instance(request, compute_id, vname):
 | 
			
		|||
                meta_prealloc = request.POST.get('meta_prealloc', False)
 | 
			
		||||
                bus = request.POST.get('bus', default_bus)
 | 
			
		||||
                cache = request.POST.get('cache', default_cache)
 | 
			
		||||
                target = get_new_disk_dev(None, disks, bus)
 | 
			
		||||
                target = get_new_disk_dev(media, disks, bus)
 | 
			
		||||
 | 
			
		||||
                path = connCreate.create_volume(storage, name, size, format, meta_prealloc, default_owner)
 | 
			
		||||
                conn.attach_disk(path, target, subdriver=format, cache=cache, targetbus=bus)
 | 
			
		||||
| 
						 | 
				
			
			@ -487,7 +494,7 @@ def instance(request, compute_id, vname):
 | 
			
		|||
 | 
			
		||||
                format = connCreate.get_volume_type(name)
 | 
			
		||||
                path = connCreate.get_target_path()
 | 
			
		||||
                target = get_new_disk_dev(None, disks, bus)
 | 
			
		||||
                target = get_new_disk_dev(media, disks, bus)
 | 
			
		||||
                source = path + "/" + name;
 | 
			
		||||
 | 
			
		||||
                conn.attach_disk(source, target, subdriver=format, cache=cache, targetbus=bus)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -222,7 +222,7 @@ def get_volumes(request, compute_id, pool):
 | 
			
		|||
                          compute.type,
 | 
			
		||||
                          pool)
 | 
			
		||||
        conn.refresh()
 | 
			
		||||
    except libvirtError as liberr:
 | 
			
		||||
    except libvirtError:
 | 
			
		||||
        pass
 | 
			
		||||
    data['vols'] = sorted(conn.get_volumes())
 | 
			
		||||
    return HttpResponse(json.dumps(data))
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue