From 9c8cad263b458fee6c7d0e8ec766f90cd72cb161 Mon Sep 17 00:00:00 2001 From: erezrokah Date: Mon, 8 Jul 2024 16:40:35 +0100 Subject: [PATCH] feat: Unhide `--tables-metrics-location` flag, add duration to table --- cli/cmd/sync.go | 4 ++-- cli/internal/otel/receiver.go | 18 ++++++++++++++---- .../docs/reference/cli/cloudquery_sync.md | 11 +++++++---- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/cli/cmd/sync.go b/cli/cmd/sync.go index 362dd544ccd2bb..f69a0cace33e99 100644 --- a/cli/cmd/sync.go +++ b/cli/cmd/sync.go @@ -21,6 +21,8 @@ const ( cloudquery sync ./directory # Sync resources from directories and files cloudquery sync ./directory ./aws.yml ./pg.yml +# Log tables metrics to a file +cloudquery sync ./directory ./aws.yml ./pg.yml --tables-metrics-location metrics.txt ` ) @@ -37,8 +39,6 @@ func NewCmdSync() *cobra.Command { cmd.Flags().String("license", "", "set offline license file") cmd.Flags().String("summary-location", "", "Sync summary file location. This feature is in Preview. Please provide feedback to help us improve it.") cmd.Flags().String("tables-metrics-location", "", "Tables metrics file location. This feature is in Preview. Please provide feedback to help us improve it.") - // Hide the flag until we release all plugins with https://github.com/cloudquery/plugin-sdk/releases/tag/v4.49.0 - _ = cmd.Flags().MarkHidden("tables-metrics-location") return cmd } diff --git a/cli/internal/otel/receiver.go b/cli/internal/otel/receiver.go index 170db5f1db0ae1..1dd0b2b4f325c1 100644 --- a/cli/internal/otel/receiver.go +++ b/cli/internal/otel/receiver.go @@ -94,7 +94,7 @@ func newDefaultMetricConsumer(metricsFile *os.File, quit chan any) ConsumeMetric } t := table.NewWriter() t.SetOutputMirror(metricsFile) - t.AppendHeader(table.Row{"Table", "Client ID", "Start Time", "End Time", "Resources", "Errors", "Panics"}) + t.AppendHeader(table.Row{"Table", "Client ID", "Start Time", "End Time", "Duration", "Resources", "Errors", "Panics"}) sort.SliceStable(metrics, func(i, j int) bool { m1 := metrics[i] m2 := metrics[j] @@ -110,11 +110,19 @@ func newDefaultMetricConsumer(metricsFile *os.File, quit chan any) ConsumeMetric return m1.Table+m1.ClientId < m2.Table+m2.ClientId }) for _, metrics := range metrics { + var duration time.Duration + switch { + case metrics.StartTime != nil && metrics.EndTime != nil: + duration = metrics.EndTime.Sub(*metrics.StartTime) + case metrics.StartTime != nil: + duration = time.Since(*metrics.StartTime) + } row := table.Row{ metrics.Table, metrics.ClientId, metrics.StartTime, metrics.EndTime, + duration, metrics.Resources, metrics.Errors, metrics.Panics, @@ -122,6 +130,9 @@ func newDefaultMetricConsumer(metricsFile *os.File, quit chan any) ConsumeMetric if metrics.EndTime == nil { row[3] = "N/A" } + if duration == 0 { + row[4] = "N/A" + } t.AppendRow(row) } t.Render() @@ -242,7 +253,7 @@ type OtelReceiver struct { Endpoint string } -func getPort() (int, error) { +func getFreePort() (int, error) { listener, err := net.Listen("tcp", ":0") if err != nil { return 0, err @@ -298,8 +309,7 @@ func StartOtelReceiver(ctx context.Context, opts ...OtelReceiverOption) (*OtelRe factory := otlpreceiver.NewFactory() config := factory.CreateDefaultConfig().(*otlpreceiver.Config) config.GRPC = nil - // This will list on the first available port - port, err := getPort() + port, err := getFreePort() if err != nil { return nil, err } diff --git a/website/pages/docs/reference/cli/cloudquery_sync.md b/website/pages/docs/reference/cli/cloudquery_sync.md index 2b547867050acf..ac3d87141f48cd 100644 --- a/website/pages/docs/reference/cli/cloudquery_sync.md +++ b/website/pages/docs/reference/cli/cloudquery_sync.md @@ -20,16 +20,19 @@ cloudquery sync [files or directories] [flags] cloudquery sync ./directory # Sync resources from directories and files cloudquery sync ./directory ./aws.yml ./pg.yml +# Log tables metrics to a file +cloudquery sync ./directory ./aws.yml ./pg.yml --tables-metrics-location metrics.txt ``` ### Options ``` - -h, --help help for sync - --license string set offline license file - --no-migrate Disable auto-migration before sync. By default, sync runs a migration before syncing resources. - --summary-location string Sync summary file location. This feature is in Preview. Please provide feedback to help us improve it. + -h, --help help for sync + --license string set offline license file + --no-migrate Disable auto-migration before sync. By default, sync runs a migration before syncing resources. + --summary-location string Sync summary file location. This feature is in Preview. Please provide feedback to help us improve it. + --tables-metrics-location string Tables metrics file location. This feature is in Preview. Please provide feedback to help us improve it. ``` ### Options inherited from parent commands