github.com/cloudbase/juju-core@v0.0.0-20140504232958-a7271ac7912f/cmd/juju/destroyservice.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 "fmt" 8 9 "launchpad.net/juju-core/cmd" 10 "launchpad.net/juju-core/juju" 11 "launchpad.net/juju-core/names" 12 ) 13 14 // DestroyServiceCommand causes an existing service to be destroyed. 15 type DestroyServiceCommand struct { 16 cmd.EnvCommandBase 17 ServiceName string 18 } 19 20 func (c *DestroyServiceCommand) Info() *cmd.Info { 21 return &cmd.Info{ 22 Name: "destroy-service", 23 Args: "<service>", 24 Purpose: "destroy a service", 25 Doc: "Destroying a service will destroy all its units and relations.", 26 Aliases: []string{"remove-service"}, 27 } 28 } 29 30 func (c *DestroyServiceCommand) Init(args []string) error { 31 if len(args) == 0 { 32 return fmt.Errorf("no service specified") 33 } 34 if !names.IsService(args[0]) { 35 return fmt.Errorf("invalid service name %q", args[0]) 36 } 37 c.ServiceName, args = args[0], args[1:] 38 return cmd.CheckEmpty(args) 39 } 40 41 func (c *DestroyServiceCommand) Run(_ *cmd.Context) error { 42 client, err := juju.NewAPIClientFromName(c.EnvName) 43 if err != nil { 44 return err 45 } 46 defer client.Close() 47 return client.ServiceDestroy(c.ServiceName) 48 }