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