func newMetricsConnectionAddCmd()

in internal/onetime/configure/oracle/metrics.go [97:163]


func newMetricsConnectionAddCmd(cfg *cliconfig.Configure) *cobra.Command {
	connectionAddCmd := &cobra.Command{
		Use:   "connection-add",
		Short: "Add a database connection",
		RunE: func(cmd *cobra.Command, args []string) error {
			cfg.ValidateOracleMetricsConnection()

			username, err := cmd.Flags().GetString("username")
			if err != nil {
				return fmt.Errorf("error getting username: %w", err)
			}
			host, err := cmd.Flags().GetString("host")
			if err != nil {
				return fmt.Errorf("error getting host: %w", err)
			}
			port, err := cmd.Flags().GetInt("port")
			if err != nil {
				return fmt.Errorf("error getting port: %w", err)
			}
			serviceName, err := cmd.Flags().GetString("service-name")
			if err != nil {
				return fmt.Errorf("error getting service-name: %w", err)
			}
			projectID, err := cmd.Flags().GetString("project-id")
			if err != nil {
				return fmt.Errorf("error getting project-id: %w", err)
			}
			secretName, err := cmd.Flags().GetString("secret-name")
			if err != nil {
				return fmt.Errorf("error getting secret-name: %w", err)
			}

			newConn := &cpb.ConnectionParameters{
				Username:    username,
				Host:        host,
				Port:        int32(port),
				ServiceName: serviceName,
				Secret: &cpb.SecretRef{
					ProjectId:  projectID,
					SecretName: secretName,
				},
			}

			msg := fmt.Sprintf("Oracle Metrics Connection Added: %v", newConn)
			cfg.LogToBoth(cmd.Context(), msg)
			cfg.Configuration.OracleConfiguration.OracleMetrics.ConnectionParameters = append(cfg.Configuration.OracleConfiguration.OracleMetrics.ConnectionParameters, newConn)
			cfg.OracleConfigModified = true
			return nil
		},
	}

	// Add flags for the connection
	connectionAddCmd.Flags().String("username", "", "Database username")
	connectionAddCmd.Flags().String("host", "", "Database host")
	connectionAddCmd.Flags().Int("port", 1521, "Database port")
	connectionAddCmd.Flags().String("service-name", "", "Oracle service name")
	connectionAddCmd.Flags().String("project-id", "", "Project ID")
	connectionAddCmd.Flags().String("secret-name", "", "Secret name")

	connectionAddCmd.MarkFlagRequired("username")
	connectionAddCmd.MarkFlagRequired("host")
	connectionAddCmd.MarkFlagRequired("service-name")
	connectionAddCmd.MarkFlagRequired("project-id")
	connectionAddCmd.MarkFlagRequired("secret-name")

	return connectionAddCmd
}