mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-10-30 18:17:55 +00:00 
			
		
		
		
	Global Plugin Reload: OSS Changes Take II (#9347)
* Carefully move changes from the plugin-cluster-reload branch into this clean branch off master. * Don't test this at this level, adequately covered in the api level tests * Change PR link * go.mod * Vendoring * Vendor api/sys_plugins.go
This commit is contained in:
		| @@ -16,6 +16,7 @@ type PluginReloadCommand struct { | ||||
| 	*BaseCommand | ||||
| 	plugin string | ||||
| 	mounts []string | ||||
| 	scope  string | ||||
| } | ||||
|  | ||||
| func (c *PluginReloadCommand) Synopsis() string { | ||||
| @@ -58,6 +59,13 @@ func (c *PluginReloadCommand) Flags() *FlagSets { | ||||
| 		Usage:      "Array or comma-separated string mount paths of the plugin backends to reload.", | ||||
| 	}) | ||||
|  | ||||
| 	f.StringVar(&StringVar{ | ||||
| 		Name:       "scope", | ||||
| 		Target:     &c.scope, | ||||
| 		Completion: complete.PredictAnything, | ||||
| 		Usage:      "The scope of the reload, omitted for local, 'global', for replicated reloads", | ||||
| 	}) | ||||
|  | ||||
| 	return set | ||||
| } | ||||
|  | ||||
| @@ -84,6 +92,8 @@ func (c *PluginReloadCommand) Run(args []string) int { | ||||
| 	case c.plugin != "" && len(c.mounts) > 0: | ||||
| 		c.UI.Error(fmt.Sprintf("Too many arguments (expected 1, got %d)", len(args))) | ||||
| 		return 1 | ||||
| 	case c.scope != "" && c.scope != "global": | ||||
| 		c.UI.Error(fmt.Sprintf("Invalid reload scope: %s", c.scope)) | ||||
| 	} | ||||
|  | ||||
| 	client, err := c.Client() | ||||
| @@ -92,18 +102,28 @@ func (c *PluginReloadCommand) Run(args []string) int { | ||||
| 		return 2 | ||||
| 	} | ||||
|  | ||||
| 	if err := client.Sys().ReloadPlugin(&api.ReloadPluginInput{ | ||||
| 	rid, err := client.Sys().ReloadPlugin(&api.ReloadPluginInput{ | ||||
| 		Plugin: c.plugin, | ||||
| 		Mounts: c.mounts, | ||||
| 	}); err != nil { | ||||
| 		Scope:  c.scope, | ||||
| 	}) | ||||
| 	if err != nil { | ||||
| 		c.UI.Error(fmt.Sprintf("Error reloading plugin/mounts: %s", err)) | ||||
| 		return 2 | ||||
| 	} | ||||
|  | ||||
| 	if len(c.mounts) > 0 { | ||||
| 		c.UI.Output(fmt.Sprintf("Success! Reloaded mounts: %s", c.mounts)) | ||||
| 		if rid != "" { | ||||
| 			c.UI.Output(fmt.Sprintf("Success! Reloading mounts: %s, reload_id: %s", c.mounts, rid)) | ||||
| 		} else { | ||||
| 			c.UI.Output(fmt.Sprintf("Success! Reloaded mounts: %s", c.mounts)) | ||||
| 		} | ||||
| 	} else { | ||||
| 		c.UI.Output(fmt.Sprintf("Success! Reloaded plugin: %s", c.plugin)) | ||||
| 		if rid != "" { | ||||
| 			c.UI.Output(fmt.Sprintf("Success! Reloading plugin: %s, reload_id: %s", c.plugin, rid)) | ||||
| 		} else { | ||||
| 			c.UI.Output(fmt.Sprintf("Success! Reloaded plugin: %s", c.plugin)) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return 0 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Scott Miller
					Scott Miller