OOPS disk serialisation and repository management.
Project description
Copyright (c) 2011, Canonical Ltd
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
This is a component of the python-oops project: https://launchpad.net/python-oops. An OOPS report is a report about something going wrong in a piece of software… thus, an ‘oops’ :)
This package provides disk storage, management, and a serialisation format for OOPSes stored in the repository. Programs or services that are generating OOPS reports need this package or other similar ones, if they want to persist the reports.
Dependencies
Python 2.6+
The oops package (https://launchpad.net/python-oops or ‘oops’ on pypi).
Testing Dependencies
fixtures (http://pypi.python.org/pypi/fixtures)
subunit (http://pypi.python.org/pypi/python-subunit) (optional)
testtools (http://pypi.python.org/pypi/testtools)
Usage
oops_datedir_repo is an extension package for the oops package.
The DateDirRepo class provides an OOPS publisher (DateDirRepo.publish) which will write OOPSes into the repository.
Retrieving OOPSes can be done by using the low level serializer_rfc822 functions : an OOPS report can be written to a disk file via the serializer_rfc822.write() function, and read via the matching read() function.
The uniquefileallocator module is used by the repository implementation and provides a system for allocating file names on disk.
Typical usage:
>>> config = oops.Config() >>> with fixtures.TempDir() as tempdir: ... repo = oops_datedir_repo.DateDirRepo('/tmp/demo', 'servername') ... config.publishers.append(repo.publish) ... ids = config.publish({'oops': '!!!'})
For more information see the oops package documentation or the api docs.
Installation
Either run setup.py in an environment with all the dependencies available, or add the working directory to your PYTHONPATH.
Development
Upstream development takes place at https://launchpad.net/python-oops-datedir-repo. To setup a working area for development, if the dependencies are not immediately available, you can use ./bootstrap.py to create bin/buildout, then bin/py to get a python interpreter with the dependencies available.
To run the tests use the runner of your choice, the test suite is oops.tests.test_suite.
For instance:
$ bin/py -m testtools.run oops_datedir_repo.tests.test_suite