Skip to content

Commit 2042fe6

Browse files
authored
CLOUDP-287348 Consolidate cli.MetricsOpts flags (#3465)
1 parent 6420eb6 commit 2042fe6

File tree

6 files changed

+98
-92
lines changed

6 files changed

+98
-92
lines changed

internal/cli/metrics/databases/describe.go

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,21 @@ import (
2121
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/cli"
2222
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/cli/require"
2323
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/config"
24+
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/convert"
2425
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/flag"
26+
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/pointer"
2527
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/store"
2628
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/usage"
2729
"github.com/spf13/cobra"
30+
atlasv2 "go.mongodb.org/atlas-sdk/v20241113002/admin"
2831
)
2932

3033
type DescribeOpts struct {
3134
cli.ProjectOpts
3235
cli.OutputOpts
36+
cli.ListOpts
3337
cli.MetricsOpts
38+
3439
host string
3540
port int
3641
name string
@@ -50,6 +55,30 @@ var databasesMetricTemplate = `NAME UNITS TIMESTAMP VALUE{{range valueOrEmptySl
5055
{{ $name }} {{ $unit }} {{.Timestamp}} {{if .Value }} {{ .Value }}{{else}} N/A {{end}}{{end}}{{end}}{{end}}
5156
`
5257

58+
func (opts *DescribeOpts) NewDatabaseMeasurementsAPIParams(groupID string, processID string, dbName string) *atlasv2.GetDatabaseMeasurementsApiParams {
59+
p := &atlasv2.GetDatabaseMeasurementsApiParams{
60+
GroupId: groupID,
61+
ProcessId: processID,
62+
DatabaseName: dbName,
63+
}
64+
if opts.Granularity != "" {
65+
p.Granularity = &opts.Granularity
66+
}
67+
if len(opts.MeasurementType) > 0 {
68+
p.M = &opts.MeasurementType
69+
}
70+
if opts.Period != "" {
71+
p.Period = &opts.Period
72+
}
73+
if start, err := convert.ParseTimestamp(opts.Start); err == nil {
74+
p.Start = pointer.Get(start)
75+
}
76+
if end, err := convert.ParseTimestamp(opts.End); err == nil {
77+
p.End = pointer.Get(end)
78+
}
79+
return p
80+
}
81+
5382
func (opts *DescribeOpts) Run() error {
5483
processID := opts.host + ":" + strconv.Itoa(opts.port)
5584
params := opts.NewDatabaseMeasurementsAPIParams(opts.ConfigProjectID(), processID, opts.name)
@@ -100,11 +129,7 @@ atlas process list`,
100129

101130
opts.AddListOptsFlagsWithoutOmitCount(cmd)
102131

103-
cmd.Flags().StringVar(&opts.Granularity, flag.Granularity, "", usage.Granularity)
104-
cmd.Flags().StringVar(&opts.Period, flag.Period, "", usage.Period)
105-
cmd.Flags().StringVar(&opts.Start, flag.Start, "", usage.MeasurementStart)
106-
cmd.Flags().StringVar(&opts.End, flag.End, "", usage.MeasurementEnd)
107-
cmd.Flags().StringSliceVar(&opts.MeasurementType, flag.TypeFlag, nil, usage.MeasurementType)
132+
opts.AddMetricsOptsFlags(cmd)
108133

109134
opts.AddProjectOptsFlags(cmd)
110135
opts.AddOutputOptFlags(cmd)

internal/cli/metrics/databases/list.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import (
2929
type ListsOpts struct {
3030
cli.ProjectOpts
3131
cli.OutputOpts
32-
cli.MetricsOpts
3332
cli.ListOpts
3433
host string
3534
port int

internal/cli/metrics/disks/describe.go

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,19 @@ import (
2222
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/cli"
2323
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/cli/require"
2424
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/config"
25+
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/convert"
2526
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/flag"
27+
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/pointer"
2628
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/store"
2729
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/usage"
2830
"github.com/spf13/cobra"
31+
atlasv2 "go.mongodb.org/atlas-sdk/v20241113002/admin"
2932
)
3033

3134
type DescribeOpts struct {
3235
cli.ProjectOpts
3336
cli.OutputOpts
37+
cli.ListOpts
3438
cli.MetricsOpts
3539
host string
3640
port int
@@ -46,6 +50,30 @@ func (opts *DescribeOpts) initStore(ctx context.Context) func() error {
4650
}
4751
}
4852

53+
func (opts *DescribeOpts) NewDiskMeasurementsAPIParams(groupID string, processID string, partitionName string) *atlasv2.GetDiskMeasurementsApiParams {
54+
p := &atlasv2.GetDiskMeasurementsApiParams{
55+
GroupId: groupID,
56+
ProcessId: processID,
57+
PartitionName: partitionName,
58+
}
59+
if opts.Granularity != "" {
60+
p.Granularity = &opts.Granularity
61+
}
62+
if len(opts.MeasurementType) > 0 {
63+
p.M = &opts.MeasurementType
64+
}
65+
if opts.Period != "" {
66+
p.Period = &opts.Period
67+
}
68+
if start, err := convert.ParseTimestamp(opts.Start); err == nil {
69+
p.Start = pointer.Get(start)
70+
}
71+
if end, err := convert.ParseTimestamp(opts.End); err == nil {
72+
p.End = pointer.Get(end)
73+
}
74+
return p
75+
}
76+
4977
func (opts *DescribeOpts) Run() error {
5078
processID := opts.host + ":" + strconv.Itoa(opts.port)
5179
params := opts.NewDiskMeasurementsAPIParams(opts.ConfigProjectID(), processID, opts.name)
@@ -102,11 +130,7 @@ atlas processes list
102130

103131
opts.AddListOptsFlagsWithoutOmitCount(cmd)
104132

105-
cmd.Flags().StringVar(&opts.Granularity, flag.Granularity, "", usage.Granularity)
106-
cmd.Flags().StringVar(&opts.Period, flag.Period, "", usage.Period)
107-
cmd.Flags().StringVar(&opts.Start, flag.Start, "", usage.MeasurementStart)
108-
cmd.Flags().StringVar(&opts.End, flag.End, "", usage.MeasurementEnd)
109-
cmd.Flags().StringSliceVar(&opts.MeasurementType, flag.TypeFlag, nil, usage.MeasurementType)
133+
opts.AddMetricsOptsFlags(cmd)
110134

111135
opts.AddProjectOptsFlags(cmd)
112136
opts.AddOutputOptFlags(cmd)

internal/cli/metrics/disks/list.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ type ListsOpts struct {
3030
cli.ProjectOpts
3131
cli.OutputOpts
3232
cli.ListOpts
33-
cli.MetricsOpts
3433
host string
3534
port int
3635
store store.ProcessDisksLister

internal/cli/metrics/processes/processes.go

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,20 @@ import (
2222
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/cli"
2323
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/cli/require"
2424
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/config"
25+
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/convert"
2526
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/flag"
27+
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/pointer"
2628
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/store"
2729
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/usage"
2830
"github.com/spf13/cobra"
31+
atlasv2 "go.mongodb.org/atlas-sdk/v20241113002/admin"
2932
)
3033

3134
type Opts struct {
3235
cli.ProjectOpts
3336
cli.OutputOpts
3437
cli.MetricsOpts
38+
cli.ListOpts
3539
host string
3640
port int
3741
store store.ProcessMeasurementLister
@@ -45,6 +49,29 @@ func (opts *Opts) initStore(ctx context.Context) func() error {
4549
}
4650
}
4751

52+
func (opts *Opts) NewProcessMeasurementsAPIParams(groupID string, processID string) *atlasv2.GetHostMeasurementsApiParams {
53+
p := &atlasv2.GetHostMeasurementsApiParams{
54+
GroupId: groupID,
55+
ProcessId: processID,
56+
}
57+
if opts.Granularity != "" {
58+
p.Granularity = &opts.Granularity
59+
}
60+
if len(opts.MeasurementType) > 0 {
61+
p.M = &opts.MeasurementType
62+
}
63+
if opts.Period != "" {
64+
p.Period = &opts.Period
65+
}
66+
if start, err := convert.ParseTimestamp(opts.Start); err == nil {
67+
p.Start = pointer.Get(start)
68+
}
69+
if end, err := convert.ParseTimestamp(opts.End); err == nil {
70+
p.End = pointer.Get(end)
71+
}
72+
return p
73+
}
74+
4875
func (opts *Opts) Run() error {
4976
processID := opts.host + ":" + strconv.Itoa(opts.port)
5077
params := opts.NewProcessMeasurementsAPIParams(opts.ConfigProjectID(), processID)
@@ -99,11 +126,8 @@ atlas processes list
99126
}
100127
opts.AddListOptsFlagsWithoutOmitCount(cmd)
101128

102-
cmd.Flags().StringVar(&opts.Granularity, flag.Granularity, "", usage.Granularity)
103-
cmd.Flags().StringVar(&opts.Period, flag.Period, "", usage.Period)
104-
cmd.Flags().StringVar(&opts.Start, flag.Start, "", usage.MeasurementStart)
105-
cmd.Flags().StringVar(&opts.End, flag.End, "", usage.MeasurementEnd)
106-
cmd.Flags().StringSliceVar(&opts.MeasurementType, flag.TypeFlag, nil, usage.MetricsMeasurementType)
129+
opts.AddMetricsOptsFlags(cmd)
130+
cmd.Flag(flag.TypeFlag).Usage = usage.MetricsMeasurementType
107131

108132
opts.AddProjectOptsFlags(cmd)
109133
opts.AddOutputOptFlags(cmd)

internal/cli/metrics_opt.go

Lines changed: 10 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -19,92 +19,19 @@ import (
1919
"strconv"
2020
"strings"
2121

22-
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/convert"
2322
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/flag"
24-
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/pointer"
25-
atlasv2 "go.mongodb.org/atlas-sdk/v20241113002/admin"
23+
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/usage"
24+
"github.com/spf13/cobra"
2625
)
2726

2827
type MetricsOpts struct {
29-
ListOpts
3028
Granularity string
3129
Period string
3230
Start string
3331
End string
3432
MeasurementType []string
3533
}
3634

37-
func (opts *MetricsOpts) NewProcessMeasurementsAPIParams(groupID string, processID string) *atlasv2.GetHostMeasurementsApiParams {
38-
p := &atlasv2.GetHostMeasurementsApiParams{
39-
GroupId: groupID,
40-
ProcessId: processID,
41-
}
42-
if opts.Granularity != "" {
43-
p.Granularity = &opts.Granularity
44-
}
45-
if len(opts.MeasurementType) > 0 {
46-
p.M = &opts.MeasurementType
47-
}
48-
if opts.Period != "" {
49-
p.Period = &opts.Period
50-
}
51-
if start, err := convert.ParseTimestamp(opts.Start); err == nil {
52-
p.Start = pointer.Get(start)
53-
}
54-
if end, err := convert.ParseTimestamp(opts.End); err == nil {
55-
p.End = pointer.Get(end)
56-
}
57-
return p
58-
}
59-
60-
func (opts *MetricsOpts) NewDiskMeasurementsAPIParams(groupID string, processID string, partitionName string) *atlasv2.GetDiskMeasurementsApiParams {
61-
p := &atlasv2.GetDiskMeasurementsApiParams{
62-
GroupId: groupID,
63-
ProcessId: processID,
64-
PartitionName: partitionName,
65-
}
66-
if opts.Granularity != "" {
67-
p.Granularity = &opts.Granularity
68-
}
69-
if len(opts.MeasurementType) > 0 {
70-
p.M = &opts.MeasurementType
71-
}
72-
if opts.Period != "" {
73-
p.Period = &opts.Period
74-
}
75-
if start, err := convert.ParseTimestamp(opts.Start); err == nil {
76-
p.Start = pointer.Get(start)
77-
}
78-
if end, err := convert.ParseTimestamp(opts.End); err == nil {
79-
p.End = pointer.Get(end)
80-
}
81-
return p
82-
}
83-
84-
func (opts *MetricsOpts) NewDatabaseMeasurementsAPIParams(groupID string, processID string, dbName string) *atlasv2.GetDatabaseMeasurementsApiParams {
85-
p := &atlasv2.GetDatabaseMeasurementsApiParams{
86-
GroupId: groupID,
87-
ProcessId: processID,
88-
DatabaseName: dbName,
89-
}
90-
if opts.Granularity != "" {
91-
p.Granularity = &opts.Granularity
92-
}
93-
if len(opts.MeasurementType) > 0 {
94-
p.M = &opts.MeasurementType
95-
}
96-
if opts.Period != "" {
97-
p.Period = &opts.Period
98-
}
99-
if start, err := convert.ParseTimestamp(opts.Start); err == nil {
100-
p.Start = pointer.Get(start)
101-
}
102-
if end, err := convert.ParseTimestamp(opts.End); err == nil {
103-
p.End = pointer.Get(end)
104-
}
105-
return p
106-
}
107-
10835
// ValidatePeriodStartEnd validates period, start and end flags.
10936
func (opts *MetricsOpts) ValidatePeriodStartEnd() error {
11037
if opts.Period == "" && opts.Start == "" && opts.End == "" {
@@ -128,3 +55,11 @@ func GetHostnameAndPort(hostInfo string) (hostname string, port int, err error)
12855

12956
return host[0], port, nil
13057
}
58+
59+
func (opts *MetricsOpts) AddMetricsOptsFlags(cmd *cobra.Command) {
60+
cmd.Flags().StringVar(&opts.Granularity, flag.Granularity, "", usage.Granularity)
61+
cmd.Flags().StringVar(&opts.Period, flag.Period, "", usage.Period)
62+
cmd.Flags().StringVar(&opts.Start, flag.Start, "", usage.MeasurementStart)
63+
cmd.Flags().StringVar(&opts.End, flag.End, "", usage.MeasurementEnd)
64+
cmd.Flags().StringSliceVar(&opts.MeasurementType, flag.TypeFlag, nil, usage.MeasurementType)
65+
}

0 commit comments

Comments
 (0)