¡@

Home 

OpenStack Study: __init__.py

OpenStack Index

**** CubicPower OpenStack Study ****

# Copyright 2013 IBM Corp.

#

# 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.

from nova import exception

from nova.openstack.common.gettextutils import _

from nova.openstack.common import log as logging

LOG = logging.getLogger(__name__)

**** CubicPower OpenStack Study ****

class LoadedExtensionInfo(object):

"""Keep track of all loaded API extensions."""

**** CubicPower OpenStack Study ****

    def __init__(self):

        self.extensions = {}

**** CubicPower OpenStack Study ****

    def register_extension(self, ext):

        if not self._check_extension(ext):

            return False

        alias = ext.alias

        LOG.audit(_("Loaded extension %s"), alias)

        if alias in self.extensions:

            raise exception.NovaException("Found duplicate extension: %s"

                                          % alias)

        self.extensions[alias] = ext

        return True

**** CubicPower OpenStack Study ****

    def _check_extension(self, extension):

        """Checks for required methods in extension objects."""

        try:

            LOG.debug(_('Ext name: %s'), extension.name)

            LOG.debug(_('Ext alias: %s'), extension.alias)

            LOG.debug(_('Ext description: %s'),

                      ' '.join(extension.__doc__.strip().split()))

            LOG.debug(_('Ext version: %i'), extension.version)

        except AttributeError as ex:

            LOG.exception(_("Exception loading extension: %s"), unicode(ex))

            return False

        return True

**** CubicPower OpenStack Study ****

    def get_extensions(self):

        return self.extensions