summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-02-05 05:51:08 +0000
committerGerrit Code Review <review@openstack.org>2015-02-05 05:51:08 +0000
commitca1e5b265e55e1a6045f7b965bdb8fd4187e5595 (patch)
tree3c1810cd947cdd8ef891428becf94af82173ac46
parentd63921605b7689a241ff2bc2db5ad2fc35be2bee (diff)
parent536e99041d67b7f9beff873c10dbb000744e84ee (diff)
downloadnova-ca1e5b265e55e1a6045f7b965bdb8fd4187e5595.tar.gz
Merge "VMware: enable a cache prefix configuration parameter"
-rw-r--r--nova/tests/unit/virt/vmwareapi/test_vmops.py17
-rw-r--r--nova/virt/vmwareapi/vmops.py33
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)