a tool for defining repeatable processes in code
Project description
runbook.py (v0.2)
pip3 install runbook
Inspired by this blog post by Dan Slimmon.
Define your own run-book in a class extending from Runbook
. Every method that
doesn't begin with an underscore is read in as a step to be completed, in order.
The step name will be built from the method name, and the description is taken
either from the method's own docstring or from any data returned from invoking
the method.
from runbook import Runbook
class CustomRunbook(Runbook):
def first_step(self):
"""
Do ABC now.
"""
def second_step():
"""
Do EFG then wait 1 hour.
"""
def third_step():
task = "reboot"
return f"perform a {task}"
@staticmethod
def last_step():
"""Everything ok?"""
Every Runbook
object comes with a default main method that you can use to execute the script.
if __name__ == '__main__':
CustomRunbook.main()
The run-book object can also be instantiated and run directly.
book = CustomRunbook(file_path="path/to/file")
book.run()
You should avoid using the step names run
and main
, which are already defined. If you need to override these
methods to define custom behavior then that is fine.
As steps are completed, the results are written out to a log file. You can set a custom log file path by passing an argument to main, as in:
python3 my_runbook.py output.log
When reusing the same log file, already completed steps will be skipped. Any new steps found in the Runbook
and not already in the log will be processed as normal, with results appended to the end of the file.
License
Licensed under the Apache Software License 2.0 (ASL 2.0).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file runbook-0.2.tar.gz
.
File metadata
- Download URL: runbook-0.2.tar.gz
- Upload date:
- Size: 7.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9fe4f79b5f4df371d8e033b326c73a430d7164f1203190b38e341398fd7d222a |
|
MD5 | b6ca5c16bbbd84a0d1992588a4b276ef |
|
BLAKE2b-256 | b1d283561aa90f11bed58a8f1efcf8fed8db0c76157d5495dbd9241d81dbfcdb |