summaryrefslogtreecommitdiff
path: root/cloudinit/util.py
diff options
context:
space:
mode:
authorJoshua Harlow <harlowja@gmail.com>2014-02-01 22:48:55 -0800
committerJoshua Harlow <harlowja@gmail.com>2014-02-01 22:48:55 -0800
commitc104d6dfa464a8906c16b4f09b4b76ab5bf2e4e1 (patch)
tree2d77228d9706ce918b5fcac5cf830cb67b6e618c /cloudinit/util.py
parentb2ebae64a7b9738db6c6408cee4adc2bf2f178de (diff)
downloadvyos-cloud-init-c104d6dfa464a8906c16b4f09b4b76ab5bf2e4e1.tar.gz
vyos-cloud-init-c104d6dfa464a8906c16b4f09b4b76ab5bf2e4e1.zip
Add a openstack specific datasource
Openstack has a unique derivative datasource that is gaining usage. Previously the config drive datasource provided part of this functionality as well as the ec2 datasource, but since new functionality is being added to openstack is seems benefical to combine the used parts into one datasource just made for handling openstack deployments. This patch factors out the common logic shared between the config drive and the openstack metadata datasource and places that in a shared helper file and then creates a new openstack datasource that readers from the openstack metadata service and refactors the config drive datasource to use this common logic.
Diffstat (limited to 'cloudinit/util.py')
-rw-r--r--cloudinit/util.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/cloudinit/util.py b/cloudinit/util.py
index 3ce54f28..9bafd5b3 100644
--- a/cloudinit/util.py
+++ b/cloudinit/util.py
@@ -31,6 +31,7 @@ import glob
import grp
import gzip
import hashlib
+import json
import os
import os.path
import platform
@@ -385,6 +386,15 @@ def multi_log(text, console=True, stderr=True,
log.log(log_level, text)
+def load_json(text, root_types=(dict,)):
+ decoded = json.loads(text)
+ if not isinstance(decoded, tuple(root_types)):
+ expected_types = ", ".join([str(t) for t in root_types])
+ raise TypeError("(%s) root types expected, got %s instead"
+ % (expected_types, type(decoded)))
+ return decoded
+
+
def is_ipv4(instr):
"""determine if input string is a ipv4 address. return boolean."""
toks = instr.split('.')