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  }