Python SDK for Shell Operator hooks
Project description
Deckhouse module SDK
This package is discontinued in favor of deckhouse-sdk
and will be deleted soon
Deckhouse module SDK simplifies writing module hooks for operators:
- Deckhouse
- Addon Operator
- Shell Operator (values are unaccessable)
NOTE:
- The API is in alpha stage
- The name will change from
shell-operator
to something more deckhouse-related, probably,deckhouse-sdk
Install
pip install shell-operator
Sample hook
# hello.py
from shell_operator import hook
def main(ctx: hook.Context):
# Manipulate kubernetes state
# ... object = { "kind" : "Pod", "apiVersion" : "v1", ... }
ctx.kubernetes.create_or_update(object)
# Export metrics
# ... metric = { "name" : "power", "group": "my_hook", "set" : 9000, ... }
ctx.metrics.collect(metric)
# Use in-memory values for helm chart. Shell Operator does not support values, but Addon Operator and Deckhouse do.
ctx.values.myModule.deployment.replicas = 5
if __name__ == "__main__":
hook.run(main, configpath="hello.yaml") # 'config' arg is also supported for raw string
# hello.yaml
configVersion: v1
onStartup: 10
How to test
An example for pytest
# hello_test.py
from hello import main
from shell_operator import hook
# Inputs
# initial_values = { ... }
# binding_context = [ { ... } ]
# Outputs
# expected_metrics = [ ... ]
# expected_kube_operations = [ ... ]
# expected_values_patches = [ ... ]
# expected_values = { ... }
def test_hello():
out = hook.testrun(main, binding_context, initial_values)
assert out.metrics.data == expected_metrics
assert out.kube_operations.data == expected_kube_operations
assert out.values_patches.data == expected_values_patches
assert out.values.myModule.deployment.repicas == 5
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
shell_operator-0.1.3.tar.gz
(11.6 kB
view hashes)
Built Distribution
Close
Hashes for shell_operator-0.1.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e5f2f75745e0a568a295a0064024e2c9511ded20771ed1fe20a02b7b7f3d77f4 |
|
MD5 | e2e9c1df98b512e682f43858f281842f |
|
BLAKE2b-256 | 6312b14aa5fa0b36416307ca32779154aac2ecbe9d400bc06ccdec1cac122002 |