summaryrefslogtreecommitdiffstats
path: root/nova/flags.py
diff options
context:
space:
mode:
authorSoren Hansen <soren.hansen@rackspace.com>2010-11-04 12:42:14 +0100
committerSoren Hansen <soren.hansen@rackspace.com>2010-11-04 12:42:14 +0100
commitb65b41e5957d5ded516343b3611292c9744d169f (patch)
tree07b519a28c1a52e1df566f739416f935907f9366 /nova/flags.py
parent671b712a5ad9034fa89761018203cc7c1ea0449b (diff)
downloadnova-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.py22
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',