LCOV - code coverage report
Current view: top level - lrmd - lrmd_output.c (source / functions) Hit Total Coverage
Test: Pacemaker code coverage Lines: 0 66 0.0 %
Date: 2024-05-07 11:09:47 Functions: 0 10 0.0 %

          Line data    Source code
       1             : /*
       2             :  * Copyright 2020-2024 the Pacemaker project contributors
       3             :  *
       4             :  * The version control history for this file may have further details.
       5             :  *
       6             :  * This source code is licensed under the GNU Lesser General Public License
       7             :  * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY.
       8             :  */
       9             : 
      10             : #include <crm_internal.h>
      11             : #include <stdarg.h>
      12             : 
      13             : #include <crm/lrmd_internal.h>
      14             : #include <crm/common/xml.h>
      15             : #include <crm/common/output_internal.h>
      16             : 
      17             : static int
      18           0 : default_list(pcmk__output_t *out, lrmd_list_t *list, const char *title) {
      19           0 :     lrmd_list_t *iter = NULL;
      20             : 
      21           0 :     out->begin_list(out, NULL, NULL, "%s", title);
      22             : 
      23           0 :     for (iter = list; iter != NULL; iter = iter->next) {
      24           0 :         out->list_item(out, NULL, "%s", iter->val);
      25             :     }
      26             : 
      27           0 :     out->end_list(out);
      28           0 :     lrmd_list_freeall(list);
      29           0 :     return pcmk_rc_ok;
      30             : }
      31             : 
      32             : static int
      33           0 : xml_list(pcmk__output_t *out, lrmd_list_t *list, const char *ele) {
      34           0 :     lrmd_list_t *iter = NULL;
      35             : 
      36           0 :     for (iter = list; iter != NULL; iter = iter->next) {
      37           0 :         pcmk__output_create_xml_text_node(out, ele, iter->val);
      38             :     }
      39             : 
      40           0 :     lrmd_list_freeall(list);
      41           0 :     return pcmk_rc_ok;
      42             : }
      43             : 
      44             : PCMK__OUTPUT_ARGS("alternatives-list", "lrmd_list_t *", "const char *")
      45             : static int
      46           0 : lrmd__alternatives_list_xml(pcmk__output_t *out, va_list args) {
      47           0 :     lrmd_list_t *list = va_arg(args, lrmd_list_t *);
      48           0 :     const char *agent_spec = va_arg(args, const char *);
      49             : 
      50           0 :     int rc = pcmk_rc_ok;
      51             : 
      52           0 :     pcmk__output_xml_create_parent(out, PCMK_XE_PROVIDERS,
      53             :                                    PCMK_XA_FOR, agent_spec,
      54             :                                    NULL);
      55           0 :     rc = xml_list(out, list, PCMK_XE_PROVIDER);
      56           0 :     pcmk__output_xml_pop_parent(out);
      57           0 :     return rc;
      58             : }
      59             : 
      60             : PCMK__OUTPUT_ARGS("alternatives-list", "lrmd_list_t *", "const char *")
      61             : static int
      62           0 : lrmd__alternatives_list(pcmk__output_t *out, va_list args) {
      63           0 :     lrmd_list_t *list = va_arg(args, lrmd_list_t *);
      64           0 :     const char *agent_spec G_GNUC_UNUSED = va_arg(args, const char *);
      65             : 
      66           0 :     return default_list(out, list, "Providers");
      67             : }
      68             : 
      69             : PCMK__OUTPUT_ARGS("agents-list", "lrmd_list_t *", "const char *", "const char *")
      70             : static int
      71           0 : lrmd__agents_list_xml(pcmk__output_t *out, va_list args) {
      72           0 :     lrmd_list_t *list = va_arg(args, lrmd_list_t *);
      73           0 :     const char *agent_spec = va_arg(args, const char *);
      74           0 :     const char *provider = va_arg(args, const char *);
      75             : 
      76           0 :     int rc = pcmk_rc_ok;
      77           0 :     xmlNodePtr node = NULL;
      78             : 
      79           0 :     node = pcmk__output_xml_create_parent(out, PCMK_XE_AGENTS,
      80             :                                           PCMK_XA_STANDARD, agent_spec,
      81             :                                           NULL);
      82             : 
      83           0 :     if (!pcmk__str_empty(provider)) {
      84           0 :         crm_xml_add(node, PCMK_XA_PROVIDER, provider);
      85             :     }
      86             : 
      87           0 :     rc = xml_list(out, list, PCMK_XE_AGENT);
      88           0 :     pcmk__output_xml_pop_parent(out);
      89           0 :     return rc;
      90             : }
      91             : 
      92             : PCMK__OUTPUT_ARGS("agents-list", "lrmd_list_t *", "const char *", "const char *")
      93             : static int
      94           0 : lrmd__agents_list(pcmk__output_t *out, va_list args) {
      95           0 :     lrmd_list_t *list = va_arg(args, lrmd_list_t *);
      96           0 :     const char *agent_spec = va_arg(args, const char *);
      97           0 :     const char *provider = va_arg(args, const char *);
      98             : 
      99             :     int rc;
     100           0 :     char *title = crm_strdup_printf("%s agents", pcmk__str_empty(provider) ? agent_spec : provider);
     101             : 
     102           0 :     rc = default_list(out, list, title);
     103           0 :     free(title);
     104           0 :     return rc;
     105             : }
     106             : 
     107             : PCMK__OUTPUT_ARGS("providers-list", "lrmd_list_t *", "const char *")
     108             : static int
     109           0 : lrmd__providers_list_xml(pcmk__output_t *out, va_list args) {
     110           0 :     lrmd_list_t *list = va_arg(args, lrmd_list_t *);
     111           0 :     const char *agent_spec = va_arg(args, const char *);
     112             : 
     113           0 :     int rc = pcmk_rc_ok;
     114           0 :     xmlNodePtr node = pcmk__output_xml_create_parent(out, PCMK_XE_PROVIDERS,
     115             :                                                      PCMK_XA_STANDARD, "ocf",
     116             :                                                      NULL);
     117             : 
     118           0 :     if (agent_spec != NULL) {
     119           0 :         crm_xml_add(node, PCMK_XA_AGENT, agent_spec);
     120             :     }
     121             : 
     122           0 :     rc = xml_list(out, list, PCMK_XE_PROVIDER);
     123           0 :     pcmk__output_xml_pop_parent(out);
     124           0 :     return rc;
     125             : }
     126             : 
     127             : PCMK__OUTPUT_ARGS("providers-list", "lrmd_list_t *", "const char *")
     128             : static int
     129           0 : lrmd__providers_list(pcmk__output_t *out, va_list args) {
     130           0 :     lrmd_list_t *list = va_arg(args, lrmd_list_t *);
     131           0 :     const char *agent_spec G_GNUC_UNUSED = va_arg(args, const char *);
     132             : 
     133           0 :     return default_list(out, list, "Providers");
     134             : }
     135             : 
     136             : PCMK__OUTPUT_ARGS("standards-list", "lrmd_list_t *")
     137             : static int
     138           0 : lrmd__standards_list(pcmk__output_t *out, va_list args) {
     139           0 :     lrmd_list_t *list = va_arg(args, lrmd_list_t *);
     140             : 
     141           0 :     return default_list(out, list, "Standards");
     142             : }
     143             : 
     144             : static pcmk__message_entry_t fmt_functions[] = {
     145             :     { "alternatives-list", "default", lrmd__alternatives_list },
     146             :     { "alternatives-list", "xml", lrmd__alternatives_list_xml },
     147             :     { "agents-list", "default", lrmd__agents_list },
     148             :     { "agents-list", "xml", lrmd__agents_list_xml },
     149             :     { "providers-list", "default", lrmd__providers_list },
     150             :     { "providers-list", "xml", lrmd__providers_list_xml },
     151             :     { "standards-list", "default", lrmd__standards_list },
     152             : 
     153             :     { NULL, NULL, NULL }
     154             : };
     155             : 
     156             : void
     157           0 : lrmd__register_messages(pcmk__output_t *out) {
     158           0 :     pcmk__register_messages(out, fmt_functions);
     159           0 : }

Generated by: LCOV version 1.14