'X-Cf-Warnings' header should not print to stdout by default for `cf curl`
tcdowney opened this issue ยท 3 comments
Please fill out the issue checklist below and provide ALL the requested information.
- I reviewed open and closed github issues that may be related to my problem.
- I tried updating to the latest version of the CF CLI to see if it fixed my problem.
- I attempted to run the command with
CF_TRACE=1
to help debug the issue. - I am reporting a bug that others will be able to reproduce.
Describe the bug and the command you saw an issue with
In cloudfoundry/cloud_controller_ng#2227 we decided to set the X-Cf-Warnings
header when one of the services backing the /v3/processes/:guid/stats
endpoint has an error and we decide to return a partial response.
This is nice because the user will still get informed that something is not quite right by the cf cli
, but otherwise continue to see other information about their process. Using the cf7
CLI it looks like this warning is usually printed to stderr
, but for cf curl
it is being printed to stdout
and making the response difficult to parse.
What happened
When I use cf curl
to hit an endpoint that sets the X-Cf-Warnings
header the warning is printed to stdout
and makes the output no longer JSON parseable. Example:
cf curl /v3/processes/e9c6facc-7c9b-4cf6-9a7f-e5a4c908157c/stats
{
"resources": [
{
"type": "web",
"index": 0,
"state": "RUNNING",
"host": "127.0.0.1",
"uptime": 173624,
"mem_quota": null,
"disk_quota": null,
"fds_quota": 16384,
"isolation_segment": "placeholder",
"details": null,
"instance_ports": [
{
"external": 80,
"internal": 8080,
"external_tls_proxy_port": null,
"internal_tls_proxy_port": null
}
],
"usage": {}
}
]
}
Stats server temporarily unavailable.
Expected behavior
The X-Cf-Warnings
header would either be printed to stderr
or ignored and only displayed if the user requests it via the -i
(Include response headers in the output) flag.
Exact Steps To Reproduce
Steps to reproduce the behavior; include the exact CLI commands and verbose output:
- Push an app
bosh ssh doppler
sudo su -
monit stop log-cache
cf curl /v3/apps/$(cf app MY_APP --guid)/processes
to get theweb
process guid for the appcf curl /v3/processes/:guid/stats
Provide more context
- Mac OS X 11.13 iTerm
cf version 7.2.0+be4a5ce2b.2020-12-10
- Dev capi-release. Should be the next one after capi-release 1.109.0.
Related Issues and PRs
We have created an issue in Pivotal Tracker to manage this:
https://www.pivotaltracker.com/story/show/178006715
The labels on this github issue will be updated when the story is started.
Hi!
We are currently reviewing this issue and found some insights:
- The CLI prints every X-Cf-Warnings as a warning through the stdout. As shown
- It is possible to print the X-Cf-Warnings as a stderr when the env
CF_RAISE_ERROR_ON_WARNINGS
is set. As shown
This is the expected behavior for the X-Cf-Warnings management.
cc @jdgonzaleza
I see, I didn't realize it always went to stdout
. Good to know about CF_RAISE_ERROR_ON_WARNINGS
, thanks. ๐