[Kimchi-devel] [PATCH 7/8] Clone virtual machines
Aline Manera
alinefm at linux.vnet.ibm.com
Wed Nov 5 11:34:54 UTC 2014
On 11/04/2014 11:10 AM, Crístian Viana wrote:
> On 03-11-2014 14:47, Aline Manera wrote:+ if orig_pool['type'] in
> ['dir', 'netfs', 'logical']:
>>> + # if a volume in a pool 'dir', 'netfs' or 'logical'
>>> cannot hold
>>> + # a new volume with the same size, the pool
>>> 'default' should
>>> + # be used
>>> + if orig_vol['capacity'] > orig_pool['available']:
>>> + kimchi_log.warning('storage pool \'%s\'
>>> doesn\'t have '
>>> + 'enough free space to store
>>> image '
>>> + '\'%s\'; falling back to
>>> \'default\'',
>>> + orig_pool_name, path)
>>
>>> + new_pool_name = u'default'
>>> + new_pool = self.storagepool.lookup(u'default')
>>> +
>>> + # ...and if even the pool 'default' cannot hold
>>> a new
>>> + # volume, raise an exception
>>> + if orig_vol['capacity'] > new_pool['available']:
>>> + domain_name = xpath_get_text(xml,
>>> XPATH_DOMAIN_NAME)[0]
>>> + raise InvalidOperation('KCHVM0034E',
>>> + {'name': domain_name})
>>
>> You do this same verification some lines below.
>> Couldn't you reorganize the code to only have one occurrence of it?
>> Or in last case, create a function.
>
> I don't think it's worth it. Even though those "if" blocks look the
> same, the only thing they use different variables in the boolean
> condition and they have different bodies. There's not much to reuse on
> that code.
>
> I can go from this:
>
> if orig_vol['capacity'] > orig_pool['available']:
> kimchi_log.warning('storage pool \'%s\' doesn\'t have enough free
> space to store image \'%s\'; falling back to \'default\'',
> orig_pool_name, path)
> new_pool_name = u'default'
> new_pool = self.storagepool.lookup(u'default')
>
> if orig_vol['capacity'] > new_pool['available']:
> domain_name = xpath_get_text(xml, XPATH_DOMAIN_NAME)[0]
> raise InvalidOperation('KCHVM0034E', {'name': domain_name})
>
> to this:
>
> @staticmethod
> def vol_fits_in_pool(vol, pool):
> return vol['capacity'] > pool['available']
>
> if vol_fits_in_pool(orig_vol, orig_pool):
> kimchi_log.warning('storage pool \'%s\' doesn\'t have enough free
> space to store image \'%s\'; falling back to \'default\'',
> orig_pool_name, path)
> new_pool_name = u'default'
> new_pool = self.storagepool.lookup(u'default')
>
> if vol_fits_in_pool(orig_vol, new_pool):
> domain_name = xpath_get_text(xml, XPATH_DOMAIN_NAME)[0]
> raise InvalidOperation('KCHVM0034E', {'name': domain_name})
>
> Is it really worth it?
Nope! Keep it is as it is! =)
More information about the Kimchi-devel
mailing list