elastic / elastic/ecctl

Support redirecting `ecctl deployment create --track` output to a file

Open
#584 0 comments 0 reactions 0 assignees View on GitHub
Team:Delivery
Dominant language
Go
Stars
58
Forks
61
PR merge metrics
No merged PRs in 30d

Description

## Overview
I'd like to be able to:
1. redirect the json output of the `create deployment` command to a file, for later use
2. follow on the console the deployment creation with the `--track` switch

The command I'd like to use and the output I'd like to see:
```
$ ecctl deployment create ... --track >deployment.json
Deployment [b386f90bf2ad24f9be16ee925b9483e8] - [Elasticsearch][c713a0b512f641ed8f7e464a8c86632d]: running step "wait-until-running" (Plan duration 8.659474s)...
Deployment [b386f90bf2ad24f9be16ee925b9483e8] - [Kibana][3d0cee21278e457e9b486ba02f36ebb1]: running step "wait-until-elasticsearch-is-accessible" (Plan duration 7.281477s)...
Deployment [b386f90bf2ad24f9be16ee925b9483e8] - [Apm][7f7832d0381645b09b9a122f3d9dac22]: running step "wait-until-elasticsearch-is-accessible" (Plan duration 6.08548s)...
...
```

`deployment.json` would contain the usual json content with the info of the just created deployment.

## Possible Implementation

My suggestion is to write the `--track` updates to the console standard error, instead of the standard output as it is now and where the json result is also written.

## Testing
```
$ ecctl deployment create ... --track >deployment.json
Deployment [b386f90bf2ad24f9be16ee925b9483e8] - [Elasticsearch][c713a0b512f641ed8f7e464a8c86632d]: running step "wait-until-running" (Plan duration 8.659474s)...
Deployment [b386f90bf2ad24f9be16ee925b9483e8] - [Kibana][3d0cee21278e457e9b486ba02f36ebb1]: running step "wait-until-elasticsearch-is-accessible" (Plan duration 7.281477s)...
Deployment [b386f90bf2ad24f9be16ee925b9483e8] - [Apm][7f7832d0381645b09b9a122f3d9dac22]: running step "wait-until-elasticsearch-is-accessible" (Plan duration 6.08548s)...
...
$ ecctl deployment shutdown --force $(jq -r .id credentials-cloud-stack.json)
```

## Context
I'm building some testing automation for the [geneve](https://github.com/elastic/geneve) tool via `Makefile` and shell scripting.

I can effectively use `jq` to extract the info I need from the captured output, with the minor annoyance of `jq` complaining for non-json garbage at the end of the file (the deployment creation tracking).

More annoying instead is that if I redirect the output to a file, I cannot see the creation progress.

## Workaround

```
$ ecctl deployment create --file $DEPLOYMENT_FILE --track | tee /dev/stderr | (jq >$CREDS_FILE 2>/dev/null; cat >/dev/null)
```

## Your Environment
`Makefile` and shell script automation on macOS.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.