stem 0.3.1 → 0.3.3

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.
data/lib/stem/cli.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  require 'optparse'
2
2
 
3
+ require 'stem/userdata'
4
+
3
5
  module Stem
4
6
  Version = "0.2.1"
5
7
 
@@ -15,6 +17,7 @@ module Stem
15
17
 
16
18
  opts.separator "Examples:"
17
19
  opts.separator " $ stem launch prototype.config prototype-userdata.sh"
20
+ opts.separator " $ stem launch examples/lxc-server/lxc-server.json examples/lxc-server/"
18
21
  opts.separator " $ stem list"
19
22
  opts.separator " $ stem create ami-name instance-id"
20
23
 
@@ -58,8 +61,18 @@ module Stem
58
61
 
59
62
  def launch config_file = nil, userdata_file = nil
60
63
  abort "No config file" unless config_file
61
- userdata = File.new(userdata_file).read() if userdata_file
62
- instance = Stem::Instance::launch(JSON.parse(File.new(config_file).read()), userdata)
64
+ userdata = case
65
+ when userdata_file.nil?
66
+ nil
67
+ when File.directory?(userdata_file)
68
+ Userdata.compile(userdata_file)
69
+ when File.file?(userdata_file)
70
+ File.new(userdata_file).read
71
+ else
72
+ abort 'Unable to interpret userdata object.'
73
+ end
74
+ conf = JSON.parse(File.new(config_file).read)
75
+ instance = Stem::Instance.launch(conf, userdata)
63
76
  puts "New instance ID: #{instance}"
64
77
  end
65
78
 
data/lib/stem/instance.rb CHANGED
@@ -93,24 +93,30 @@ module Stem
93
93
  lookup[ami["imageId"]] = name
94
94
  end
95
95
 
96
- puts "------------------------------------------"
97
- puts "Instances"
98
- puts "------------------------------------------"
99
- instances["reservationSet"].each do |r|
100
- groups = r["groupSet"].map { |g| g["groupId"] }.join(",")
101
- r["instancesSet"].each do |i|
102
- name = lookup[i["imageId"]]
103
- puts "%-15s %-15s %-15s %-20s %s" % [ i["instanceId"], i["ipAddress"] || "no ip", i["instanceState"]["name"], groups, name ]
96
+ reservations = instances["reservationSet"]
97
+ unless reservations.nil? or reservations.empty?
98
+ puts "------------------------------------------"
99
+ puts "Instances"
100
+ puts "------------------------------------------"
101
+ reservations.each do |r|
102
+ groups = r["groupSet"].map { |g| g["groupId"] }.join(",")
103
+ r["instancesSet"].each do |i|
104
+ name = lookup[i["imageId"]]
105
+ puts "%-15s %-15s %-15s %-20s %s" % [ i["instanceId"], i["ipAddress"] || "no ip", i["instanceState"]["name"], groups, name ]
106
+ end
104
107
  end
105
108
  end
106
109
 
107
- puts "------------------------------------------"
108
- puts "AMIs"
109
- puts "------------------------------------------"
110
- images = swirl.call "DescribeImages", "Owner" => "self"
111
- iwidth = images["imagesSet"].map { |img| img["name"].length }.max + 1
112
- images["imagesSet"].each do |img|
113
- puts "%-#{iwidth}s %s" % [ img["name"], img["imageId"] ]
110
+ result = swirl.call "DescribeImages", "Owner" => "self"
111
+ images = result["imagesSet"]
112
+ unless images.nil? or images.empty?
113
+ puts "------------------------------------------"
114
+ puts "AMIs"
115
+ puts "------------------------------------------"
116
+ iwidth = images.map { |img| img["name"].length }.max + 1
117
+ images.each do |img|
118
+ puts "%-#{iwidth}s %s" % [ img["name"], img["imageId"] ]
119
+ end
114
120
  end
115
121
  end
116
122
  end
data/lib/stem/userdata.rb CHANGED
@@ -48,22 +48,20 @@ module Stem
48
48
  def make_zip_shell
49
49
  # We'll comment outside here, to keep from wasting valuable userdata bytes.
50
50
  # we decompress into /root/userdata, then run userdata.sh
51
- header = <<-'SHELL'
52
- #!/bin/bash
53
- exec >> /var/log/userdata.log 2>&1
54
- echo BOOTING `date`
55
- UD=~/userdata
56
- mkdir -p $UD
57
- tail -n +HEADER_LINES "$0" | tar -jx -C $UD -f -
58
- cd $UD
59
- exec bash userdata.sh
51
+ header = <<-SHELL
52
+ #!/bin/bash
53
+ exec >> /var/log/userdata.log 2>&1
54
+ date --utc '+BOOTING %FT%TZ'
55
+ UD=~/userdata
56
+ mkdir -p $UD
57
+ sed '1,/^#### THE END$/ d' "$0" | tar -jx -C $UD
58
+ cd $UD
59
+ exec bash userdata.sh
60
+ #### THE END
60
61
  SHELL
61
- process_header(header) + %x{tar --exclude *.stem -cv - . | bzip2 --best -}
62
+ header + %x{tar --exclude *.stem -cv . | bzip2 --best -}
62
63
  end
63
64
 
64
- def process_header(shell)
65
- shell.gsub(/HEADER_LINES/, (shell.split("\n").size + 1).to_s).gsub(/^ +/,'')
66
- end
67
65
  end
68
66
  end
69
67
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stem
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 21
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 1
10
- version: 0.3.1
9
+ - 3
10
+ version: 0.3.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Peter van Hardenberg