diff options
Diffstat (limited to 'openstackclient/common')
| -rw-r--r-- | openstackclient/common/clientmanager.py | 20 | ||||
| -rw-r--r-- | openstackclient/common/command.py | 42 | ||||
| -rw-r--r-- | openstackclient/common/utils.py | 22 |
3 files changed, 75 insertions, 9 deletions
diff --git a/openstackclient/common/clientmanager.py b/openstackclient/common/clientmanager.py index edabf65e..dce19725 100644 --- a/openstackclient/common/clientmanager.py +++ b/openstackclient/common/clientmanager.py @@ -191,6 +191,26 @@ class ClientManager(object): self._auth_ref = self.auth.get_auth_ref(self.session) return self._auth_ref + def is_network_endpoint_enabled(self): + """Check if the network endpoint is enabled""" + # Trigger authentication necessary to determine if the network + # endpoint is enabled. + if self.auth_ref: + service_catalog = self.auth_ref.service_catalog + else: + service_catalog = None + # Assume that the network endpoint is enabled. + network_endpoint_enabled = True + if service_catalog: + if 'network' in service_catalog.get_endpoints(): + LOG.debug("Network endpoint in service catalog") + else: + LOG.debug("No network endpoint in service catalog") + network_endpoint_enabled = False + else: + LOG.debug("No service catalog, assuming network endpoint enabled") + return network_endpoint_enabled + def get_endpoint_for_service_type(self, service_type, region_name=None, interface='public'): """Return the endpoint URL for the service type.""" diff --git a/openstackclient/common/command.py b/openstackclient/common/command.py new file mode 100644 index 00000000..b8d9fc6f --- /dev/null +++ b/openstackclient/common/command.py @@ -0,0 +1,42 @@ +# Copyright 2016 NEC Corporation +# +# 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. + +import abc +import logging + +from cliff import command +from cliff import lister +from cliff import show +import six + + +class CommandMeta(abc.ABCMeta): + def __new__(mcs, name, bases, cls_dict): + if 'log' not in cls_dict: + cls_dict['log'] = logging.getLogger( + cls_dict['__module__'] + '.' + name) + return super(CommandMeta, mcs).__new__(mcs, name, bases, cls_dict) + + +@six.add_metaclass(CommandMeta) +class Command(command.Command): + pass + + +class Lister(Command, lister.Lister): + pass + + +class ShowOne(Command, show.ShowOne): + pass diff --git a/openstackclient/common/utils.py b/openstackclient/common/utils.py index 096c995b..3ae30c8f 100644 --- a/openstackclient/common/utils.py +++ b/openstackclient/common/utils.py @@ -26,28 +26,32 @@ from oslo_utils import importutils from openstackclient.common import exceptions -def log_method(log, level=logging.DEBUG): - """Logs a method and its arguments when entered.""" +class log_method(object): - def decorator(func): + def __init__(self, log=None, level=logging.DEBUG): + self._log = log + self._level = level + + def __call__(self, func): func_name = func.__name__ + if not self._log: + self._log = logging.getLogger(func.__class__.__name__) @six.wraps(func) - def wrapper(self, *args, **kwargs): - if log.isEnabledFor(level): + def wrapper(*args, **kwargs): + if self._log.isEnabledFor(self._level): pretty_args = [] if args: pretty_args.extend(str(a) for a in args) if kwargs: pretty_args.extend( "%s=%s" % (k, v) for k, v in six.iteritems(kwargs)) - log.log(level, "%s(%s)", func_name, ", ".join(pretty_args)) - return func(self, *args, **kwargs) + self._log.log(self._level, "%s(%s)", + func_name, ", ".join(pretty_args)) + return func(*args, **kwargs) return wrapper - return decorator - def find_resource(manager, name_or_id, **kwargs): """Helper for the _find_* methods. |
