5
"launchpad.net/gnuflag"
6
"launchpad.net/juju-core/cmd"
7
"launchpad.net/juju-core/constraints"
8
"launchpad.net/juju-core/juju"
9
"launchpad.net/juju-core/state"
10
"launchpad.net/juju-core/state/api/params"
11
"launchpad.net/juju-core/state/statecmd"
14
// GetConstraintsCommand shows the constraints for a service or environment.
15
type GetConstraintsCommand struct {
21
func (c *GetConstraintsCommand) Info() *cmd.Info {
23
Name: "get-constraints",
25
Purpose: "view constraints",
29
func formatConstraints(value interface{}) ([]byte, error) {
30
return []byte(value.(constraints.Value).String()), nil
33
func (c *GetConstraintsCommand) SetFlags(f *gnuflag.FlagSet) {
34
c.EnvCommandBase.SetFlags(f)
35
c.out.AddFlags(f, "constraints", map[string]cmd.Formatter{
36
"constraints": formatConstraints,
37
"yaml": cmd.FormatYaml,
38
"json": cmd.FormatJson,
42
func (c *GetConstraintsCommand) Init(args []string) error {
44
if !state.IsServiceName(args[0]) {
45
return fmt.Errorf("invalid service name %q", args[0])
47
c.ServiceName, args = args[0], args[1:]
49
return cmd.CheckEmpty(args)
52
func (c *GetConstraintsCommand) Run(ctx *cmd.Context) error {
53
conn, err := juju.NewConnFromName(c.EnvName)
59
var cons constraints.Value
60
if c.ServiceName != "" {
61
args := params.GetServiceConstraints{
62
ServiceName: c.ServiceName,
64
var results params.GetServiceConstraintsResults
65
results, err = statecmd.GetServiceConstraints(conn.State, args)
66
cons = results.Constraints
68
cons, err = conn.State.EnvironConstraints()
73
return c.out.Write(ctx, cons)
76
// SetConstraintsCommand shows the constraints for a service or environment.
77
type SetConstraintsCommand struct {
80
Constraints constraints.Value
83
func (c *SetConstraintsCommand) Info() *cmd.Info {
85
Name: "set-constraints",
86
Args: "[key=[value] ...]",
87
Purpose: "replace constraints",
91
func (c *SetConstraintsCommand) SetFlags(f *gnuflag.FlagSet) {
92
c.EnvCommandBase.SetFlags(f)
93
f.StringVar(&c.ServiceName, "s", "", "set service constraints")
94
f.StringVar(&c.ServiceName, "service", "", "")
97
func (c *SetConstraintsCommand) Init(args []string) (err error) {
98
if c.ServiceName != "" && !state.IsServiceName(c.ServiceName) {
99
return fmt.Errorf("invalid service name %q", c.ServiceName)
101
c.Constraints, err = constraints.Parse(args...)
105
func (c *SetConstraintsCommand) Run(_ *cmd.Context) (err error) {
106
conn, err := juju.NewConnFromName(c.EnvName)
111
if c.ServiceName == "" {
112
return conn.State.SetEnvironConstraints(c.Constraints)
114
params := params.SetServiceConstraints{
115
ServiceName: c.ServiceName,
116
Constraints: c.Constraints,
118
return statecmd.SetServiceConstraints(conn.State, params)