def __init__(self, mapper): """Create a router for the given routes.Mapper. Each route in `mapper` must specify a 'controller', which is a WSGI app to call. You'll probably want to specify an 'action' as well and have your controller be an object that can route the request to the action-specific method. Examples: mapper = routes.Mapper() sc = ServerController() # Explicit mapping of one route to a controller+action mapper.connect(None, '/svrlist', controller=sc, action='list') # Actions are all implicitly defined mapper.resource('server', 'servers', controller=sc) # Pointing to an arbitrary WSGI app. You can specify the # {path_info:.*} parameter so the target app can be handed just that # section of the URL. mapper.connect(None, '/v1.0/{path_info:.*}', controller=BlogApp()) """ # if we're only running in debug, bump routes' internal logging up a # notch, as it's very spammy if CONF.debug: logging.getLogger('routes.middleware') self.map = mapper self._router = routes.middleware.RoutesMiddleware(self._dispatch, self.map)
def _run(self, application, socket): """Start a WSGI server in a new green thread.""" log = logging.getLogger('eventlet.wsgi.server') try: eventlet.wsgi.server(socket, application, custom_pool=self.pool, log=logging.WritableLogger(log)) except Exception: LOG.exception(_('Server error')) raise
def _run(self, application, socket): """Start a WSGI server in a new green thread.""" logger = log.getLogger('eventlet.wsgi.server') try: eventlet.wsgi.server(socket, application, custom_pool=self.pool, log=EventletFilteringLogger(logger), debug=False) except Exception: LOG.exception(_('Server error')) raise
def _run(self, application, socket): """Start a WSGI server in a new green thread.""" logger = log.getLogger('eventlet.wsgi.server') try: eventlet.wsgi.server(socket, application, custom_pool=self.pool, log=log.WritableLogger(logger), debug=False) except greenlet.GreenletExit: # Wait until all servers have completed running pass except Exception: LOG.exception(_('Server error')) raise
def notify(_context, message): """Notifies the recipient of the desired event given the model. Log notifications using OpenStack's default logging system. """ priority = message.get('priority', CONF.default_notification_level) priority = priority.lower() logger = logging.getLogger( 'keystone.openstack.common.notification.%s' % message['event_type']) getattr(logger, priority)(jsonutils.dumps(message))
def main(): service.prepare_service(sys.argv) # Build and start the WSGI app host = CONF.bind_ip port = CONF.port wsgi = simple_server.make_server(host, port, Application()) LOG = log.getLogger(__name__) LOG.info(_("Serving on http://%(host)s:%(port)d"), {"host": host, "port": port}) CONF.log_opt_values(LOG, logging.INFO) try: wsgi.serve_forever() except KeyboardInterrupt: pass
from oslo.utils import timeutils import six from six.moves.urllib import parse from keystone.common import dependency from keystone import config from keystone.contrib import federation from keystone import exception from keystone.i18n import _ from keystone.openstack.common import jsonutils from keystone.openstack.common import log from keystone import token from keystone.token import provider LOG = log.getLogger(__name__) CONF = config.CONF class V2TokenDataHelper(object): """Creates V2 token data.""" @classmethod def format_token(cls, token_ref, roles_ref=None, catalog_ref=None): audit_info = None user_ref = token_ref['user'] metadata_ref = token_ref['metadata'] if roles_ref is None: roles_ref = [] expires = token_ref.get('expires', provider.default_expire_time()) if expires is not None: if not isinstance(expires, six.text_type):
from keystone.common import environment from keystone.common import sql from keystone import config from keystone.openstack.common import log from keystone import service CONF = config.CONF config.configure() sql.initialize() config.set_default_for_default_log_levels() CONF(project='keystone') config.setup_logging() environment.use_stdlib() name = os.path.basename(__file__) if CONF.debug: CONF.log_opt_values(log.getLogger(CONF.prog), logging.DEBUG) drivers = backends.load_backends() # NOTE(ldbragst): 'application' is required in this context by WSGI spec. # The following is a reference to Python Paste Deploy documentation # http://pythonpaste.org/deploy/ application = service.loadapp('config:%s' % config.find_paste_config(), name) dependency.resolve_future_dependencies()
# 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 webob.dec from keystone.common import wsgi from keystone import config from keystone.openstack.common import log from keystone.openstack.common import timeutils from keystone.openstack.common import versionutils CONF = config.CONF LOG = log.getLogger('access') APACHE_TIME_FORMAT = '%d/%b/%Y:%H:%M:%S' APACHE_LOG_FORMAT = ( '%(remote_addr)s - %(remote_user)s [%(datetime)s] "%(method)s %(url)s ' '%(http_version)s" %(status)s %(content_length)s') class AccessLogMiddleware(wsgi.Middleware): """Writes an access log to INFO.""" @versionutils.deprecated( what='keystone.contrib.access.core.AccessLogMiddleware', as_of=versionutils.deprecated.ICEHOUSE, in_favor_of='eventlet debug access log or httpd access log', remove_in=+2) def __init__(self, *args, **kwargs):
# NOTE(blk-u): # gettextutils.install() must run to set _ before importing any modules that # contain static translated strings. # # Configure gettextutils for deferred translation of messages # so that error messages in responses can be translated according to the # Accept-Language in the request rather than the Keystone server locale. gettextutils.install('keystone', lazy=True) from keystone.common import environment from keystone import config from keystone.openstack.common import log as logging LOG = logging.getLogger(__name__) CONF = config.CONF CONF(project='keystone') config.setup_logging(CONF) environment.use_stdlib() name = os.path.basename(__file__) if CONF.debug: CONF.log_opt_values(logging.getLogger(CONF.prog), logging.DEBUG) # NOTE(ldbragst): 'application' is required in this context by WSGI spec. # The following is a reference to Python Paste Deploy documentation # http://pythonpaste.org/deploy/ application = deploy.loadapp('config:%s' % config.find_paste_config(), name=name)
import copy import datetime import six from keystone.common import cache from keystone.common import cms from keystone.common import dependency from keystone.common import manager from keystone import config from keystone import exception from keystone.openstack.common import log as logging from keystone.openstack.common import timeutils CONF = config.CONF LOG = logging.getLogger(__name__) SHOULD_CACHE = cache.should_cache_fn('token') def default_expire_time(): """Determine when a fresh token should expire. Expiration time varies based on configuration (see ``[token] expiration``). :returns: a naive UTC datetime.datetime object """ expire_delta = datetime.timedelta(seconds=CONF.token.expiration) return timeutils.utcnow() + expire_delta
import os from paste import deploy from keystone.openstack.common import gettextutils # NOTE(blk-u): # gettextutils.install() must run to set _ before importing any modules that # contain static translated strings. gettextutils.install('keystone') from keystone.common import environment from keystone import config from keystone.openstack.common import log CONF = config.CONF CONF(project='keystone') config.setup_logging(CONF) environment.use_stdlib() name = os.path.basename(__file__) if CONF.debug: CONF.log_opt_values(log.getLogger(CONF.prog), logging.DEBUG) # NOTE(ldbragst): 'application' is required in this context by WSGI spec. # The following is a reference to Python Paste Deploy documentation # http://pythonpaste.org/deploy/ application = deploy.loadapp('config:%s' % config.find_paste_config(), name=name)
# 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 webob.dec from keystone.common import wsgi from keystone import config from keystone.openstack.common import log from keystone.openstack.common import timeutils from keystone.openstack.common import versionutils CONF = config.CONF LOG = log.getLogger('access') APACHE_TIME_FORMAT = '%d/%b/%Y:%H:%M:%S' APACHE_LOG_FORMAT = ( '%(remote_addr)s - %(remote_user)s [%(datetime)s] "%(method)s %(url)s ' '%(http_version)s" %(status)s %(content_length)s') class AccessLogMiddleware(wsgi.Middleware): """Writes an access log to INFO.""" @versionutils.deprecated( what='keystone.contrib.access.core.AccessLogMiddleware', as_of=versionutils.deprecated.ICEHOUSE, in_favor_of='eventlet debug access log or httpd access log', remove_in=+2) def __init__(self, *args, **kwargs): super(AccessLogMiddleware, self).__init__(*args, **kwargs)
def __init__(self, app, conf): self.app = app self.config = conf self.log = logging.getLogger(__name__) self.statsd = Statsd(conf)
import os from paste import deploy from keystone.common import environment from keystone import config from keystone.openstack.common import gettextutils from keystone.openstack.common import log as logging # NOTE(blk-u): Configure gettextutils for deferred translation of messages # so that error messages in responses can be translated according to the # Accept-Language in the request rather than the Keystone server locale. gettextutils.install('keystone', lazy=True) LOG = logging.getLogger(__name__) CONF = config.CONF CONF(project='keystone') config.setup_logging(CONF) environment.use_stdlib() name = os.path.basename(__file__) if CONF.debug: CONF.log_opt_values(logging.getLogger(CONF.prog), logging.DEBUG) # NOTE(ldbragst): 'application' is required in this context by WSGI spec. # The following is a reference to Python Paste Deploy documentation # http://pythonpaste.org/deploy/ application = deploy.loadapp('config:%s' % config.find_paste_config(), name=name)