Is there a way to programmatically provide the confirmation required by tailf:confirm text when using the maapi_request_action APIs?
There are functions maapi_cli_prompt
, maapi_cli_prompt2
and maapi_cli_prompt_oneof
which are intended to be called from inside action callpopint when invoked from CLI. See ConfD
user guide confd_lib_maapi
. Example of maapi_cli_prompt_oneof
can be found in examples.confd/cli/c_cli/actions.c
(in ConfD premium).
Consider a custom northbound interface invoking maapi_request_action APIs (no CLI in this use case), and a backend that processes the action requests via action callback. How does the northbound interface (written using maapi APIs) issue the confirmation?
You can for example do something like this:
container myContainer {
tailf:meta-data "myaction-confirm-text" {
tailf:meta-value "Really want to do this?";
}
tailf:action myAction {
tailf:exec "./myaction.sh" {
...
}
input {
...
}
output {
...
}
tailf:confirm-text 'Really want to do this?' {
tailf:confirm-default true;
}
}
}
tailf:meta-data example:
We are finding our action never occurs when we have tailf:confirm-text and issue the action via maapi_request_action(), apparently because it is waiting for the confirmation. However, I see no way of passing the confirmation y/n using the maapi_request_action APIs. Can the confirmation be passed programmatically somehow via maapi? Or only confirmed by typing y/n in the CLI?
MAAPI doesn’t wait for confirmation.
See your developer log (set to trace level).
You can print out the resulting values array for debug purposes using something like this:
char buf[BUFSIZ];
confd_tag_value_t *values;
int i, nvalues = 0;
maapi_request_action(sock, params, nparams, &values, &nvalues, myprefix__ns, "/path/to/action");
for (i = 0; i < nvalues; i++) {
confd_pp_value(buf, sizeof(buf), CONFD_GET_TAG_VALUE(&values[i]));
printf("param %2d: %9u:%-9u, %s\n", i, CONFD_GET_TAG_NS(&values[i]),
CONFD_GET_TAG_TAG(&values[i]), buf);
...
The maapi_request_action_str_th() API will fail with an “Aborted: by user” error when the default confirm-text in the Yang Model is set to false. The tailf:cli-batch-confirm-default can be used to override the default (setting to “true”) for non-interactive interfaces including MAAPI.