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  }