func NewCommand()

in internal/onetime/configure/sqlserver/sqlserver.go [32:92]


func NewCommand(cfg *cliconfig.Configure) *cobra.Command {
	var (
		enabled           bool
		collectionTimeout time.Duration
		maxRetries        int32
		retryFrequency    time.Duration
		remoteCollection  bool
	)

	sqlserverCmd := &cobra.Command{
		Use:   "sqlserver",
		Short: "Configure SQL Server settings",
		Long: `Configure SQL Server settings for the Google Cloud Agent for Compute Workloads.

This command allows you to enable and configure various features for monitoring SQL Server databases.`,
		Run: func(cmd *cobra.Command, args []string) {
			cfg.ValidateSQLServer()

			if cmd.Flags().Changed("enabled") {
				msg := fmt.Sprintf("SQL Server Enabled: %v", enabled)
				cfg.LogToBoth(cmd.Context(), msg)
				cfg.Configuration.SqlserverConfiguration.Enabled = &enabled
				cfg.SQLServerConfigModified = true
			}
			if cmd.Flags().Changed("collection-timeout") {
				msg := fmt.Sprintf("SQL Server Collection Timeout: %v", collectionTimeout)
				cfg.LogToBoth(cmd.Context(), msg)
				cfg.Configuration.SqlserverConfiguration.CollectionTimeout = dpb.New(collectionTimeout)
				cfg.SQLServerConfigModified = true
			}
			if cmd.Flags().Changed("max-retries") {
				msg := fmt.Sprintf("SQL Server Max Retries: %v", maxRetries)
				cfg.LogToBoth(cmd.Context(), msg)
				cfg.Configuration.SqlserverConfiguration.MaxRetries = maxRetries
				cfg.SQLServerConfigModified = true
			}
			if cmd.Flags().Changed("retry-frequency") {
				msg := fmt.Sprintf("SQL Server Retry Frequency: %v", retryFrequency)
				cfg.LogToBoth(cmd.Context(), msg)
				cfg.Configuration.SqlserverConfiguration.RetryFrequency = dpb.New(retryFrequency)
				cfg.SQLServerConfigModified = true
			}
			if cmd.Flags().Changed("remote-collection") {
				msg := fmt.Sprintf("SQL Server Remote Collection: %v", remoteCollection)
				cfg.LogToBoth(cmd.Context(), msg)
				cfg.Configuration.SqlserverConfiguration.RemoteCollection = remoteCollection
				cfg.SQLServerConfigModified = true
			}
		},
	}

	// Add flags for the metrics
	sqlserverCmd.Flags().BoolVar(&enabled, "enabled", false, "Enable SQL Server metrics")
	sqlserverCmd.Flags().DurationVar(&collectionTimeout, "collection-timeout", time.Duration(configuration.DefaultSQLServerCollectionTimeout), "Query timeout for metrics collection (e.g., 5m, 1h)")
	sqlserverCmd.Flags().Int32Var(&maxRetries, "max-retries", int32(configuration.DefaultSQLServerMaxRetries), "Maximum number of attempts to submit collected metric data to Workload Manager")
	sqlserverCmd.Flags().DurationVar(&retryFrequency, "retry-frequency", time.Duration(configuration.DefaultSQLServerRetryFrequency), "Duration to wait before retrying metrics submission to Workload Manager in the event of a failure")
	sqlserverCmd.Flags().BoolVar(&remoteCollection, "remote-collection", false, "Enable remote collection")

	sqlserverCmd.AddCommand(CollectionConfigCommand(cfg))
	return sqlserverCmd
}