/* * load the server cert from disk */ func (c *Client) loadServerCert() { cert, err := shared.ReadCert(ServerCertPath(c.name)) if err != nil { shared.Debugf("Error reading the server certificate for %s: %v\n", c.name, err) return } c.scert = cert }
func (c *configCmd) run(config *lxd.Config, args []string) error { if len(args) < 1 { return errArgs } switch args[0] { case "unset": if len(args) < 2 { return errArgs } // 2 args means we're unsetting a server key if len(args) == 2 { key := args[1] c, err := lxd.NewClient(config, "") if err != nil { return err } _, err = c.SetServerConfig(key, "") return err } // 3 args is a container config key args = append(args, "") return doSet(config, args) case "set": if len(args) < 3 { return errArgs } // 3 args means we're setting a server key if len(args) == 3 { key := args[1] c, err := lxd.NewClient(config, "") if err != nil { return err } _, err = c.SetServerConfig(key, args[2]) return err } // 4 args is a container config key return doSet(config, args) case "trust": if len(args) < 2 { return errArgs } switch args[1] { case "list": var remote string if len(args) == 3 { remote = config.ParseRemote(args[2]) } else { remote = config.DefaultRemote } d, err := lxd.NewClient(config, remote) if err != nil { return err } trust, err := d.CertificateList() if err != nil { return err } for _, fingerprint := range trust { fmt.Println(fmt.Sprintf("%s", fingerprint)) } return nil case "add": var remote string if len(args) < 3 { return fmt.Errorf(gettext.Gettext("No cert provided to add")) } else if len(args) == 4 { remote = config.ParseRemote(args[2]) } else { remote = config.DefaultRemote } d, err := lxd.NewClient(config, remote) if err != nil { return err } fname := args[len(args)-1] cert, err := shared.ReadCert(fname) if err != nil { return err } name, _ := shared.SplitExt(fname) return d.CertificateAdd(cert, name) case "remove": var remote string if len(args) < 3 { return fmt.Errorf(gettext.Gettext("No fingerprint specified.")) } else if len(args) == 4 { remote = config.ParseRemote(args[2]) } else { remote = config.DefaultRemote } d, err := lxd.NewClient(config, remote) if err != nil { return err } return d.CertificateRemove(args[len(args)-1]) default: return fmt.Errorf(gettext.Gettext("Unkonwn config trust command %s"), args[1]) } case "show": remote := "" container := "" if len(args) > 1 { remote, container = config.ParseRemoteAndContainer(args[1]) if container == "" { return fmt.Errorf(gettext.Gettext("Show for remotes is not yet supported\n")) } } d, err := lxd.NewClient(config, remote) if err != nil { return err } var data []byte if len(args) == 1 || container == "" { config, err := d.ServerStatus() if err != nil { return err } brief := config.BriefState() data, err = yaml.Marshal(&brief) } else { config, err := d.ContainerStatus(container, false) if err != nil { return err } brief := config.BriefState() data, err = yaml.Marshal(&brief) } fmt.Printf("%s", data) return nil case "get": if len(args) != 3 { return errArgs } remote, container := config.ParseRemoteAndContainer(args[1]) d, err := lxd.NewClient(config, remote) if err != nil { return err } resp, err := d.ContainerStatus(container, false) if err != nil { return err } fmt.Printf("%s: %s\n", args[2], resp.Config[args[2]]) return nil case "profile": case "device": if len(args) < 2 { return errArgs } switch args[1] { case "list": return deviceList(config, "container", args) case "add": return deviceAdd(config, "container", args) case "remove": return deviceRm(config, "container", args) case "show": return deviceShow(config, "container", args) default: return errArgs } case "edit": if len(args) != 2 { return errArgs } remote, container := config.ParseRemoteAndContainer(args[1]) d, err := lxd.NewClient(config, remote) if err != nil { return err } return doConfigEdit(d, container) default: return errArgs } return errArgs }