devtools module

This module contains several development tools

Debug output from the model

To print instances from the model, you can use devtools::debug::print

import std
import fs
import devtools::debug

host = std::Host(name="test")

for i in [1, 2]:
    fs::File(
        path=f"/tmp/test-{i}.txt",
        mode=777,
        owner="root",
        group="root",
        content=f"test-{i}",
        host=host,
        requires=[host],
    )
end

# Print the host entity
devtools::debug::print("host", host, waiters=host.provides, depth=2, now=true)

Test debugging

You can also use it to debug in the tests

from inmanta_plugins.devtools.debug import debug as idebug
project.compile(model)
instance = project.get_instances("std::Host")[0]
ddebug("test", instance, now=True, use_logger=True)

Mocking out handlers

To replace handlers with a mock that immediately succeeds use devtools::handler_mock::hook

e.g. To mock out all handlers in the ‘fs’ module, use

devtools::handler_mock::hook(["fs::"])

To disable mocking again, use

devtools::handler_mock::hook([])

When calling devtools::handler_mock::hook() (without arguments), it will mock every handler except the agent config and the lsm resources.

This mock should only be used in testing environments Once installed on an agent, it can remain there until it is disabled. This can lead to hard to diagnose issues if it is left behind.