rivet 1.0.8 → 1.1.0

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/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  Rivet CHANGELOG
2
2
  ===
3
3
 
4
+ 1.1.0 - Released 11/12/13
5
+ ---
6
+ * Rivet no allows you to specify a directory with the -d [--definitions-directory] option
7
+ * Rivet no longer creates the autoscale directory if it does not exist
8
+
4
9
  1.0.8 - Released 11/12/13
5
10
  ---
6
11
  * Fixes the unit tests which were incorrect.
data/bin/rivet CHANGED
@@ -12,7 +12,8 @@ INFO = Logger::INFO
12
12
  # Default option values
13
13
  options = {
14
14
  :log_level => INFO,
15
- :profile => 'default'
15
+ :profile => 'default',
16
+ :definitions_directory => './autoscale'
16
17
  }
17
18
 
18
19
  OptionParser.new do |o|
@@ -33,6 +34,10 @@ OptionParser.new do |o|
33
34
  options[:sync] = s
34
35
  end
35
36
 
37
+ o.on('-d', '--definitions-directory [PATH]', "The autoscale definitions directory to use (default is ./autoscale)") do |d|
38
+ options[:definitions_directory] = d
39
+ end
40
+
36
41
  o.on('-h') { puts o; exit }
37
42
  o.parse!
38
43
  end
data/lib/rivet/client.rb CHANGED
@@ -6,11 +6,18 @@ module Rivet
6
6
  def run(options)
7
7
  AwsUtils.set_aws_credentials(options[:profile])
8
8
  Rivet::Log.level(options[:log_level])
9
- Rivet::Utils.ensure_minimum_setup
10
9
 
11
- group_def = Rivet::Utils.get_definition(options[:group])
10
+ unless Dir.exists?(options[:definitions_directory])
11
+ Rivet::Utils.die("The autoscale definitions directory doesn't exist")
12
+ end
13
+
14
+ group_def = Rivet::Utils.get_definition(
15
+ options[:group],
16
+ options[:definitions_directory])
12
17
 
13
- Rivet::Utils.die "The #{options[:group]} definition doesn't exist" unless group_def
18
+ unless group_def
19
+ Rivet::Utils.die "The #{options[:group]} definition doesn't exist"
20
+ end
14
21
 
15
22
  Rivet::Log.info("Checking #{options[:group]} autoscaling definition")
16
23
  autoscale_def = Rivet::Autoscale.new(options[:group],group_def)
data/lib/rivet/utils.rb CHANGED
@@ -1,26 +1,17 @@
1
1
  module Rivet
2
2
  module Utils
3
- AUTOSCALE_DIR = "autoscale"
4
3
 
5
4
  def self.die(level = 'fatal',message)
6
5
  Rivet::Log.write(level,message)
7
6
  exit
8
7
  end
9
8
 
10
- def self.ensure_minimum_setup
11
- if Dir.exists?(AUTOSCALE_DIR)
12
- true
13
- else
14
- Rivet::Log.info("Creating #{AUTOSCALE_DIR}")
15
- Dir.mkdir(AUTOSCALE_DIR)
16
- end
17
- end
18
-
19
9
  # This returns the merged definition given a group
20
10
 
21
- def self.get_definition(group)
22
- defaults = consume_defaults
23
- group_def = load_definition(group)
11
+ def self.get_definition(group,directory)
12
+ defaults = consume_defaults(directory)
13
+ group_def = load_definition(group,directory)
14
+
24
15
  if defaults && group_def
25
16
  group_def = defaults.deep_merge(group_def)
26
17
  end
@@ -29,7 +20,7 @@ module Rivet
29
20
 
30
21
  # Gobbles up the defaults file from YML, returns the hash or false if empty
31
22
 
32
- def self.consume_defaults(autoscale_dir = AUTOSCALE_DIR)
23
+ def self.consume_defaults(autoscale_dir)
33
24
  defaults_file = File.join(autoscale_dir,"defaults.yml")
34
25
  if File.exists?(defaults_file)
35
26
  parsed = begin
@@ -47,8 +38,8 @@ module Rivet
47
38
  # This loads the given definition from it's YML file, returns the hash or
48
39
  # false if empty
49
40
 
50
- def self.load_definition(name)
51
- definition_dir = File.join(AUTOSCALE_DIR,name)
41
+ def self.load_definition(name,directory)
42
+ definition_dir = File.join(directory,name)
52
43
  conf_file = File.join(definition_dir,"conf.yml")
53
44
  if Dir.exists?(definition_dir) && File.exists?(conf_file)
54
45
  Rivet::Log.debug("Loading definition for #{name} from #{conf_file}")
data/lib/rivet/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Rivet
2
- VERSION = "1.0.8"
2
+ VERSION = "1.1.0"
3
3
  end
4
4
 
@@ -8,33 +8,33 @@ describe 'rivet bootstrap' do
8
8
 
9
9
  tempdir_context 'with all necessary files in place' do
10
10
  before do
11
-
11
+ FileUtils.mkdir_p(bootstrap_def['config_dir'])
12
12
 
13
13
  validator_file = File.join(
14
14
  bootstrap_def['config_dir'],
15
15
  "#{bootstrap_def['environment']}-validator.pem")
16
16
 
17
+ FileUtils.touch(validator_file)
18
+
17
19
  template_dir = File.join(
18
20
  bootstrap_def['config_dir'],
19
21
  Rivet::Bootstrap::TEMPLATE_SUB_DIR)
20
22
 
21
- template_file = File.join(template_dir,bootstrap_def['template'])
22
-
23
- FileUtils.mkdir_p(bootstrap_def['config_dir'])
24
23
  FileUtils.mkdir_p(template_dir)
24
+
25
+ template_file = File.join(template_dir,bootstrap_def['template'])
25
26
  File.open(template_file,'w') { |f| f.write(SpecHelpers::BOOTSTRAP_TEMPLATE) }
26
- FileUtils.touch(validator_file)
27
27
  end
28
28
 
29
29
  describe "#user_data" do
30
30
  it 'returns a string that contains the chef organization' do
31
31
  org = bootstrap_def['organization']
32
- bootstrap.user_data.should =~ /chef_server_url\s*.*#{org}.*/
32
+ bootstrap.user_data.should =~ /chef_server_url\s+.*#{org}.*/
33
33
  end
34
34
 
35
35
  it 'returns a string that contains the environment' do
36
36
  env = bootstrap_def['env']
37
- bootstrap.user_data.should =~ /environment\s*.*#{env}.*/
37
+ bootstrap.user_data.should =~ /environment\s+.*#{env}.*/
38
38
  end
39
39
 
40
40
  it 'returns a string that contains the run_list as json' do
@@ -45,9 +45,9 @@ describe 'rivet bootstrap' do
45
45
  it 'returns a string that contains each gem to install' do
46
46
  bootstrap_def['gems'].each do |g|
47
47
  if g.size > 1
48
- gem_regexp = /gem\s*install\s*#{g[0]}.*#{g[1]}/
48
+ gem_regexp = /gem\s+install\s+#{g[0]}.+#{g[1]}/
49
49
  else
50
- gem_regexp = /gem\s*install\s*#{g[0]}/
50
+ gem_regexp = /gem\s+install\s+#{g[0]}/
51
51
  end
52
52
  bootstrap.user_data.should =~ gem_regexp
53
53
  end
@@ -59,11 +59,3 @@ describe 'rivet bootstrap' do
59
59
 
60
60
  end
61
61
 
62
-
63
-
64
-
65
-
66
-
67
-
68
-
69
-
@@ -2,9 +2,10 @@ require_relative './rivet_spec_setup'
2
2
 
3
3
  include SpecHelpers
4
4
 
5
- definition_name = "unit_test"
6
- definition_dir = File.join(Rivet::Utils::AUTOSCALE_DIR,definition_name)
7
- launch_config_params = ['ssh_key','instance_size','security_groups','ami','bootstrap']
5
+ AUTOSCALE_DIR = "."
6
+ DEFINITION_NAME = "unit_test"
7
+ DEFINITION_DIR = File.join(AUTOSCALE_DIR,DEFINITION_NAME)
8
+ LAUNCH_CONFIG_PARAMS = ['ssh_key','instance_size','security_groups','ami','bootstrap']
8
9
 
9
10
  defaults_hash = {
10
11
  'min_size' => 0,
@@ -29,85 +30,70 @@ unit_test_definition_hash = {
29
30
  }
30
31
 
31
32
  describe "rivet utils" do
32
- tempdir_context "without an autoscaling directory" do
33
- describe "ensure_minimum_setup" do
34
- it "creates the autoscale directory if it doesn't exist" do
35
- Rivet::Utils.ensure_minimum_setup
36
- Dir.exists?(Rivet::Utils::AUTOSCALE_DIR).should be_true
37
- end
38
- end
39
- end
40
-
41
33
  tempdir_context "with an autoscaling directory" do
42
34
  before do
43
- FileUtils.mkdir_p(Rivet::Utils::AUTOSCALE_DIR)
44
- end
45
-
46
- describe "ensure_minimum_setup" do
47
- it "should return true" do
48
- Rivet::Utils.ensure_minimum_setup.should be_true
49
- end
35
+ FileUtils.mkdir_p(AUTOSCALE_DIR)
50
36
  end
51
37
 
52
38
  describe "consume_defaults" do
53
39
  it "should return false" do
54
- Rivet::Utils.consume_defaults.should be_false
40
+ Rivet::Utils.consume_defaults(AUTOSCALE_DIR).should be_false
55
41
  end
56
42
  end
57
43
 
58
44
  describe "load_definition" do
59
45
  it "should return false" do
60
- Rivet::Utils.load_definition("unit_test").should be_false
46
+ Rivet::Utils.load_definition("unit_test",AUTOSCALE_DIR).should be_false
61
47
  end
62
48
  end
63
49
 
64
50
  describe "get_definition" do
65
51
  it "should return false" do
66
- Rivet::Utils.get_definition("unit_test")
52
+ Rivet::Utils.get_definition("unit_test",AUTOSCALE_DIR)
67
53
  end
68
54
  end
69
55
 
70
56
  context "and with a group directory" do
71
57
  before do
72
- FileUtils.mkdir_p definition_dir
58
+ FileUtils.mkdir_p DEFINITION_DIR
73
59
  end
74
60
 
75
61
  describe "load_definition" do
76
62
  it "should return false" do
77
- Rivet::Utils.load_definition("unit_test").should be_false
63
+ Rivet::Utils.load_definition("unit_test",AUTOSCALE_DIR).should be_false
78
64
  end
79
65
  end
80
66
 
81
67
  context "and with a conf.yml" do
82
68
  before do
83
- FileUtils.mkdir_p definition_dir
84
- File.open(File.join(definition_dir,"conf.yml"),'w') do |f|
69
+ FileUtils.mkdir_p DEFINITION_DIR
70
+ File.open(File.join(DEFINITION_DIR,"conf.yml"),'w') do |f|
85
71
  f.write(unit_test_definition_hash.to_yaml)
86
72
  end
87
73
  end
88
74
  describe "load_definition" do
89
75
  it "returns a hash" do
90
- loaded_def = Rivet::Utils.load_definition("unit_test")
76
+ loaded_def = Rivet::Utils.load_definition("unit_test",AUTOSCALE_DIR)
91
77
  unit_test_definition_hash.each_pair { |k,v| loaded_def.should include(k => v) }
92
78
  end
93
79
  end
94
80
  context "and with a defaults.yml" do
95
81
  before do
96
- File.open(File.join(Rivet::Utils::AUTOSCALE_DIR,"defaults.yml"),'w') do |f|
82
+ File.open(File.join(AUTOSCALE_DIR,"defaults.yml"),'w') do |f|
97
83
  f.write(defaults_hash.to_yaml)
98
84
  end
99
85
  end
100
86
 
101
87
  describe "consume_defaults" do
102
88
  it "consume defaults returns a hash" do
103
- results = Rivet::Utils.consume_defaults
89
+ results = Rivet::Utils.consume_defaults(AUTOSCALE_DIR)
104
90
  defaults_hash.each_pair { |k,v| results.should include(k => v) }
105
91
  end
106
92
  end
107
93
 
108
94
  describe "get_definition" do
109
95
  it "returns a merged hash" do
110
- result = Rivet::Utils.get_definition(definition_name)
96
+ result = Rivet::Utils.get_definition(DEFINITION_NAME,AUTOSCALE_DIR)
111
97
  merged_hash = defaults_hash.merge(unit_test_definition_hash)
112
98
  result.should == defaults_hash.merge(unit_test_definition_hash)
113
99
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rivet
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: