Metadata-Version: 2.1
Name: docker-shaper
Version: 0.1.5
Summary: Keeps Docker resources in shape based on rules and usage
Home-page: https://github.com/Checkmk/checkmk-dev-tools
Author: Frans Fürst
Author-email: frans.fuerst@checkmk.com
Requires-Python: >=3.8.1,<4.0.0
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Dist: aiodocker (>=0.21.0,<0.22.0)
Requires-Dist: asyncinotify (>=4.0.1,<5.0.0)
Requires-Dist: flask-table (>=0.5.0,<0.6.0)
Requires-Dist: python-dateutil (>=2.8.2,<3.0.0)
Requires-Dist: quart (>=0.18.4,<0.19.0)
Project-URL: Repository, https://github.com/Checkmk/checkmk-dev-tools
Description-Content-Type: text/markdown

# Docker Shaper

This repository includes scripts/tools for Checkmk developers.

## Installation

```sh
[<PYTHON> -m] pip[3] install [--user] [--upgrade] docker-shaper
```

## Usage

```
docker-shaper serve`
```
Navigate to e.g. http://build-fra-003:5432/


## Development & Contribution

### Todo

- [x] pip package
- [x] Quart interface
- [x] bring in dockermon
- [x] auto update
- [x] outsource config
- [ ] bring in dgcd
- [ ] bring in list_volumes
- [ ] increase/decrease logging
- [ ] new: untag certain tags
- [ ] new: container cleanup


### Setup

### Prerequisites

* Python 3.8.10
* `poetry`
* `pre-commit`


```sh
python3 -m pip install --upgrade --user poetry pre-commit
git clone ssh://review.lan.tribe29.com:29418/checkmk_ci
cd checkmk_ci
pre-commit install
# if you need a specific version of Python inside your dev environment
poetry env use ~/.pyenv/versions/3.8.10/bin/python3
poetry install
```

### Workflow
poetry config repositories.checkmk https://upload.pypi.org/legacy/
poetry config pypi-token.checkmk pypi-

pip3 install --user --upgrade docker-shaper
~/.local/bin/docker-shaper server

poetry run mypy docker_shaper

* (once and only for publishing to PyPi) Get token on PyPi.org
* (once and only for publishing to PyPi) `poetry config pypi-token.pypi pypi-<LONG-STRING>`
  (will write to `~/.config/pypoetry/auth.toml`)
* modify and check commits via `pre-commit`
* after work is done locally:
  - adapt version in `pyproject.toml`
  - build and check a package
```sh
poetry build && \
twine check dist/* &&
python3 -m pip uninstall -y checkmk_dev_tools && \
python3 -m pip install --user dist/checkmk_dev_tools-$(grep -E "^version.?=" pyproject.toml | cut -d '"' -f 2)-py3-none-any.whl
```
  - check installed package
  - go through review process
  - publish the new package `poetry publish --build --repository checkmk`
  - commit new version && push


## Knowledge
https://github.com/torfsen/python-systemd-tutorial
https://www.digitalocean.com/community/tutorials/how-to-use-templates-in-a-flask-application
* https://blog.miguelgrinberg.com/post/beautiful-interactive-tables-for-your-flask-templates
* https://stackoverflow.com/questions/49957034/live-updating-dynamic-variable-on-html-with-flask
* https://pgjones.gitlab.io/quart/how_to_guides/templating.html


