launchpad.net/~rogpeppe/juju-core/500-errgo-fix@v0.0.0-20140213181702-000000002356/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  	}
    27  }
    28  
    29  func (c *DestroyServiceCommand) Init(args []string) error {
    30  	if len(args) == 0 {
    31  		return fmt.Errorf("no service specified")
    32  	}
    33  	if !names.IsService(args[0]) {
    34  		return fmt.Errorf("invalid service name %q", args[0])
    35  	}
    36  	c.ServiceName, args = args[0], args[1:]
    37  	return cmd.CheckEmpty(args)
    38  }
    39  
    40  func (c *DestroyServiceCommand) Run(_ *cmd.Context) error {
    41  	client, err := juju.NewAPIClientFromName(c.EnvName)
    42  	if err != nil {
    43  		return err
    44  	}
    45  	defer client.Close()
    46  	return client.ServiceDestroy(c.ServiceName)
    47  }