github.com/cloudbase/juju-core@v0.0.0-20140504232958-a7271ac7912f/cmd/juju/endpoint.go (about) 1 // Copyright 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package main 5 6 import ( 7 "launchpad.net/gnuflag" 8 9 "launchpad.net/juju-core/cmd" 10 "launchpad.net/juju-core/environs" 11 "launchpad.net/juju-core/environs/configstore" 12 ) 13 14 // EndpointCommand returns the API endpoints 15 type EndpointCommand struct { 16 cmd.EnvCommandBase 17 out cmd.Output 18 } 19 20 const endpointDoc = ` 21 Returns a list of the API servers formatted as host:port 22 Default output format returns an api server per line. 23 24 Examples: 25 $ juju api-endpoints 26 10.0.3.1:17070 27 $ 28 ` 29 30 func (c *EndpointCommand) Info() *cmd.Info { 31 return &cmd.Info{ 32 Name: "api-endpoints", 33 Args: "", 34 Purpose: "Print the API server addresses", 35 Doc: endpointDoc, 36 } 37 } 38 39 func (c *EndpointCommand) Init(args []string) error { 40 return cmd.CheckEmpty(args) 41 } 42 43 func (c *EndpointCommand) SetFlags(f *gnuflag.FlagSet) { 44 c.EnvCommandBase.SetFlags(f) 45 c.out.AddFlags(f, "smart", cmd.DefaultFormatters) 46 } 47 48 // Print out the addresses of the API server endpoints. 49 func (c *EndpointCommand) Run(ctx *cmd.Context) error { 50 store, err := configstore.Default() 51 if err != nil { 52 return err 53 } 54 environ, err := environs.NewFromName(c.EnvName, store) 55 if err != nil { 56 return err 57 } 58 _, api_info, err := environ.StateInfo() 59 if err != nil { 60 return err 61 } 62 return c.out.Write(ctx, api_info.Addrs) 63 }