summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErno Kuvaja <jokke@usr.fi>2019-09-19 12:45:04 +0100
committerErno Kuvaja <jokke@usr.fi>2019-09-27 10:16:24 +0100
commit20365d1be4d6de601c6a5ae113fa9c5b77f0d47c (patch)
tree50c7fe111a9785c8fcdc0ec6c11dccb34a466e54
parent5d86e1a5c25725dde288082ce45e7c2c55ae747f (diff)
downloadglance_store-20365d1be4d6de601c6a5ae113fa9c5b77f0d47c.tar.gz
Register reserved store configs
The config options for file stores will be registered under correct group based on the dict "reserved_stores". Change-Id: I636e7f8b625056d1c7ee1503ced4dd7628384bfb (cherry picked from commit fe3f02f9848950a00af5cfa89586a3051c8c7b66)
-rw-r--r--glance_store/multi_backend.py52
1 files changed, 47 insertions, 5 deletions
diff --git a/glance_store/multi_backend.py b/glance_store/multi_backend.py
index 5697267..4223e28 100644
--- a/glance_store/multi_backend.py
+++ b/glance_store/multi_backend.py
@@ -13,11 +13,13 @@
# License for the specific language governing permissions and limitations
# under the License.
+import copy
import hashlib
import logging
from oslo_config import cfg
from oslo_utils import encodeutils
+from oslo_utils import units
import six
from stevedore import driver
from stevedore import extension
@@ -53,6 +55,28 @@ Related Options:
""")),
]
+FS_CONF_DATADIR_HELP = """
+Directory of which the reserved store {} uses.
+
+Possible values:
+ * A valid path to a directory
+
+Refer to [glance_store]/filesystem store config opts for more details.
+"""
+
+FS_CONF_CHUNKSIZE_HELP = """
+Chunk size, in bytes to be used by reserved store {}.
+
+The chunk size used when reading or writing image files. Raising this value
+may improve the throughput but it may also slightly increase the memory usage
+when handling a large number of requests.
+
+Possible Values:
+ * Any positive integer value
+
+"""
+
+
_STORE_CFG_GROUP = 'glance_store'
_RESERVED_STORES = {}
@@ -101,14 +125,32 @@ def register_store_opts(conf, reserved_stores=None):
LOG.debug("Registering options for group %s", _STORE_CFG_GROUP)
conf.register_opts(_STORE_OPTS, group=_STORE_CFG_GROUP)
- driver_opts = _list_driver_opts()
- enabled_backends = conf.enabled_backends
+ configured_backends = copy.deepcopy(conf.enabled_backends)
if reserved_stores:
- enabled_backends.update(reserved_stores)
+ conf.enabled_backends.update(reserved_stores)
+ for key in reserved_stores.keys():
+ fs_conf_template = [
+ cfg.StrOpt('filesystem_store_datadir',
+ default='/var/lib/glance/{}'.format(key),
+ help=FS_CONF_DATADIR_HELP.format(key)),
+ cfg.MultiStrOpt('filesystem_store_datadirs',
+ help="""Not used"""),
+ cfg.StrOpt('filesystem_store_metadata_file',
+ help="""Not used"""),
+ cfg.IntOpt('filesystem_store_file_perm',
+ default=0,
+ help="""Not used"""),
+ cfg.IntOpt('filesystem_store_chunk_size',
+ default=64 * units.Ki,
+ min=1,
+ help=FS_CONF_CHUNKSIZE_HELP.format(key))]
+ LOG.debug("Registering options for reserved store: {}".format(key))
+ conf.register_opts(fs_conf_template, group=key)
- for backend in enabled_backends:
+ driver_opts = _list_driver_opts()
+ for backend in configured_backends:
for opt_list in driver_opts:
- if enabled_backends[backend] not in opt_list:
+ if configured_backends[backend] not in opt_list:
continue
LOG.debug("Registering options for group %s", backend)