diff options
| author | Maru Newby <mnewby@internap.com> | 2012-04-11 02:20:57 -0700 |
|---|---|---|
| committer | Maru Newby <mnewby@internap.com> | 2012-04-24 14:14:52 -0700 |
| commit | 05c5a2b4a9b0eb9c0bf88cd81390c7bc906bd289 (patch) | |
| tree | 529385294ddb9077cf5d3c7e7819939271222389 /quantumclient/common/utils.py | |
| parent | 9b09f53a158a6184a560190b0d26293dcc1a44a6 (diff) | |
| download | python-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.py | 70 |
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) |
