tanzu-cli icon indicating copy to clipboard operation
tanzu-cli copied to clipboard

Add global --verbose flag

Open mpanchajanya opened this issue 11 months ago • 0 comments

What this PR does / why we need it

  • Introduce a global flag --verbose of type int with values 0-9 to set the log verbosity level for a tanzu command.
  • For Plugin commands :- If plugin root command support --verbose flag the CLI would send the flag args to plugin.

If a plugin implement --verbose flag of any type int, bool, string that flag args are passed to plugin by the Tanzu CLI

  • Tanzu CLI only supports --verbose flag of int type For Example :- When user runs
tanzu --verbose 5 telemetry version
# The CLI will set the log verbosity to 5 and also passes the --verbose flag to telemetry plugin if it supports.

Which issue(s) this PR fixes

Fixes #

Describe testing done for PR

For Tanzu CLI Commands with different test log levels

> tz --verbose 10 version
[x] : Invalid value for verbose flag. It should be between 0 and 9
> tz --verbose true version
[x] : invalid argument "true" for "--verbose" flag: strconv.ParseInt: parsing "true": invalid syntax
> tz --verbose=true version
[x] : invalid argument "true" for "--verbose" flag: strconv.ParseInt: parsing "true": invalid syntax
> tz --verbose -10 version
[x] : Invalid value for verbose flag. It should be between 0 and 9

> tz version
[i] I am level default
[i] I am level 0
[i] I am level 1
[i] I am level 2
[i] I am level 3
version: v1.3.0-dev
buildDate: 2024-03-13
sha: 61a35e05
arch: arm64

> tz --verbose 0 version
[i] I am level default
[i] I am level 0
version: v1.3.0-dev
buildDate: 2024-03-13
sha: 61a35e05
arch: arm64

> tz --verbose 2 version
[i] I am level default
[i] I am level 0
[i] I am level 1
[i] I am level 2
version: v1.3.0-dev
buildDate: 2024-03-13
sha: 61a35e05
arch: arm64

> tz --verbose 5 version
[i] I am level default
[i] I am level 0
[i] I am level 1
[i] I am level 2
[i] I am level 3
[i] I am level 4
[i] I am level 5
version: v1.3.0-dev
buildDate: 2024-03-13
sha: 61a35e05
arch: arm64

> TANZU_CLI_LOG_LEVEL=0 tz version
[i] I am level default
[i] I am level 0
version: v1.3.0-dev
buildDate: 2024-03-13
sha: 61a35e05
arch: arm64

> TANZU_CLI_LOG_LEVEL=3 tz version
[i] I am level default
[i] I am level 0
[i] I am level 1
[i] I am level 2
[i] I am level 3
version: v1.3.0-dev
buildDate: 2024-03-13
sha: 61a35e05
arch: arm64

> TANZU_CLI_LOG_LEVEL=6 tz version
[i] I am level default
[i] I am level 0
[i] I am level 1
[i] I am level 2
[i] I am level 3
[i] I am level 4
[i] I am level 5
[i] I am level 6
version: v1.3.0-dev
buildDate: 2024-03-13
sha: 61a35e05
arch: arm64

Created test plugins logb with boolean verbose flag, logi with int verbose flag

> tz --verbose 2 logi
[i] I am level default
[i] I am level 0
[i] I am level 1
[i] I am level 2
[i] [Plugin] I am level default # Test logs from the plugin
[i] [Plugin] I am level 0
[i] [Plugin] I am level 1
[i] [Plugin] I am level 2

> tz --verbose -2 logi
[x] : Missing value for verbose flag

> tz --verbose 6 logi
[i] I am level default
[i] I am level 0
[i] I am level 1
[i] I am level 2
[i] I am level 3
[i] I am level 4
[i] I am level 5
[i] I am level 6
[i] [Plugin] I am level default
[i] [Plugin] I am level 0
[i] [Plugin] I am level 1
[i] [Plugin] I am level 2
[i] [Plugin] I am level 3
[i] [Plugin] I am level 4
[i] [Plugin] I am level 5
[i] [Plugin] I am level 6

> tz --verbose logi
[x] : invalid argument "logi" for "--verbose" flag: strconv.ParseInt: parsing "logi": invalid syntax


# For boolean verbose flag plugin

> tz --verbose=true logb
[i] I am level default
[i] I am level 0
[i] I am level 1
[i] I am level 2
[i] I am level 3
[i] [Plugin] I am level default
[i] [Plugin] I am level 0
[i] [Plugin] I am level 1
[i] [Plugin] I am level 2
[i] [Plugin] I am level 3

> tz --verbose=false logb
[i] I am level default
[i] I am level 0
[i] I am level 1
[i] I am level 2
[i] I am level 3
[i] [Plugin] I am level default
[i] [Plugin] I am level 0
[i] [Plugin] I am level 1
[i] [Plugin] I am level 2
[i] [Plugin] I am level 3


With existing plugin that doesn't support verbose flag

# The verbosity is only set in the Tanzu CLI and since builder plugin doesn't support verbose flag CLI doesn't pass the flag
> tz --verbose 5 builder version
[i] I am level default
[i] I am level 0
[i] I am level 1
[i] I am level 2
[i] I am level 3
[i] I am level 4
[i] I am level 5
v1.2.0

> tz --verbose 0 builder version
[i] I am level default
[i] I am level 0
v1.2.0


Invalid verbose flag values

> tz version --verbose
[x] : flag needs an argument: --verbose

> tz --verbose version
[x] : invalid argument "version" for "--verbose" flag: strconv.ParseInt: parsing "version": invalid syntax

> tz version --verbose hi
[x] : invalid argument "hi" for "--verbose" flag: strconv.ParseInt: parsing "hi": invalid syntax

> tz version --verbose -h
[x] : invalid argument "-h" for "--verbose" flag: strconv.ParseInt: parsing "-h": invalid syntax

Release note

Implement a global log level verbose flag --verbose 

Additional information

Special notes for your reviewer

mpanchajanya avatar Mar 07 '24 15:03 mpanchajanya