From 406b381c6173862f86a40fa45ac41af6b2097789 Mon Sep 17 00:00:00 2001 From: Josh De Winne Date: Tue, 4 Nov 2025 11:12:54 -0800 Subject: [PATCH 1/2] Add ignore-default flag to network report --- cli/cmd/network_report.go | 12 +++++++++--- cli/cmd/runner.go | 7 ++++--- pkg/kotsclient/network_report.go | 11 +++++++---- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/cli/cmd/network_report.go b/cli/cmd/network_report.go index fbe0ac828..aff9862bf 100644 --- a/cli/cmd/network_report.go +++ b/cli/cmd/network_report.go @@ -47,6 +47,7 @@ replicated network report --watch`, cmd.Flags().BoolVarP(&r.args.networkReportWatch, "watch", "w", false, "Watch for new network events in real-time (polls every 2 seconds)") cmd.Flags().BoolVar(&r.args.networkReportSummary, "summary", false, "Get aggregated report summary with statistics instead of individual events") + cmd.Flags().BoolVar(&r.args.networkReportIgnoreDefault, "ignore-default", true, "Ignore special-use domains network traffic in the report") return cmd } @@ -68,6 +69,11 @@ func (r *runners) getNetworkReport(cmd *cobra.Command, args []string) error { // Don't call getNetworkIDFromArg here. Reporting API supports short IDs and will also work for networks that have been deleted. + // Validate flags + if r.args.networkReportSummary && cmd.Flags().Lookup("ignore-default").Changed { + return fmt.Errorf("cannot use --ignore-default and --summary flags together") + } + // Get the initial network report or summary depending on args provided if r.args.networkReportSummary { return r.getNetworkReportSummary(cmd.Context()) @@ -77,7 +83,7 @@ func (r *runners) getNetworkReport(cmd *cobra.Command, args []string) error { } func (r *runners) getNetworkReportEvents() error { - report, err := r.kotsAPI.GetNetworkReport(r.args.networkReportID) + report, err := r.kotsAPI.GetNetworkReport(r.args.networkReportID, r.args.networkReportIgnoreDefault) if errors.Cause(err) == platformclient.ErrForbidden { return ErrCompatibilityMatrixTermsNotAccepted } else if err != nil { @@ -111,9 +117,9 @@ func (r *runners) getNetworkReportEvents() error { for range time.Tick(2 * time.Second) { var newReport *types.NetworkReport if lastEventTime != nil { - newReport, err = r.kotsAPI.GetNetworkReportAfter(r.args.networkReportID, lastEventTime) + newReport, err = r.kotsAPI.GetNetworkReportAfter(r.args.networkReportID, lastEventTime, r.args.networkReportIgnoreDefault) } else { - newReport, err = r.kotsAPI.GetNetworkReport(r.args.networkReportID) + newReport, err = r.kotsAPI.GetNetworkReport(r.args.networkReportID, r.args.networkReportIgnoreDefault) } if err != nil { diff --git a/cli/cmd/runner.go b/cli/cmd/runner.go index a3847929a..6b32f2877 100644 --- a/cli/cmd/runner.go +++ b/cli/cmd/runner.go @@ -254,9 +254,10 @@ type runnerArgs struct { lsNetworkEndTime string lsNetworkWatch bool - networkReportID string - networkReportWatch bool - networkReportSummary bool + networkReportID string + networkReportWatch bool + networkReportSummary bool + networkReportIgnoreDefault bool updateNetworkPolicy string updateNetworkCollectReport bool diff --git a/pkg/kotsclient/network_report.go b/pkg/kotsclient/network_report.go index 63a69080a..4485d160a 100644 --- a/pkg/kotsclient/network_report.go +++ b/pkg/kotsclient/network_report.go @@ -11,15 +11,18 @@ import ( "github.com/replicatedhq/replicated/pkg/types" ) -func (c *VendorV3Client) GetNetworkReport(id string) (*types.NetworkReport, error) { - return c.GetNetworkReportAfter(id, nil) +func (c *VendorV3Client) GetNetworkReport(id string, ignoreDefault bool) (*types.NetworkReport, error) { + return c.GetNetworkReportAfter(id, nil, ignoreDefault) } -func (c *VendorV3Client) GetNetworkReportAfter(id string, after *time.Time) (*types.NetworkReport, error) { +func (c *VendorV3Client) GetNetworkReportAfter(id string, after *time.Time, ignoreDefault bool) (*types.NetworkReport, error) { urlPath := fmt.Sprintf("/v3/network/%s/report", id) + v := url.Values{} if after != nil { - v := url.Values{} v.Set("after", after.Format(time.RFC3339Nano)) + } + v.Set("ignore-default", fmt.Sprintf("%t", ignoreDefault)) + if len(v) > 0 { urlPath = fmt.Sprintf("%s?%s", urlPath, v.Encode()) } From 6e713a86b92eabdb703d2a818397a3f0a55050cc Mon Sep 17 00:00:00 2001 From: Josh De Winne Date: Thu, 6 Nov 2025 12:19:12 -0800 Subject: [PATCH 2/2] w --- cli/cmd/network_report.go | 12 ++++++------ cli/cmd/runner.go | 8 ++++---- pkg/kotsclient/network_report.go | 8 ++++---- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/cli/cmd/network_report.go b/cli/cmd/network_report.go index aff9862bf..d1498b39a 100644 --- a/cli/cmd/network_report.go +++ b/cli/cmd/network_report.go @@ -47,7 +47,7 @@ replicated network report --watch`, cmd.Flags().BoolVarP(&r.args.networkReportWatch, "watch", "w", false, "Watch for new network events in real-time (polls every 2 seconds)") cmd.Flags().BoolVar(&r.args.networkReportSummary, "summary", false, "Get aggregated report summary with statistics instead of individual events") - cmd.Flags().BoolVar(&r.args.networkReportIgnoreDefault, "ignore-default", true, "Ignore special-use domains network traffic in the report") + cmd.Flags().BoolVar(&r.args.networkReportShowExternalOnly, "show-external-only", true, "Show only external network traffic") return cmd } @@ -70,8 +70,8 @@ func (r *runners) getNetworkReport(cmd *cobra.Command, args []string) error { // Don't call getNetworkIDFromArg here. Reporting API supports short IDs and will also work for networks that have been deleted. // Validate flags - if r.args.networkReportSummary && cmd.Flags().Lookup("ignore-default").Changed { - return fmt.Errorf("cannot use --ignore-default and --summary flags together") + if r.args.networkReportSummary && cmd.Flags().Lookup("show-external-only").Changed { + return fmt.Errorf("cannot use --show-external-only and --summary flags together") } // Get the initial network report or summary depending on args provided @@ -83,7 +83,7 @@ func (r *runners) getNetworkReport(cmd *cobra.Command, args []string) error { } func (r *runners) getNetworkReportEvents() error { - report, err := r.kotsAPI.GetNetworkReport(r.args.networkReportID, r.args.networkReportIgnoreDefault) + report, err := r.kotsAPI.GetNetworkReport(r.args.networkReportID, r.args.networkReportShowExternalOnly) if errors.Cause(err) == platformclient.ErrForbidden { return ErrCompatibilityMatrixTermsNotAccepted } else if err != nil { @@ -117,9 +117,9 @@ func (r *runners) getNetworkReportEvents() error { for range time.Tick(2 * time.Second) { var newReport *types.NetworkReport if lastEventTime != nil { - newReport, err = r.kotsAPI.GetNetworkReportAfter(r.args.networkReportID, lastEventTime, r.args.networkReportIgnoreDefault) + newReport, err = r.kotsAPI.GetNetworkReportAfter(r.args.networkReportID, lastEventTime, r.args.networkReportShowExternalOnly) } else { - newReport, err = r.kotsAPI.GetNetworkReport(r.args.networkReportID, r.args.networkReportIgnoreDefault) + newReport, err = r.kotsAPI.GetNetworkReport(r.args.networkReportID, r.args.networkReportShowExternalOnly) } if err != nil { diff --git a/cli/cmd/runner.go b/cli/cmd/runner.go index 6b32f2877..a62e6eb04 100644 --- a/cli/cmd/runner.go +++ b/cli/cmd/runner.go @@ -254,10 +254,10 @@ type runnerArgs struct { lsNetworkEndTime string lsNetworkWatch bool - networkReportID string - networkReportWatch bool - networkReportSummary bool - networkReportIgnoreDefault bool + networkReportID string + networkReportWatch bool + networkReportSummary bool + networkReportShowExternalOnly bool updateNetworkPolicy string updateNetworkCollectReport bool diff --git a/pkg/kotsclient/network_report.go b/pkg/kotsclient/network_report.go index 4485d160a..f2c5d04a1 100644 --- a/pkg/kotsclient/network_report.go +++ b/pkg/kotsclient/network_report.go @@ -11,17 +11,17 @@ import ( "github.com/replicatedhq/replicated/pkg/types" ) -func (c *VendorV3Client) GetNetworkReport(id string, ignoreDefault bool) (*types.NetworkReport, error) { - return c.GetNetworkReportAfter(id, nil, ignoreDefault) +func (c *VendorV3Client) GetNetworkReport(id string, showExternalOnly bool) (*types.NetworkReport, error) { + return c.GetNetworkReportAfter(id, nil, showExternalOnly) } -func (c *VendorV3Client) GetNetworkReportAfter(id string, after *time.Time, ignoreDefault bool) (*types.NetworkReport, error) { +func (c *VendorV3Client) GetNetworkReportAfter(id string, after *time.Time, showExternalOnly bool) (*types.NetworkReport, error) { urlPath := fmt.Sprintf("/v3/network/%s/report", id) v := url.Values{} if after != nil { v.Set("after", after.Format(time.RFC3339Nano)) } - v.Set("ignore-default", fmt.Sprintf("%t", ignoreDefault)) + v.Set("show-external-only", fmt.Sprintf("%t", showExternalOnly)) if len(v) > 0 { urlPath = fmt.Sprintf("%s?%s", urlPath, v.Encode()) }