Deprecate CONF.monkey_patch
This option, along with monkey_patch_modules, is arguably worse than hooks since it doesn't even rely on having in-tree code. It's super legacy, not tested, not supported and is a barrier to interoperability, so we should deprecate it for removal. This also allows us to deprecate the default_publisher_id option which is used for the legacy notify_decorator which is only used if specified with the monkey_patch_modules option, which is also deprecated here. Also removed the nova.api.ec2.cloud mention from the config option help text for monkey_patch_modules since that isn't valid in nova anymore. Change-Id: Id793ac2c5cdc5dc473f95eac53b77617a1e389da
This commit is contained in:
parent
1080506f16
commit
a3bc1b067b
nova
releasenotes/notes
@ -63,6 +63,12 @@ entry.
|
|||||||
cfg.BoolOpt(
|
cfg.BoolOpt(
|
||||||
'monkey_patch',
|
'monkey_patch',
|
||||||
default=False,
|
default=False,
|
||||||
|
deprecated_for_removal=True,
|
||||||
|
deprecated_since='17.0.0',
|
||||||
|
deprecated_reason="""
|
||||||
|
Monkey patching nova is not tested, not supported, and is a barrier
|
||||||
|
for interoperability.
|
||||||
|
""",
|
||||||
help="""
|
help="""
|
||||||
Determine if monkey patching should be applied.
|
Determine if monkey patching should be applied.
|
||||||
|
|
||||||
@ -74,6 +80,12 @@ Related options:
|
|||||||
cfg.ListOpt(
|
cfg.ListOpt(
|
||||||
'monkey_patch_modules',
|
'monkey_patch_modules',
|
||||||
default=['nova.compute.api:nova.notifications.notify_decorator'],
|
default=['nova.compute.api:nova.notifications.notify_decorator'],
|
||||||
|
deprecated_for_removal=True,
|
||||||
|
deprecated_since='17.0.0',
|
||||||
|
deprecated_reason="""
|
||||||
|
Monkey patching nova is not tested, not supported, and is a barrier
|
||||||
|
for interoperability.
|
||||||
|
""",
|
||||||
help="""
|
help="""
|
||||||
List of modules/decorators to monkey patch.
|
List of modules/decorators to monkey patch.
|
||||||
|
|
||||||
@ -83,7 +95,6 @@ modules.
|
|||||||
Possible values:
|
Possible values:
|
||||||
|
|
||||||
* nova.compute.api:nova.notifications.notify_decorator
|
* nova.compute.api:nova.notifications.notify_decorator
|
||||||
* nova.api.ec2.cloud:nova.notifications.notify_decorator
|
|
||||||
* [...]
|
* [...]
|
||||||
|
|
||||||
Related options:
|
Related options:
|
||||||
|
@ -67,6 +67,14 @@ API service.
|
|||||||
'default_publisher_id',
|
'default_publisher_id',
|
||||||
default='$my_ip',
|
default='$my_ip',
|
||||||
deprecated_group='DEFAULT',
|
deprecated_group='DEFAULT',
|
||||||
|
deprecated_for_removal=True,
|
||||||
|
deprecated_since='17.0.0',
|
||||||
|
deprecated_reason="""
|
||||||
|
This option is only used when ``monkey_patch=True`` and
|
||||||
|
``monkey_patch_modules`` is configured to specify the legacy notify_decorator.
|
||||||
|
Since the monkey_patch and monkey_patch_modules options are deprecated, this
|
||||||
|
option is also deprecated.
|
||||||
|
""",
|
||||||
help="""
|
help="""
|
||||||
Default publisher_id for outgoing notifications. If you consider routing
|
Default publisher_id for outgoing notifications. If you consider routing
|
||||||
notifications using different publisher, change this value accordingly.
|
notifications using different publisher, change this value accordingly.
|
||||||
|
@ -46,6 +46,8 @@ LOG = log.getLogger(__name__)
|
|||||||
CONF = nova.conf.CONF
|
CONF = nova.conf.CONF
|
||||||
|
|
||||||
|
|
||||||
|
# TODO(mriedem): Remove this when CONF.monkey_patch, CONF.monkey_patch_modules
|
||||||
|
# and CONF.default_publisher_id are removed in Rocky.
|
||||||
def notify_decorator(name, fn):
|
def notify_decorator(name, fn):
|
||||||
"""Decorator for notify which is used from utils.monkey_patch().
|
"""Decorator for notify which is used from utils.monkey_patch().
|
||||||
|
|
||||||
|
@ -498,8 +498,9 @@ def format_remote_path(host, path):
|
|||||||
return "%s:%s" % (safe_ip_format(host), path)
|
return "%s:%s" % (safe_ip_format(host), path)
|
||||||
|
|
||||||
|
|
||||||
|
# TODO(mriedem): Remove this in Rocky.
|
||||||
def monkey_patch():
|
def monkey_patch():
|
||||||
"""If the CONF.monkey_patch set as True,
|
"""DEPRECATED: If the CONF.monkey_patch set as True,
|
||||||
this function patches a decorator
|
this function patches a decorator
|
||||||
for all functions in specified modules.
|
for all functions in specified modules.
|
||||||
You can set decorators for each modules
|
You can set decorators for each modules
|
||||||
@ -517,6 +518,7 @@ def monkey_patch():
|
|||||||
# If CONF.monkey_patch is not True, this function do nothing.
|
# If CONF.monkey_patch is not True, this function do nothing.
|
||||||
if not CONF.monkey_patch:
|
if not CONF.monkey_patch:
|
||||||
return
|
return
|
||||||
|
LOG.warning('Monkey patching nova is deprecated for removal.')
|
||||||
if six.PY2:
|
if six.PY2:
|
||||||
is_method = inspect.ismethod
|
is_method = inspect.ismethod
|
||||||
else:
|
else:
|
||||||
|
@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
deprecations:
|
||||||
|
- |
|
||||||
|
The following configuration options are deprecated for removal:
|
||||||
|
|
||||||
|
- ``[DEFAULT]/monkey_patch``
|
||||||
|
- ``[DEFAULT]/monkey_patch_modules``
|
||||||
|
|
||||||
|
Monkey patching nova is not tested, not supported, and is a barrier to
|
||||||
|
interoperability. If you have code which relies on monkey patching
|
||||||
|
decorators, for example, for notifications, please propose those changes
|
||||||
|
upstream.
|
||||||
|
|
||||||
|
As a result, the following option is also deprecated for removal since it
|
||||||
|
is only used when specified with ``[DEFAULT]/monkey_patch_modules``:
|
||||||
|
|
||||||
|
- ``[notifications]/default_publisher_id``
|
Loading…
Reference in New Issue
Block a user