kuberang
kuberang copied to clipboard
Add JSON output format
This PR adds support for printing JSON to the console, instead of the table format. (Fixes #5 )
The main change is the introduction of a report
, which can be populated with successes, errors, and ignored errors. The report
itself is considered successful if there are no errors.
There are two implementations of report
:
- simpleReport: the simple report just stores results in memory, and is serialized to JSON at the end of the workflow.
- echoReport: the echo report is similar to the simpleReport, but it also prints messages to the screen as items are added.
The following is a sample of a happy path report:
./kuberang -o json
{
"CheckResults": [
{
"Name": "Configured kubectl exists",
"Success": true,
"Ignored": false
},
{
"Name": "Nginx service does not already exist",
"Success": true,
"Ignored": false
},
{
"Name": "BusyBox service does not already exist",
"Success": true,
"Ignored": false
},
{
"Name": "Nginx service does not already exist",
"Success": true,
"Ignored": false
},
{
"Name": "Issued BusyBox start request",
"Success": true,
"Ignored": false
},
{
"Name": "Issued Nginx start request",
"Success": true,
"Ignored": false
},
{
"Name": "Both deployments completed successfully within timeout",
"Success": true,
"Ignored": false
},
{
"Name": "Issued expose Nginx service request",
"Success": true,
"Ignored": false
},
{
"Name": "Grab nginx pod ip addresses",
"Success": true,
"Ignored": false
},
{
"Name": "Grab nginx service ip address",
"Success": true,
"Ignored": false
},
{
"Name": "Grab BusyBox pod name",
"Success": true,
"Ignored": false
},
{
"Name": "Accessed Nginx service at 172.17.119.10 from BusyBox",
"Success": true,
"Ignored": false
},
{
"Name": "Accessed Nginx service via DNS kuberang-nginx-1481031653201225236 from BusyBox",
"Success": true,
"Ignored": false
},
{
"Name": "Accessed Nginx pod at 172.16.0.7 from BusyBox",
"Success": true,
"Ignored": false
},
{
"Name": "Accessed Nginx pod at 172.16.114.7 from BusyBox",
"Success": true,
"Ignored": false
},
{
"Name": "Accessed Google.com from BusyBox",
"Success": true,
"Ignored": false
},
{
"Name": "Accessed Nginx service via DNS kuberang-nginx-1481031653201225236 from this node",
"Success": false,
"Ignored": true
},
{
"Name": "Accessed Nginx pod at 172.16.0.7 from this node",
"Success": false,
"Ignored": true
},
{
"Name": "Accessed Nginx pod at 172.16.114.7 from this node",
"Success": false,
"Ignored": true
},
{
"Name": "Accessed Google.com from this node",
"Success": true,
"Ignored": false
},
{
"Name": "Powered down Nginx service",
"Success": true,
"Ignored": false
},
{
"Name": "Powered down Busybox deployment",
"Success": true,
"Ignored": false
},
{
"Name": "Powered down Nginx deployment",
"Success": true,
"Ignored": false
}
]
}
Looks good. I've added a couple of related questions in the Issue itself.