toyed around a bit...returning just json seems not to work very well
import os
import json
from cfengine import PromiseModule, ValidationError, Result
class MkSudoPermsModule(PromiseModule):
def __init__(self):
super().__init__("itsv_mk_sudo_perms_promise_module", "0.0.1")
def validate_promise(self, promiser, attributes):
pass
def evaluate_promise(self, promiser, attributes):
lst = ['jboss1', 'jboss2', 'jboss3']
return json.dumps(lst)
return Result.KEPT
if __name__ == "__main__":
MkSudoPermsModule().start()
~
result:
verbose: Begin policy/promise evaluation
verbose: ----------------------------------------------------------------
verbose: Using bundlesequence => {"main"}
verbose: B: *****************************************************************
verbose: B: BEGIN bundle main
verbose: B: *****************************************************************
debug: DeRefCopyPromise(): promiser:'/usr/security/user'
debug: DeRefCopyPromise(): copying constraint: 'name'
verbose: Starting custom promise module '/var/cfengine/modules/promises/itsv_mk_sudo_perms.py' with command '/opt/freeware/bin/python3 /var/cfengine/modules/promises/itsv_mk_sudo_perms.py'
debug: Received header from promise module: 'itsv_mk_sudo_perms_promise_module 0.0.1 v1 json_based'
debug: Received line from module: '{"operation": "validate_promise", "promiser": "/usr/security/user", "attributes": {"name": "jboss"}, "result": "valid"}'
debug: Received line from module: '{"operation": "evaluate_promise", "promiser": "/usr/security/user", "attributes": {"name": "jboss"}, "result": "[\"jboss1\", \"jboss2\", \"jboss3\"]"}'
error: Promise module returned unacceptable result: '["jboss1", "jboss2", "jboss3"]' (mk_sudo_perms promise, promiser: '/usr/security/user' module: '/var/cfengine/modules/promises/itsv_mk_sudo_perms.py')
verbose: A: Promise NOT KEPT!
verbose: P: END mk_sudo_perms promise (/usr/security/user)
debug: DeRefCopyPromise(): promiser:'/usr/security/user'
debug: DeRefCopyPromise(): copying constraint: 'name'
debug: DeRefCopyPromise(): promiser:'/usr/security/user'
debug: DeRefCopyPromise(): copying constraint: 'name'
verbose: A: ...................................................
verbose: A: Bundle Accounting Summary for 'main' in namespace default
not very promising *gg*