diff options
| author | Kaushal M <kaushal@redhat.com> | 2012-08-29 18:32:29 +0530 | 
|---|---|---|
| committer | Vijay Bellur <vbellur@redhat.com> | 2012-08-30 03:37:40 -0700 | 
| commit | ace4cae71c19004c51fe5116c67492acaf2afc73 (patch) | |
| tree | 19aaec66a6a379e9c0d57910febd7c59b62a3e85 /cli/src/cli-xml-output.c | |
| parent | 50cb2c23e8e7bd1173572a21990dbdf545f09141 (diff) | |
cli: Proper xml output for "gluster peer status"v3.3.1qa2
Change-Id: I90952ba2ea606552cf4ad67dd296a440f90592d6
BUG: 847760
Signed-off-by: Kaushal M <kaushal@redhat.com>
Reviewed-on: http://review.gluster.org/3870
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'cli/src/cli-xml-output.c')
| -rw-r--r-- | cli/src/cli-xml-output.c | 126 | 
1 files changed, 126 insertions, 0 deletions
diff --git a/cli/src/cli-xml-output.c b/cli/src/cli-xml-output.c index 702a7f7feb1..eb45a1fa04b 100644 --- a/cli/src/cli-xml-output.c +++ b/cli/src/cli-xml-output.c @@ -2505,4 +2505,130 @@ out:          return ret;  } +int +cli_xml_output_peer_status (dict_t *dict, int op_ret, int op_errno, +                            char *op_errstr) +{ +        int                     ret = -1; +        xmlTextWriterPtr        writer = NULL; +        xmlBufferPtr            buf = NULL; +        int                     count = 0; +        char                    *uuid = NULL; +        char                    *hostname = NULL; +        int                     connected = 0; +        int                     state_id = 0; +        char                    *state_str = NULL; +        int                     port = 0; +        int                     i = 1; +        char                    key[1024] = {0,}; + +        ret = cli_begin_xml_output (&writer, &buf); +        if (ret) +                goto out; + +        ret = cli_xml_output_common (writer, op_ret, op_errno, op_errstr); +        if (ret) +                goto out; + +        /* <peerStatus> */ +        ret = xmlTextWriterStartElement (writer, (xmlChar *)"peerStatus"); +        XML_RET_CHECK_AND_GOTO (ret, out); + +        if (!dict) +                goto cont; + +        ret = dict_get_int32 (dict, "count", &count); +        if (ret) +                goto out; + +        while (i <= count) { +                /* <peer> */ +                ret = xmlTextWriterStartElement (writer, (xmlChar *)"peer"); +                XML_RET_CHECK_AND_GOTO (ret, out); + +                memset (key, 0, sizeof (key)); +                snprintf (key, sizeof (key), "friend%d.uuid", i); +                ret = dict_get_str (dict, key, &uuid); +                if (ret) +                        goto out; + +                ret = xmlTextWriterWriteFormatElement (writer, +                                                       (xmlChar *)"uuid", +                                                       "%s", uuid); +                XML_RET_CHECK_AND_GOTO (ret, out); + +                memset (key, 0, sizeof (key)); +                snprintf (key, sizeof (key), "friend%d.hostname", i); +                ret = dict_get_str (dict, key, &hostname); +                if (ret) +                        goto out; + +                ret = xmlTextWriterWriteFormatElement (writer, +                                                       (xmlChar *)"hostname", +                                                       "%s", hostname); +                XML_RET_CHECK_AND_GOTO (ret, out); + +                memset (key, 0, sizeof (key)); +                snprintf (key, sizeof (key), "friend%d.connected", i); +                ret = dict_get_int32 (dict, key, &connected); +                if (ret) +                        goto out; + +                ret = xmlTextWriterWriteFormatElement (writer, +                                                       (xmlChar *)"connected", +                                                       "%d", connected); +                XML_RET_CHECK_AND_GOTO (ret, out); + +                memset (key, 0, sizeof (key)); +                snprintf (key, sizeof (key), "friend%d.stateId", i); +                ret = dict_get_int32 (dict, key, &state_id); +                if (ret) +                        goto out; + +                ret = xmlTextWriterWriteFormatElement (writer, +                                                       (xmlChar *)"state", +                                                       "%d", state_id); +                XML_RET_CHECK_AND_GOTO (ret, out); + +                memset (key, 0, sizeof (key)); +                snprintf (key, sizeof (key), "friend%d.state", i); +                ret = dict_get_str (dict, key, &state_str); +                if (ret) +                        goto out; + +                ret = xmlTextWriterWriteFormatElement (writer, +                                                       (xmlChar *)"stateStr", +                                                       "%s", state_str); +                XML_RET_CHECK_AND_GOTO (ret, out); + +                memset (key, 0, sizeof (key)); +                snprintf (key, sizeof (key), "friend%d.port", i); +                ret = dict_get_int32 (dict, key, &port); +                if (port != 0) { +                        ret = xmlTextWriterWriteFormatElement +                                (writer, (xmlChar *)"port", "%d", port); +                        XML_RET_CHECK_AND_GOTO (ret, out); + +                        port = 0; +                } + +                /* </peer> */ +                ret = xmlTextWriterEndElement (writer); +                XML_RET_CHECK_AND_GOTO (ret, out); + +                i++; +        } + +cont: +        /* </peerStatus> */ +        ret = xmlTextWriterEndElement (writer); +        XML_RET_CHECK_AND_GOTO (ret, out); + +        ret = cli_end_xml_output (writer, buf); + +out: +        gf_log ("cli", GF_LOG_DEBUG, "Returning %d", ret); +        return ret; +} +  #endif  | 
