Token-aware Python lient for the Control-M Automation API
Project description
ceeteem
Token‑aware Python client for the Control‑M Automation API
ceeteem lets you talk to Control‑M Workbench or a real Control‑M server with three lines of code:
from ceeteem import ControlMSession
s = ControlMSession(
base_url="https://workbench:8443", # host or agent port
creds={"username": "admin", "password": "secret"},
ca_file="certs/controlm_root.pem", # or verify=False in dev
)
for srv in s.get_servers():
print(srv["name"], srv.get("runAs"))
Behind the scenes ceeteem:
- Logs in once (
/session/login) and caches the bearer token. - Refreshes automatically when the token expires or on 401.
- Re‑uses a single
requests.Sessionso TLS handshakes are cheap. - Lets you keep TLS on for self‑signed Workbench certs with a one‑liner.
Installation
pip install ceeteem # or: uv pip install ceeteem
Supported on Python 3.10 +.
Key Features
| Feature | Why it’s handy |
|---|---|
ControlMSession |
Thin wrapper around requests.Session; base‑URL aware; typed helpers for common Automation API endpoints. |
BearerTokenAuth |
Drop‑in AuthBase subclass that handles login, expiry, retry. |
| Custom CA bundle | Works with Workbench’s self‑signed root CA without disabling TLS. |
| Convenience helpers | get_servers(), job_status(), agents_using("admin"), … add your own easily. |
Quick‑start
from ceeteem import ControlMSession
creds = {"username": "admin", "password": "secret"}
s = ControlMSession("https://localhost:8443", creds, verify=False)
print(s.job_status("JOB123"))
Using a custom CA instead of verify=False
s = ControlMSession(
"https://workbench:8443",
creds,
ca_file="certs/controlm_root.pem",
)
Generate the PEM once:
openssl s_client -showcerts -connect workbench:8443 </dev/null \
| awk '/BEGIN/,/END/{print}' > certs/controlm_root.pem
Roadmap
- Add async variant (
aiohttp) - Coverage for more Automation API endpoints
- Built‑in retry + backoff helpers
- CLI chat demo powered by LLM (see
/examples)
Contributing
Pull requests welcome — see CONTRIBUTING.md for a quick guide.
git clone&uv sync --devpytest -qpre‑commit run ‑‑all‑files
License
Licensed under the MIT License. See LICENSE for details.
Acknowledgements
- BMC for the Control‑M Workbench container.
- The
requestsmaintainers for rock‑solid HTTP. - The OpenAI & Mistral teams for making language models fun to hack with.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ceeteem-0.0.3.tar.gz.
File metadata
- Download URL: ceeteem-0.0.3.tar.gz
- Upload date:
- Size: 28.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f8649704d472641160978a0e910171064562483ecf72805c632a87f861a40431
|
|
| MD5 |
b76ae4be03ea39cceb513581e9405743
|
|
| BLAKE2b-256 |
e71a1792cb45e1bf4f5a99c977a2104066f7eff57f18f57d974acf9731735b98
|
File details
Details for the file ceeteem-0.0.3-py3-none-any.whl.
File metadata
- Download URL: ceeteem-0.0.3-py3-none-any.whl
- Upload date:
- Size: 23.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
387dd4fe42cbf7476986392b55506d8d63f96a28253bc4727482b0683b41ca3e
|
|
| MD5 |
4b3b90e7a56f270d0509d59075d9bc6a
|
|
| BLAKE2b-256 |
2cb9b7b4957840c743f6fc262ff660419fac722c7630d131db1eed0cdc70b87a
|