github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/cmd/juju/cloud/remove.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package cloud 5 6 import ( 7 "github.com/juju/cmd" 8 "github.com/juju/errors" 9 10 "github.com/juju/juju/cloud" 11 jujucmd "github.com/juju/juju/cmd" 12 ) 13 14 var usageRemoveCloudSummary = ` 15 Removes a user-defined cloud from Juju.`[1:] 16 17 var usageRemoveCloudDetails = ` 18 Remove a named, user-defined cloud from Juju. 19 20 Examples: 21 juju remove-cloud mycloud 22 23 See also: 24 add-cloud 25 list-clouds` 26 27 type removeCloudCommand struct { 28 cmd.CommandBase 29 30 // Cloud is the name fo the cloud to remove. 31 Cloud string 32 } 33 34 // NewRemoveCloudCommand returns a command to remove cloud information. 35 func NewRemoveCloudCommand() cmd.Command { 36 return &removeCloudCommand{} 37 } 38 39 func (c *removeCloudCommand) Info() *cmd.Info { 40 return jujucmd.Info(&cmd.Info{ 41 Name: "remove-cloud", 42 Args: "<cloud name>", 43 Purpose: usageRemoveCloudSummary, 44 Doc: usageRemoveCloudDetails, 45 }) 46 } 47 48 func (c *removeCloudCommand) Init(args []string) (err error) { 49 if len(args) < 1 { 50 return errors.New("Usage: juju remove-cloud <cloud name>") 51 } 52 c.Cloud = args[0] 53 return cmd.CheckEmpty(args[1:]) 54 } 55 56 func (c *removeCloudCommand) Run(ctxt *cmd.Context) error { 57 personalClouds, err := cloud.PersonalCloudMetadata() 58 if err != nil { 59 return err 60 } 61 if _, ok := personalClouds[c.Cloud]; !ok { 62 ctxt.Infof("No personal cloud called %q exists", c.Cloud) 63 return nil 64 } 65 delete(personalClouds, c.Cloud) 66 if err := cloud.WritePersonalCloudMetadata(personalClouds); err != nil { 67 return errors.Trace(err) 68 } 69 ctxt.Infof("Removed details of personal cloud %q", c.Cloud) 70 return nil 71 }