toft 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. data/Gemfile.lock +6 -1
  2. data/Rakefile +93 -4
  3. data/features/checker.feature +2 -2
  4. data/features/chef.feature +23 -5
  5. data/features/command.feature +4 -3
  6. data/features/node.feature +21 -6
  7. data/features/step_definitions/chef.rb +11 -3
  8. data/features/step_definitions/command.rb +1 -3
  9. data/features/step_definitions/node.rb +19 -3
  10. data/features/support/env.rb +6 -3
  11. data/fixtures/chef/attributes.json +9 -0
  12. data/lib/toft/chef/chef_attributes.rb +2 -2
  13. data/lib/toft/chef/chef_runner.rb +17 -4
  14. data/lib/toft/node.rb +64 -20
  15. data/lib/toft/node_controller.rb +2 -2
  16. data/lib/toft/version.rb +1 -1
  17. data/lib/toft.rb +5 -2
  18. data/scripts/bin/centos/lxc-prepare-host +175 -0
  19. data/scripts/{ubuntu/bin → bin/share}/install-chef-ubuntu.sh +0 -0
  20. data/scripts/{ubuntu/bin → bin/share}/install-rvm.sh +0 -0
  21. data/scripts/{ubuntu/bin → bin/share}/lxc-create-centos-image +6 -5
  22. data/scripts/{ubuntu/bin → bin/ubuntu}/lxc-create-ubuntu-image +3 -3
  23. data/scripts/bin/ubuntu/lxc-prepare-host +190 -0
  24. data/scripts/cookbooks/lxc/recipes/default.rb +8 -14
  25. data/scripts/{ubuntu/lxc-templates → cookbooks/lxc/templates/default}/lxc-centos-6 +7 -3
  26. data/scripts/cookbooks/lxc/templates/default/{lxc-lucid-chef → lxc-lucid} +2 -2
  27. data/scripts/cookbooks/lxc/templates/default/{lxc-natty-chef → lxc-natty} +2 -2
  28. data/scripts/lxc-templates/files/rc.local +38 -0
  29. data/scripts/lxc-templates/lxc-centos-6 +279 -0
  30. data/scripts/{ubuntu/lxc-templates → lxc-templates}/lxc-lucid +3 -12
  31. data/scripts/{ubuntu/lxc-templates → lxc-templates}/lxc-natty +51 -61
  32. data/spec/fixtures/illegal_syntax.json +1 -0
  33. data/spec/spec_helper.rb +3 -1
  34. data/spec/tuft/chef_attributes_spec.rb +6 -0
  35. data/spec/tuft/chef_runner_spec.rb +34 -0
  36. metadata +55 -21
  37. data/scripts/centos/bin/lxc-prepare-host +0 -39
  38. data/scripts/cookbooks/lxc/files/default/lxc-create-ubuntu-image +0 -75
  39. data/scripts/ubuntu/bin/lxc-prepare-host +0 -24
@@ -0,0 +1,279 @@
1
+ #!/bin/bash
2
+
3
+ echo "Creating centos-6 node..."
4
+
5
+ configure_centos()
6
+ {
7
+ rootfs=$1
8
+ hostname=$2
9
+
10
+ # disable selinux in centos
11
+ mkdir -p $rootfs/selinux
12
+ echo 0 > $rootfs/selinux/enforce
13
+
14
+ # add host root ssh access
15
+ mkdir $rootfs/root/.ssh
16
+ chmod 0600 $rootfs/root/.ssh
17
+ cat <<-EOF > $rootfs/root/.ssh/authorized_keys
18
+ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCguB7XL3ARzLZYLsIMZe4UUO371m+H5C6V8MhtmSlgXtgHDo7eZhNSm5zCeoyGd32OKeLxuxCCEkXfDDF1aa2a6twcASE3pmWNdnBS7auiOH4P7g+eQ4Aw9v7DdESbIVgHF/NDiAEFFdmApYNM3oCX2FhEVNVKxkkIokUr4axYFJzmJ6Xoi5Sd8JtPC85FZVXqDucZDnHQlOcCkbSo0UOmsWQGwtu8eUHoDeUG0dB8ntb9xlBeLctdrAPhuFYCX8IfFkdcakkzv61ETPbKE6g9wdTDC/TEep7/AHGYmarziRnwKiVOL1jnE1coOJLqy8wOC3dKGmRZy9D4sTc+FRV root insecure public key
19
+ EOF
20
+
21
+ cp /usr/lib/lxc/templates/files/rc.local $rootfs/etc/rc.local
22
+
23
+ # set the hostname
24
+ cat <<EOF > $rootfs/etc/hostname
25
+ $hostname
26
+ EOF
27
+ # set minimal hosts
28
+ cat <<EOF > $rootfs/etc/hosts
29
+ 127.0.0.1 localhost $hostname
30
+ EOF
31
+
32
+ cat <<EOF > $rootfs/etc/init/console.conf
33
+ # console - mingetty
34
+ #
35
+ # This service maintains a console on tty1 from the point the system is
36
+ # started until it is shut down again.
37
+
38
+ start on stopped rc RUNLEVEL=[2345]
39
+ stop on runlevel [!2345]
40
+
41
+ respawn
42
+ exec /sbin/mingetty console
43
+ EOF
44
+
45
+ cat <<EOF > $rootfs/etc/fstab
46
+ none /dev/pts devpts defaults 0 0
47
+ EOF
48
+
49
+ [ ! -f $rootfs/etc/init/kexec-disable.conf ] || mv $rootfs/etc/init/kexec-disable.conf $rootfs/etc/init/kexec-disable.conf.orig
50
+ sed -i -e 's:/sbin/start_udev:#/sbin/start_udev:' $rootfs/etc/rc.d/rc.sysinit
51
+
52
+ sed -i -e 's:\(Defaults *requiretty\):# \1:' $rootfs/etc/sudoers
53
+
54
+ # create necessary devices
55
+ rm $rootfs/dev/null
56
+ mknod -m 666 $rootfs/dev/null c 1 3
57
+ mknod -m 666 $rootfs/dev/random c 1 8
58
+ mknod -m 666 $rootfs/dev/urandom c 1 9
59
+ mkdir -m 755 $rootfs/dev/pts
60
+ mknod -m 666 $rootfs/dev/tty c 5 0
61
+ mknod -m 666 $rootfs/dev/tty0 c 4 0
62
+ mknod -m 666 $rootfs/dev/tty1 c 4 1
63
+ mknod -m 666 $rootfs/dev/tty2 c 4 2
64
+ mknod -m 666 $rootfs/dev/tty3 c 4 3
65
+ mknod -m 666 $rootfs/dev/tty4 c 4 4
66
+ mknod -m 600 $rootfs/dev/console c 5 1
67
+ mknod -m 666 $rootfs/dev/full c 1 7
68
+ mknod -m 600 $rootfs/dev/initctl p
69
+
70
+ # change root password
71
+ echo "Set root password to 'root'"
72
+ echo "root:root" | chroot $rootfs chpasswd
73
+
74
+ return 0
75
+ }
76
+
77
+ copy_centos()
78
+ {
79
+ cache=$1
80
+ arch=$2
81
+ rootfs=$3
82
+
83
+ # make a local copy of the minicentos
84
+ echo "Extracting rootfs image to $rootfs ..."
85
+ mkdir $rootfs
86
+ tar zxf $cache/centos-6-$arch.tar.gz -C $rootfs || return 1
87
+ return 0
88
+ }
89
+
90
+ install_centos()
91
+ {
92
+ cache="/var/cache/lxc"
93
+ rootfs=$1
94
+ mkdir -p /var/lock/subsys/
95
+ (
96
+ flock -n -x 200
97
+ if [ $? -ne 0 ]; then
98
+ echo "Cache repository is busy."
99
+ return 1
100
+ fi
101
+
102
+ arch=$(arch)
103
+ if [ "$arch" == "x86_64" ]; then
104
+ arch=amd64
105
+ fi
106
+
107
+ if [ "$arch" == "i686" ]; then
108
+ arch=i386
109
+ fi
110
+
111
+ echo "Checking image cache in $cache/rootfs-$arch ... "
112
+ if [ ! -e "$cache/rootfs-$arch" ]; then
113
+ if [ $? -ne 0 ]; then
114
+ echo "Failed to download 'centos base'"
115
+ return 1
116
+ fi
117
+ fi
118
+
119
+ copy_centos $cache $arch $rootfs
120
+ if [ $? -ne 0 ]; then
121
+ echo "Failed to copy rootfs"
122
+ return 1
123
+ fi
124
+
125
+ return 0
126
+
127
+ ) 200>/var/lock/subsys/lxc
128
+
129
+ return $?
130
+ }
131
+
132
+ copy_configuration()
133
+ {
134
+ path=$1
135
+ rootfs=$2
136
+ name=$3
137
+
138
+ cat <<EOF >> $path/config
139
+ lxc.utsname = $name
140
+
141
+ lxc.tty = 4
142
+ lxc.pts = 1024
143
+ lxc.rootfs = $rootfs
144
+ lxc.mount = $path/fstab
145
+
146
+ lxc.cgroup.devices.deny = a
147
+
148
+ lxc.cgroup.devices.allow = b 1:0 rwm
149
+ lxc.cgroup.devices.allow = b 1:1 rwm
150
+ lxc.cgroup.devices.allow = c 1:1 rwm
151
+ lxc.cgroup.devices.allow = c 1:2 rwm
152
+ lxc.cgroup.devices.allow = c 1:4 rwm
153
+ lxc.cgroup.devices.allow = c 1:6 rwm
154
+ lxc.cgroup.devices.allow = c 1:7 rwm
155
+ lxc.cgroup.devices.allow = c 1:11 rwm
156
+
157
+ lxc.cgroup.devices.allow = c 2:* rwm
158
+ lxc.cgroup.devices.allow = c 3:* rwm
159
+
160
+ # /dev/null and zero
161
+ lxc.cgroup.devices.allow = c 1:3 rwm
162
+ lxc.cgroup.devices.allow = c 1:5 rwm
163
+ # consoles
164
+ lxc.cgroup.devices.allow = c 5:1 rwm
165
+ lxc.cgroup.devices.allow = c 5:0 rwm
166
+ lxc.cgroup.devices.allow = c 4:0 rwm
167
+ lxc.cgroup.devices.allow = c 4:1 rwm
168
+ # /dev/{,u}random
169
+ lxc.cgroup.devices.allow = c 1:9 rwm
170
+ lxc.cgroup.devices.allow = c 1:8 rwm
171
+ lxc.cgroup.devices.allow = c 136:* rwm
172
+ lxc.cgroup.devices.allow = c 5:2 rwm
173
+ # rtc
174
+ lxc.cgroup.devices.allow = c 254:0 rwm
175
+ EOF
176
+
177
+ cat <<EOF > $path/fstab
178
+ proc $rootfs/proc proc nodev,noexec,nosuid 0 0
179
+ devpts $rootfs/dev/pts devpts defaults 0 0
180
+ sysfs $rootfs/sys sysfs defaults 0 0
181
+ EOF
182
+
183
+ if [ $? -ne 0 ]; then
184
+ echo "Failed to add configuration"
185
+ return 1
186
+ fi
187
+
188
+ return 0
189
+ }
190
+
191
+ clean()
192
+ {
193
+ cache="/var/cache/lxc"
194
+
195
+ if [ ! -e $cache ]; then
196
+ exit 0
197
+ fi
198
+
199
+ # lock, so we won't purge while someone is creating a repository
200
+ (
201
+ flock -n -x 200
202
+ if [ $? != 0 ]; then
203
+ echo "Cache repository is busy."
204
+ exit 1
205
+ fi
206
+
207
+ echo -n "Purging the download cache..."
208
+ rm --preserve-root --one-file-system -rf $cache && echo "Done." || exit 1
209
+ exit 0
210
+
211
+ ) 200>/var/lock/subsys/lxc
212
+ }
213
+
214
+ usage()
215
+ {
216
+ cat <<EOF
217
+ $1 -h|--help -p|--path=<path> --clean
218
+ EOF
219
+ return 0
220
+ }
221
+
222
+ options=$(getopt -o hp:n:c -l help,path:,name:,clean -- "$@")
223
+ if [ $? -ne 0 ]; then
224
+ usage $(basename $0)
225
+ exit 1
226
+ fi
227
+ eval set -- "$options"
228
+
229
+ while true
230
+ do
231
+ case "$1" in
232
+ -h|--help) usage $0 && exit 0;;
233
+ -p|--path) path=$2; shift 2;;
234
+ -n|--name) name=$2; shift 2;;
235
+ -c|--clean) clean=$2; shift 2;;
236
+ --) shift 1; break ;;
237
+ *) break ;;
238
+ esac
239
+ done
240
+
241
+ if [ ! -z "$clean" -a -z "$path" ]; then
242
+ clean || exit 1
243
+ exit 0
244
+ fi
245
+
246
+ if [ -z "$path" ]; then
247
+ echo "'path' parameter is required"
248
+ exit 1
249
+ fi
250
+
251
+ if [ "$(id -u)" != "0" ]; then
252
+ echo "This script should be run as 'root'"
253
+ exit 1
254
+ fi
255
+
256
+ rootfs=$path/rootfs
257
+
258
+ install_centos $rootfs
259
+ if [ $? -ne 0 ]; then
260
+ echo "failed to install centos"
261
+ exit 1
262
+ fi
263
+
264
+ configure_centos $rootfs $name
265
+ if [ $? -ne 0 ]; then
266
+ echo "failed to configure centos for a container"
267
+ exit 1
268
+ fi
269
+
270
+ copy_configuration $path $rootfs $name
271
+ if [ $? -ne 0 ]; then
272
+ echo "failed write configuration file"
273
+ exit 1
274
+ fi
275
+
276
+ if [ ! -z $clean ]; then
277
+ clean || exit 1
278
+ exit 0
279
+ fi
@@ -18,16 +18,7 @@ configure_ubuntu()
18
18
  ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCguB7XL3ARzLZYLsIMZe4UUO371m+H5C6V8MhtmSlgXtgHDo7eZhNSm5zCeoyGd32OKeLxuxCCEkXfDDF1aa2a6twcASE3pmWNdnBS7auiOH4P7g+eQ4Aw9v7DdESbIVgHF/NDiAEFFdmApYNM3oCX2FhEVNVKxkkIokUr4axYFJzmJ6Xoi5Sd8JtPC85FZVXqDucZDnHQlOcCkbSo0UOmsWQGwtu8eUHoDeUG0dB8ntb9xlBeLctdrAPhuFYCX8IfFkdcakkzv61ETPbKE6g9wdTDC/TEep7/AHGYmarziRnwKiVOL1jnE1coOJLqy8wOC3dKGmRZy9D4sTc+FRV root insecure public key
19
19
  EOF
20
20
 
21
- # copy host resolve
22
- rm $rootfs/etc/resolv.conf
23
- cp /etc/resolv.conf $rootfs/etc/resolv.conf
24
-
25
- # add default route to host
26
- cat <<EOF > $rootfs/etc/rc.local
27
- #!/bin/sh -e
28
- route add default gw 192.168.20.1
29
- exit 0
30
- EOF
21
+ cp /usr/lib/lxc/templates/files/rc.local $rootfs/etc/rc.local
31
22
 
32
23
  # disable selinux in ubuntu
33
24
  mkdir -p $rootfs/selinux
@@ -149,7 +140,7 @@ copy_ubuntu()
149
140
 
150
141
  install_ubuntu()
151
142
  {
152
- cache="/var/cache/lxc/ubuntu"
143
+ cache="/var/cache/lxc"
153
144
  rootfs=$1
154
145
  mkdir -p /var/lock/subsys/
155
146
  (
@@ -237,7 +228,7 @@ EOF
237
228
 
238
229
  clean()
239
230
  {
240
- cache="/var/cache/lxc/ubuntu"
231
+ cache="/var/cache/lxc"
241
232
 
242
233
  if [ ! -e $cache ]; then
243
234
  exit 0
@@ -16,18 +16,9 @@ configure_ubuntu()
16
16
  chmod 0600 $rootfs/root/.ssh
17
17
  cat <<-EOF > $rootfs/root/.ssh/authorized_keys
18
18
  ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCguB7XL3ARzLZYLsIMZe4UUO371m+H5C6V8MhtmSlgXtgHDo7eZhNSm5zCeoyGd32OKeLxuxCCEkXfDDF1aa2a6twcASE3pmWNdnBS7auiOH4P7g+eQ4Aw9v7DdESbIVgHF/NDiAEFFdmApYNM3oCX2FhEVNVKxkkIokUr4axYFJzmJ6Xoi5Sd8JtPC85FZVXqDucZDnHQlOcCkbSo0UOmsWQGwtu8eUHoDeUG0dB8ntb9xlBeLctdrAPhuFYCX8IfFkdcakkzv61ETPbKE6g9wdTDC/TEep7/AHGYmarziRnwKiVOL1jnE1coOJLqy8wOC3dKGmRZy9D4sTc+FRV root insecure public key
19
- EOF
20
-
21
- # copy host resolve
22
- rm $rootfs/etc/resolv.conf
23
- cp /etc/resolv.conf $rootfs/etc/resolv.conf
24
-
25
- # add default route to host
26
- cat <<EOF > $rootfs/etc/rc.local
27
- #!/bin/sh -e
28
- route add default gw 192.168.20.1
29
- exit 0
30
19
  EOF
20
+
21
+ cp /usr/lib/lxc/templates/files/rc.local $rootfs/etc/rc.local
31
22
 
32
23
  # disable selinux in ubuntu
33
24
  mkdir -p $rootfs/selinux
@@ -39,7 +30,7 @@ $hostname
39
30
  EOF
40
31
  # set minimal hosts
41
32
  cat <<EOF > $rootfs/etc/hosts
42
- 127.0.0.1 localhost $hostname
33
+ 127.0.0.1 $hostname localhost
43
34
  EOF
44
35
 
45
36
  # suppress log level output for udev
@@ -70,40 +61,40 @@ copy_ubuntu()
70
61
 
71
62
  install_ubuntu()
72
63
  {
73
- cache="/var/cache/lxc/ubuntu"
64
+ cache="/var/cache/lxc"
74
65
  rootfs=$1
75
66
  mkdir -p /var/lock/subsys/
76
67
  (
77
- flock -n -x 200
78
- if [ $? -ne 0 ]; then
79
- echo "Cache repository is busy."
80
- return 1
81
- fi
82
-
83
- arch=$(arch)
84
- if [ "$arch" == "x86_64" ]; then
85
- arch=amd64
86
- fi
87
-
88
- if [ "$arch" == "i686" ]; then
89
- arch=i386
90
- fi
91
-
92
- echo "Checking image cache in $cache/rootfs-$arch ... "
93
- if [ ! -e "$cache/rootfs-$arch" ]; then
94
- if [ $? -ne 0 ]; then
95
- echo "Failed to download 'ubuntu base'"
96
- return 1
97
- fi
98
- fi
99
-
100
- copy_ubuntu $cache $arch $rootfs
101
- if [ $? -ne 0 ]; then
102
- echo "Failed to copy rootfs"
103
- return 1
104
- fi
105
-
106
- return 0
68
+ flock -n -x 200
69
+ if [ $? -ne 0 ]; then
70
+ echo "Cache repository is busy."
71
+ return 1
72
+ fi
73
+
74
+ arch=$(arch)
75
+ if [ "$arch" == "x86_64" ]; then
76
+ arch=amd64
77
+ fi
78
+
79
+ if [ "$arch" == "i686" ]; then
80
+ arch=i386
81
+ fi
82
+
83
+ echo "Checking image cache in $cache/rootfs-$arch ... "
84
+ if [ ! -e "$cache/rootfs-$arch" ]; then
85
+ if [ $? -ne 0 ]; then
86
+ echo "Failed to download 'ubuntu base'"
87
+ return 1
88
+ fi
89
+ fi
90
+
91
+ copy_ubuntu $cache $arch $rootfs
92
+ if [ $? -ne 0 ]; then
93
+ echo "Failed to copy rootfs"
94
+ return 1
95
+ fi
96
+
97
+ return 0
107
98
 
108
99
  ) 200>/var/lock/subsys/lxc
109
100
 
@@ -149,8 +140,8 @@ sysfs $rootfs/sys sysfs defaults 0 0
149
140
  EOF
150
141
 
151
142
  if [ $? -ne 0 ]; then
152
- echo "Failed to add configuration"
153
- return 1
143
+ echo "Failed to add configuration"
144
+ return 1
154
145
  fi
155
146
 
156
147
  return 0
@@ -158,7 +149,7 @@ EOF
158
149
 
159
150
  clean()
160
151
  {
161
- cache="/var/cache/lxc/ubuntu"
152
+ cache="/var/cache/lxc"
162
153
 
163
154
  if [ ! -e $cache ]; then
164
155
  exit 0
@@ -166,16 +157,15 @@ clean()
166
157
 
167
158
  # lock, so we won't purge while someone is creating a repository
168
159
  (
169
- flock -n -x 200
170
- if [ $? != 0 ]; then
171
- echo "Cache repository is busy."
172
- exit 1
173
- fi
174
-
175
- echo -n "Purging the download cache..."
176
- rm --preserve-root --one-file-system -rf $cache && echo "Done." || exit 1
177
- exit 0
178
-
160
+ flock -n -x 200
161
+ if [ $? != 0 ]; then
162
+ echo "Cache repository is busy."
163
+ exit 1
164
+ fi
165
+
166
+ echo -n "Purging the download cache..."
167
+ rm --preserve-root --one-file-system -rf $cache && echo "Done." || exit 1
168
+ exit 0
179
169
  ) 200>/var/lock/subsys/lxc
180
170
  }
181
171
 
@@ -197,11 +187,11 @@ eval set -- "$options"
197
187
  while true
198
188
  do
199
189
  case "$1" in
200
- -h|--help) usage $0 && exit 0;;
201
- -p|--path) path=$2; shift 2;;
202
- -n|--name) name=$2; shift 2;;
203
- -c|--clean) clean=$2; shift 2;;
204
- --) shift 1; break ;;
190
+ -h|--help) usage $0 && exit 0;;
191
+ -p|--path) path=$2; shift 2;;
192
+ -n|--name) name=$2; shift 2;;
193
+ -c|--clean) clean=$2; shift 2;;
194
+ --) shift 1; break ;;
205
195
  *) break ;;
206
196
  esac
207
197
  done
@@ -0,0 +1 @@
1
+ illegal json file
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,6 @@
1
1
  $:.unshift(File.dirname(__FILE__) + '/../lib')
2
2
  $:.unshift(File.dirname(__FILE__))
3
3
 
4
- require 'toft/chef/chef_attributes'
4
+ PROJECT_ROOT = File.dirname(__FILE__) + '/..'
5
+
6
+ require 'toft'
@@ -30,4 +30,10 @@ describe "ChefAttributes" do
30
30
  ca = Toft::ChefAttributes.new(table)
31
31
  ca.to_json.should == "{\"one\":{\"two\":{\"three\":\"some\"},\"four\":\"one\"}}"
32
32
  end
33
+
34
+ it "should initialize with 0 parameter" do
35
+ ca = Toft::ChefAttributes.new
36
+ ca.add_attribute "one.four", "one"
37
+ ca.attributes["one"]["four"].should == "one"
38
+ end
33
39
  end
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ describe "ChefRunner" do
4
+ it "should throw exception if json file not exist" do
5
+ cf = Toft::Chef::ChefRunner.new "whatever"
6
+ lambda { cf.run "run list", :json => "non-exist-file" }.
7
+ should raise_error Errno::ENOENT, "No such file or directory - non-exist-file"
8
+ end
9
+
10
+ it "should throw exception if json file syntax is illegal" do
11
+ cf = Toft::Chef::ChefRunner.new "whatever"
12
+ lambda { cf.run "run list", :json => "#{PROJECT_ROOT}/spec/fixtures/illegal_syntax.json" }.
13
+ should raise_error JSON::ParserError
14
+ end
15
+
16
+ it "should throw exception if cookbook path not set" do
17
+ cf = Toft::Chef::ChefRunner.new "whatever"
18
+ lambda { cf.run "run list" }.should raise_error ArgumentError, "Toft.cookbook_path can not be empty!"
19
+ end
20
+
21
+ it "should throw exception if cookbook not exist" do
22
+ Toft.cookbook_path = "non-exist-cookbook"
23
+ cf = Toft::Chef::ChefRunner.new "whatever"
24
+ lambda { cf.run "run list" }.should raise_error RuntimeError
25
+ end
26
+
27
+ it "should throw exception if roles not exist" do
28
+ Toft.cookbook_path = "#{PROJECT_ROOT}/fixtures/chef/cookbookse"
29
+ Toft.role_path = "non-exist-roles"
30
+ cf = Toft::Chef::ChefRunner.new "#{PROJECT_ROOT}/tmp"
31
+ lambda { cf.run "run list" }.should raise_error RuntimeError
32
+ end
33
+
34
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: toft
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 3
10
- version: 0.0.3
9
+ - 4
10
+ version: 0.0.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Huang Liang
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-10-01 00:00:00 Z
18
+ date: 2011-10-19 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: rspec
@@ -32,7 +32,7 @@ dependencies:
32
32
  type: :development
33
33
  version_requirements: *id001
34
34
  - !ruby/object:Gem::Dependency
35
- name: cucumber
35
+ name: fpm
36
36
  prerelease: false
37
37
  requirement: &id002 !ruby/object:Gem::Requirement
38
38
  none: false
@@ -46,9 +46,37 @@ dependencies:
46
46
  type: :development
47
47
  version_requirements: *id002
48
48
  - !ruby/object:Gem::Dependency
49
- name: vagrant
49
+ name: rake
50
50
  prerelease: false
51
51
  requirement: &id003 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ hash: 3
57
+ segments:
58
+ - 0
59
+ version: "0"
60
+ type: :development
61
+ version_requirements: *id003
62
+ - !ruby/object:Gem::Dependency
63
+ name: cucumber
64
+ prerelease: false
65
+ requirement: &id004 !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ hash: 3
71
+ segments:
72
+ - 0
73
+ version: "0"
74
+ type: :development
75
+ version_requirements: *id004
76
+ - !ruby/object:Gem::Dependency
77
+ name: vagrant
78
+ prerelease: false
79
+ requirement: &id005 !ruby/object:Gem::Requirement
52
80
  none: false
53
81
  requirements:
54
82
  - - ">="
@@ -60,11 +88,11 @@ dependencies:
60
88
  - 7
61
89
  version: 0.8.7
62
90
  type: :development
63
- version_requirements: *id003
91
+ version_requirements: *id005
64
92
  - !ruby/object:Gem::Dependency
65
93
  name: net-ssh
66
94
  prerelease: false
67
- requirement: &id004 !ruby/object:Gem::Requirement
95
+ requirement: &id006 !ruby/object:Gem::Requirement
68
96
  none: false
69
97
  requirements:
70
98
  - - ">="
@@ -74,7 +102,7 @@ dependencies:
74
102
  - 0
75
103
  version: "0"
76
104
  type: :runtime
77
- version_requirements: *id004
105
+ version_requirements: *id006
78
106
  description: toft currently support testing chef, shell scripts using cucumber on lxc on ubuntu
79
107
  email:
80
108
  - exceedhl@gmail.com
@@ -97,6 +125,7 @@ files:
97
125
  - features/step_definitions/command.rb
98
126
  - features/step_definitions/node.rb
99
127
  - features/support/env.rb
128
+ - fixtures/chef/attributes.json
100
129
  - fixtures/chef/cookbooks/test/attributes/default.rb
101
130
  - fixtures/chef/cookbooks/test/recipes/attribute.rb
102
131
  - fixtures/chef/cookbooks/test/recipes/default.rb
@@ -109,22 +138,25 @@ files:
109
138
  - lib/toft/node.rb
110
139
  - lib/toft/node_controller.rb
111
140
  - lib/toft/version.rb
112
- - scripts/centos/bin/lxc-prepare-host
141
+ - scripts/bin/centos/lxc-prepare-host
142
+ - scripts/bin/share/install-chef-ubuntu.sh
143
+ - scripts/bin/share/install-rvm.sh
144
+ - scripts/bin/share/lxc-create-centos-image
145
+ - scripts/bin/ubuntu/lxc-create-ubuntu-image
146
+ - scripts/bin/ubuntu/lxc-prepare-host
113
147
  - scripts/cookbooks/lxc/attributes/default.rb
114
- - scripts/cookbooks/lxc/files/default/lxc-create-ubuntu-image
115
148
  - scripts/cookbooks/lxc/recipes/default.rb
116
- - scripts/cookbooks/lxc/templates/default/lxc-lucid-chef
117
- - scripts/cookbooks/lxc/templates/default/lxc-natty-chef
118
- - scripts/ubuntu/bin/install-chef-ubuntu.sh
119
- - scripts/ubuntu/bin/install-rvm.sh
120
- - scripts/ubuntu/bin/lxc-create-centos-image
121
- - scripts/ubuntu/bin/lxc-create-ubuntu-image
122
- - scripts/ubuntu/bin/lxc-prepare-host
123
- - scripts/ubuntu/lxc-templates/lxc-centos-6
124
- - scripts/ubuntu/lxc-templates/lxc-lucid
125
- - scripts/ubuntu/lxc-templates/lxc-natty
149
+ - scripts/cookbooks/lxc/templates/default/lxc-centos-6
150
+ - scripts/cookbooks/lxc/templates/default/lxc-lucid
151
+ - scripts/cookbooks/lxc/templates/default/lxc-natty
152
+ - scripts/lxc-templates/files/rc.local
153
+ - scripts/lxc-templates/lxc-centos-6
154
+ - scripts/lxc-templates/lxc-lucid
155
+ - scripts/lxc-templates/lxc-natty
156
+ - spec/fixtures/illegal_syntax.json
126
157
  - spec/spec_helper.rb
127
158
  - spec/tuft/chef_attributes_spec.rb
159
+ - spec/tuft/chef_runner_spec.rb
128
160
  homepage: https://github.com/exceedhl/toft
129
161
  licenses: []
130
162
 
@@ -168,5 +200,7 @@ test_files:
168
200
  - features/step_definitions/command.rb
169
201
  - features/step_definitions/node.rb
170
202
  - features/support/env.rb
203
+ - spec/fixtures/illegal_syntax.json
171
204
  - spec/spec_helper.rb
172
205
  - spec/tuft/chef_attributes_spec.rb
206
+ - spec/tuft/chef_runner_spec.rb