summaryrefslogtreecommitdiff
path: root/quantumclient/common/utils.py
diff options
context:
space:
mode:
authorMaru Newby <mnewby@internap.com>2012-04-11 02:20:57 -0700
committerMaru Newby <mnewby@internap.com>2012-04-24 14:14:52 -0700
commit05c5a2b4a9b0eb9c0bf88cd81390c7bc906bd289 (patch)
tree529385294ddb9077cf5d3c7e7819939271222389 /quantumclient/common/utils.py
parent9b09f53a158a6184a560190b0d26293dcc1a44a6 (diff)
downloadpython-neutronclient-05c5a2b4a9b0eb9c0bf88cd81390c7bc906bd289.tar.gz
Remove server-specific functionality.
* Moved server-specific functionality found in quantum.common to the quantum repo. * Renamed primary package from quantum -> quantumclient. * Addresses bug 977711 and bug 921933 Change-Id: If34553924c8dfcc6b148c1d91f173a4b81eeb95a
Diffstat (limited to 'quantumclient/common/utils.py')
-rw-r--r--quantumclient/common/utils.py70
1 files changed, 70 insertions, 0 deletions
diff --git a/quantumclient/common/utils.py b/quantumclient/common/utils.py
new file mode 100644
index 0000000..afb554e
--- /dev/null
+++ b/quantumclient/common/utils.py
@@ -0,0 +1,70 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+
+# Copyright 2011, Nicira Networks, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+# Borrowed from nova code base, more utilities will be added/borrowed as and
+# when needed.
+# @author: Somik Behera, Nicira Networks, Inc.
+
+"""Utilities and helper functions."""
+
+import datetime
+import json
+import os
+
+
+def env(*vars, **kwargs):
+ """
+ returns the first environment variable set
+ if none are non-empty, defaults to '' or keyword arg default
+ """
+ for v in vars:
+ value = os.environ.get(v)
+ if value:
+ return value
+ return kwargs.get('default', '')
+
+
+def to_primitive(value):
+ if type(value) is type([]) or type(value) is type((None,)):
+ o = []
+ for v in value:
+ o.append(to_primitive(v))
+ return o
+ elif type(value) is type({}):
+ o = {}
+ for k, v in value.iteritems():
+ o[k] = to_primitive(v)
+ return o
+ elif isinstance(value, datetime.datetime):
+ return str(value)
+ elif hasattr(value, 'iteritems'):
+ return to_primitive(dict(value.iteritems()))
+ elif hasattr(value, '__iter__'):
+ return to_primitive(list(value))
+ else:
+ return value
+
+
+def dumps(value):
+ try:
+ return json.dumps(value)
+ except TypeError:
+ pass
+ return json.dumps(to_primitive(value))
+
+
+def loads(s):
+ return json.loads(s)