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  }