github.com/mattyw/juju@v0.0.0-20140610034352-732aecd63861/cmd/juju/unexpose.go (about) 1 // Copyright 2012, 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package main 5 6 import ( 7 "errors" 8 9 "github.com/juju/juju/cmd" 10 "github.com/juju/juju/cmd/envcmd" 11 "github.com/juju/juju/juju" 12 ) 13 14 // UnexposeCommand is responsible exposing services. 15 type UnexposeCommand struct { 16 envcmd.EnvCommandBase 17 ServiceName string 18 } 19 20 func (c *UnexposeCommand) Info() *cmd.Info { 21 return &cmd.Info{ 22 Name: "unexpose", 23 Args: "<service>", 24 Purpose: "unexpose a service", 25 } 26 } 27 28 func (c *UnexposeCommand) Init(args []string) error { 29 if len(args) == 0 { 30 return errors.New("no service name specified") 31 } 32 c.ServiceName = args[0] 33 return cmd.CheckEmpty(args[1:]) 34 } 35 36 // Run changes the juju-managed firewall to hide any 37 // ports that were also explicitly marked by units as closed. 38 func (c *UnexposeCommand) Run(_ *cmd.Context) error { 39 client, err := juju.NewAPIClientFromName(c.EnvName) 40 if err != nil { 41 return err 42 } 43 defer client.Close() 44 return client.ServiceUnexpose(c.ServiceName) 45 }