/* * SPDX-License-Identifier: Apache-2.0 * * The OpenSearch Contributors require contributions made to * this file be licensed under the Apache-2.0 license or a * compatible open source license. * * Modifications Copyright OpenSearch Contributors. See * GitHub history for details. */ package commands import ( "fmt" handler "opensearch-cli/handler/ad" "github.com/spf13/cobra" ) const ( createDetectorsCommandName = "create" generate = "generate-template" ) //createCmd creates detectors with configuration from input file, if interactive mode is on, //this command will prompt for confirmation on number of detectors will be created on executions. var createCmd = &cobra.Command{ Use: createDetectorsCommandName + " json-file-path ...", Short: "Create detectors based on JSON files", Long: "Create detectors based on a local JSON file\n" + "To begin, use `opensearch-cli ad create --generate-template` to generate a sample configuration. Save this template locally and update it for your use case. Then use `opensearch-cli ad create file-path` to create detector.", Run: func(cmd *cobra.Command, args []string) { generate, _ := cmd.Flags().GetBool(generate) if generate { generateTemplate() return } //If no args, display usage if len(args) < 1 { fmt.Println(cmd.Usage()) return } err := createDetectors(args) DisplayError(err, createDetectorsCommandName) }, } //generateTemplate prints sample detector configuration func generateTemplate() { detector, _ := handler.GenerateAnomalyDetector() fmt.Println(string(detector)) } func init() { GetADCommand().AddCommand(createCmd) createCmd.Flags().BoolP(generate, "g", false, "Output sample detector configuration") createCmd.Flags().BoolP("help", "h", false, "Help for "+createDetectorsCommandName) } //createDetectors create detectors based on configurations from fileNames func createDetectors(fileNames []string) error { commandHandler, err := GetADHandler() if err != nil { return err } for _, name := range fileNames { err = handler.CreateAnomalyDetector(commandHandler, name) if err != nil { return err } } return nil }