diff options
author | Soren Hansen <soren.hansen@rackspace.com> | 2010-11-04 12:42:14 +0100 |
---|---|---|
committer | Soren Hansen <soren.hansen@rackspace.com> | 2010-11-04 12:42:14 +0100 |
commit | b65b41e5957d5ded516343b3611292c9744d169f (patch) | |
tree | 07b519a28c1a52e1df566f739416f935907f9366 /nova/flags.py | |
parent | 671b712a5ad9034fa89761018203cc7c1ea0449b (diff) | |
download | nova-b65b41e5957d5ded516343b3611292c9744d169f.tar.gz nova-b65b41e5957d5ded516343b3611292c9744d169f.tar.xz nova-b65b41e5957d5ded516343b3611292c9744d169f.zip |
Add a templating mechanism in the flag parsing. Add a state_path flag that will be used as the top-level dir for all other state (such as images, instances, buckets, networks, etc). This way you only need to change one flag to put all your state in e.g. /var/lib/nova.
Diffstat (limited to 'nova/flags.py')
-rw-r--r-- | nova/flags.py | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/nova/flags.py b/nova/flags.py index 4ae86d9b2..2b8bbbdb7 100644 --- a/nova/flags.py +++ b/nova/flags.py @@ -26,6 +26,8 @@ import os import socket import sys +from string import Template + import gflags @@ -134,8 +136,21 @@ class FlagValues(gflags.FlagValues): def __getattr__(self, name): if self.IsDirty(name): self.ParseNewFlags() - return gflags.FlagValues.__getattr__(self, name) + val = gflags.FlagValues.__getattr__(self, name) + if type(val) is str: + tmpl = Template(val) + return tmpl.substitute(StrWrapper(self)) + return val +class StrWrapper(object): + def __init__(self, obj): + self.wrapped = obj + + def __getitem__(self, name): + if hasattr(self.wrapped, name): + return str(getattr(self.wrapped, name)) + else: + raise KeyError(name) FLAGS = FlagValues() gflags.FLAGS = FLAGS @@ -218,8 +233,11 @@ DEFINE_string('vpn_key_suffix', DEFINE_integer('auth_token_ttl', 3600, 'Seconds for auth tokens to linger') +DEFINE_string('state_path', os.path.abspath("./"), + "Top-level directory for maintaining nova's state") + DEFINE_string('sql_connection', - 'sqlite:///%s/nova.sqlite' % os.path.abspath("./"), + 'sqlite:///$state_path/nova.sqlite', 'connection string for sql database') DEFINE_string('compute_manager', 'nova.compute.manager.ComputeManager', |