Allow to ignore errors when installing multiple configuration items (#1359)
* Allow to ignore errors when installing multiple configuration items
This commit is contained in:
parent
24797c1534
commit
b57eb92bbc
|
@ -45,6 +45,7 @@ func NewCollectionsCmd() *cobra.Command {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var ignoreError bool
|
||||||
var cmdCollectionsInstall = &cobra.Command{
|
var cmdCollectionsInstall = &cobra.Command{
|
||||||
Use: "install collection",
|
Use: "install collection",
|
||||||
Short: "Install given collection(s)",
|
Short: "Install given collection(s)",
|
||||||
|
@ -54,12 +55,19 @@ func NewCollectionsCmd() *cobra.Command {
|
||||||
DisableAutoGenTag: true,
|
DisableAutoGenTag: true,
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
for _, name := range args {
|
for _, name := range args {
|
||||||
InstallItem(name, cwhub.COLLECTIONS, forceAction)
|
if err := InstallItem(name, cwhub.COLLECTIONS, forceAction); err != nil {
|
||||||
|
if ignoreError {
|
||||||
|
log.Errorf("Error while installing '%s': %s", name, err)
|
||||||
|
} else {
|
||||||
|
log.Fatalf("Error while installing '%s': %s", name, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
cmdCollectionsInstall.PersistentFlags().BoolVarP(&downloadOnly, "download-only", "d", false, "Only download packages, don't enable")
|
cmdCollectionsInstall.PersistentFlags().BoolVarP(&downloadOnly, "download-only", "d", false, "Only download packages, don't enable")
|
||||||
cmdCollectionsInstall.PersistentFlags().BoolVar(&forceAction, "force", false, "Force install : Overwrite tainted and outdated files")
|
cmdCollectionsInstall.PersistentFlags().BoolVar(&forceAction, "force", false, "Force install : Overwrite tainted and outdated files")
|
||||||
|
cmdCollectionsInstall.PersistentFlags().BoolVar(&ignoreError, "ignore", false, "Ignore errors when installing multiple collections")
|
||||||
cmdCollections.AddCommand(cmdCollectionsInstall)
|
cmdCollections.AddCommand(cmdCollectionsInstall)
|
||||||
|
|
||||||
var cmdCollectionsRemove = &cobra.Command{
|
var cmdCollectionsRemove = &cobra.Command{
|
||||||
|
|
|
@ -48,6 +48,7 @@ cscli parsers remove crowdsecurity/sshd-logs
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var ignoreError bool
|
||||||
var cmdParsersInstall = &cobra.Command{
|
var cmdParsersInstall = &cobra.Command{
|
||||||
Use: "install [config]",
|
Use: "install [config]",
|
||||||
Short: "Install given parser(s)",
|
Short: "Install given parser(s)",
|
||||||
|
@ -57,12 +58,19 @@ cscli parsers remove crowdsecurity/sshd-logs
|
||||||
DisableAutoGenTag: true,
|
DisableAutoGenTag: true,
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
for _, name := range args {
|
for _, name := range args {
|
||||||
InstallItem(name, cwhub.PARSERS, forceAction)
|
if err := InstallItem(name, cwhub.PARSERS, forceAction); err != nil {
|
||||||
|
if ignoreError {
|
||||||
|
log.Errorf("Error while installing '%s': %s", name, err)
|
||||||
|
} else {
|
||||||
|
log.Fatalf("Error while installing '%s': %s", name, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
cmdParsersInstall.PersistentFlags().BoolVarP(&downloadOnly, "download-only", "d", false, "Only download packages, don't enable")
|
cmdParsersInstall.PersistentFlags().BoolVarP(&downloadOnly, "download-only", "d", false, "Only download packages, don't enable")
|
||||||
cmdParsersInstall.PersistentFlags().BoolVar(&forceAction, "force", false, "Force install : Overwrite tainted and outdated files")
|
cmdParsersInstall.PersistentFlags().BoolVar(&forceAction, "force", false, "Force install : Overwrite tainted and outdated files")
|
||||||
|
cmdParsersInstall.PersistentFlags().BoolVar(&ignoreError, "ignore", false, "Ignore errors when installing multiple parsers")
|
||||||
cmdParsers.AddCommand(cmdParsersInstall)
|
cmdParsers.AddCommand(cmdParsersInstall)
|
||||||
|
|
||||||
var cmdParsersRemove = &cobra.Command{
|
var cmdParsersRemove = &cobra.Command{
|
||||||
|
|
|
@ -47,6 +47,7 @@ func NewPostOverflowsCmd() *cobra.Command {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var ignoreError bool
|
||||||
var cmdPostOverflowsInstall = &cobra.Command{
|
var cmdPostOverflowsInstall = &cobra.Command{
|
||||||
Use: "install [config]",
|
Use: "install [config]",
|
||||||
Short: "Install given postoverflow(s)",
|
Short: "Install given postoverflow(s)",
|
||||||
|
@ -56,12 +57,19 @@ func NewPostOverflowsCmd() *cobra.Command {
|
||||||
DisableAutoGenTag: true,
|
DisableAutoGenTag: true,
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
for _, name := range args {
|
for _, name := range args {
|
||||||
InstallItem(name, cwhub.PARSERS_OVFLW, forceAction)
|
if err := InstallItem(name, cwhub.PARSERS_OVFLW, forceAction); err != nil {
|
||||||
|
if ignoreError {
|
||||||
|
log.Errorf("Error while installing '%s': %s", name, err)
|
||||||
|
} else {
|
||||||
|
log.Fatalf("Error while installing '%s': %s", name, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
cmdPostOverflowsInstall.PersistentFlags().BoolVarP(&downloadOnly, "download-only", "d", false, "Only download packages, don't enable")
|
cmdPostOverflowsInstall.PersistentFlags().BoolVarP(&downloadOnly, "download-only", "d", false, "Only download packages, don't enable")
|
||||||
cmdPostOverflowsInstall.PersistentFlags().BoolVar(&forceAction, "force", false, "Force install : Overwrite tainted and outdated files")
|
cmdPostOverflowsInstall.PersistentFlags().BoolVar(&forceAction, "force", false, "Force install : Overwrite tainted and outdated files")
|
||||||
|
cmdPostOverflowsInstall.PersistentFlags().BoolVar(&ignoreError, "ignore", false, "Ignore errors when installing multiple postoverflows")
|
||||||
cmdPostOverflows.AddCommand(cmdPostOverflowsInstall)
|
cmdPostOverflows.AddCommand(cmdPostOverflowsInstall)
|
||||||
|
|
||||||
var cmdPostOverflowsRemove = &cobra.Command{
|
var cmdPostOverflowsRemove = &cobra.Command{
|
||||||
|
|
|
@ -48,6 +48,7 @@ cscli scenarios remove crowdsecurity/ssh-bf
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var ignoreError bool
|
||||||
var cmdScenariosInstall = &cobra.Command{
|
var cmdScenariosInstall = &cobra.Command{
|
||||||
Use: "install [config]",
|
Use: "install [config]",
|
||||||
Short: "Install given scenario(s)",
|
Short: "Install given scenario(s)",
|
||||||
|
@ -57,12 +58,19 @@ cscli scenarios remove crowdsecurity/ssh-bf
|
||||||
DisableAutoGenTag: true,
|
DisableAutoGenTag: true,
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
for _, name := range args {
|
for _, name := range args {
|
||||||
InstallItem(name, cwhub.SCENARIOS, forceAction)
|
if err := InstallItem(name, cwhub.SCENARIOS, forceAction); err != nil {
|
||||||
|
if ignoreError {
|
||||||
|
log.Errorf("Error while installing '%s': %s", name, err)
|
||||||
|
} else {
|
||||||
|
log.Fatalf("Error while installing '%s': %s", name, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
cmdScenariosInstall.PersistentFlags().BoolVarP(&downloadOnly, "download-only", "d", false, "Only download packages, don't enable")
|
cmdScenariosInstall.PersistentFlags().BoolVarP(&downloadOnly, "download-only", "d", false, "Only download packages, don't enable")
|
||||||
cmdScenariosInstall.PersistentFlags().BoolVar(&forceAction, "force", false, "Force install : Overwrite tainted and outdated files")
|
cmdScenariosInstall.PersistentFlags().BoolVar(&forceAction, "force", false, "Force install : Overwrite tainted and outdated files")
|
||||||
|
cmdScenariosInstall.PersistentFlags().BoolVar(&ignoreError, "ignore", false, "Ignore errors when installing multiple scenarios")
|
||||||
cmdScenarios.AddCommand(cmdScenariosInstall)
|
cmdScenarios.AddCommand(cmdScenariosInstall)
|
||||||
|
|
||||||
var cmdScenariosRemove = &cobra.Command{
|
var cmdScenariosRemove = &cobra.Command{
|
||||||
|
|
|
@ -178,33 +178,35 @@ func ListItems(itemTypes []string, args []string, showType bool, showHeader bool
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func InstallItem(name string, obtype string, force bool) {
|
func InstallItem(name string, obtype string, force bool) error {
|
||||||
it := cwhub.GetItem(obtype, name)
|
it := cwhub.GetItem(obtype, name)
|
||||||
if it == nil {
|
if it == nil {
|
||||||
log.Fatalf("unable to retrieve item : %s", name)
|
return fmt.Errorf("unable to retrieve item : %s", name)
|
||||||
}
|
}
|
||||||
item := *it
|
item := *it
|
||||||
if downloadOnly && item.Downloaded && item.UpToDate {
|
if downloadOnly && item.Downloaded && item.UpToDate {
|
||||||
log.Warningf("%s is already downloaded and up-to-date", item.Name)
|
log.Warningf("%s is already downloaded and up-to-date", item.Name)
|
||||||
if !force {
|
if !force {
|
||||||
return
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
item, err := cwhub.DownloadLatest(csConfig.Hub, item, force, false)
|
item, err := cwhub.DownloadLatest(csConfig.Hub, item, force, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("error while downloading %s : %v", item.Name, err)
|
return fmt.Errorf("error while downloading %s : %v", item.Name, err)
|
||||||
}
|
}
|
||||||
cwhub.AddItem(obtype, item)
|
cwhub.AddItem(obtype, item)
|
||||||
if downloadOnly {
|
if downloadOnly {
|
||||||
log.Infof("Downloaded %s to %s", item.Name, csConfig.Hub.HubDir+"/"+item.RemotePath)
|
log.Infof("Downloaded %s to %s", item.Name, csConfig.Hub.HubDir+"/"+item.RemotePath)
|
||||||
return
|
return nil
|
||||||
}
|
}
|
||||||
item, err = cwhub.EnableItem(csConfig.Hub, item)
|
item, err = cwhub.EnableItem(csConfig.Hub, item)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("error while enabling %s : %v.", item.Name, err)
|
return fmt.Errorf("error while enabling %s : %v.", item.Name, err)
|
||||||
}
|
}
|
||||||
cwhub.AddItem(obtype, item)
|
cwhub.AddItem(obtype, item)
|
||||||
log.Infof("Enabled %s", item.Name)
|
log.Infof("Enabled %s", item.Name)
|
||||||
|
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func RemoveMany(itemType string, name string) {
|
func RemoveMany(itemType string, name string) {
|
||||||
|
|
Loading…
Reference in a new issue