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
}