93c8e006ce
This patch updates the Octavia documentation in support of the OpenStack documentation migration[1]. [1] https://specs.openstack.org/openstack/docs-specs/specs \ /pike/os-manuals-migration.html Change-Id: I97fd038b8050bfe776c3fca8336d9090f8236362 Depends-On: Ia750cb049c0f53a234ea70ce1f2bbbb7a2aa9454
56 lines
2.2 KiB
Python
56 lines
2.2 KiB
Python
# Copyright 2016
|
|
# 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.
|
|
|
|
"""Decorators to provide backwards compatibility for V1 API."""
|
|
|
|
|
|
def rename_kwargs(**renamed_kwargs):
|
|
"""Renames a class's variables and maintains backwards compatibility.
|
|
|
|
:param renamed_kwargs: mapping of old kwargs to new kwargs. For example,
|
|
to say a class has renamed variable foo to bar the
|
|
decorator would be used like:
|
|
rename_kwargs(foo='bar')
|
|
|
|
"""
|
|
|
|
def wrap(cls):
|
|
def __getattr__(instance, name):
|
|
if name in renamed_kwargs:
|
|
return getattr(instance, renamed_kwargs[name])
|
|
return getattr(instance, name)
|
|
|
|
def __setattr__(instance, name, value):
|
|
if name in renamed_kwargs:
|
|
instance.__dict__[renamed_kwargs[name]] = value
|
|
else:
|
|
instance.__dict__[name] = value
|
|
|
|
def wrapped_cls(*args, **kwargs):
|
|
# Handle cases of inner classes being called with self
|
|
# For example: self.TestClass(1, a=1)
|
|
if (args and hasattr(args[0], '__class__') and
|
|
hasattr(args[0].__class__, cls.__name__)):
|
|
args = args[1:] if args else tuple()
|
|
for old_kwarg, new_kwarg in renamed_kwargs.items():
|
|
if old_kwarg in kwargs:
|
|
kwargs[new_kwarg] = kwargs[old_kwarg]
|
|
del kwargs[old_kwarg]
|
|
cls.__getattr__ = __getattr__
|
|
cls.__setattr__ = __setattr__
|
|
return cls(*args, **kwargs)
|
|
return wrapped_cls
|
|
return wrap
|