Fix usage of various deprecated methods

Our unittest output complains about some of the codebase,
described in more detail in the referred bug. This change
fixes all of those places.

static_root is now set only if debug=True is set in pecan
configuration.

Logging is now setup as part of the conf module import,
so that unittests can use it.

Closes-Bug: #1668240
Change-Id: I2536bd2b174e0d224ddf6806f1be37bd29017669
This commit is contained in:
Vladyslav Drok 2017-02-27 13:37:37 +02:00
parent f6bad6fb9e
commit 7fd26bf803
8 changed files with 36 additions and 32 deletions

View File

@ -52,8 +52,8 @@ def setup_app(pecan_config=None, extra_hooks=None):
app = pecan.make_app(
pecan_config.app.root,
static_root=pecan_config.app.static_root,
debug=CONF.pecan_debug,
static_root=pecan_config.app.static_root if CONF.pecan_debug else None,
force_canonical=getattr(pecan_config.app, 'force_canonical', True),
hooks=app_hooks,
wrap_app=middleware.ParsableErrorMiddleware,
@ -81,7 +81,7 @@ def setup_app(pecan_config=None, extra_hooks=None):
# Create a CORS wrapper, and attach ironic-specific defaults that must be
# included in all CORS responses.
app = cors_middleware.CORS(app, CONF)
app.set_latent(
cors_middleware.set_defaults(
allow_headers=[base.Version.max_string, base.Version.min_string,
base.Version.string],
allow_methods=['GET', 'PUT', 'POST', 'DELETE', 'PATCH'],

View File

@ -109,7 +109,7 @@ class RootController(rest.RestController):
return Root.convert()
@pecan.expose()
def _route(self, args):
def _route(self, args, request=None):
"""Overrides the default routing behavior.
It redirects the request to the default version of the ironic API
@ -118,4 +118,4 @@ class RootController(rest.RestController):
if args[0] and args[0] not in self._versions:
args = [self._default_version] + args
return super(RootController, self)._route(args)
return super(RootController, self)._route(args, request)

View File

@ -199,7 +199,7 @@ class Controller(rest.RestController):
headers=headers)
@pecan.expose()
def _route(self, args):
def _route(self, args, request=None):
v = base.Version(pecan.request.headers, versions.MIN_VERSION_STRING,
versions.MAX_VERSION_STRING)
@ -214,7 +214,7 @@ class Controller(rest.RestController):
pecan.response.headers[base.Version.string] = str(v)
pecan.request.version = v
return super(Controller, self)._route(args)
return super(Controller, self)._route(args, request)
__all__ = ('Controller',)

View File

@ -237,19 +237,21 @@ class PortgroupsController(pecan.rest.RestController):
}
@pecan.expose()
def _lookup(self, ident, subres, *remainder):
def _lookup(self, ident, *remainder):
if not api_utils.allow_portgroups():
pecan.abort(http_client.NOT_FOUND)
try:
ident = types.uuid_or_name.validate(ident)
except exception.InvalidUuidOrName as e:
pecan.abort(http_client.BAD_REQUEST, e.args[0])
subcontroller = self._subcontroller_map.get(subres)
if not remainder:
return
subcontroller = self._subcontroller_map.get(remainder[0])
if subcontroller:
if api_utils.allow_portgroups_subcontrollers():
return subcontroller(
portgroup_ident=ident,
node_ident=self.parent_node_ident), remainder
node_ident=self.parent_node_ident), remainder[1:]
pecan.abort(http_client.NOT_FOUND)
def __init__(self, node_ident=None):

View File

@ -14,7 +14,6 @@
# License for the specific language governing permissions and limitations
# under the License.
from oslo_log import log
from oslo_service import service
from ironic.common import config
@ -24,25 +23,7 @@ from ironic import objects
def prepare_service(argv=None):
argv = [] if argv is None else argv
log.register_options(CONF)
log.set_defaults(default_log_levels=['amqp=WARNING',
'amqplib=WARNING',
'qpid.messaging=INFO',
'oslo_messaging=INFO',
'sqlalchemy=WARNING',
'stevedore=INFO',
'eventlet.wsgi.server=INFO',
'iso8601=WARNING',
'paramiko=WARNING',
'requests=WARNING',
'neutronclient=WARNING',
'glanceclient=WARNING',
'urllib3.connectionpool=WARNING',
'keystonemiddleware.auth_token=INFO',
'keystoneauth.session=INFO',
])
config.parse_args(argv)
log.setup(CONF, 'ironic')
objects.register_all()

View File

@ -14,6 +14,7 @@
# under the License.
from oslo_config import cfg
from oslo_log import log
from ironic.conf import agent
from ironic.conf import api
@ -45,6 +46,26 @@ from ironic.conf import swift
CONF = cfg.CONF
log.register_options(CONF)
log.set_defaults(default_log_levels=[
'amqp=WARNING',
'amqplib=WARNING',
'qpid.messaging=INFO',
'oslo_messaging=INFO',
'sqlalchemy=WARNING',
'stevedore=INFO',
'eventlet.wsgi.server=INFO',
'iso8601=WARNING',
'paramiko=WARNING',
'requests=WARNING',
'neutronclient=WARNING',
'glanceclient=WARNING',
'urllib3.connectionpool=WARNING',
'keystonemiddleware.auth_token=INFO',
'keystoneauth.session=INFO',
])
log.setup(CONF, 'ironic')
agent.register_opts(CONF)
api.register_opts(CONF)
audit.register_opts(CONF)

View File

@ -70,6 +70,7 @@ class BaseApiTest(base.DbTestCase):
'root': 'ironic.api.controllers.root.RootController',
'modules': ['ironic.api'],
'static_root': '%s/public' % root_dir,
'debug': True,
'template_path': '%s/api/templates' % root_dir,
'acl_public_routes': ['/', '/v1'],
},

View File

@ -3230,10 +3230,9 @@ class UpdatePortTestCase(mgr_utils.ServiceSetUpMixin,
@mock.patch.object(n_flat.FlatNetwork, 'port_changed', autospec=True)
@mock.patch.object(n_flat.FlatNetwork, 'validate', autospec=True)
def test_update_port_address_maintenance(self, mock_val, mock_pc):
node = obj_utils.create_test_node(self.context, driver='fake',
instance_uuid='uuid',
provision_state='active',
maintenance=True)
node = obj_utils.create_test_node(
self.context, driver='fake', maintenance=True,
instance_uuid=uuidutils.generate_uuid(), provision_state='active')
port = obj_utils.create_test_port(self.context,
node_id=node.id,
extra={'vif_port_id': 'fake-id'})