mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-09 19:13:26 +03:00
57 lines
1.5 KiB
Nix
57 lines
1.5 KiB
Nix
{ lib, ... }:
|
|
|
|
{
|
|
name = "olivetin";
|
|
meta.maintainers = with lib.maintainers; [ defelo ];
|
|
|
|
nodes.machine = {
|
|
services.olivetin = {
|
|
enable = true;
|
|
settings = {
|
|
actions = [
|
|
{
|
|
id = "hello_world";
|
|
title = "Say Hello";
|
|
shell = "echo -n 'Hello World!' | tee /tmp/result";
|
|
}
|
|
];
|
|
};
|
|
extraConfigFiles = [
|
|
(builtins.toFile "secrets.yaml" ''
|
|
actions:
|
|
- id: secret
|
|
title: Secret Action
|
|
shell: echo -n secret > /tmp/result2
|
|
'')
|
|
];
|
|
};
|
|
};
|
|
|
|
interactive.nodes.machine = {
|
|
services.olivetin.settings.ListenAddressSingleHTTPFrontend = "0.0.0.0:8000";
|
|
networking.firewall.allowedTCPPorts = [ 8000 ];
|
|
virtualisation.forwardPorts = [
|
|
{
|
|
from = "host";
|
|
host.port = 8000;
|
|
guest.port = 8000;
|
|
}
|
|
];
|
|
};
|
|
|
|
testScript = ''
|
|
import json
|
|
|
|
machine.wait_for_unit("olivetin.service")
|
|
machine.wait_for_open_port(8000)
|
|
|
|
response = json.loads(machine.succeed("curl http://localhost:8000/api/StartActionByGetAndWait/hello_world"))
|
|
assert response["logEntry"]["exitCode"] == 0
|
|
assert response["logEntry"]["output"] == "Hello World!"
|
|
assert machine.succeed("cat /tmp/result") == "Hello World!"
|
|
|
|
response = json.loads(machine.succeed("curl http://localhost:8000/api/StartActionByGetAndWait/secret"))
|
|
assert response["logEntry"]["exitCode"] == 0
|
|
assert machine.succeed("cat /tmp/result2") == "secret"
|
|
'';
|
|
}
|