本文整理汇总了Golang中github.com/lxc/lxd.SaveConfig函数的典型用法代码示例。如果您正苦于以下问题:Golang SaveConfig函数的具体用法?Golang SaveConfig怎么用?Golang SaveConfig使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了SaveConfig函数的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: writeConfigFile
func (cfg Config) writeConfigFile() error {
filename := cfg.resolve(configDefaultFile)
logger.Debugf("writing config file %q", filename)
// TODO(ericsnow) Cache the low-level config in Config?
rawCfg, err := lxd.LoadConfig()
if err != nil {
return errors.Trace(err)
}
if !cfg.Remote.isLocal() {
// Ensure the remote is set correctly.
remote := cfg.Remote.Name
delete(rawCfg.Remotes, remote)
addr := cfg.Remote.Host
if err := addServer(rawCfg, remote, addr); err != nil {
return errors.Trace(err)
}
}
// Write out the updated config, if changed.
// TODO(ericsnow) Check if changed.
if err := lxd.SaveConfig(rawCfg); err != nil {
return errors.Trace(err)
}
return nil
}
示例2: initializeConfigDir
//TODO(wwitzel3) make sure this is idempotent
func initializeConfigDir(cfg Config) error {
logger.Debugf("initializing config dir %q", cfg.Dirname)
if err := os.MkdirAll(cfg.Dirname, 0775); err != nil {
return errors.Trace(err)
}
// Force the default config to get written. LoadConfig() returns the
// default config from memory if there isn't a config file on disk.
// So we load that and then explicitly save it to disk with a call
// to SaveConfig().
config, err := lxd.LoadConfig()
if err != nil {
return errors.Trace(err)
}
if err := lxd.SaveConfig(config); err != nil {
return errors.Trace(err)
}
return nil
}
示例3: run
//.........这里部分代码省略.........
rc.Protocol = "lxd"
}
strName := name
if name == config.DefaultRemote {
strName = fmt.Sprintf("%s (%s)", name, i18n.G("default"))
}
data = append(data, []string{strName, rc.Addr, rc.Protocol, strPublic, strStatic})
}
table := tablewriter.NewWriter(os.Stdout)
table.SetAutoWrapText(false)
table.SetAlignment(tablewriter.ALIGN_LEFT)
table.SetRowLine(true)
table.SetHeader([]string{
i18n.G("NAME"),
i18n.G("URL"),
i18n.G("PROTOCOL"),
i18n.G("PUBLIC"),
i18n.G("STATIC")})
sort.Sort(byName(data))
table.AppendBulk(data)
table.Render()
return nil
case "rename":
if len(args) != 3 {
return errArgs
}
rc, ok := config.Remotes[args[1]]
if !ok {
return fmt.Errorf(i18n.G("remote %s doesn't exist"), args[1])
}
if rc.Static {
return fmt.Errorf(i18n.G("remote %s is static and cannot be modified"), args[1])
}
if _, ok := config.Remotes[args[2]]; ok {
return fmt.Errorf(i18n.G("remote %s already exists"), args[2])
}
// Rename the certificate file
oldPath := filepath.Join(config.ConfigPath("servercerts"), fmt.Sprintf("%s.crt", args[1]))
newPath := filepath.Join(config.ConfigPath("servercerts"), fmt.Sprintf("%s.crt", args[2]))
if shared.PathExists(oldPath) {
err := os.Rename(oldPath, newPath)
if err != nil {
return err
}
}
config.Remotes[args[2]] = rc
delete(config.Remotes, args[1])
if config.DefaultRemote == args[1] {
config.DefaultRemote = args[2]
}
case "set-url":
if len(args) != 3 {
return errArgs
}
rc, ok := config.Remotes[args[1]]
if !ok {
return fmt.Errorf(i18n.G("remote %s doesn't exist"), args[1])
}
if rc.Static {
return fmt.Errorf(i18n.G("remote %s is static and cannot be modified"), args[1])
}
config.Remotes[args[1]] = lxd.RemoteConfig{Addr: args[2]}
case "set-default":
if len(args) != 2 {
return errArgs
}
_, ok := config.Remotes[args[1]]
if !ok {
return fmt.Errorf(i18n.G("remote %s doesn't exist"), args[1])
}
config.DefaultRemote = args[1]
case "get-default":
if len(args) != 1 {
return errArgs
}
fmt.Println(config.DefaultRemote)
return nil
default:
return errArgs
}
return lxd.SaveConfig(config, configPath)
}
示例4: run
//.........这里部分代码省略.........
return errArgs
}
switch args[0] {
case "add":
if len(args) < 3 {
return errArgs
}
if rc, ok := config.Remotes[args[1]]; ok {
return fmt.Errorf(gettext.Gettext("remote %s exists as <%s>"), args[1], rc.Addr)
}
err := addServer(config, args[1], args[2], c.acceptCert, c.password)
if err != nil {
delete(config.Remotes, args[1])
return err
}
case "remove":
if len(args) != 2 {
return errArgs
}
if _, ok := config.Remotes[args[1]]; !ok {
return fmt.Errorf(gettext.Gettext("remote %s doesn't exist"), args[1])
}
if config.DefaultRemote == args[1] {
config.DefaultRemote = ""
}
delete(config.Remotes, args[1])
removeCertificate(args[1])
case "list":
for name, rc := range config.Remotes {
fmt.Println(fmt.Sprintf("%s <%s>", name, rc.Addr))
}
/* Here, we don't need to save since we didn't actually modify
* anything, so just return. */
return nil
case "rename":
if len(args) != 3 {
return errArgs
}
rc, ok := config.Remotes[args[1]]
if !ok {
return fmt.Errorf(gettext.Gettext("remote %s doesn't exist"), args[1])
}
if _, ok := config.Remotes[args[2]]; ok {
return fmt.Errorf(gettext.Gettext("remote %s already exists"), args[2])
}
config.Remotes[args[2]] = rc
delete(config.Remotes, args[1])
if config.DefaultRemote == args[1] {
config.DefaultRemote = args[2]
}
case "set-url":
if len(args) != 3 {
return errArgs
}
_, ok := config.Remotes[args[1]]
if !ok {
return fmt.Errorf(gettext.Gettext("remote %s doesn't exist"), args[1])
}
config.Remotes[args[1]] = lxd.RemoteConfig{Addr: args[2]}
case "set-default":
if len(args) != 2 {
return errArgs
}
if args[1] != "" {
_, ok := config.Remotes[args[1]]
if !ok {
return fmt.Errorf(gettext.Gettext("remote %s doesn't exist"), args[1])
}
}
config.DefaultRemote = args[1]
case "get-default":
if len(args) != 1 {
return errArgs
}
fmt.Println(config.DefaultRemote)
return nil
default:
return fmt.Errorf(gettext.Gettext("Unknown remote subcommand %s"), args[0])
}
return lxd.SaveConfig(config)
}
示例5: run
func run() error {
verbose := gnuflag.Bool("verbose", false, i18n.G("Enables verbose mode."))
debug := gnuflag.Bool("debug", false, i18n.G("Enables debug mode."))
forceLocal := gnuflag.Bool("force-local", false, i18n.G("Force using the local unix socket."))
configDir := os.Getenv("LXD_CONF")
if configDir != "" {
lxd.ConfigDir = configDir
}
if len(os.Args) >= 3 && os.Args[1] == "config" && os.Args[2] == "profile" {
fmt.Fprintf(os.Stderr, i18n.G("`lxc config profile` is deprecated, please use `lxc profile`")+"\n")
os.Args = append(os.Args[:1], os.Args[2:]...)
}
if len(os.Args) >= 2 && (os.Args[1] == "-h" || os.Args[1] == "--help") {
os.Args[1] = "help"
}
if len(os.Args) >= 2 && (os.Args[1] == "--all") {
os.Args[1] = "help"
os.Args = append(os.Args, "--all")
}
if len(os.Args) == 2 && os.Args[1] == "--version" {
os.Args[1] = "version"
}
if len(os.Args) < 2 {
commands["help"].run(nil, nil)
os.Exit(1)
}
var config *lxd.Config
var err error
if *forceLocal {
config = &lxd.DefaultConfig
} else {
config, err = lxd.LoadConfig()
if err != nil {
return err
}
// One time migration from old config
if config.DefaultRemote == "" {
_, ok := config.Remotes["local"]
if !ok {
config.Remotes["local"] = lxd.LocalRemote
}
config.DefaultRemote = "local"
lxd.SaveConfig(config)
}
}
// This is quite impolite, but it seems gnuflag needs us to shift our
// own exename out of the arguments before parsing them. However, this
// is useful for execIfAlias, which wants to know exactly the command
// line we received, and in some cases is called before this shift, and
// in others after. So, let's save the original args.
origArgs := os.Args
name := os.Args[1]
cmd, ok := commands[name]
if !ok {
execIfAliases(config, origArgs)
fmt.Fprintf(os.Stderr, i18n.G("error: unknown command: %s")+"\n", name)
commands["help"].run(nil, nil)
os.Exit(1)
}
cmd.flags()
gnuflag.Usage = func() {
fmt.Fprintf(os.Stderr, i18n.G("Usage: %s")+"\n\n"+i18n.G("Options:")+"\n\n", strings.TrimSpace(cmd.usage()))
gnuflag.PrintDefaults()
}
os.Args = os.Args[1:]
gnuflag.Parse(true)
shared.SetLogger("", "", *verbose, *debug, nil)
certf := lxd.ConfigPath("client.crt")
keyf := lxd.ConfigPath("client.key")
if !*forceLocal && os.Args[0] != "help" && os.Args[0] != "version" && (!shared.PathExists(certf) || !shared.PathExists(keyf)) {
fmt.Fprintf(os.Stderr, i18n.G("Generating a client certificate. This may take a minute...")+"\n")
err = shared.FindOrGenCert(certf, keyf)
if err != nil {
return err
}
fmt.Fprintf(os.Stderr, i18n.G("If this is your first run, you will need to import images using the 'lxd-images' script.")+"\n")
fmt.Fprintf(os.Stderr, i18n.G("For example: 'lxd-images import ubuntu --alias ubuntu'.")+"\n")
}
err = cmd.run(config, gnuflag.Args())
if err == errArgs {
/* If we got an error about invalid arguments, let's try to
* expand this as an alias
*/
//.........这里部分代码省略.........
示例6: run
//.........这里部分代码省略.........
err := addServer(config, args[1], args[2], c.acceptCert, c.password, c.public)
if err != nil {
delete(config.Remotes, args[1])
removeCertificate(args[1])
return err
}
case "remove":
if len(args) != 2 {
return errArgs
}
if _, ok := config.Remotes[args[1]]; !ok {
return fmt.Errorf(i18n.G("remote %s doesn't exist"), args[1])
}
if config.DefaultRemote == args[1] {
return fmt.Errorf(i18n.G("can't remove the default remote"))
}
delete(config.Remotes, args[1])
removeCertificate(args[1])
case "list":
data := [][]string{}
for name, rc := range config.Remotes {
if rc.Public {
data = append(data, []string{name, rc.Addr, i18n.G("YES")})
} else {
data = append(data, []string{name, rc.Addr, i18n.G("NO")})
}
}
table := tablewriter.NewWriter(os.Stdout)
table.SetHeader([]string{
i18n.G("NAME"),
i18n.G("URL"),
i18n.G("PUBLIC")})
sort.Sort(ByName(data))
table.AppendBulk(data)
table.Render()
return nil
case "rename":
if len(args) != 3 {
return errArgs
}
rc, ok := config.Remotes[args[1]]
if !ok {
return fmt.Errorf(i18n.G("remote %s doesn't exist"), args[1])
}
if _, ok := config.Remotes[args[2]]; ok {
return fmt.Errorf(i18n.G("remote %s already exists"), args[2])
}
config.Remotes[args[2]] = rc
delete(config.Remotes, args[1])
if config.DefaultRemote == args[1] {
config.DefaultRemote = args[2]
}
case "set-url":
if len(args) != 3 {
return errArgs
}
_, ok := config.Remotes[args[1]]
if !ok {
return fmt.Errorf(i18n.G("remote %s doesn't exist"), args[1])
}
config.Remotes[args[1]] = lxd.RemoteConfig{Addr: args[2]}
case "set-default":
if len(args) != 2 {
return errArgs
}
_, ok := config.Remotes[args[1]]
if !ok {
return fmt.Errorf(i18n.G("remote %s doesn't exist"), args[1])
}
config.DefaultRemote = args[1]
case "get-default":
if len(args) != 1 {
return errArgs
}
fmt.Println(config.DefaultRemote)
return nil
default:
return errArgs
}
return lxd.SaveConfig(config)
}
示例7: run
func run() error {
gettext.BindTextdomain("lxd", "", nil)
gettext.Textdomain("lxd")
verbose := gnuflag.Bool("verbose", false, gettext.Gettext("Enables verbose mode."))
debug := gnuflag.Bool("debug", false, gettext.Gettext("Enables debug mode."))
forceLocal := gnuflag.Bool("force-local", false, gettext.Gettext("Force using the local unix socket."))
configDir := os.Getenv("LXD_CONF")
if configDir != "" {
lxd.ConfigDir = configDir
}
if len(os.Args) >= 3 && os.Args[1] == "config" && os.Args[2] == "profile" {
fmt.Fprintf(os.Stderr, gettext.Gettext("`lxc config profile` is deprecated, please use `lxc profile`")+"\n")
os.Args = append(os.Args[:1], os.Args[2:]...)
}
if len(os.Args) >= 2 && (os.Args[1] == "-h" || os.Args[1] == "--help") {
os.Args[1] = "help"
}
if len(os.Args) >= 2 && (os.Args[1] == "--all") {
os.Args[1] = "help"
os.Args = append(os.Args, "--all")
}
if len(os.Args) == 2 && os.Args[1] == "--version" {
os.Args[1] = "version"
}
if len(os.Args) < 2 {
commands["help"].run(nil, nil)
os.Exit(1)
}
name := os.Args[1]
cmd, ok := commands[name]
if !ok {
fmt.Fprintf(os.Stderr, gettext.Gettext("error: unknown command: %s")+"\n", name)
commands["help"].run(nil, nil)
os.Exit(1)
}
cmd.flags()
gnuflag.Usage = func() {
fmt.Fprintf(os.Stderr, gettext.Gettext("Usage: %s")+"\n\n"+gettext.Gettext("Options:")+"\n\n", strings.TrimSpace(cmd.usage()))
gnuflag.PrintDefaults()
}
os.Args = os.Args[1:]
gnuflag.Parse(true)
shared.SetLogger("", "", *verbose, *debug)
var config *lxd.Config
var err error
if *forceLocal {
config = &lxd.DefaultConfig
} else {
config, err = lxd.LoadConfig()
if err != nil {
return err
}
// One time migration from old config
if config.DefaultRemote == "" {
_, ok := config.Remotes["local"]
if !ok {
config.Remotes["local"] = lxd.LocalRemote
}
config.DefaultRemote = "local"
lxd.SaveConfig(config)
}
}
certf := lxd.ConfigPath("client.crt")
keyf := lxd.ConfigPath("client.key")
if !*forceLocal && os.Args[0] != "help" && os.Args[0] != "version" && (!shared.PathExists(certf) || !shared.PathExists(keyf)) {
fmt.Fprintf(os.Stderr, gettext.Gettext("Generating a client certificate. This may take a minute...")+"\n")
err = shared.FindOrGenCert(certf, keyf)
if err != nil {
return err
}
fmt.Fprintf(os.Stderr, gettext.Gettext("If this is your first run, you will need to import images using the 'lxd-images' script.")+"\n")
fmt.Fprintf(os.Stderr, gettext.Gettext("For example: 'lxd-images import ubuntu --alias ubuntu'.")+"\n")
}
err = cmd.run(config, gnuflag.Args())
if err == errArgs {
fmt.Fprintf(os.Stderr, gettext.Gettext("error: %v")+"\n%s\n", err, cmd.usage())
os.Exit(1)
}
return err
}