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

« back to all changes in this revision

Viewing changes to src/github.com/juju/juju/apiserver/client/instanceconfig_test.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, 2013 Canonical Ltd.
 
2
// Licensed under the AGPLv3, see LICENCE file for details.
 
3
 
 
4
package client_test
 
5
 
 
6
import (
 
7
        "fmt"
 
8
        "net"
 
9
        "strconv"
 
10
 
 
11
        jc "github.com/juju/testing/checkers"
 
12
        gc "gopkg.in/check.v1"
 
13
 
 
14
        "github.com/juju/juju/agent"
 
15
        "github.com/juju/juju/apiserver/client"
 
16
        "github.com/juju/juju/apiserver/params"
 
17
        envtools "github.com/juju/juju/environs/tools"
 
18
        "github.com/juju/juju/instance"
 
19
        "github.com/juju/juju/juju/testing"
 
20
        "github.com/juju/juju/network"
 
21
        "github.com/juju/juju/state"
 
22
        "github.com/juju/juju/state/multiwatcher"
 
23
        jujutesting "github.com/juju/juju/testing"
 
24
        coretools "github.com/juju/juju/tools"
 
25
)
 
26
 
 
27
type machineConfigSuite struct {
 
28
        testing.JujuConnSuite
 
29
}
 
30
 
 
31
var _ = gc.Suite(&machineConfigSuite{})
 
32
 
 
33
func (s *machineConfigSuite) TestMachineConfig(c *gc.C) {
 
34
        addrs := network.NewAddresses("1.2.3.4")
 
35
        hc := instance.MustParseHardware("mem=4G arch=amd64")
 
36
        apiParams := params.AddMachineParams{
 
37
                Jobs:       []multiwatcher.MachineJob{multiwatcher.JobHostUnits},
 
38
                InstanceId: instance.Id("1234"),
 
39
                Nonce:      "foo",
 
40
                HardwareCharacteristics: hc,
 
41
                Addrs: params.FromNetworkAddresses(addrs),
 
42
        }
 
43
        machines, err := s.APIState.Client().AddMachines([]params.AddMachineParams{apiParams})
 
44
        c.Assert(err, jc.ErrorIsNil)
 
45
        c.Assert(len(machines), gc.Equals, 1)
 
46
 
 
47
        machineId := machines[0].Machine
 
48
        instanceConfig, err := client.InstanceConfig(s.State, machineId, apiParams.Nonce, "")
 
49
        c.Assert(err, jc.ErrorIsNil)
 
50
 
 
51
        envConfig, err := s.State.EnvironConfig()
 
52
        c.Assert(err, jc.ErrorIsNil)
 
53
        mongoAddrs := s.State.MongoConnectionInfo().Addrs
 
54
        apiAddrs := []string{net.JoinHostPort("localhost", strconv.Itoa(envConfig.APIPort()))}
 
55
 
 
56
        c.Check(instanceConfig.MongoInfo.Addrs, gc.DeepEquals, mongoAddrs)
 
57
        c.Check(instanceConfig.APIInfo.Addrs, gc.DeepEquals, apiAddrs)
 
58
        toolsURL := fmt.Sprintf("https://%s/environment/%s/tools/%s",
 
59
                apiAddrs[0], jujutesting.EnvironmentTag.Id(), instanceConfig.Tools.Version)
 
60
        c.Assert(instanceConfig.Tools.URL, gc.Equals, toolsURL)
 
61
        c.Assert(instanceConfig.AgentEnvironment[agent.AllowsSecureConnection], gc.Equals, "true")
 
62
}
 
63
 
 
64
func (s *machineConfigSuite) TestSecureConnectionDisallowed(c *gc.C) {
 
65
        // StateServingInfo without CAPrivateKey will not allow secure connections.
 
66
        servingInfo := state.StateServingInfo{
 
67
                PrivateKey:   jujutesting.ServerKey,
 
68
                Cert:         jujutesting.ServerCert,
 
69
                SharedSecret: "really, really secret",
 
70
                APIPort:      4321,
 
71
                StatePort:    1234,
 
72
        }
 
73
        s.State.SetStateServingInfo(servingInfo)
 
74
        hc := instance.MustParseHardware("mem=4G arch=amd64")
 
75
        apiParams := params.AddMachineParams{
 
76
                Jobs:       []multiwatcher.MachineJob{multiwatcher.JobHostUnits},
 
77
                InstanceId: instance.Id("1234"),
 
78
                Nonce:      "foo",
 
79
                HardwareCharacteristics: hc,
 
80
        }
 
81
        machines, err := s.APIState.Client().AddMachines([]params.AddMachineParams{apiParams})
 
82
        c.Assert(err, jc.ErrorIsNil)
 
83
        c.Assert(len(machines), gc.Equals, 1)
 
84
 
 
85
        machineId := machines[0].Machine
 
86
        instanceConfig, err := client.InstanceConfig(s.State, machineId, apiParams.Nonce, "")
 
87
        c.Assert(err, jc.ErrorIsNil)
 
88
        c.Assert(instanceConfig.AgentEnvironment[agent.AllowsSecureConnection], gc.Equals, "false")
 
89
}
 
90
 
 
91
func (s *machineConfigSuite) TestMachineConfigNoArch(c *gc.C) {
 
92
        apiParams := params.AddMachineParams{
 
93
                Jobs:       []multiwatcher.MachineJob{multiwatcher.JobHostUnits},
 
94
                InstanceId: instance.Id("1234"),
 
95
                Nonce:      "foo",
 
96
        }
 
97
        machines, err := s.APIState.Client().AddMachines([]params.AddMachineParams{apiParams})
 
98
        c.Assert(err, jc.ErrorIsNil)
 
99
        c.Assert(len(machines), gc.Equals, 1)
 
100
        _, err = client.InstanceConfig(s.State, machines[0].Machine, apiParams.Nonce, "")
 
101
        c.Assert(err, gc.ErrorMatches, fmt.Sprintf("arch is not set for %q", "machine-"+machines[0].Machine))
 
102
}
 
103
 
 
104
func (s *machineConfigSuite) TestMachineConfigNoTools(c *gc.C) {
 
105
        s.PatchValue(&envtools.DefaultBaseURL, "")
 
106
        addrs := network.NewAddresses("1.2.3.4")
 
107
        hc := instance.MustParseHardware("mem=4G arch=amd64")
 
108
        apiParams := params.AddMachineParams{
 
109
                Series:     "quantal",
 
110
                Jobs:       []multiwatcher.MachineJob{multiwatcher.JobHostUnits},
 
111
                InstanceId: instance.Id("1234"),
 
112
                Nonce:      "foo",
 
113
                HardwareCharacteristics: hc,
 
114
                Addrs: params.FromNetworkAddresses(addrs),
 
115
        }
 
116
        machines, err := s.APIState.Client().AddMachines([]params.AddMachineParams{apiParams})
 
117
        c.Assert(err, jc.ErrorIsNil)
 
118
        _, err = client.InstanceConfig(s.State, machines[0].Machine, apiParams.Nonce, "")
 
119
        c.Assert(err, gc.ErrorMatches, coretools.ErrNoMatches.Error())
 
120
}