Add 'containerd config dump' subcommand
Signed-off-by: Maksym Pavlenko <makpav@amazon.com>
This commit is contained in:
		| @@ -40,6 +40,39 @@ func (c *Config) WriteTo(w io.Writer) (int64, error) { | ||||
| 	return 0, toml.NewEncoder(w).Encode(c) | ||||
| } | ||||
|  | ||||
| func outputConfig(cfg *srvconfig.Config) error { | ||||
| 	config := &Config{ | ||||
| 		Config: cfg, | ||||
| 	} | ||||
|  | ||||
| 	// for the time being, keep the defaultConfig's version set at 1 so that | ||||
| 	// when a config without a version is loaded from disk and has no version | ||||
| 	// set, we assume it's a v1 config.  But when generating new configs via | ||||
| 	// this command, generate the v2 config | ||||
| 	config.Config.Version = 2 | ||||
| 	plugins, err := server.LoadPlugins(gocontext.Background(), config.Config) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	if len(plugins) != 0 { | ||||
| 		config.Plugins = make(map[string]interface{}) | ||||
| 		for _, p := range plugins { | ||||
| 			if p.Config == nil { | ||||
| 				continue | ||||
| 			} | ||||
| 			config.Plugins[p.URI()] = p.Config | ||||
| 		} | ||||
| 	} | ||||
| 	timeouts := timeout.All() | ||||
| 	config.Timeouts = make(map[string]string) | ||||
| 	for k, v := range timeouts { | ||||
| 		config.Timeouts[k] = v.String() | ||||
| 	} | ||||
|  | ||||
| 	_, err = config.WriteTo(os.Stdout) | ||||
| 	return err | ||||
| } | ||||
|  | ||||
| var configCommand = cli.Command{ | ||||
| 	Name:  "config", | ||||
| 	Usage: "information on the containerd config", | ||||
| @@ -48,35 +81,19 @@ var configCommand = cli.Command{ | ||||
| 			Name:  "default", | ||||
| 			Usage: "see the output of the default config", | ||||
| 			Action: func(context *cli.Context) error { | ||||
| 				config := &Config{ | ||||
| 					Config: defaultConfig(), | ||||
| 				} | ||||
| 				// for the time being, keep the defaultConfig's version set at 1 so that | ||||
| 				// when a config without a version is loaded from disk and has no version | ||||
| 				// set, we assume it's a v1 config.  But when generating new configs via | ||||
| 				// this command, generate the v2 config | ||||
| 				config.Config.Version = 2 | ||||
| 				plugins, err := server.LoadPlugins(gocontext.Background(), config.Config) | ||||
| 				if err != nil { | ||||
| 				return outputConfig(defaultConfig()) | ||||
| 			}, | ||||
| 		}, | ||||
| 		{ | ||||
| 			Name:  "dump", | ||||
| 			Usage: "see the output of the final main config with imported in subconfig files", | ||||
| 			Action: func(context *cli.Context) error { | ||||
| 				config := defaultConfig() | ||||
| 				if err := srvconfig.LoadConfig(context.GlobalString("config"), config); err != nil && !os.IsNotExist(err) { | ||||
| 					return err | ||||
| 				} | ||||
| 				if len(plugins) != 0 { | ||||
| 					config.Plugins = make(map[string]interface{}) | ||||
| 					for _, p := range plugins { | ||||
| 						if p.Config == nil { | ||||
| 							continue | ||||
| 						} | ||||
| 						config.Plugins[p.URI()] = p.Config | ||||
| 					} | ||||
| 				} | ||||
| 				timeouts := timeout.All() | ||||
| 				config.Timeouts = make(map[string]string) | ||||
| 				for k, v := range timeouts { | ||||
| 					config.Timeouts[k] = v.String() | ||||
| 				} | ||||
|  | ||||
| 				_, err = config.WriteTo(os.Stdout) | ||||
| 				return err | ||||
| 				return outputConfig(config) | ||||
| 			}, | ||||
| 		}, | ||||
| 	}, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Maksym Pavlenko
					Maksym Pavlenko