~ubuntu-branches/ubuntu/vivid/juju-core/vivid-updates

« back to all changes in this revision

Viewing changes to src/github.com/juju/juju/cmd/juju/service/unset.go

  • Committer: Package Import Robot
  • Author(s): Curtis C. Hovey
  • Date: 2015-09-29 19:43:29 UTC
  • mfrom: (47.1.4 wily-proposed)
  • Revision ID: package-import@ubuntu.com-20150929194329-9y496tbic30hc7vp
Tags: 1.24.6-0ubuntu1~15.04.1
Backport of 1.24.6 from wily. (LP: #1500916, #1497087)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2012-2015 Canonical Ltd.
 
2
// Licensed under the AGPLv3, see LICENCE file for details.
 
3
 
 
4
package service
 
5
 
 
6
import (
 
7
        "errors"
 
8
 
 
9
        "github.com/juju/cmd"
 
10
 
 
11
        "github.com/juju/juju/cmd/envcmd"
 
12
        "github.com/juju/juju/cmd/juju/block"
 
13
)
 
14
 
 
15
// UnsetCommand sets configuration values of a service back
 
16
// to their default.
 
17
type UnsetCommand struct {
 
18
        envcmd.EnvCommandBase
 
19
        ServiceName string
 
20
        Options     []string
 
21
        api         UnsetServiceAPI
 
22
}
 
23
 
 
24
const unsetDoc = `
 
25
Set one or more configuration options for the specified service to their
 
26
default. See also the set commmand to set one or more configuration options for
 
27
a specified service.
 
28
`
 
29
 
 
30
func (c *UnsetCommand) Info() *cmd.Info {
 
31
        return &cmd.Info{
 
32
                Name:    "unset",
 
33
                Args:    "<service> name ...",
 
34
                Purpose: "set service config options back to their default",
 
35
                Doc:     unsetDoc,
 
36
        }
 
37
}
 
38
 
 
39
func (c *UnsetCommand) Init(args []string) error {
 
40
        if len(args) == 0 {
 
41
                return errors.New("no service name specified")
 
42
        }
 
43
        c.ServiceName = args[0]
 
44
        c.Options = args[1:]
 
45
        if len(c.Options) == 0 {
 
46
                return errors.New("no configuration options specified")
 
47
        }
 
48
        return nil
 
49
}
 
50
 
 
51
// UnsetServiceAPI defines the methods on the client API
 
52
// that the service unset command calls.
 
53
type UnsetServiceAPI interface {
 
54
        Close() error
 
55
        ServiceUnset(service string, options []string) error
 
56
}
 
57
 
 
58
func (c *UnsetCommand) getAPI() (UnsetServiceAPI, error) {
 
59
        if c.api != nil {
 
60
                return c.api, nil
 
61
        }
 
62
        return c.NewAPIClient()
 
63
}
 
64
 
 
65
// Run resets the configuration of a service.
 
66
func (c *UnsetCommand) Run(ctx *cmd.Context) error {
 
67
        apiclient, err := c.getAPI()
 
68
        if err != nil {
 
69
                return err
 
70
        }
 
71
        defer apiclient.Close()
 
72
        return block.ProcessBlockedError(apiclient.ServiceUnset(c.ServiceName, c.Options), block.BlockChange)
 
73
}