Skip to content

Commit b6e86b1

Browse files
authored
config: change LogColorOverride to "string" (#212)
* config: change LogColorOverride to "string" Fix #211. Signed-off-by: Gyuho Lee <[email protected]> * CHANGELOG: update "LogColorOverride" change Signed-off-by: Gyuho Lee <[email protected]>
1 parent 516c9e2 commit b6e86b1

File tree

12 files changed

+162
-142
lines changed

12 files changed

+162
-142
lines changed

CHANGELOG/CHANGELOG-1.5.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@
88

99
- Initial commit for [`"github.com/aws/aws-k8s-tester/client"`](https://github.com/aws/aws-k8s-tester/commit/de76767f6e0972d35370457dc67dd4959b9e638f).
1010

11+
### `ec2config`
12+
13+
- Change [`LogColorOverride` field from `bool` to `string`](https://github.com/aws/aws-k8s-tester/pull/212).
14+
- Fix https://github.com/aws/aws-k8s-tester/issues/211.
15+
- If not empty, now `terminal.IsColor` is not run.
16+
1117
### `eks`
1218

1319
- Add [`eks/stresser2`](https://github.com/aws/aws-k8s-tester/pull/206).
@@ -17,6 +23,9 @@
1723
- Add [`AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_LOCAL_CL2_SCHEDULER_THROUGHPUT_THRESHOLD`](https://github.com/aws/aws-k8s-tester/pull/208).
1824
- Add [`AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_CL2_SCHEDULER_THROUGHPUT_THRESHOLD`](https://github.com/aws/aws-k8s-tester/pull/208).
1925
- Ignore error [for an unknown region](https://github.com/aws/aws-k8s-tester/pull/204).
26+
- Change [`LogColorOverride` field from `bool` to `string`](https://github.com/aws/aws-k8s-tester/pull/212).
27+
- Fix https://github.com/aws/aws-k8s-tester/issues/211.
28+
- If not empty, now `terminal.IsColor` is not run.
2029

2130
### `k8s-tester`
2231

ec2/ec2.go

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import (
1515
"github.com/aws/aws-k8s-tester/ec2config"
1616
pkgaws "github.com/aws/aws-k8s-tester/pkg/aws"
1717
"github.com/aws/aws-k8s-tester/pkg/logutil"
18-
"github.com/aws/aws-k8s-tester/pkg/terminal"
1918
"github.com/aws/aws-k8s-tester/version"
2019
"github.com/aws/aws-sdk-go/aws"
2120
"github.com/aws/aws-sdk-go/aws/session"
@@ -37,7 +36,6 @@ import (
3736
"github.com/aws/aws-sdk-go/service/ssm/ssmiface"
3837
"github.com/aws/aws-sdk-go/service/sts"
3938
"github.com/dustin/go-humanize"
40-
"github.com/mitchellh/colorstring"
4139
"go.uber.org/zap"
4240
)
4341

@@ -81,21 +79,7 @@ func New(cfg *ec2config.Config) (*Tester, error) {
8179
if err != nil {
8280
return nil, err
8381
}
84-
lg.Info("set up log writer and file", zap.Strings("outputs", cfg.LogOutputs))
85-
86-
isColor := cfg.LogColor
87-
co, cerr := terminal.IsColor()
88-
if cerr == nil {
89-
lg.Info("requested output in color", zap.String("output", co), zap.Error(cerr))
90-
colorstring.Printf("\n\n[light_green]HELLO COLOR\n\n")
91-
isColor = true
92-
} else if !cfg.LogColorOverride {
93-
lg.Warn("requested output in color but not supported; overriding", zap.String("output", co), zap.Error(cerr))
94-
isColor = false
95-
} else {
96-
lg.Info("requested output color", zap.Bool("is-color", isColor), zap.String("output", co), zap.Error(cerr))
97-
}
98-
cfg.LogColor = isColor
82+
lg.Info("set up log writer and file", zap.Strings("outputs", cfg.LogOutputs), zap.Bool("is-color", cfg.LogColor))
9983
cfg.Sync()
10084

10185
fmt.Fprintf(logWriter, cfg.Colorize("\n\n[yellow]*********************************\n"))

ec2config/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
| AWS_K8S_TESTER_EC2_AWS_IAM_ROLE_ARN | read-only "true" | *ec2config.Config.AWSIAMRoleARN | string |
1818
| AWS_K8S_TESTER_EC2_AWS_CREDENTIAL_PATH | read-only "true" | *ec2config.Config.AWSCredentialPath | string |
1919
| AWS_K8S_TESTER_EC2_LOG_COLOR | read-only "false" | *ec2config.Config.LogColor | bool |
20-
| AWS_K8S_TESTER_EC2_LOG_COLOR_OVERRIDE | read-only "false" | *ec2config.Config.LogColorOverride | bool |
20+
| AWS_K8S_TESTER_EC2_LOG_COLOR_OVERRIDE | read-only "false" | *ec2config.Config.LogColorOverride | string |
2121
| AWS_K8S_TESTER_EC2_LOG_LEVEL | read-only "false" | *ec2config.Config.LogLevel | string |
2222
| AWS_K8S_TESTER_EC2_LOG_OUTPUTS | read-only "false" | *ec2config.Config.LogOutputs | []string |
2323
| AWS_K8S_TESTER_EC2_ON_FAILURE_DELETE | read-only "false" | *ec2config.Config.OnFailureDelete | bool |

ec2config/config.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,10 +87,14 @@ type Config struct {
8787

8888
// LogColor is true to output logs in color.
8989
LogColor bool `json:"log-color"`
90-
// LogColorOverride is true to use "LogColor" setting
91-
// even if the current terminal does not support color outputs.
92-
// Useful to output in color in HTML based log outputs (e.g. Prow).
93-
LogColorOverride bool `json:"log-color-override"`
90+
// LogColorOverride is not empty to override "LogColor" setting.
91+
// If not empty, the automatic color check is not even run and use this value instead.
92+
// For instance, github action worker might not support color device,
93+
// thus exiting color check with the exit code 1.
94+
// Useful to output in color in HTML based log outputs (e.g., Prow).
95+
// Useful to skip terminal color check when there is no color device (e.g., Github action worker).
96+
LogColorOverride string `json:"log-color-override"`
97+
9498
// LogLevel configures log level. Only supports debug, info, warn, error, panic, or fatal. Default 'info'.
9599
LogLevel string `json:"log-level"`
96100
// LogOutputs is a list of log outputs. Valid values are 'default', 'stderr', 'stdout', or file names.

ec2config/default.yaml

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
asgs:
2-
ec2-2021041219-integritynoq-asg:
2+
ec2-2021042610-flowerp40w88-asg:
33
ami-type: AL2_x86_64
44
asg-cfn-stack-id: ""
5-
asg-cfn-stack-yaml-path: /home/leegyuho/go/src/github.com/aws/aws-k8s-tester/ec2config/default.asg.cfn.ec2-2021041219-integritynoq-asg.yaml
6-
asg-cfn-stack-yaml-s3-key: ec2-2021041219-integritynoq/default.asg.cfn.ec2-2021041219-integritynoq-asg.yaml
5+
asg-cfn-stack-yaml-path: /Users/leegyuho/go/src/github.com/aws/aws-k8s-tester/ec2config/default.asg.cfn.ec2-2021042610-flowerp40w88-asg.yaml
6+
asg-cfn-stack-yaml-s3-key: ec2-2021042610-flowerp40w88/default.asg.cfn.ec2-2021042610-flowerp40w88-asg.yaml
77
asg-desired-capacity: 1
88
asg-max-size: 1
99
asg-min-size: 1
@@ -13,12 +13,12 @@ asgs:
1313
instance-types:
1414
- c5.xlarge
1515
logs: null
16-
name: ec2-2021041219-integritynoq-asg
16+
name: ec2-2021042610-flowerp40w88-asg
1717
remote-access-user-name: ec2-user
1818
ssm-document-cfn-stack-id: ""
1919
ssm-document-cfn-stack-name: ""
20-
ssm-document-cfn-stack-yaml-path: /home/leegyuho/go/src/github.com/aws/aws-k8s-tester/ec2config/default.ssm.cfn.ec2-2021041219-integritynoq-asg.yaml
21-
ssm-document-cfn-stack-yaml-s3-key: ec2-2021041219-integritynoq/default.ssm.cfn.ec2-2021041219-integritynoq-asg.yaml
20+
ssm-document-cfn-stack-yaml-path: /Users/leegyuho/go/src/github.com/aws/aws-k8s-tester/ec2config/default.ssm.cfn.ec2-2021042610-flowerp40w88-asg.yaml
21+
ssm-document-cfn-stack-yaml-s3-key: ec2-2021042610-flowerp40w88/default.ssm.cfn.ec2-2021042610-flowerp40w88-asg.yaml
2222
ssm-document-command-ids: null
2323
ssm-document-commands: ""
2424
ssm-document-create: false
@@ -40,44 +40,44 @@ asgs:
4040
took-string: ""
4141
volume-size: 40
4242
asgs-fetch-logs: true
43-
asgs-logs-dir: /home/leegyuho/go/src/github.com/aws/aws-k8s-tester/ec2config/ec2-2021041219-integritynoq-logs-remote
43+
asgs-logs-dir: /Users/leegyuho/go/src/github.com/aws/aws-k8s-tester/ec2config/ec2-2021042610-flowerp40w88-logs-remote
4444
aws-account-id: ""
4545
aws-credential-path: ""
4646
aws-iam-role-arn: ""
4747
aws-user-id: ""
48-
config-path: /home/leegyuho/go/src/github.com/aws/aws-k8s-tester/ec2config/default.yaml
48+
config-path: /Users/leegyuho/go/src/github.com/aws/aws-k8s-tester/ec2config/default.yaml
4949
dhcp-options-domain-name: ""
5050
dhcp-options-domain-name-servers: null
5151
log-color: true
52-
log-color-override: false
52+
log-color-override: ""
5353
log-level: info
5454
log-outputs:
5555
- stderr
56-
- /home/leegyuho/go/src/github.com/aws/aws-k8s-tester/ec2config/default.yaml.log
57-
name: ec2-2021041219-integritynoq
56+
- /Users/leegyuho/go/src/github.com/aws/aws-k8s-tester/ec2config/default.yaml.log
57+
name: ec2-2021042610-flowerp40w88
5858
on-failure-delete: true
5959
on-failure-delete-wait-seconds: 120
6060
partition: aws
6161
private-subnet-ids: null
6262
public-subnet-ids: null
6363
region: us-west-2
64-
remote-access-commands-output-path: /home/leegyuho/go/src/github.com/aws/aws-k8s-tester/ec2config/default.ssh.sh
64+
remote-access-commands-output-path: /Users/leegyuho/go/src/github.com/aws/aws-k8s-tester/ec2config/default.ssh.sh
6565
remote-access-key-create: true
66-
remote-access-key-name: ec2-2021041219-integritynoq-key
67-
remote-access-private-key-path: /tmp/duneroi6ln.insecure.key
66+
remote-access-key-name: ec2-2021042610-flowerp40w88-key
67+
remote-access-private-key-path: /var/folders/xt/szh_n5x154x2hyhj0zkpd3qr0000gn/T/mountaincz.insecure.key
6868
role-arn: ""
6969
role-cfn-stack-id: ""
70-
role-cfn-stack-yaml-path: /home/leegyuho/go/src/github.com/aws/aws-k8s-tester/ec2config/default.role.cfn.yaml
71-
role-cfn-stack-yaml-s3-key: ec2-2021041219-integritynoq/default.role.cfn.yaml
70+
role-cfn-stack-yaml-path: /Users/leegyuho/go/src/github.com/aws/aws-k8s-tester/ec2config/default.role.cfn.yaml
71+
role-cfn-stack-yaml-s3-key: ec2-2021042610-flowerp40w88/default.role.cfn.yaml
7272
role-create: true
7373
role-managed-policy-arns: null
74-
role-name: ec2-2021041219-integritynoq-role
74+
role-name: ec2-2021042610-flowerp40w88-role
7575
role-service-principals: null
7676
s3-bucket-create: true
7777
s3-bucket-create-keep: true
7878
s3-bucket-lifecycle-expiration-days: 0
79-
s3-bucket-name: ec2-2021041219-integritynoq-s3-bucket
80-
s3-dir: ec2-2021041219-integritynoq
79+
s3-bucket-name: ec2-2021042610-flowerp40w88-s3-bucket
80+
s3-dir: ec2-2021042610-flowerp40w88
8181
security-group-id: ""
8282
ssh-ingress-ipv4-range: ""
8383
status: null
@@ -99,7 +99,7 @@ time-frame-delete:
9999
total-nodes: 1
100100
up: false
101101
vpc-cfn-stack-id: ""
102-
vpc-cfn-stack-yaml-path: /home/leegyuho/go/src/github.com/aws/aws-k8s-tester/ec2config/default.vpc.cfn.yaml
103-
vpc-cfn-stack-yaml-s3-key: ec2-2021041219-integritynoq/default.vpc.cfn.yaml
102+
vpc-cfn-stack-yaml-path: /Users/leegyuho/go/src/github.com/aws/aws-k8s-tester/ec2config/default.vpc.cfn.yaml
103+
vpc-cfn-stack-yaml-s3-key: ec2-2021042610-flowerp40w88/default.vpc.cfn.yaml
104104
vpc-create: true
105105
vpc-id: ""

ec2config/env_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ func TestEnv(t *testing.T) {
5858
if cfg.LogColor {
5959
t.Fatalf("unexpected cfg.LogColor %v", cfg.LogColor)
6060
}
61-
if !cfg.LogColorOverride {
62-
t.Fatalf("unexpected cfg.LogColorOverride %v", cfg.LogColorOverride)
61+
if cfg.LogColorOverride != "true" {
62+
t.Fatalf("unexpected LogColorOverride %q", cfg.LogColorOverride)
6363
}
6464
if !cfg.S3BucketCreate {
6565
t.Fatalf("unexpected cfg.S3BucketCreate %v", cfg.S3BucketCreate)

ec2config/validate-defaults.go

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"path"
88
"path/filepath"
99
"regexp"
10+
"strconv"
1011
"strings"
1112
"sync"
1213
"time"
@@ -38,7 +39,9 @@ func NewDefault() *Config {
3839
ConfigPath: "",
3940
RemoteAccessCommandsOutputPath: "",
4041

41-
LogColor: true,
42+
LogColor: true,
43+
LogColorOverride: "",
44+
4245
LogLevel: logutil.DefaultLogLevel,
4346
// default, stderr, stdout, or file name
4447
// log file named with cluster name will be added automatically
@@ -130,10 +133,22 @@ func (cfg *Config) validateConfig() error {
130133
return fmt.Errorf("region %q for partition %q not found in %+v", cfg.Region, cfg.Partition, regions)
131134
}
132135

133-
_, cerr := terminal.IsColor()
134-
if cfg.LogColor && !cfg.LogColorOverride && cerr != nil {
135-
cfg.LogColor = false
136+
if cfg.LogColorOverride == "" {
137+
_, cerr := terminal.IsColor()
138+
if cfg.LogColor && cerr != nil {
139+
cfg.LogColor = false
140+
fmt.Fprintf(os.Stderr, "[WARN] LogColor is set to 'false' due to error %+v", cerr)
141+
}
142+
} else {
143+
// non-empty override, don't even run "terminal.IsColor"
144+
ov, perr := strconv.ParseBool(cfg.LogColorOverride)
145+
if perr != nil {
146+
return fmt.Errorf("failed to parse LogColorOverride %q (%v)", cfg.LogColorOverride, perr)
147+
}
148+
cfg.LogColor = ov
149+
fmt.Fprintf(os.Stderr, "[WARN] LogColor is overwritten with %q", cfg.LogColorOverride)
136150
}
151+
137152
if len(cfg.LogOutputs) == 0 {
138153
return errors.New("LogOutputs is not empty")
139154
}

eks/eks.go

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ import (
7676
"github.com/aws/aws-k8s-tester/pkg/httputil"
7777
k8s_client "github.com/aws/aws-k8s-tester/pkg/k8s-client"
7878
"github.com/aws/aws-k8s-tester/pkg/logutil"
79-
"github.com/aws/aws-k8s-tester/pkg/terminal"
8079
"github.com/aws/aws-k8s-tester/pkg/user"
8180
"github.com/aws/aws-k8s-tester/version"
8281
aws_v2 "github.com/aws/aws-sdk-go-v2/aws"
@@ -117,7 +116,6 @@ import (
117116
"github.com/aws/aws-sdk-go/service/ssm/ssmiface"
118117
"github.com/aws/aws-sdk-go/service/sts"
119118
"github.com/dustin/go-humanize"
120-
"github.com/mitchellh/colorstring"
121119
"go.uber.org/zap"
122120
"k8s.io/client-go/kubernetes"
123121
"k8s.io/klog"
@@ -211,21 +209,7 @@ func New(cfg *eksconfig.Config) (ts *Tester, err error) {
211209
return nil, err
212210
}
213211
_ = zap.ReplaceGlobals(lg)
214-
lg.Info("set up log writer and file", zap.Strings("outputs", cfg.LogOutputs))
215-
216-
isColor := cfg.LogColor
217-
co, cerr := terminal.IsColor()
218-
if cerr == nil {
219-
lg.Info("requested output in color", zap.String("output", co), zap.Error(cerr))
220-
colorstring.Printf("\n\n[light_green]HELLO COLOR\n\n")
221-
isColor = true
222-
} else if !cfg.LogColorOverride {
223-
lg.Warn("requested output in color but not supported; overriding", zap.String("output", co), zap.Error(cerr))
224-
isColor = false
225-
} else {
226-
lg.Info("requested output color", zap.Bool("is-color", isColor), zap.String("output", co), zap.Error(cerr))
227-
}
228-
cfg.LogColor = isColor
212+
lg.Info("set up log writer and file", zap.Strings("outputs", cfg.LogOutputs), zap.Bool("is-color", cfg.LogColor))
229213
cfg.Sync()
230214

231215
colorize := cfg.Colorize

0 commit comments

Comments
 (0)