Add DevStack Logging and Service Names spec
Change-Id: Iede4e99ee047cd7c1c969aecc07ae4976f1f9767
This commit is contained in:
parent
f071be1088
commit
35ab753230
|
@ -20,7 +20,7 @@ DevStack Project Specifications
|
|||
:glob:
|
||||
:maxdepth: 2
|
||||
|
||||
.. specs/devstack/*
|
||||
specs/devstack/*
|
||||
|
||||
Implemented Specifications
|
||||
--------------------------
|
||||
|
|
|
@ -0,0 +1,147 @@
|
|||
..
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||
License.
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
..
|
||||
This template should be in ReSTructured text. The filename in the git
|
||||
repository should match the launchpad URL, for example a URL of
|
||||
https://blueprints.launchpad.net/tempest/+spec/awesome-thing should be named
|
||||
awesome-thing.rst . Please do not delete any of the sections in this
|
||||
template. If you have nothing to say for a whole section, just write: None
|
||||
For help with syntax, see http://sphinx-doc.org/rest.html
|
||||
To test out your formatting, see http://www.tele3.cz/jbar/rest/rest.html
|
||||
|
||||
===================================
|
||||
DevStack Logging and Service Names
|
||||
===================================
|
||||
|
||||
`NOTE: This spec is still a work in progress, it is being posted to get some early
|
||||
feedback on scope and ordering of steps.`
|
||||
|
||||
https://blueprints.launchpad.net/tempest/+spec/devstack-logging-and-service-names
|
||||
|
||||
DevStack is in need of updates to its log file handling and service naming, both
|
||||
of which were appropriate for the originalscreen-based installs with a handful
|
||||
of services.
|
||||
|
||||
This spec contains both the log file reform as well as the service name updates
|
||||
as they are a bit intertwined so some steps will address them both as necessary.
|
||||
|
||||
Problem description
|
||||
===================
|
||||
|
||||
DevStack's logging configuration was initially based on saving ``screen`` logs,
|
||||
as part of the development of not using ``screen`` the logging was kept compatible
|
||||
and it became obvious that the original special case was not required.
|
||||
|
||||
Historically DevStack has used abbreviated service names for identifying services
|
||||
to enable, naming log files and as window names in screen. OpenStack has grown
|
||||
to the point that the abbreviated names are too confusing and non-obvious,
|
||||
especially for the not-so-recently renamed Neutron.
|
||||
|
||||
These topics were covered at the Paris summit, notes in the `OpenStack Etherpad`_.
|
||||
|
||||
.. _`OpenStack Etherpad`: https://etherpad.openstack.org/p/kilo-summit-devstack-grenade
|
||||
|
||||
|
||||
Proposed change
|
||||
===============
|
||||
|
||||
Logging
|
||||
-------
|
||||
|
||||
Update DevStack's logging configuration to set a logging directory rather than parsing
|
||||
that out of a filename. Ultimately eliminate the use of ``SCREEN_LOGDIR``.
|
||||
|
||||
* Use ``LOGDIR`` as the primary setting in local.conf for log locations, default to
|
||||
``${DEST}/logs`` if ``LOGFILENAME`` is not set.
|
||||
|
||||
* Continue to use ``LOGFILENAME`` if set, if ``LOGFILE`` is not set continue to set it to
|
||||
$(dirname ``$LOGFILENAME``).
|
||||
|
||||
* Deprecate ``SCREEN_LOGDIR`` and use ``LOGDIR`` instead. For a compatibility period
|
||||
leave symlinks in the old screen log locations.
|
||||
|
||||
* Remove ``screen-`` from the beginning of the service log filenames
|
||||
|
||||
* Service log files will implicitly be renamed as the service names change (see above)
|
||||
|
||||
Grenade should work seamlessly as it lets both DevStack runs do their thing and
|
||||
``devstack-gate`` contains all of the specifics that need updating fro Grenade jobs.
|
||||
|
||||
Service Names
|
||||
-------------
|
||||
|
||||
Use fully-formed names for service names (like ceilometer does today): ``nova-compute``,
|
||||
``glance-registry``, etc. The names will use the project name, as used in ``devstack/lib/*``
|
||||
followed by '-' and a descriptive name of the service.
|
||||
|
||||
Also allow multiple instances of service names, as in running the fake hypervisor has
|
||||
a number of ``nova-cpu`` instances. Append an instance counter to the name similar to
|
||||
how ``n-cpu-N`` is currently handled. Optionally use a ':' as the separator between the
|
||||
service name and instance number. This will be used in the log file name so it must be
|
||||
shell-safe.
|
||||
|
||||
* There needs to be a mapping of the old abbreviated names to the full names to handle
|
||||
backward compatibility.
|
||||
|
||||
* This will make ``ENABLED_SERVICES`` very long by default and harder to scan visually.
|
||||
Is this a real concern? With the recent forced update to using Bash 4 we could use an
|
||||
associative array to do the mapping and the enabled list in a single shot.
|
||||
|
||||
(Note: We just started doing something in Grenade to handle mapping abbreviated
|
||||
service names-> processes (https://review.openstack.org/#/c/113405/5/check-sanity)
|
||||
This would help move that logic into DevStack and also help provide other mappings
|
||||
(ie, service name -> database name))
|
||||
|
||||
* Log filenames will change, but there is more on that front (see below).
|
||||
|
||||
* Grenade will need to be updated before the backward compatibility can be removed.
|
||||
|
||||
|
||||
Implementation
|
||||
==============
|
||||
|
||||
Assignee(s)
|
||||
-----------
|
||||
|
||||
Primary assignee:
|
||||
dtroyer
|
||||
|
||||
Work Items
|
||||
----------
|
||||
|
||||
1. Logging: change the log file names in ``SCREEN_LOGDIR`` so the actual files
|
||||
with the timestamp in the names end with the timestamp::
|
||||
|
||||
screen-c-sch.2014-12-10-193405.log becomes screen-c-sch.log.2014-12-10-193405
|
||||
|
||||
2. Logging: change ``devstack-gate`` to look for ``*.log``
|
||||
rather than symlinks to select the log files it copies out of ``screen-logs``.
|
||||
|
||||
3. Logging: switch from ``SCREEN_LOGDIR`` to ``LOGDIR`` for log tests. This will
|
||||
move the log files out of ``SCREEN_LOGDIR`` so leave backward-compatibility
|
||||
symlinks in the old locations. (This is the reason for #2 as ``devstack-gate``
|
||||
selects the files top copy by the symlink attribute.)
|
||||
|
||||
4. Logging: follow up in ``devstack-gate`` to use LOGDIR directly and copy log files
|
||||
from there.
|
||||
|
||||
5. Logging: after a time, remove the symlinks from ``SCREEN_LOGDIR``.
|
||||
|
||||
6. Services: change how multiple instances of services are handled, currently in
|
||||
``lib/nova start_nova_compute()`` and ``stop_nova_compute()``. If the separator
|
||||
is changed the config filenames will also change, reconsider if parsing is necessary.
|
||||
|
||||
7. Services: build the new service naming structures and compatibility.
|
||||
|
||||
8. Services and Logging: switch logging to use the new service names and ensure nothing
|
||||
gets lost in ``devstack-gate`` copies.
|
||||
|
||||
|
||||
|
||||
Dependencies
|
||||
============
|
||||
|
||||
The only dependencies are in the order of changes required in multiple projects.
|
Loading…
Reference in New Issue