[Kimchi-devel] [PATCH v2 3/4] Add disks to LVM pool: mockmodel changes
Aline Manera
alinefm at linux.vnet.ibm.com
Tue Feb 11 13:29:18 UTC 2014
Reviewed-by: Aline Manera <alinefm at linux.vnet.ibm.com>
On 02/10/2014 07:52 PM, Daniel Barboza wrote:
> From: Daniel Henrique Barboza <danielhb at linux.vnet.ibm.com>
>
> Eliminated the parameter validation that is now being done
> in API.json.
>
> To simulate the operation of add disks in the mockmodel, for
> each disk (which is validated with real data from the host),
> for each new disk added a fixed amount is added in the
> 'capacity' and 'available' fields on the pool.
>
> Signed-off-by: Daniel Henrique Barboza <danielhb at linux.vnet.ibm.com>
> ---
> src/kimchi/mockmodel.py | 36 +++++++++++++++++++++++++++++-------
> 1 file changed, 29 insertions(+), 7 deletions(-)
>
> diff --git a/src/kimchi/mockmodel.py b/src/kimchi/mockmodel.py
> index 4e276eb..441c0e4 100644
> --- a/src/kimchi/mockmodel.py
> +++ b/src/kimchi/mockmodel.py
> @@ -52,7 +52,7 @@ from kimchi.model.utils import get_vm_name
> from kimchi.model.vms import VM_STATIC_UPDATE_PARAMS
> from kimchi.objectstore import ObjectStore
> from kimchi.screenshot import VMScreenshot
> -from kimchi.utils import template_name_from_uri, pool_name_from_uri
> +from kimchi.utils import pool_name_from_uri, run_command, template_name_from_uri
> from kimchi.vmtemplate import VMTemplate
>
>
> @@ -315,13 +315,35 @@ class MockModel(object):
> storagepool.refresh()
> return storagepool.info
>
> + def _update_lvm_disks(self, pool_name, disks):
> + pool = self._get_storagepool(pool_name)
> + # check if all the disks/partitions exists in the host
> + for disk in disks:
> + blkid_cmd = ['blkid', disk]
> + output, error, returncode = run_command(blkid_cmd)
> + if returncode != 0:
> + raise OperationFailed('%s is not a valid disk/partition. '
> + 'Could not add it to the pool %s.', disk,
> + pool_name)
> + # Adding disks to the lvm pool by adding extra capacity.
> + # Fixed amount for each disk present based in the
> + # values used in MockStoragePool.
> + capacity_per_disk = 1024 << 20
> + capacity_added = capacity_per_disk * len(disks)
> + pool.info['capacity'] += capacity_added
> + pool.info['available'] += capacity_added
> +
> def storagepool_update(self, name, params):
> - autostart = params['autostart']
> - if autostart not in [True, False]:
> - raise InvalidOperation("Autostart flag must be true or false")
> - storagepool = self._get_storagepool(name)
> - storagepool.info['autostart'] = autostart
> - ident = storagepool.name
> + pool = self._get_storagepool(name)
> + if 'autostart' in params:
> + pool.info['autostart'] = params['autostart']
> + if 'disks' in params:
> + # check if pool is type 'logical'
> + if pool.info['type'] != 'logical':
> + raise InvalidOperation("Operation available only for "
> + "'logical' type storage pool.")
> + self._update_lvm_disks(name, params['disks'])
> + ident = pool.name
> return ident
>
> def storagepool_activate(self, name):
More information about the Kimchi-devel
mailing list