Skip to content

Commit f2a1ad4

Browse files
authored
feat(cmx): Add show-terminated and show-reports bools, resources and has_report columns (#587)
* feat(cmx): Add show-terminated and show-reports bools, resources and has_report columns Signed-off-by: Kyle Squizzato <[email protected]> * Add newline when -owide for readability of resources Signed-off-by: Kyle Squizzato <[email protected]> --------- Signed-off-by: Kyle Squizzato <[email protected]>
1 parent 61882ce commit f2a1ad4

File tree

8 files changed

+57
-20
lines changed

8 files changed

+57
-20
lines changed

cli/cmd/network.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ func (r *runners) completeNetworkNames(cmd *cobra.Command, args []string, toComp
5151
return nil, cobra.ShellCompDirectiveNoFileComp
5252
}
5353

54-
networks, err := r.kotsAPI.ListNetworks(nil, nil)
54+
networks, err := r.kotsAPI.ListNetworks(false, nil, nil)
5555
if err != nil {
5656
return nil, cobra.ShellCompDirectiveError
5757
}
@@ -71,7 +71,7 @@ func (r *runners) completeNetworkIDs(cmd *cobra.Command, args []string, toComple
7171
return nil, cobra.ShellCompDirectiveNoFileComp
7272
}
7373

74-
networks, err := r.kotsAPI.ListNetworks(nil, nil)
74+
networks, err := r.kotsAPI.ListNetworks(false, nil, nil)
7575
if err != nil {
7676
return nil, cobra.ShellCompDirectiveError
7777
}
@@ -89,7 +89,7 @@ func (r *runners) completeNetworkIDsAndNames(cmd *cobra.Command, args []string,
8989
return nil, cobra.ShellCompDirectiveNoFileComp
9090
}
9191

92-
networks, err := r.kotsAPI.ListNetworks(nil, nil)
92+
networks, err := r.kotsAPI.ListNetworks(false, nil, nil)
9393
if err != nil {
9494
return nil, cobra.ShellCompDirectiveError
9595
}
@@ -115,7 +115,7 @@ func (r *runners) getNetworkIDFromArg(arg string) (string, error) {
115115
return "", errors.Wrap(err, "get network")
116116
}
117117

118-
networks, err := r.kotsAPI.ListNetworks(nil, nil)
118+
networks, err := r.kotsAPI.ListNetworks(false, nil, nil)
119119
if errors.Cause(err) == platformclient.ErrForbidden {
120120
return "", ErrCompatibilityMatrixTermsNotAccepted
121121
} else if err != nil {

cli/cmd/network_ls.go

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ func (r *runners) InitNetworkList(parent *cobra.Command) *cobra.Command {
2222
}
2323
parent.AddCommand(cmd)
2424

25+
cmd.Flags().BoolVar(&r.args.lsNetworkShowTerminated, "show-terminated", false, "when set, only show terminated networks")
26+
cmd.Flags().BoolVar(&r.args.lsNetworkShowReports, "show-reports", false, "when set, only show networks that have reports")
2527
cmd.Flags().StringVar(&r.args.lsNetworkStartTime, "start-time", "", "start time for the query (Format: 2006-01-02T15:04:05Z)")
2628
cmd.Flags().StringVar(&r.args.lsNetworkEndTime, "end-time", "", "end time for the query (Format: 2006-01-02T15:04:05Z)")
2729
cmd.Flags().StringVarP(&r.outputFormat, "output", "o", "table", "The output format to use. One of: json|table|wide")
@@ -48,13 +50,24 @@ func (r *runners) listNetworks(_ *cobra.Command, args []string) error {
4850
endTime = &et
4951
}
5052

51-
networks, err := r.kotsAPI.ListNetworks(startTime, endTime)
53+
networks, err := r.kotsAPI.ListNetworks(r.args.lsNetworkShowTerminated, startTime, endTime)
5254
if errors.Cause(err) == platformclient.ErrForbidden {
5355
return ErrCompatibilityMatrixTermsNotAccepted
5456
} else if err != nil {
5557
return errors.Wrap(err, "list networks")
5658
}
5759

60+
// Filter networks if --show-reports is set
61+
if r.args.lsNetworkShowReports {
62+
filteredNetworks := make([]*types.Network, 0)
63+
for _, network := range networks {
64+
if network.HasReport {
65+
filteredNetworks = append(filteredNetworks, network)
66+
}
67+
}
68+
networks = filteredNetworks
69+
}
70+
5871
header := true
5972
if r.args.lsNetworkWatch {
6073

@@ -74,7 +87,7 @@ func (r *runners) listNetworks(_ *cobra.Command, args []string) error {
7487

7588
// Runs until ctrl C is recognized
7689
for range time.Tick(2 * time.Second) {
77-
newNetworks, err := r.kotsAPI.ListNetworks(startTime, endTime)
90+
newNetworks, err := r.kotsAPI.ListNetworks(r.args.lsNetworkShowTerminated, startTime, endTime)
7891
if err != nil {
7992
if err == promptui.ErrInterrupt {
8093
return errors.New("interrupted")
@@ -83,6 +96,17 @@ func (r *runners) listNetworks(_ *cobra.Command, args []string) error {
8396
return errors.Wrap(err, "watch networks")
8497
}
8598

99+
// Filter networks if --show-reports is set
100+
if r.args.lsNetworkShowReports {
101+
filteredNetworks := make([]*types.Network, 0)
102+
for _, network := range newNetworks {
103+
if network.HasReport {
104+
filteredNetworks = append(filteredNetworks, network)
105+
}
106+
}
107+
newNetworks = filteredNetworks
108+
}
109+
86110
// Create a map from the IDs of the new networks
87111
newNetworkMap := make(map[string]*types.Network)
88112
for _, newNetwork := range newNetworks {

cli/cmd/network_rm.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ func (r *runners) removeNetworks(_ *cobra.Command, args []string) error {
6060
}
6161

6262
if len(r.args.removeNetworkNames) > 0 {
63-
networks, err := r.kotsAPI.ListNetworks(nil, nil)
63+
networks, err := r.kotsAPI.ListNetworks(false, nil, nil)
6464
if err != nil {
6565
return errors.Wrap(err, "list networks")
6666
}
@@ -77,7 +77,7 @@ func (r *runners) removeNetworks(_ *cobra.Command, args []string) error {
7777
}
7878

7979
if r.args.removeNetworkAll {
80-
networks, err := r.kotsAPI.ListNetworks(nil, nil)
80+
networks, err := r.kotsAPI.ListNetworks(false, nil, nil)
8181
if err != nil {
8282
return errors.Wrap(err, "list networks")
8383
}
@@ -99,7 +99,7 @@ func (r *runners) removeNetworks(_ *cobra.Command, args []string) error {
9999
continue
100100
}
101101

102-
networks, err := r.kotsAPI.ListNetworks(nil, nil)
102+
networks, err := r.kotsAPI.ListNetworks(false, nil, nil)
103103
if err != nil {
104104
return errors.Wrap(err, "list networks")
105105
}

cli/cmd/network_update.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ func (r *runners) ensureUpdateNetworkIDArg(args []string) error {
9191
}
9292
r.args.updateNetworkID = networkID
9393
} else if r.args.updateNetworkName != "" {
94-
networks, err := r.kotsAPI.ListNetworks(nil, nil)
94+
networks, err := r.kotsAPI.ListNetworks(false, nil, nil)
9595
if errors.Cause(err) == platformclient.ErrForbidden {
9696
return ErrCompatibilityMatrixTermsNotAccepted
9797
} else if err != nil {

cli/cmd/runner.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -247,9 +247,11 @@ type runnerArgs struct {
247247
createNetworkWaitDuration time.Duration
248248
createNetworkDryRun bool
249249

250-
lsNetworkStartTime string
251-
lsNetworkEndTime string
252-
lsNetworkWatch bool
250+
lsNetworkShowTerminated bool
251+
lsNetworkShowReports bool
252+
lsNetworkStartTime string
253+
lsNetworkEndTime string
254+
lsNetworkWatch bool
253255

254256
networkReportID string
255257
networkReportWatch bool

cli/print/networks.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ import (
1111

1212
// Table formatting
1313
var (
14-
networksTmplTableHeaderSrc = `ID NAME STATUS CREATED EXPIRES POLICY REPORTING`
14+
networksTmplTableHeaderSrc = `ID NAME STATUS CREATED EXPIRES POLICY HAS REPORT`
1515
networksTmplTableRowSrc = `{{ range . -}}
16-
{{ .ID }} {{ padding .Name 27 }} {{ padding (printf "%s" .Status) 12 }} {{ padding (printf "%s" (localeTime .CreatedAt)) 30 }} {{if .ExpiresAt.IsZero}}{{ padding "-" 30 }}{{else}}{{ padding (printf "%s" (localeTime .ExpiresAt)) 30 }}{{end}} {{if eq .Policy ""}}{{ padding "open" 30 }}{{else}}{{ padding (printf "%s" (.Policy)) 30 }}{{end}} {{if .CollectReport}}{{ padding "on" 30 }}{{else}}{{ padding "off" 30 }}{{end}}
16+
{{ printf "%.8s" .ID }} {{ padding .Name 27 }} {{ padding (printf "%s" .Status) 12 }} {{ padding (printf "%s" (localeTime .CreatedAt)) 30 }} {{if .ExpiresAt.IsZero}}{{ padding "-" 30 }}{{else}}{{ padding (printf "%s" (localeTime .ExpiresAt)) 30 }}{{end}} {{if eq .Policy ""}}{{ padding "open" 10 }}{{else}}{{ padding (printf "%s" (.Policy)) 10 }}{{end}} {{if .HasReport}}{{ padding "yes" 10 }}{{else}}{{ padding "no" 10 }}{{end}}
1717
{{ end }}`
1818
)
1919

@@ -25,9 +25,11 @@ var (
2525

2626
// Wide table formatting
2727
var (
28-
networksTmplWideHeaderSrc = `ID NAME STATUS CREATED EXPIRES POLICY REPORTING`
28+
networksTmplWideHeaderSrc = `ID NAME STATUS CREATED EXPIRES POLICY HAS REPORT REPORTING RESOURCES`
2929
networksTmplWideRowSrc = `{{ range . -}}
30-
{{ .ID }} {{ padding .Name 27 }} {{ padding (printf "%s" .Status) 12 }} {{ padding (printf "%s" (localeTime .CreatedAt)) 30 }} {{if .ExpiresAt.IsZero}}{{ padding "-" 30 }}{{else}}{{ padding (printf "%s" (localeTime .ExpiresAt)) 30 }}{{end}} {{if eq .Policy ""}}{{ padding "open" 30 }}{{else}}{{ padding (printf "%s" (.Policy)) 30 }}{{end}} {{if .CollectReport}}{{ padding "on" 30 }}{{else}}{{ padding "off" 30 }}{{end}}
30+
{{ printf "%.8s" .ID }} {{ padding .Name 27 }} {{ padding (printf "%s" .Status) 12 }} {{ padding (printf "%s" (localeTime .CreatedAt)) 30 }} {{if .ExpiresAt.IsZero}}{{ padding "-" 30 }}{{else}}{{ padding (printf "%s" (localeTime .ExpiresAt)) 30 }}{{end}} {{if eq .Policy ""}}{{ padding "open" 10 }}{{else}}{{ padding (printf "%s" (.Policy)) 10 }}{{end}} {{if .HasReport}}{{ padding "yes" 10 }}{{else}}{{ padding "no" 10 }}{{end}} {{if .CollectReport}}{{ padding "on" 10 }}{{else}}{{ padding "off" 10 }}{{end}} {{if eq (len .Resources) 0}}-{{else}}{{ range $index, $resource := .Resources }}{{if $index}}
31+
{{end}}{{ $resource.Distribution }}: {{ $resource.Name }} ({{ $resource.ID }}){{ end }}{{end}}
32+
3133
{{ end }}`
3234
)
3335

pkg/kotsclient/network_list.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ type ListNetworksResponse struct {
1818
TotalNetworks int `json:"totalNetworks"`
1919
}
2020

21-
func (c *VendorV3Client) ListNetworks(startTime *time.Time, endTime *time.Time) ([]*types.Network, error) {
21+
func (c *VendorV3Client) ListNetworks(includeTerminated bool, startTime *time.Time, endTime *time.Time) ([]*types.Network, error) {
2222
allNetworks := []*types.Network{}
2323
page := 0
2424
for {
@@ -32,6 +32,7 @@ func (c *VendorV3Client) ListNetworks(startTime *time.Time, endTime *time.Time)
3232
v.Set("end-time", endTime.Format(time.RFC3339))
3333
}
3434
v.Set("currentPage", strconv.Itoa(page))
35+
v.Set("show-terminated", strconv.FormatBool(includeTerminated))
3536
url := fmt.Sprintf("/v3/networks?%s", v.Encode())
3637
err := c.DoJSON(context.TODO(), "GET", url, http.StatusOK, nil, &networks)
3738
if err != nil {

pkg/types/network.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,16 @@ type Network struct {
1717
OverlayEndpoint string `json:"overlay_endpoint,omitempty"`
1818
OverlayToken string `json:"overlay_token,omitempty"`
1919

20-
Policy string `json:"policy,omitempty"`
21-
CollectReport bool `json:"collect_report,omitempty"`
20+
Policy string `json:"policy,omitempty"`
21+
CollectReport bool `json:"collect_report,omitempty"`
22+
HasReport bool `json:"has_report,omitempty"`
23+
Resources []*NetworkResource `json:"resources,omitempty"`
24+
}
25+
26+
type NetworkResource struct {
27+
Name string `json:"name"`
28+
Distribution string `json:"distribution"`
29+
ID string `json:"id"`
2230
}
2331

2432
type NetworkStatus string

0 commit comments

Comments
 (0)