290 |
290 |
raise NotImplementedError
|
291 |
291 |
|
292 |
292 |
@classmethod
|
293 |
|
def Create(cls, unique_id, children, size, params):
|
|
293 |
def Create(cls, unique_id, children, size, params, excl_stor):
|
294 |
294 |
"""Create the device.
|
295 |
295 |
|
296 |
296 |
If the device cannot be created, it will return None
|
... | ... | |
524 |
524 |
self.Attach()
|
525 |
525 |
|
526 |
526 |
@classmethod
|
527 |
|
def Create(cls, unique_id, children, size, params):
|
|
527 |
def Create(cls, unique_id, children, size, params, excl_stor):
|
528 |
528 |
"""Create a new logical volume.
|
529 |
529 |
|
530 |
530 |
"""
|
... | ... | |
2181 |
2181 |
self.Shutdown()
|
2182 |
2182 |
|
2183 |
2183 |
@classmethod
|
2184 |
|
def Create(cls, unique_id, children, size, params):
|
|
2184 |
def Create(cls, unique_id, children, size, params, excl_stor):
|
2185 |
2185 |
"""Create a new DRBD8 device.
|
2186 |
2186 |
|
2187 |
2187 |
Since DRBD devices are not created per se, just assembled, this
|
... | ... | |
2190 |
2190 |
"""
|
2191 |
2191 |
if len(children) != 2:
|
2192 |
2192 |
raise errors.ProgrammerError("Invalid setup for the drbd device")
|
|
2193 |
if excl_stor:
|
|
2194 |
raise errors.ProgrammerError("DRBD device requested with"
|
|
2195 |
" exclusive_storage")
|
2193 |
2196 |
# check that the minor is unused
|
2194 |
2197 |
aminor = unique_id[4]
|
2195 |
2198 |
proc_info = cls._MassageProcData(cls._GetProcData())
|
... | ... | |
2355 |
2358 |
_ThrowError("Can't stat %s: %s", self.dev_path, err)
|
2356 |
2359 |
|
2357 |
2360 |
@classmethod
|
2358 |
|
def Create(cls, unique_id, children, size, params):
|
|
2361 |
def Create(cls, unique_id, children, size, params, excl_stor):
|
2359 |
2362 |
"""Create a new file.
|
2360 |
2363 |
|
2361 |
2364 |
@param size: the size of file in MiB
|
... | ... | |
2364 |
2367 |
@return: an instance of FileStorage
|
2365 |
2368 |
|
2366 |
2369 |
"""
|
|
2370 |
if excl_stor:
|
|
2371 |
raise errors.ProgrammerError("FileStorage device requested with"
|
|
2372 |
" exclusive_storage")
|
2367 |
2373 |
if not isinstance(unique_id, (tuple, list)) or len(unique_id) != 2:
|
2368 |
2374 |
raise ValueError("Invalid configuration data %s" % str(unique_id))
|
2369 |
2375 |
|
... | ... | |
2420 |
2426 |
self.Attach()
|
2421 |
2427 |
|
2422 |
2428 |
@classmethod
|
2423 |
|
def Create(cls, unique_id, children, size, params):
|
|
2429 |
def Create(cls, unique_id, children, size, params, excl_stor):
|
2424 |
2430 |
"""Create a new device
|
2425 |
2431 |
|
2426 |
2432 |
This is a noop, we only return a PersistentBlockDevice instance
|
2427 |
2433 |
|
2428 |
2434 |
"""
|
|
2435 |
if excl_stor:
|
|
2436 |
raise errors.ProgrammerError("Persistent block device requested with"
|
|
2437 |
" exclusive_storage")
|
2429 |
2438 |
return PersistentBlockDevice(unique_id, children, 0, params)
|
2430 |
2439 |
|
2431 |
2440 |
def Remove(self):
|
... | ... | |
2517 |
2526 |
self.Attach()
|
2518 |
2527 |
|
2519 |
2528 |
@classmethod
|
2520 |
|
def Create(cls, unique_id, children, size, params):
|
|
2529 |
def Create(cls, unique_id, children, size, params, excl_stor):
|
2521 |
2530 |
"""Create a new rbd device.
|
2522 |
2531 |
|
2523 |
2532 |
Provision a new rbd volume inside a RADOS pool.
|
... | ... | |
2526 |
2535 |
if not isinstance(unique_id, (tuple, list)) or len(unique_id) != 2:
|
2527 |
2536 |
raise errors.ProgrammerError("Invalid configuration data %s" %
|
2528 |
2537 |
str(unique_id))
|
|
2538 |
if excl_stor:
|
|
2539 |
raise errors.ProgrammerError("RBD device requested with"
|
|
2540 |
" exclusive_storage")
|
2529 |
2541 |
rbd_pool = params[constants.LDP_POOL]
|
2530 |
2542 |
rbd_name = unique_id[1]
|
2531 |
2543 |
|
... | ... | |
2810 |
2822 |
self.Attach()
|
2811 |
2823 |
|
2812 |
2824 |
@classmethod
|
2813 |
|
def Create(cls, unique_id, children, size, params):
|
|
2825 |
def Create(cls, unique_id, children, size, params, excl_stor):
|
2814 |
2826 |
"""Create a new extstorage device.
|
2815 |
2827 |
|
2816 |
2828 |
Provision a new volume using an extstorage provider, which will
|
... | ... | |
2820 |
2832 |
if not isinstance(unique_id, (tuple, list)) or len(unique_id) != 2:
|
2821 |
2833 |
raise errors.ProgrammerError("Invalid configuration data %s" %
|
2822 |
2834 |
str(unique_id))
|
|
2835 |
if excl_stor:
|
|
2836 |
raise errors.ProgrammerError("extstorage device requested with"
|
|
2837 |
" exclusive_storage")
|
2823 |
2838 |
|
2824 |
2839 |
# Call the External Storage's create script,
|
2825 |
2840 |
# to provision a new Volume inside the External Storage
|
... | ... | |
3235 |
3250 |
return device
|
3236 |
3251 |
|
3237 |
3252 |
|
3238 |
|
def Create(disk, children):
|
|
3253 |
def Create(disk, children, excl_stor):
|
3239 |
3254 |
"""Create a device.
|
3240 |
3255 |
|
3241 |
3256 |
@type disk: L{objects.Disk}
|
... | ... | |
3243 |
3258 |
@type children: list of L{bdev.BlockDev}
|
3244 |
3259 |
@param children: the list of block devices that are children of the device
|
3245 |
3260 |
represented by the disk parameter
|
|
3261 |
@type excl_stor: boolean
|
|
3262 |
@param excl_stor: Whether exclusive_storage is active
|
3246 |
3263 |
|
3247 |
3264 |
"""
|
3248 |
3265 |
_VerifyDiskType(disk.dev_type)
|
3249 |
3266 |
_VerifyDiskParams(disk)
|
3250 |
3267 |
device = DEV_MAP[disk.dev_type].Create(disk.physical_id, children, disk.size,
|
3251 |
|
disk.params)
|
|
3268 |
disk.params, excl_stor)
|
3252 |
3269 |
return device
|