Replace jsonutils with oslo.serialization version

jsonutils is now in separate library, and the oslo.serialization will be
used from now on.

Change-Id: I28b6b70e437f154cf1b9ce0b15b0c3e716d170ee
Depends-On: https://review.openstack.org/#/c/158674/
Closes-Bug: #1400661
This commit is contained in:
Maciej Kwiek 2015-02-25 08:55:38 +01:00
parent f21ffb875b
commit 1523c0701a
67 changed files with 105 additions and 449 deletions

View File

@ -1,186 +0,0 @@
# Copyright 2010 United States Government as represented by the
# Administrator of the National Aeronautics and Space Administration.
# Copyright 2011 Justin Santa Barbara
# All Rights Reserved.
#
# 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.
'''
JSON related utilities.
This module provides a few things:
1) A handy function for getting an object down to something that can be
JSON serialized. See to_primitive().
2) Wrappers around loads() and dumps(). The dumps() wrapper will
automatically use to_primitive() for you if needed.
3) This sets up anyjson to use the loads() and dumps() wrappers if anyjson
is available.
'''
import codecs
import datetime
import functools
import inspect
import itertools
import sys
if sys.version_info < (2, 7):
# On Python <= 2.6, json module is not C boosted, so try to use
# simplejson module if available
try:
import simplejson as json
except ImportError:
import json
else:
import json
import six
import six.moves.xmlrpc_client as xmlrpclib
from fuel_agent.openstack.common import gettextutils
from fuel_agent.openstack.common import importutils
from fuel_agent.openstack.common import strutils
from fuel_agent.openstack.common import timeutils
netaddr = importutils.try_import("netaddr")
_nasty_type_tests = [inspect.ismodule, inspect.isclass, inspect.ismethod,
inspect.isfunction, inspect.isgeneratorfunction,
inspect.isgenerator, inspect.istraceback, inspect.isframe,
inspect.iscode, inspect.isbuiltin, inspect.isroutine,
inspect.isabstract]
_simple_types = (six.string_types + six.integer_types
+ (type(None), bool, float))
def to_primitive(value, convert_instances=False, convert_datetime=True,
level=0, max_depth=3):
"""Convert a complex object into primitives.
Handy for JSON serialization. We can optionally handle instances,
but since this is a recursive function, we could have cyclical
data structures.
To handle cyclical data structures we could track the actual objects
visited in a set, but not all objects are hashable. Instead we just
track the depth of the object inspections and don't go too deep.
Therefore, convert_instances=True is lossy ... be aware.
"""
# handle obvious types first - order of basic types determined by running
# full tests on nova project, resulting in the following counts:
# 572754 <type 'NoneType'>
# 460353 <type 'int'>
# 379632 <type 'unicode'>
# 274610 <type 'str'>
# 199918 <type 'dict'>
# 114200 <type 'datetime.datetime'>
# 51817 <type 'bool'>
# 26164 <type 'list'>
# 6491 <type 'float'>
# 283 <type 'tuple'>
# 19 <type 'long'>
if isinstance(value, _simple_types):
return value
if isinstance(value, datetime.datetime):
if convert_datetime:
return timeutils.strtime(value)
else:
return value
# value of itertools.count doesn't get caught by nasty_type_tests
# and results in infinite loop when list(value) is called.
if type(value) == itertools.count:
return six.text_type(value)
# FIXME(vish): Workaround for LP bug 852095. Without this workaround,
# tests that raise an exception in a mocked method that
# has a @wrap_exception with a notifier will fail. If
# we up the dependency to 0.5.4 (when it is released) we
# can remove this workaround.
if getattr(value, '__module__', None) == 'mox':
return 'mock'
if level > max_depth:
return '?'
# The try block may not be necessary after the class check above,
# but just in case ...
try:
recursive = functools.partial(to_primitive,
convert_instances=convert_instances,
convert_datetime=convert_datetime,
level=level,
max_depth=max_depth)
if isinstance(value, dict):
return dict((k, recursive(v)) for k, v in six.iteritems(value))
elif isinstance(value, (list, tuple)):
return [recursive(lv) for lv in value]
# It's not clear why xmlrpclib created their own DateTime type, but
# for our purposes, make it a datetime type which is explicitly
# handled
if isinstance(value, xmlrpclib.DateTime):
value = datetime.datetime(*tuple(value.timetuple())[:6])
if convert_datetime and isinstance(value, datetime.datetime):
return timeutils.strtime(value)
elif isinstance(value, gettextutils.Message):
return value.data
elif hasattr(value, 'iteritems'):
return recursive(dict(value.iteritems()), level=level + 1)
elif hasattr(value, '__iter__'):
return recursive(list(value))
elif convert_instances and hasattr(value, '__dict__'):
# Likely an instance of something. Watch for cycles.
# Ignore class member vars.
return recursive(value.__dict__, level=level + 1)
elif netaddr and isinstance(value, netaddr.IPAddress):
return six.text_type(value)
else:
if any(test(value) for test in _nasty_type_tests):
return six.text_type(value)
return value
except TypeError:
# Class objects are tricky since they may define something like
# __iter__ defined but it isn't callable as list().
return six.text_type(value)
def dumps(value, default=to_primitive, **kwargs):
return json.dumps(value, default=default, **kwargs)
def loads(s, encoding='utf-8'):
return json.loads(strutils.safe_decode(s, encoding))
def load(fp, encoding='utf-8'):
return json.load(codecs.getreader(encoding)(fp))
try:
import anyjson
except ImportError:
pass
else:
anyjson._modules.append((__name__, 'dumps', TypeError,
'loads', ValueError, 'load'))
anyjson.force_implementation(__name__)

View File

@ -38,12 +38,12 @@ import sys
import traceback
from oslo.config import cfg
from oslo.serialization import jsonutils
import six
from six import moves
from fuel_agent.openstack.common.gettextutils import _
from fuel_agent.openstack.common import importutils
from fuel_agent.openstack.common import jsonutils
from fuel_agent.openstack.common import local

View File

@ -3,6 +3,7 @@ eventlet>=0.13.0
iso8601>=0.1.9
jsonschema>=2.3.0
oslo.config>=1.2.0
oslo.serialization>=1.0.0
six>=1.5.2
pbr>=0.7.0
Jinja2

View File

@ -15,11 +15,11 @@
# under the License.
from datetime import datetime
import six
import traceback
import six
from decorator import decorator
from oslo.serialization import jsonutils
from sqlalchemy import exc as sa_exc
import web
@ -31,7 +31,6 @@ from nailgun.errors import errors
from nailgun.logger import logger
from nailgun import objects
from nailgun.objects.serializers.base import BasicSerializer
from nailgun.openstack.common import jsonutils
from nailgun.orchestrator import deployment_graph
from nailgun.settings import settings
from nailgun import utils

View File

@ -24,6 +24,8 @@ import os
import re
import time
from oslo.serialization import jsonutils
import web
from nailgun import consts
@ -31,7 +33,6 @@ from nailgun import objects
from nailgun.api.v1.handlers.base import BaseHandler
from nailgun.api.v1.handlers.base import content
from nailgun.openstack.common import jsonutils
from nailgun.settings import settings
from nailgun.task.manager import DumpTaskManager

View File

@ -22,6 +22,8 @@ import six
import traceback
import web
from oslo.serialization import jsonutils
from nailgun.api.v1.handlers.base import BaseHandler
from nailgun.api.v1.handlers.base import content
@ -40,7 +42,6 @@ from nailgun import objects
from nailgun.errors import errors
from nailgun.logger import logger
from nailgun.openstack.common import jsonutils
from nailgun.task.manager import CheckNetworksTaskManager
from nailgun.task.manager import VerifyNetworksTaskManager

View File

@ -20,10 +20,10 @@ Product registration handlers
import base64
from oslo.serialization import jsonutils
from nailgun.api.v1.handlers.base import BaseHandler
from nailgun.api.v1.handlers.base import content
from nailgun.openstack.common import jsonutils
from nailgun.settings import settings

View File

@ -16,8 +16,9 @@
import jsonschema
from jsonschema.exceptions import ValidationError
from oslo.serialization import jsonutils
from nailgun.errors import errors
from nailgun.openstack.common import jsonutils
class BasicValidator(object):

View File

@ -16,11 +16,11 @@
import inspect
from nailgun import objects
from oslo.serialization import jsonutils
from nailgun.api.v1.handlers.base import BaseHandler
from nailgun.api.v1.urls import urls
from nailgun.openstack.common import jsonutils
from nailgun import objects
from nailgun.test.base import reverse

View File

@ -24,12 +24,12 @@ revision = '52924111f7d8'
down_revision = '1a1504d469f8'
from alembic import op
from oslo.serialization import jsonutils
import sqlalchemy as sa
from sqlalchemy.sql import text
from nailgun import consts
from nailgun.db.sqlalchemy.models.fields import JSON
from nailgun.openstack.common import jsonutils
from nailgun.utils.migration import drop_enum
from nailgun.utils.migration import upgrade_clusters_replaced_info
from nailgun.utils.migration import upgrade_enum

View File

@ -24,14 +24,14 @@ Create Date: 2014-09-18 12:44:28.327312
revision = '1b1d4016375d'
down_revision = '52924111f7d8'
from alembic import op
import sqlalchemy as sa
from sqlalchemy.sql import text
import uuid
from alembic import op
from oslo.serialization import jsonutils
import sqlalchemy as sa
from sqlalchemy.sql import text
from nailgun.db.sqlalchemy.models.fields import JSON
from nailgun.openstack.common import jsonutils
from nailgun.utils.migration import drop_enum
from nailgun.utils.migration import upgrade_release_attributes_51_to_60
from nailgun.utils.migration import upgrade_release_fill_orchestrator_data

View File

@ -25,11 +25,11 @@ revision = '37608259013'
down_revision = '1b1d4016375d'
from alembic import op
from oslo.serialization import jsonutils
import sqlalchemy as sa
from sqlalchemy.sql import text
from nailgun.db.sqlalchemy.models import fields
from nailgun.openstack.common import jsonutils
from nailgun.utils.migration import drop_enum
from nailgun.utils.migration import \
upgrade_6_0_to_6_1_plugins_cluster_attrs_use_ids_mapping

View File

@ -23,6 +23,7 @@ import StringIO
import sys
import yaml
from oslo.serialization import jsonutils
from sqlalchemy import orm
import sqlalchemy.types
@ -30,7 +31,6 @@ from nailgun.db import db
from nailgun.db.sqlalchemy import models
from nailgun.logger import logger
from nailgun import objects
from nailgun.openstack.common import jsonutils
from nailgun.settings import settings
from nailgun.utils import dict_merge

View File

@ -14,10 +14,9 @@
# License for the specific language governing permissions and limitations
# under the License.
from oslo.serialization import jsonutils
import sqlalchemy.types as types
from nailgun.openstack.common import jsonutils
class JSON(types.TypeDecorator):

View File

@ -23,7 +23,9 @@ import collections
from itertools import ifilter
import operator
from oslo.serialization import jsonutils
import six
from sqlalchemy import and_, not_
from sqlalchemy.orm import joinedload
@ -35,7 +37,6 @@ from nailgun.errors import errors
from nailgun.expression import Expression
from nailgun.openstack.common.db import api as db_api
from nailgun.openstack.common import jsonutils
_BACKEND_MAPPING = {'sqlalchemy': 'nailgun.db.sqlalchemy.api'}

View File

@ -1,180 +0,0 @@
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 2010 United States Government as represented by the
# Administrator of the National Aeronautics and Space Administration.
# Copyright 2011 Justin Santa Barbara
# All Rights Reserved.
#
# 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.
'''
JSON related utilities.
This module provides a few things:
1) A handy function for getting an object down to something that can be
JSON serialized. See to_primitive().
2) Wrappers around loads() and dumps(). The dumps() wrapper will
automatically use to_primitive() for you if needed.
3) This sets up anyjson to use the loads() and dumps() wrappers if anyjson
is available.
'''
import datetime
import functools
import inspect
import itertools
import json
try:
import xmlrpclib
except ImportError:
# NOTE(jd): xmlrpclib is not shipped with Python 3
xmlrpclib = None
import six
from nailgun.openstack.common import gettextutils
from nailgun.openstack.common import importutils
from nailgun.openstack.common import timeutils
netaddr = importutils.try_import("netaddr")
_nasty_type_tests = [inspect.ismodule, inspect.isclass, inspect.ismethod,
inspect.isfunction, inspect.isgeneratorfunction,
inspect.isgenerator, inspect.istraceback, inspect.isframe,
inspect.iscode, inspect.isbuiltin, inspect.isroutine,
inspect.isabstract]
_simple_types = (six.string_types + six.integer_types
+ (type(None), bool, float))
def to_primitive(value, convert_instances=False, convert_datetime=True,
level=0, max_depth=3):
"""Convert a complex object into primitives.
Handy for JSON serialization. We can optionally handle instances,
but since this is a recursive function, we could have cyclical
data structures.
To handle cyclical data structures we could track the actual objects
visited in a set, but not all objects are hashable. Instead we just
track the depth of the object inspections and don't go too deep.
Therefore, convert_instances=True is lossy ... be aware.
"""
# handle obvious types first - order of basic types determined by running
# full tests on nova project, resulting in the following counts:
# 572754 <type 'NoneType'>
# 460353 <type 'int'>
# 379632 <type 'unicode'>
# 274610 <type 'str'>
# 199918 <type 'dict'>
# 114200 <type 'datetime.datetime'>
# 51817 <type 'bool'>
# 26164 <type 'list'>
# 6491 <type 'float'>
# 283 <type 'tuple'>
# 19 <type 'long'>
if isinstance(value, _simple_types):
return value
if isinstance(value, datetime.datetime):
if convert_datetime:
return timeutils.strtime(value)
else:
return value
# value of itertools.count doesn't get caught by nasty_type_tests
# and results in infinite loop when list(value) is called.
if type(value) == itertools.count:
return six.text_type(value)
# FIXME(vish): Workaround for LP bug 852095. Without this workaround,
# tests that raise an exception in a mocked method that
# has a @wrap_exception with a notifier will fail. If
# we up the dependency to 0.5.4 (when it is released) we
# can remove this workaround.
if getattr(value, '__module__', None) == 'mox':
return 'mock'
if level > max_depth:
return '?'
# The try block may not be necessary after the class check above,
# but just in case ...
try:
recursive = functools.partial(to_primitive,
convert_instances=convert_instances,
convert_datetime=convert_datetime,
level=level,
max_depth=max_depth)
if isinstance(value, dict):
return dict((k, recursive(v)) for k, v in value.iteritems())
elif isinstance(value, (list, tuple)):
return [recursive(lv) for lv in value]
# It's not clear why xmlrpclib created their own DateTime type, but
# for our purposes, make it a datetime type which is explicitly
# handled
if xmlrpclib and isinstance(value, xmlrpclib.DateTime):
value = datetime.datetime(*tuple(value.timetuple())[:6])
if convert_datetime and isinstance(value, datetime.datetime):
return timeutils.strtime(value)
elif isinstance(value, gettextutils.Message):
return value.data
elif hasattr(value, 'iteritems'):
return recursive(dict(value.iteritems()), level=level + 1)
elif hasattr(value, '__iter__'):
return recursive(list(value))
elif convert_instances and hasattr(value, '__dict__'):
# Likely an instance of something. Watch for cycles.
# Ignore class member vars.
return recursive(value.__dict__, level=level + 1)
elif netaddr and isinstance(value, netaddr.IPAddress):
return six.text_type(value)
else:
if any(test(value) for test in _nasty_type_tests):
return six.text_type(value)
return value
except TypeError:
# Class objects are tricky since they may define something like
# __iter__ defined but it isn't callable as list().
return six.text_type(value)
def dumps(value, default=to_primitive, **kwargs):
return json.dumps(value, default=default, **kwargs)
def loads(s):
return json.loads(s)
def load(s):
return json.load(s)
try:
import anyjson
except ImportError:
pass
else:
anyjson._modules.append((__name__, 'dumps', TypeError,
'loads', ValueError, 'load'))
anyjson.force_implementation(__name__)

View File

@ -40,12 +40,12 @@ import sys
import traceback
from oslo.config import cfg
from oslo.serialization import jsonutils
import six
from six import moves
from nailgun.openstack.common.gettextutils import _ # noqa
from nailgun.openstack.common import importutils
from nailgun.openstack.common import jsonutils
from nailgun.openstack.common import local

View File

@ -17,14 +17,13 @@
import six
import functools
import amqp.exceptions as amqp_exceptions
from kombu import Connection
from kombu import Exchange
from oslo.serialization import jsonutils
from kombu import Queue
import amqp.exceptions as amqp_exceptions
from nailgun.logger import logger
from nailgun.openstack.common import jsonutils
from nailgun.settings import settings
from nailgun.rpc import utils

View File

@ -22,6 +22,7 @@ import os
import six
import traceback
from oslo.serialization import jsonutils
from sqlalchemy import or_
from nailgun import consts
@ -36,7 +37,6 @@ from nailgun.db.sqlalchemy.models import Node
from nailgun.db.sqlalchemy.models import Release
from nailgun.logger import logger
from nailgun.network import utils as net_utils
from nailgun.openstack.common import jsonutils
from nailgun.task.helpers import TaskHelper

View File

@ -15,18 +15,17 @@
# under the License.
import requests
import six
import time
import urllib3
import six
import time
from oslo.serialization import jsonutils
from nailgun import consts
from nailgun.db import db
from nailgun.db.sqlalchemy import models
from nailgun.logger import logger
from nailgun import objects
from nailgun.openstack.common import jsonutils
from nailgun.settings import settings
from nailgun.statistics.installation_info import InstallationInfo
from nailgun.statistics.utils import dithered

View File

@ -16,6 +16,8 @@
import traceback
from oslo.serialization import jsonutils
from nailgun.objects.serializers.network_configuration \
import NeutronNetworkConfigurationSerializer
from nailgun.objects.serializers.network_configuration \
@ -28,7 +30,6 @@ from nailgun.db.sqlalchemy.models import Task
from nailgun.errors import errors
from nailgun.logger import logger
from nailgun import objects
from nailgun.openstack.common import jsonutils
import nailgun.rpc as rpc
from nailgun.task import task as tasks
from nailgun.task.task import TaskHelper

View File

@ -31,6 +31,8 @@ from itertools import izip
from netaddr import IPNetwork
from random import randint
from oslo.serialization import jsonutils
import web
from webtest import app
@ -62,7 +64,6 @@ from nailgun.app import build_app
from nailgun.consts import NETWORK_INTERFACE_TYPES
from nailgun.middleware.keystone import NailgunFakeKeystoneAuthMiddleware
from nailgun.network.manager import NetworkManager
from nailgun.openstack.common import jsonutils
class TimeoutError(Exception):

View File

@ -16,10 +16,11 @@
import six
from oslo.serialization import jsonutils
from nailgun import objects
from nailgun.db.sqlalchemy.models import Release
from nailgun.openstack.common import jsonutils
from nailgun.settings import settings
from nailgun.test.base import BaseIntegrationTest
from nailgun.test.base import reverse

View File

@ -16,7 +16,8 @@
import copy
from nailgun.openstack.common import jsonutils
from oslo.serialization import jsonutils
from nailgun.test.base import BaseAuthenticationIntegrationTest
from nailgun.settings import settings

View File

@ -13,12 +13,12 @@
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from oslo.serialization import jsonutils
from nailgun import objects
from nailgun.db.sqlalchemy.models import Cluster
from nailgun.db.sqlalchemy.models import ClusterChanges
from nailgun.openstack.common import jsonutils
from nailgun.test.base import BaseIntegrationTest
from nailgun.test.base import fake_tasks
from nailgun.test.base import reverse

View File

@ -18,6 +18,8 @@ from copy import deepcopy
from mock import patch
import netaddr
from oslo.serialization import jsonutils
import nailgun
from nailgun import consts
@ -26,7 +28,6 @@ from nailgun import objects
from nailgun.db.sqlalchemy import models
from nailgun.db.sqlalchemy.models import NetworkGroup
from nailgun.network.manager import NetworkManager
from nailgun.openstack.common import jsonutils
from nailgun.settings import settings
from nailgun.test.base import BaseIntegrationTest
from nailgun.test.base import fake_tasks

View File

@ -15,6 +15,7 @@
# under the License.
from mock import patch
from oslo.serialization import jsonutils
from sqlalchemy.sql import not_
from nailgun import objects
@ -23,7 +24,6 @@ from nailgun.db.sqlalchemy.models import Cluster
from nailgun.db.sqlalchemy.models import NetworkGroup
from nailgun.db.sqlalchemy.models import Release
from nailgun.network.nova_network import NovaNetworkManager
from nailgun.openstack.common import jsonutils
from nailgun.test.base import BaseIntegrationTest
from nailgun.test.base import reverse

View File

@ -17,13 +17,13 @@
from copy import deepcopy
from mock import patch
from oslo.serialization import jsonutils
import nailgun
from nailgun.db.sqlalchemy.models import Cluster
from nailgun.db.sqlalchemy.models import NetworkGroup
from nailgun.db.sqlalchemy.models import Node
from nailgun import objects
from nailgun.openstack.common import jsonutils
from nailgun.test.base import BaseIntegrationTest
from nailgun.test.base import fake_tasks
from nailgun.test.base import reverse

View File

@ -15,12 +15,12 @@
# under the License.
import cStringIO
from oslo.serialization import jsonutils
import yaml
from nailgun.db.sqlalchemy.fixman import upload_fixture
from nailgun.db.sqlalchemy.models import Node
from nailgun.db.sqlalchemy.models import Release
from nailgun.openstack.common import jsonutils
from nailgun.test.base import BaseIntegrationTest

View File

@ -15,10 +15,10 @@
# under the License.
from mock import patch
from oslo.serialization import jsonutils
import yaml
from nailgun import objects
from nailgun.openstack.common import jsonutils
from nailgun.orchestrator.deployment_graph import DeploymentGraph
from nailgun.test.base import BaseIntegrationTest
from nailgun.test.base import reverse

View File

@ -15,11 +15,11 @@
import copy
import uuid
from oslo.serialization import jsonutils
from nailgun.test.base import BaseIntegrationTest
from nailgun.test.base import reverse
from nailgun.openstack.common import jsonutils
from nailgun import objects
from nailgun.statistics.installation_info import InstallationInfo

View File

@ -16,12 +16,12 @@
from mock import patch
from oslo.serialization import jsonutils
from sqlalchemy.sql import not_
from nailgun.db.sqlalchemy.models import Cluster
from nailgun.db.sqlalchemy.models import NetworkGroup
from nailgun.network.manager import NetworkManager
from nailgun.openstack.common import jsonutils
from nailgun.test.base import BaseIntegrationTest
from nailgun.test.base import reverse

View File

@ -14,6 +14,7 @@
# License for the specific language governing permissions and limitations
# under the License.
from oslo.serialization import jsonutils
from nailgun.objects.serializers.network_configuration \
import NeutronNetworkConfigurationSerializer
@ -22,7 +23,6 @@ from nailgun.objects.serializers.network_configuration \
from nailgun.db.sqlalchemy.models import NeutronConfig
from nailgun.db.sqlalchemy.models import NovaNetworkConfig
from nailgun.openstack.common import jsonutils
from nailgun.test.base import BaseIntegrationTest
from nailgun.test.base import fake_tasks
from nailgun.test.base import reverse

View File

@ -14,9 +14,10 @@
# License for the specific language governing permissions and limitations
# under the License.
from oslo.serialization import jsonutils
from nailgun.db.sqlalchemy.models import Node
from nailgun.db.sqlalchemy.models import Notification
from nailgun.openstack.common import jsonutils
from nailgun.test.base import BaseIntegrationTest
from nailgun.test.base import reverse

View File

@ -14,12 +14,12 @@
# License for the specific language governing permissions and limitations
# under the License.
from oslo.serialization import jsonutils
from nailgun import consts
from nailgun import objects
from nailgun.db.sqlalchemy.models import Node
from nailgun.openstack.common import jsonutils
from nailgun.test.base import BaseIntegrationTest
from nailgun.test.base import fake_tasks
from nailgun.test.base import reverse

View File

@ -17,9 +17,10 @@
from copy import deepcopy
from netaddr import IPNetwork
from oslo.serialization import jsonutils
from nailgun.db.sqlalchemy.models import Cluster
from nailgun.db.sqlalchemy.models import NetworkNICAssignment
from nailgun.openstack.common import jsonutils
from nailgun.test.base import BaseIntegrationTest
from nailgun.test.base import reverse

View File

@ -14,8 +14,9 @@
# License for the specific language governing permissions and limitations
# under the License.
from oslo.serialization import jsonutils
from nailgun import consts
from nailgun.openstack.common import jsonutils
from nailgun.test.base import BaseIntegrationTest
from nailgun.test.base import fake_tasks
from nailgun.test.base import reverse

View File

@ -14,9 +14,10 @@
# License for the specific language governing permissions and limitations
# under the License.
from oslo.serialization import jsonutils
from nailgun.consts import NETWORK_INTERFACE_TYPES
from nailgun.consts import OVS_BOND_MODES
from nailgun.openstack.common import jsonutils
from nailgun.test.base import BaseIntegrationTest
from nailgun.test.base import reverse

View File

@ -16,11 +16,12 @@
import uuid
from oslo.serialization import jsonutils
from nailgun.db.sqlalchemy.models import Notification
from nailgun.db.sqlalchemy.models import Task
from nailgun.errors import errors
from nailgun import notifier
from nailgun.openstack.common import jsonutils
from nailgun.rpc import receiver as rcvr
from nailgun.test.base import BaseIntegrationTest
from nailgun.test.base import reverse

View File

@ -14,15 +14,15 @@
# License for the specific language governing permissions and limitations
# under the License.
from mock import patch
from oslo.serialization import jsonutils
import nailgun
from nailgun import consts
from nailgun import objects
from mock import patch
from nailgun.db.sqlalchemy.models import Cluster
from nailgun.openstack.common import jsonutils
from nailgun.test.base import BaseIntegrationTest
from nailgun.test.base import fake_tasks
from nailgun.test.base import reverse

View File

@ -22,12 +22,12 @@ import re
import mock
from netaddr import IPNetwork
from netaddr import IPRange
from oslo.serialization import jsonutils
from nailgun.consts import OVS_BOND_MODES
from nailgun.db.sqlalchemy.models import Cluster
from nailgun.db.sqlalchemy.models import NetworkGroup
from nailgun.db.sqlalchemy.models import Node
from nailgun.openstack.common import jsonutils
from nailgun.orchestrator.deployment_serializers import\
DeploymentHASerializer

View File

@ -14,12 +14,11 @@
# License for the specific language governing permissions and limitations
# under the License.
import mock
from oslo.serialization import jsonutils
import yaml
from nailgun import objects
from nailgun.openstack.common import jsonutils
from nailgun.plugins import attr_plugin
from nailgun.test import base

View File

@ -15,8 +15,8 @@
# under the License.
from mock import patch
from oslo.serialization import jsonutils
from nailgun.openstack.common import jsonutils
from nailgun.test.base import BaseAuthenticationIntegrationTest
from nailgun.test.base import reverse

View File

@ -13,8 +13,8 @@
# under the License.
from mock import patch
from oslo.serialization import jsonutils
from nailgun.openstack.common import jsonutils
from nailgun.test import base

View File

@ -12,8 +12,8 @@
# License for the specific language governing permissions and limitations
# under the License.
from oslo.serialization import jsonutils
from nailgun.openstack.common import jsonutils
from nailgun.test.base import BaseIntegrationTest
from nailgun.test.base import reverse

View File

@ -14,7 +14,7 @@
# License for the specific language governing permissions and limitations
# under the License.
from nailgun.openstack.common import jsonutils
from oslo.serialization import jsonutils
from nailgun.db.sqlalchemy.models import Notification

View File

@ -14,10 +14,10 @@
# License for the specific language governing permissions and limitations
# under the License.
from oslo.serialization import jsonutils
from sqlalchemy.exc import IntegrityError
from nailgun.db.sqlalchemy.models import Role
from nailgun.openstack.common import jsonutils
from nailgun.test.base import BaseIntegrationTest
from nailgun.test.base import reverse

View File

@ -15,8 +15,8 @@
# under the License.
from mock import patch
from oslo.serialization import jsonutils
from nailgun.openstack.common import jsonutils
from nailgun.test import base
from nailgun.test.base import reverse
from nailgun.volumes import manager

View File

@ -23,11 +23,12 @@ import time
from timeit import Timer
from webtest import app
from oslo.serialization import jsonutils
from nailgun.app import build_app
from nailgun.db import db
from nailgun.db import flush
from nailgun.db import syncdb
from nailgun.openstack.common import jsonutils
from nailgun.settings import settings
from nailgun.test.base import BaseTestCase
from nailgun.test.base import EnvironmentManager

View File

@ -18,10 +18,10 @@ import csv
from datetime import datetime
import os
from oslo.serialization import jsonutils
import pytz
import six
from nailgun.openstack.common import jsonutils
from nailgun.settings import settings

View File

@ -16,9 +16,9 @@
import functools
import unittest2 as unittest
from oslo.serialization import jsonutils
from random import randint
from nailgun.openstack.common import jsonutils
from nailgun.test.base import fake_tasks
from nailgun.test.performance import base

View File

@ -16,8 +16,9 @@
import functools
import random
from oslo.serialization import jsonutils
from nailgun import consts
from nailgun.openstack.common import jsonutils
from nailgun.test.base import fake_tasks
from nailgun.test.performance import base
from nailgun.test.utils import random_string

View File

@ -16,8 +16,8 @@
import base64
from mock import patch
from oslo.serialization import jsonutils
from nailgun.openstack.common import jsonutils
from nailgun.test.base import BaseTestCase
from nailgun.test.base import reverse

View File

@ -21,12 +21,12 @@ import time
from mock import Mock
from mock import patch
from oslo.serialization import jsonutils
import nailgun
from nailgun.api.v1.handlers.logs import read_backwards
from nailgun.db.sqlalchemy.models import Role
from nailgun.errors import errors
from nailgun.openstack.common import jsonutils
from nailgun.settings import settings
from nailgun.task.manager import DumpTaskManager
from nailgun.task.task import DumpTask

View File

@ -14,9 +14,10 @@
# License for the specific language governing permissions and limitations
# under the License.
from oslo.serialization import jsonutils
from nailgun.db.sqlalchemy.models import NodeBondInterface
from nailgun.openstack.common import jsonutils
from nailgun.test.base import BaseIntegrationTest
from nailgun.test.base import reverse

View File

@ -18,8 +18,9 @@ from copy import deepcopy
from mock import patch
import string
from oslo.serialization import jsonutils
from nailgun.errors import errors
from nailgun.openstack.common import jsonutils
from nailgun.test.base import BaseIntegrationTest
from nailgun.test.base import fake_tasks
from nailgun.test.base import reverse

View File

@ -14,7 +14,8 @@
# License for the specific language governing permissions and limitations
# under the License.
from nailgun.openstack.common import jsonutils
from oslo.serialization import jsonutils
from nailgun.test.base import BaseIntegrationTest
from nailgun.test.base import reverse

View File

@ -14,7 +14,8 @@
# License for the specific language governing permissions and limitations
# under the License.
from nailgun.openstack.common import jsonutils
from oslo.serialization import jsonutils
from nailgun.test.base import BaseIntegrationTest
from nailgun.test.base import reverse

View File

@ -14,7 +14,8 @@
# License for the specific language governing permissions and limitations
# under the License.
from nailgun.openstack.common import jsonutils
from oslo.serialization import jsonutils
from nailgun.test.base import BaseIntegrationTest
from nailgun.test.base import reverse

View File

@ -25,6 +25,7 @@ from itertools import cycle
from itertools import ifilter
import mock
from oslo.serialization import jsonutils
from nailgun.test.base import BaseIntegrationTest
from nailgun.test.base import BaseTestCase
@ -38,8 +39,6 @@ from nailgun.db import NoCacheQuery
from nailgun.db.sqlalchemy.models import NodeBondInterface
from nailgun.db.sqlalchemy.models import Task
from nailgun.openstack.common import jsonutils
from nailgun import objects
from nailgun.settings import settings

View File

@ -13,12 +13,14 @@
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from uuid import uuid4
from mock import patch
from oslo.serialization import jsonutils
from nailgun.db.sqlalchemy.models import Release
from nailgun.openstack.common import jsonutils
from nailgun.test.base import BaseIntegrationTest
from nailgun.test.base import reverse
from uuid import uuid4
class TestHandlers(BaseIntegrationTest):

View File

@ -15,9 +15,9 @@
# under the License.
import mock
from oslo.serialization import jsonutils
from nailgun.db.sqlalchemy.models import Release
from nailgun.openstack.common import jsonutils
from nailgun.settings import settings
from nailgun.test.base import BaseIntegrationTest
from nailgun.test.base import reverse

View File

@ -11,7 +11,7 @@
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from nailgun.openstack.common import jsonutils
from oslo.serialization import jsonutils
from nailgun.api.v1.validators.release import ReleaseValidator
from nailgun.errors import errors

View File

@ -14,12 +14,12 @@
# under the License.
from mock import patch
from oslo.serialization import jsonutils
from nailgun import consts
from nailgun.db.sqlalchemy.models import Task
from nailgun.errors import errors
from nailgun import objects
from nailgun.openstack.common import jsonutils
from nailgun.task.task import CheckBeforeDeploymentTask
from nailgun.test.base import BaseTestCase
from nailgun.test.base import reverse

View File

@ -12,13 +12,14 @@
# License for the specific language governing permissions and limitations
# under the License.
from alembic import op
import re
from alembic import op
from oslo.serialization import jsonutils
import six
import sqlalchemy as sa
from sqlalchemy.sql import text
from nailgun.openstack.common import jsonutils
from nailgun.settings import settings

View File

@ -21,9 +21,11 @@ All sizes in megabytes.
from copy import deepcopy
from functools import partial
from oslo.serialization import jsonutils
from nailgun.errors import errors
from nailgun.logger import logger
from nailgun.openstack.common import jsonutils
def is_service(space):

View File

@ -15,6 +15,7 @@ jsonschema==2.3.0
kombu==3.0.16
netaddr>=0.7.10
oslo.config>=1.2.1
oslo.serialization>=1.0.0
ply==3.4
psycopg2==2.5.1
pycrypto==2.6.1