github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/cmd/juju/commands/unexpose.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 "errors" 8 9 "github.com/juju/cmd" 10 11 "github.com/juju/juju/cmd/envcmd" 12 "github.com/juju/juju/cmd/juju/block" 13 ) 14 15 // UnexposeCommand is responsible exposing services. 16 type UnexposeCommand struct { 17 envcmd.EnvCommandBase 18 ServiceName string 19 } 20 21 func (c *UnexposeCommand) Info() *cmd.Info { 22 return &cmd.Info{ 23 Name: "unexpose", 24 Args: "<service>", 25 Purpose: "unexpose a service", 26 } 27 } 28 29 func (c *UnexposeCommand) Init(args []string) error { 30 if len(args) == 0 { 31 return errors.New("no service name specified") 32 } 33 c.ServiceName = args[0] 34 return cmd.CheckEmpty(args[1:]) 35 } 36 37 // Run changes the juju-managed firewall to hide any 38 // ports that were also explicitly marked by units as closed. 39 func (c *UnexposeCommand) Run(_ *cmd.Context) error { 40 client, err := c.NewAPIClient() 41 if err != nil { 42 return err 43 } 44 defer client.Close() 45 return block.ProcessBlockedError(client.ServiceUnexpose(c.ServiceName), block.BlockChange) 46 }