summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cloudinit/helpers.py24
1 files changed, 22 insertions, 2 deletions
diff --git a/cloudinit/helpers.py b/cloudinit/helpers.py
index 3fd819b3..3938e7ee 100644
--- a/cloudinit/helpers.py
+++ b/cloudinit/helpers.py
@@ -206,11 +206,17 @@ class ContentHandlers(object):
class Paths(object):
def __init__(self, path_cfgs, ds=None):
- self.cloud_dir = path_cfgs.get('cloud_dir', '/var/lib/cloud')
+ self.cfgs = path_cfgs
+ # Populate all the initial paths
+ self.cloud_dir = self.join_paths(False,
+ path_cfgs.get('cloud_dir',
+ '/var/lib/cloud'))
self.instance_link = os.path.join(self.cloud_dir, 'instance')
self.boot_finished = os.path.join(self.instance_link, "boot-finished")
self.upstart_conf_d = path_cfgs.get('upstart_dir')
- template_dir = path_cfgs.get('templates_dir', '/etc/cloud/templates/')
+ template_dir = self.join_paths(True,
+ path_cfgs.get('templates_dir',
+ '/etc/cloud/templates/'))
self.template_tpl = os.path.join(template_dir, '%s.tmpl')
self.seed_dir = os.path.join(self.cloud_dir, 'seed')
self.lookups = {
@@ -227,6 +233,20 @@ class Paths(object):
# Set when a datasource becomes active
self.datasource = ds
+ # joins the paths but also appends a read
+ # or write root if available
+ def join_paths(self, read_only, *paths):
+ if read_only:
+ root = self.cfgs.get('read_root', '/')
+ else:
+ root = self.cfgs.get('write_root', '/')
+ if not paths:
+ return root
+ joined = os.path.join(*paths)
+ if root:
+ joined = os.path.join(root, joined.lstrip("/"))
+ return joined
+
# get_ipath_cur: get the current instance path for an item
def get_ipath_cur(self, name=None):
ipath = self.instance_link