|
Lines 93-106
Link Here
|
| 93 |
DEVICE_MAP = { DEVICE_DISK : 'disk', DEVICE_CDROM : 'cdrom', DEVICE_FLOPPY : 'floppy' } |
93 |
DEVICE_MAP = { DEVICE_DISK : 'disk', DEVICE_CDROM : 'cdrom', DEVICE_FLOPPY : 'floppy' } |
| 94 |
(TYPE_FILE, TYPE_BLOCK) = range(2) |
94 |
(TYPE_FILE, TYPE_BLOCK) = range(2) |
| 95 |
TYPE_MAP = {TYPE_FILE: 'file', TYPE_BLOCK: 'block'} |
95 |
TYPE_MAP = {TYPE_FILE: 'file', TYPE_BLOCK: 'block'} |
|
|
96 |
(CACHE_DEFAULT, CACHE_NONE, CACHE_WT, CACHE_WB) = range(4) |
| 97 |
CACHE_MAP = {CACHE_DEFAULT: 'default', CACHE_NONE: 'none', CACHE_WT: 'writethrough', CACHE_WB: 'writeback'} |
| 96 |
def __init__( self ): |
98 |
def __init__( self ): |
| 97 |
self.type = Disk.TYPE_FILE |
99 |
self.type = Disk.TYPE_FILE # disk/@type |
| 98 |
self.device = Disk.DEVICE_DISK |
100 |
self.device = Disk.DEVICE_DISK # disk/@device |
| 99 |
self.driver = 'file' |
101 |
self.driver = None # disk/driver/@name |
| 100 |
self.source = '' |
102 |
self.driver_type = None # disk/driver/@type |
| 101 |
self.readonly = False |
103 |
self.driver_cache = Disk.CACHE_DEFAULT # disk/driver/@cache |
| 102 |
self.target_dev = '' |
104 |
self.source = '' # disk/source/@file | disk/source/@dev |
| 103 |
self.target_bus = 'ide' |
105 |
self.readonly = False # disk/readonly |
|
|
106 |
self.target_dev = '' # disk/target/@dev |
| 107 |
self.target_bus = None # disk/target/@bus |
| 104 |
self.size = None # not defined |
108 |
self.size = None # not defined |
| 105 |
|
109 |
|
| 106 |
@staticmethod |
110 |
@staticmethod |
|
Lines 111-116
Link Here
|
| 111 |
def map_type( id = None, name = None ): |
115 |
def map_type( id = None, name = None ): |
| 112 |
return _map( Disk.TYPE_MAP, id, name ) |
116 |
return _map( Disk.TYPE_MAP, id, name ) |
| 113 |
|
117 |
|
|
|
118 |
@staticmethod |
| 119 |
def map_cache(id=None, name=None): |
| 120 |
return _map(Disk.CACHE_MAP, id, name) |
| 121 |
|
| 114 |
def __str__( self ): |
122 |
def __str__( self ): |
| 115 |
return 'Disk(%s,%s): %s, %s' % ( Disk.map_device( id = self.device ), Disk.map_type( id = self.type ), self.source, self.target_dev ) |
123 |
return 'Disk(%s,%s): %s, %s' % ( Disk.map_device( id = self.device ), Disk.map_type( id = self.type ), self.source, self.target_dev ) |
| 116 |
|
124 |
|
|
Lines 366-371
Link Here
|
| 366 |
dev = Disk() |
374 |
dev = Disk() |
| 367 |
dev.type = Disk.map_type( name = disk.getAttribute( 'type' ) ) |
375 |
dev.type = Disk.map_type( name = disk.getAttribute( 'type' ) ) |
| 368 |
dev.device = Disk.map_device( name = disk.getAttribute( 'device' ) ) |
376 |
dev.device = Disk.map_device( name = disk.getAttribute( 'device' ) ) |
|
|
377 |
driver = disk.getElementsByTagName('driver') |
| 378 |
if driver: |
| 379 |
dev.driver = driver[0].getAttribute('name') |
| 380 |
dev.driver_type = driver[0].getAttribute('type') |
| 381 |
dev.driver_cache = driver[0].getAttribute('cache') |
| 369 |
source = disk.getElementsByTagName( 'source' ) |
382 |
source = disk.getElementsByTagName( 'source' ) |
| 370 |
if source: |
383 |
if source: |
| 371 |
if dev.type == Disk.TYPE_FILE: |
384 |
if dev.type == Disk.TYPE_FILE: |
|
Lines 843-852
Link Here
|
| 843 |
elem.setAttribute( 'device', disk.map_device( id = disk.device ) ) |
856 |
elem.setAttribute( 'device', disk.map_device( id = disk.device ) ) |
| 844 |
devices.appendChild( elem ) |
857 |
devices.appendChild( elem ) |
| 845 |
|
858 |
|
| 846 |
# FIXME: KVM doesn't like it -> Xen/libvirt adds this automatically |
859 |
if disk.driver: |
| 847 |
# driver = doc.createElement( 'driver' ) |
860 |
driver = doc.createElement('driver') |
| 848 |
# driver.setAttribute( 'name', disk.driver ) |
861 |
driver.setAttribute('name', disk.driver) |
| 849 |
# elem.appendChild( driver ) |
862 |
if disk.driver_type: |
|
|
863 |
driver.setAttribute('type', disk.driver_type) |
| 864 |
if disk.driver_cache: |
| 865 |
driver.setAttribute('cache', disk.map_cache(id=disk.driver_cache)) |
| 866 |
elem.appendChild(driver) |
| 850 |
|
867 |
|
| 851 |
source = doc.createElement( 'source' ) |
868 |
source = doc.createElement( 'source' ) |
| 852 |
if disk.type == Disk.TYPE_FILE: |
869 |
if disk.type == Disk.TYPE_FILE: |
|
Lines 861-867
Link Here
|
| 861 |
target = doc.createElement( 'target' ) |
878 |
target = doc.createElement( 'target' ) |
| 862 |
target.setAttribute( 'dev', disk.target_dev ) |
879 |
target.setAttribute( 'dev', disk.target_dev ) |
| 863 |
# TODO: Xen an KVM have their default based on the device names |
880 |
# TODO: Xen an KVM have their default based on the device names |
| 864 |
# target.setAttribute( 'bus', disk.target_bus ) |
881 |
if disk.target_bus: |
|
|
882 |
target.setAttribute('bus', disk.target_bus) |
| 865 |
elem.appendChild( target ) |
883 |
elem.appendChild( target ) |
| 866 |
|
884 |
|
| 867 |
if disk.readonly: |
885 |
if disk.readonly: |