5
. "launchpad.net/gocheck"
6
"launchpad.net/juju-core/cloudinit"
10
// TODO integration tests, but how?
16
func Test1(t *testing.T) {
20
var ctests = []struct {
23
setOption func(cfg *cloudinit.Config)
28
func(cfg *cloudinit.Config) {
34
"apt_upgrade: true\n",
35
func(cfg *cloudinit.Config) {
36
cfg.SetAptUpgrade(true)
42
func(cfg *cloudinit.Config) {
43
cfg.SetAptUpdate(true)
48
"apt_mirror: http://foo.com\n",
49
func(cfg *cloudinit.Config) {
50
cfg.SetAptMirror("http://foo.com")
54
"AptPreserveSourcesList",
56
func(cfg *cloudinit.Config) {
57
cfg.SetAptPreserveSourcesList(true)
62
"debconf_selections: '# Force debconf priority to critical.\n\n debconf debconf/priority select critical\n\n'\n",
63
func(cfg *cloudinit.Config) {
64
cfg.SetDebconfSelections("# Force debconf priority to critical.\ndebconf debconf/priority select critical\n")
69
"disable_ec2_metadata: true\n",
70
func(cfg *cloudinit.Config) {
71
cfg.SetDisableEC2Metadata(true)
76
"final_message: goodbye\n",
77
func(cfg *cloudinit.Config) {
78
cfg.SetFinalMessage("goodbye")
84
func(cfg *cloudinit.Config) {
85
cfg.SetLocale("en_us")
90
"disable_root: false\n",
91
func(cfg *cloudinit.Config) {
92
cfg.SetDisableRoot(false)
97
"ssh_authorized_keys:\n- key1\n- key2\n",
98
func(cfg *cloudinit.Config) {
99
cfg.AddSSHAuthorizedKeys("key1")
100
cfg.AddSSHAuthorizedKeys("key2")
105
"ssh_authorized_keys:\n- key1\n- key2\n- key3\n",
106
func(cfg *cloudinit.Config) {
107
cfg.AddSSHAuthorizedKeys("#command\nkey1")
108
cfg.AddSSHAuthorizedKeys("key2\n# comment\n\nkey3\n")
109
cfg.AddSSHAuthorizedKeys("")
113
"SSHKeys RSAPrivate",
114
"ssh_keys:\n rsa_private: key1data\n",
115
func(cfg *cloudinit.Config) {
116
cfg.AddSSHKey(cloudinit.RSAPrivate, "key1data")
121
"ssh_keys:\n rsa_public: key2data\n",
122
func(cfg *cloudinit.Config) {
123
cfg.AddSSHKey(cloudinit.RSAPublic, "key2data")
128
"ssh_keys:\n dsa_public: key1data\n",
129
func(cfg *cloudinit.Config) {
130
cfg.AddSSHKey(cloudinit.DSAPublic, "key1data")
134
"SSHKeys DSAPrivate",
135
"ssh_keys:\n dsa_private: key2data\n",
136
func(cfg *cloudinit.Config) {
137
cfg.AddSSHKey(cloudinit.DSAPrivate, "key2data")
142
"output:\n all:\n - '>foo'\n - '|bar'\n",
143
func(cfg *cloudinit.Config) {
144
cfg.SetOutput("all", ">foo", "|bar")
149
"output:\n all: '>foo'\n",
150
func(cfg *cloudinit.Config) {
151
cfg.SetOutput(cloudinit.OutAll, ">foo", "")
156
"apt_sources:\n- source: keyName\n key: someKey\n",
157
func(cfg *cloudinit.Config) {
158
cfg.AddAptSource("keyName", "someKey")
163
"apt_sources:\n- source: keyName\n keyid: someKey\n keyserver: foo.com\n",
164
func(cfg *cloudinit.Config) {
165
cfg.AddAptSourceWithKeyId("keyName", "someKey", "foo.com")
170
"packages:\n- juju\n- ubuntu\n",
171
func(cfg *cloudinit.Config) {
172
cfg.AddPackage("juju")
173
cfg.AddPackage("ubuntu")
178
"bootcmd:\n- ls > /dev\n- - ls\n - '>with space'\n",
179
func(cfg *cloudinit.Config) {
180
cfg.AddBootCmd("ls > /dev")
181
cfg.AddBootCmdArgs("ls", ">with space")
186
"mounts:\n- - x\n - \"y\"\n- - z\n - w\n",
187
func(cfg *cloudinit.Config) {
188
cfg.AddMount("x", "y")
189
cfg.AddMount("z", "w")
194
"arbitraryAttr: someValue\n",
195
func(cfg *cloudinit.Config) {
196
cfg.SetAttr("arbitraryAttr", "someValue")
201
const header = "#cloud-config\n"
203
func (S) TestOutput(c *C) {
204
for _, t := range ctests {
205
cfg := cloudinit.New()
207
data, err := cfg.Render()
209
c.Assert(data, NotNil)
210
c.Assert(string(data), Equals, header+t.expect, Commentf("test %q output differs", t.name))
218
func ExampleConfig() {
219
cfg := cloudinit.New()
220
cfg.AddPackage("juju")
221
cfg.AddPackage("ubuntu")
222
data, err := cfg.Render()
224
fmt.Printf("render error: %v", err)
227
fmt.Printf("%s", data)