github.com/cloud-green/juju@v0.0.0-20151002100041-a00291338d3d/cmd/juju/commands/resolved.go (about) 1 // Copyright 2012, 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package commands 5 6 import ( 7 "fmt" 8 9 "github.com/juju/cmd" 10 "github.com/juju/names" 11 "launchpad.net/gnuflag" 12 13 "github.com/juju/juju/cmd/envcmd" 14 "github.com/juju/juju/cmd/juju/block" 15 ) 16 17 // ResolvedCommand marks a unit in an error state as ready to continue. 18 type ResolvedCommand struct { 19 envcmd.EnvCommandBase 20 UnitName string 21 Retry bool 22 } 23 24 func (c *ResolvedCommand) Info() *cmd.Info { 25 return &cmd.Info{ 26 Name: "resolved", 27 Args: "<unit>", 28 Purpose: "marks unit errors resolved", 29 } 30 } 31 32 func (c *ResolvedCommand) SetFlags(f *gnuflag.FlagSet) { 33 f.BoolVar(&c.Retry, "r", false, "re-execute failed hooks") 34 f.BoolVar(&c.Retry, "retry", false, "") 35 } 36 37 func (c *ResolvedCommand) Init(args []string) error { 38 if len(args) > 0 { 39 c.UnitName = args[0] 40 if !names.IsValidUnit(c.UnitName) { 41 return fmt.Errorf("invalid unit name %q", c.UnitName) 42 } 43 args = args[1:] 44 } else { 45 return fmt.Errorf("no unit specified") 46 } 47 return cmd.CheckEmpty(args) 48 } 49 50 func (c *ResolvedCommand) Run(_ *cmd.Context) error { 51 client, err := c.NewAPIClient() 52 if err != nil { 53 return err 54 } 55 defer client.Close() 56 return block.ProcessBlockedError(client.Resolved(c.UnitName, c.Retry), block.BlockChange) 57 }