[master] fc0ee48e9 Add JSON ping output

Federico G. Schwindt fgsch at users.noreply.github.com
Wed Jun 13 23:58:08 UTC 2018


commit fc0ee48e9ee2f6bc7993f7f3958789acfa83d4ce
Author: Lucas Guardalben <lucas at varnish-software.com>
Date:   Wed May 16 15:52:17 2018 +0100

    Add JSON ping output
    
    This adds -j support to the command
    
    varnishadm ping -j
    
    Tested on RFC4627/RFC7159/ECMA404 standards (all valid JSON)

diff --git a/bin/varnishd/cache/cache_cli.c b/bin/varnishd/cache/cache_cli.c
index bdaa4ae33..35dac06a6 100644
--- a/bin/varnishd/cache/cache_cli.c
+++ b/bin/varnishd/cache/cache_cli.c
@@ -111,7 +111,7 @@ CLI_Run(void)
 /*--------------------------------------------------------------------*/
 
 static struct cli_proto cli_cmds[] = {
-	{ CLICMD_PING,	"i", VCLS_func_ping },
+	{ CLICMD_PING,	"i", VCLS_func_ping, VCLS_func_ping_json },
 	{ CLICMD_HELP,	"i", VCLS_func_help, VCLS_func_help_json },
 	{ NULL }
 };
diff --git a/bin/varnishd/mgt/mgt_cli.c b/bin/varnishd/mgt/mgt_cli.c
index 3304ef03c..3677eb620 100644
--- a/bin/varnishd/mgt/mgt_cli.c
+++ b/bin/varnishd/mgt/mgt_cli.c
@@ -327,7 +327,7 @@ mcf_help_json(struct cli *cli, const char * const *av, void *priv)
 
 static struct cli_proto cli_auth[] = {
 	{ CLICMD_HELP,		"", mcf_help, mcf_help_json },
-	{ CLICMD_PING,		"", VCLS_func_ping },
+	{ CLICMD_PING,		"", VCLS_func_ping, VCLS_func_ping_json },
 	{ CLICMD_AUTH,		"", mcf_auth },
 	{ CLICMD_QUIT,		"", VCLS_func_close },
 	{ NULL }
diff --git a/bin/varnishtest/tests/b00008.vtc b/bin/varnishtest/tests/b00008.vtc
index 1ec361155..6134ff0e6 100644
--- a/bin/varnishtest/tests/b00008.vtc
+++ b/bin/varnishtest/tests/b00008.vtc
@@ -1,4 +1,4 @@
-varnishtest "Test CLI help and parameter functions"
+varnishtest "Test CLI commands and parameter functions"
 
 varnish v1 -arg "-b ${bad_ip}:9080"
 
@@ -28,6 +28,14 @@ varnish v1 -cliok "help"
 
 varnish v1 -clijson "help -j"
 
+varnish v1 -cliok "backend.list"
+
+varnish v1 -clijson "backend.list -j"
+
+varnish v1 -cliok "ping"
+
+varnish v1 -clijson "ping -j"
+
 varnish v1 -clierr 106 "param.set waiter HASH(0x8839c4c)"
 
 varnish v1 -cliok "param.set cli_limit 128"
diff --git a/include/vcli_serve.h b/include/vcli_serve.h
index 8378993c4..00b364ff4 100644
--- a/include/vcli_serve.h
+++ b/include/vcli_serve.h
@@ -105,3 +105,4 @@ cli_func_t	VCLS_func_close;
 cli_func_t	VCLS_func_help;
 cli_func_t	VCLS_func_help_json;
 cli_func_t	VCLS_func_ping;
+cli_func_t	VCLS_func_ping_json;
diff --git a/lib/libvarnish/vcli_serve.c b/lib/libvarnish/vcli_serve.c
index de7ebdbd8..fc8578c50 100644
--- a/lib/libvarnish/vcli_serve.c
+++ b/lib/libvarnish/vcli_serve.c
@@ -103,6 +103,16 @@ VCLS_func_ping(struct cli *cli, const char * const *av, void *priv)
 	VCLI_Out(cli, "PONG %jd 1.0", (intmax_t)t);
 }
 
+void v_matchproto_(cli_func_t)
+VCLS_func_ping_json(struct cli *cli, const char * const *av, void *priv)
+{
+	(void)av;
+	(void)priv;
+	VCLI_JSON_begin(cli, 2, av);
+	VCLI_Out(cli, ", \"PONG\"\n");
+	VCLI_JSON_end(cli);
+}
+
 /*--------------------------------------------------------------------*/
 
 void v_matchproto_(cli_func_t)


More information about the varnish-commit mailing list