diff options
author | Jenkins <jenkins@review.openstack.org> | 2015-02-05 05:51:08 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2015-02-05 05:51:08 +0000 |
commit | ca1e5b265e55e1a6045f7b965bdb8fd4187e5595 (patch) | |
tree | 3c1810cd947cdd8ef891428becf94af82173ac46 | |
parent | d63921605b7689a241ff2bc2db5ad2fc35be2bee (diff) | |
parent | 536e99041d67b7f9beff873c10dbb000744e84ee (diff) | |
download | nova-ca1e5b265e55e1a6045f7b965bdb8fd4187e5595.tar.gz |
Merge "VMware: enable a cache prefix configuration parameter"
-rw-r--r-- | nova/tests/unit/virt/vmwareapi/test_vmops.py | 17 | ||||
-rw-r--r-- | nova/virt/vmwareapi/vmops.py | 33 |
2 files changed, 43 insertions, 7 deletions
diff --git a/nova/tests/unit/virt/vmwareapi/test_vmops.py b/nova/tests/unit/virt/vmwareapi/test_vmops.py index e46e41c68c..867cf3e1d8 100644 --- a/nova/tests/unit/virt/vmwareapi/test_vmops.py +++ b/nova/tests/unit/virt/vmwareapi/test_vmops.py @@ -1455,3 +1455,20 @@ class VMwareVMOpsTestCase(test.NoDBTestCase): pbm_default_policy='default-policy', group='vmware') extra_specs = self._vmops._get_extra_specs(flavor) self.assertEqual('flavor-policy', extra_specs.storage_policy) + + def test_get_base_folder_not_set(self): + self.flags(image_cache_subdirectory_name='vmware_base') + base_folder = self._vmops._get_base_folder() + self.assertEqual('vmware_base', base_folder) + + def test_get_base_folder_host_ip(self): + self.flags(my_ip='7.7.7.7', + image_cache_subdirectory_name='_base') + base_folder = self._vmops._get_base_folder() + self.assertEqual('7.7.7.7_base', base_folder) + + def test_get_base_folder_cache_prefix(self): + self.flags(cache_prefix='my_prefix', group='vmware') + self.flags(image_cache_subdirectory_name='_base') + base_folder = self._vmops._get_base_folder() + self.assertEqual('my_prefix_base', base_folder) diff --git a/nova/virt/vmwareapi/vmops.py b/nova/virt/vmwareapi/vmops.py index 8da17b387d..d4081ced0e 100644 --- a/nova/virt/vmwareapi/vmops.py +++ b/nova/virt/vmwareapi/vmops.py @@ -57,8 +57,19 @@ from nova.virt.vmwareapi import vif as vmwarevif from nova.virt.vmwareapi import vim_util from nova.virt.vmwareapi import vm_util +vmops_opts = [ + cfg.StrOpt('cache_prefix', + help='The prefix for Where cached images are stored. This is ' + 'NOT the full path - just a folder prefix. ' + 'This should only be used when a datastore cache should ' + 'be shared between compute nodes. Note: this should only ' + 'be used when the compute nodes have a shared file ' + 'system.'), + ] CONF = cfg.CONF +CONF.register_opts(vmops_opts, 'vmware') + CONF.import_opt('image_cache_subdirectory_name', 'nova.virt.imagecache') CONF.import_opt('remove_unused_base_images', 'nova.virt.imagecache') CONF.import_opt('vnc_enabled', 'nova.vnc') @@ -151,13 +162,7 @@ class VMwareVMOps(object): self._root_resource_pool = vm_util.get_res_pool_ref(self._session, self._cluster) self._datastore_regex = datastore_regex - # Ensure that the base folder is unique per compute node - if CONF.remove_unused_base_images: - self._base_folder = '%s%s' % (CONF.my_ip, - CONF.image_cache_subdirectory_name) - else: - # Aging disable ensures backward compatibility - self._base_folder = CONF.image_cache_subdirectory_name + self._base_folder = self._get_base_folder() self._tmp_folder = 'vmware_temp' self._rescue_suffix = '-rescue' self._migrate_suffix = '-orig' @@ -166,6 +171,20 @@ class VMwareVMOps(object): self._imagecache = imagecache.ImageCacheManager(self._session, self._base_folder) + def _get_base_folder(self): + # Enable more than one compute node to run on the same host + if CONF.vmware.cache_prefix: + base_folder = '%s%s' % (CONF.vmware.cache_prefix, + CONF.image_cache_subdirectory_name) + # Ensure that the base folder is unique per compute node + elif CONF.remove_unused_base_images: + base_folder = '%s%s' % (CONF.my_ip, + CONF.image_cache_subdirectory_name) + else: + # Aging disable ensures backward compatibility + base_folder = CONF.image_cache_subdirectory_name + return base_folder + def _extend_virtual_disk(self, instance, requested_size, name, dc_ref): service_content = self._session.vim.service_content LOG.debug("Extending root virtual disk to %s", requested_size) |