automateit 0.71101 → 0.71101.1

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.tar.gz.sig CHANGED
Binary file
data/CHANGES.txt CHANGED
@@ -1,3 +1,8 @@
1
+ 0.71101.1:
2
+ Date: Thu, 01 Nov 2007 18:52:01 -0700
3
+ Desc:
4
+ - (%) Fixed bug in Interpreter, which only set optional run-time tags specified on the command-line AFTER it loaded the fields/tags files. Thanks for the report, David Brewer.
5
+
1
6
  0.71101:
2
7
  Date: Thu, 01 Nov 2007 17:07:51 -0700
3
8
  Desc:
@@ -176,6 +176,8 @@ module AutomateIt
176
176
  # Instantiate core plugins so they're available to the project
177
177
  _instantiate_plugins
178
178
 
179
+ tags.merge(opts[:tags]) if opts[:tags]
180
+
179
181
  if project_path = opts[:project] || ENV["AUTOMATEIT_PROJECT"] || ENV["AIP"]
180
182
  # Only load a project if we find its env file
181
183
  env_file = File.join(project_path, "config", "automateit_env.rb")
@@ -212,8 +214,6 @@ module AutomateIt
212
214
  raise ArgumentError.new("Couldn't find project at: #{project_path}")
213
215
  end
214
216
  end
215
-
216
- tags.merge(opts[:tags]) if opts[:tags]
217
217
  end
218
218
 
219
219
  # Hash of plugin tokens to plugin instances for this Interpreter.
@@ -1,7 +1,7 @@
1
1
  # See AutomateIt::Interpreter for usage information.
2
2
  module AutomateIt # :nodoc:
3
3
  # AutomateIt version
4
- VERSION=Gem::Version.new("0.71101")
4
+ VERSION=Gem::Version.new("0.71101.1")
5
5
 
6
6
  # Instantiates a new Interpreter. See documentation for
7
7
  # Interpreter#setup.
@@ -14,12 +14,11 @@ class AutomateIt::TagManager::Struct < AutomateIt::TagManager::BaseDriver
14
14
  def setup(opts={})
15
15
  super(opts)
16
16
 
17
+ @struct ||= {}
18
+ @tags ||= Set.new
19
+
17
20
  if opts[:struct]
18
- @struct = AutomateIt::TagManager::TagParser.expand(opts[:struct])
19
- @tags = Set.new
20
- else
21
- @struct ||= {}
22
- @tags ||= Set.new
21
+ @struct.merge!(AutomateIt::TagManager::TagParser.expand(opts[:struct]))
23
22
  end
24
23
  end
25
24
 
@@ -140,6 +140,24 @@ describe AutomateIt::CLI, " with a project" do# {{{
140
140
  end
141
141
  end
142
142
 
143
+ it "should add run-time tags to a project" do
144
+ with_project do
145
+ recipe = "recipes/recipe.rb"
146
+ tags_yml = "config/tags.yml"
147
+
148
+ write_to(tags_yml, <<-HERE)
149
+ all_servers:
150
+ - localhost
151
+ HERE
152
+
153
+ write_to(recipe, <<-HERE)
154
+ tagged?("tsukai")
155
+ HERE
156
+
157
+ AutomateIt::CLI.run(:recipe => recipe, :tags => %w(tsukai)).should be_true
158
+ end
159
+ end
160
+
143
161
  it "should load fields in a project" do
144
162
  with_project do
145
163
  recipe = "recipes/recipe.rb"
@@ -174,8 +174,8 @@ end
174
174
  describe "AutomateIt::TagManager::YAML" do
175
175
  it_should_behave_like "AutomateIt::TagManager"
176
176
 
177
- before(:all) do
178
- @m[:yaml].should_receive(:_read).with("demo.yml").and_return(<<-EOB)
177
+ def setup_yaml_tags
178
+ @m[:yaml].should_receive(:_read).any_number_of_times.with("demo.yml").and_return(<<-EOB)
179
179
  <%="apache_servers"%>:
180
180
  - kurou
181
181
  - shirou
@@ -196,4 +196,19 @@ describe "AutomateIt::TagManager::YAML" do
196
196
  :file => "demo.yml"
197
197
  )
198
198
  end
199
+
200
+ before(:all) do
201
+ setup_yaml_tags
202
+ end
203
+
204
+ it "should not clear tags if re-loaded" do
205
+ setup_yaml_tags
206
+ tag = "al-azif"
207
+
208
+ @a.tags << tag
209
+ @a.should be_tagged(tag)
210
+
211
+ setup_yaml_tags
212
+ @a.should be_tagged(tag)
213
+ end
199
214
  end
@@ -0,0 +1,215 @@
1
+ require File.join(File.dirname(File.expand_path(__FILE__)), "/../spec_helper.rb")
2
+
3
+ describe "AutomateIt::TagManager", :shared => true do
4
+ before(:all) do
5
+ @a = AutomateIt.new
6
+ @a.platform_manager.setup(
7
+ :default => :struct,
8
+ :struct => {
9
+ :os => "mizrahi",
10
+ :arch => "realian",
11
+ :distro => "momo",
12
+ :version => "s100",
13
+ }
14
+ )
15
+ @a.address_manager.should_receive(:hostnames).any_number_of_times.and_return(["kurou", "kurou.foo"])
16
+
17
+ @m = @a.tag_manager
18
+ end
19
+
20
+ it "should have tags" do
21
+ @a.tags.should be_a_kind_of(Enumerable)
22
+ end
23
+
24
+ it "should have tags that include tag for hostname" do
25
+ @a.tags.should include("kurou")
26
+ end
27
+
28
+ it "should have tag for short hostname" do
29
+ @a.tagged?("kurou").should be_true
30
+ end
31
+
32
+ it "should have tag for long hostname" do
33
+ @a.tagged?("kurou.foo").should be_true
34
+ end
35
+
36
+ it "should have tag for OS" do
37
+ @a.tagged?("mizrahi").should be_true
38
+ end
39
+
40
+ it "should have tag for OS/arch" do
41
+ @a.tagged?("mizrahi_realian").should be_true
42
+ end
43
+
44
+ it "should have tag for distro/release" do
45
+ @a.tagged?("momo_s100").should be_true
46
+ end
47
+
48
+ it "should have tag for a role" do
49
+ @a.tagged?("apache_servers").should be_true
50
+ end
51
+
52
+ it "should match a symbol query" do
53
+ @a.tagged?(:apache_servers).should be_true
54
+ end
55
+
56
+ it "should match a string query" do
57
+ @a.tagged?("apache_servers").should be_true
58
+ end
59
+
60
+ it "should not match unknown symbol keys" do
61
+ @a.tagged?(:foo).should be_false
62
+ end
63
+
64
+ it "should not match unknown string keys" do
65
+ @a.tagged?("foo").should be_false
66
+ end
67
+
68
+ it "should match an AND query" do
69
+ @a.tagged?("kurou && apache_servers").should be_true
70
+ end
71
+
72
+ it "should match an OR query" do
73
+ @a.tagged?("kurou || apache_servers").should be_true
74
+ end
75
+
76
+ it "should match a grouped AND and OR query" do
77
+ @a.tagged?("(kurou || apache_servers) && momo_s100").should be_true
78
+ end
79
+
80
+ it "should not match AND with unknown keys" do
81
+ @a.tagged?("kurou && foo").should be_false
82
+ end
83
+
84
+ it "should not match OR with unknown keys" do
85
+ @a.tagged?("foo && bar").should be_false
86
+ end
87
+
88
+ it "should query tags for a specific host" do
89
+ @a.tagged?("proxy_servers", "kurou").should be_false
90
+ @a.tagged?("proxy_servers", "akane.foo").should be_true
91
+ @a.tagged?("proxy_servers", "akane").should be_true
92
+ end
93
+
94
+ it "should append tags" do
95
+ @a.tagged?("magic").should be_false
96
+ @a.tags << "magic"
97
+ @a.tagged?("magic").should be_true
98
+ end
99
+
100
+ it "should find tags with dashes in the name" do
101
+ tag_with_dash = "pawafuru-mirakuru"
102
+ tag_without_dash = "wandafuru"
103
+
104
+ @a.tags << tag_with_dash << tag_without_dash
105
+
106
+ @a.tagged?(tag_with_dash).should be_true
107
+ @a.tagged?(tag_without_dash).should be_true
108
+ end
109
+
110
+ it "should find tags for a host" do
111
+ @a.tags_for("akane.foo.bar").should include("proxy_servers")
112
+ end
113
+
114
+ it "should find tags for an array of hosts" do
115
+ @a.tags_for(["kurou"]).should include("apache_servers")
116
+ end
117
+
118
+ it "should find hosts with a tag" do
119
+ hosts = @a.hosts_tagged_with("apache_servers")
120
+ hosts.should include("kurou")
121
+ hosts.should include("shirou")
122
+ hosts.should_not include("akane")
123
+ end
124
+
125
+ it "should find matching negative queries" do
126
+ @a.tagged?("akane").should be_false
127
+ @a.tagged?("!akane").should be_true
128
+ @a.tagged?("!akane && !proxy_servers").should be_true
129
+ end
130
+
131
+ it "should include group aliases" do
132
+ @a.hosts_tagged_with("all_servers").sort.should == ["kurou", "shirou", "akane.foo"].sort
133
+ end
134
+
135
+ it "should exclude hosts from groups" do
136
+ @a.hosts_tagged_with("apache_servers_except_kurou").should == ["shirou"]
137
+ end
138
+
139
+ it "should exclude groups from groups" do
140
+ @a.hosts_tagged_with("all_servers_except_proxy_servers").sort.should == ["kurou", "shirou"].sort
141
+ end
142
+ end
143
+
144
+ describe "AutomateIt::TagManager::Struct" do
145
+ it_should_behave_like "AutomateIt::TagManager"
146
+
147
+ before(:all) do
148
+ @m.setup(
149
+ :default => :struct,
150
+ :struct => {
151
+ "apache_servers" => [
152
+ "kurou",
153
+ "shirou",
154
+ ],
155
+ "proxy_servers" => [
156
+ "akane.foo",
157
+ ],
158
+ "all_servers" => [
159
+ "@apache_servers",
160
+ "@proxy_servers",
161
+ ],
162
+ "apache_servers_except_kurou" => [
163
+ "@apache_servers",
164
+ "!kurou",
165
+ ],
166
+ "all_servers_except_proxy_servers" => [
167
+ "@all_servers",
168
+ "!@proxy_servers",
169
+ ],
170
+ }
171
+ )
172
+ end
173
+ end
174
+
175
+ describe "AutomateIt::TagManager::YAML" do
176
+ it_should_behave_like "AutomateIt::TagManager"
177
+
178
+ def setup_yaml_tags
179
+ @m[:yaml].should_receive(:_read).any_number_of_times.with("demo.yml").and_return(<<-EOB)
180
+ <%="apache_servers"%>:
181
+ - kurou
182
+ - shirou
183
+ proxy_servers:
184
+ - akane.foo
185
+ all_servers:
186
+ - @apache_servers
187
+ - @proxy_servers
188
+ apache_servers_except_kurou:
189
+ - @apache_servers
190
+ - !kurou
191
+ all_servers_except_proxy_servers:
192
+ - @all_servers
193
+ - !@proxy_servers
194
+ EOB
195
+ @m.setup(
196
+ :default => :yaml,
197
+ :file => "demo.yml"
198
+ )
199
+ end
200
+
201
+ before(:all) do
202
+ setup_yaml_tags
203
+ end
204
+
205
+ it "should not clear tags if re-loaded" do
206
+ setup_yaml_tags
207
+ tag = "ivemell"
208
+
209
+ @a.tags << tag
210
+ @a.should be_tagged(tag)
211
+
212
+ setup_yaml_tags
213
+ @a.should be_tagged(tag)
214
+ end
215
+ end
metadata CHANGED
@@ -3,7 +3,7 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: automateit
5
5
  version: !ruby/object:Gem::Version
6
- version: "0.71101"
6
+ version: 0.71101.1
7
7
  date: 2007-11-01 00:00:00 -07:00
8
8
  summary: AutomateIt is an open source tool for automating the setup and maintenance of servers, applications and their dependencies.
9
9
  require_paths:
@@ -168,6 +168,7 @@ files:
168
168
  - spec/unit/interpreter_spec.rb
169
169
  - spec/unit/platform_manager_spec.rb
170
170
  - spec/unit/edit_manager_spec.rb
171
+ - spec/unit/tag_manager_spec.rb.orig
171
172
  - spec/integration/service_manager_sysv_spec.rb
172
173
  - spec/integration/template_manager_erb_spec.rb
173
174
  - spec/integration/package_manager_spec.rb
@@ -199,6 +200,7 @@ test_files:
199
200
  - spec/unit/interpreter_spec.rb
200
201
  - spec/unit/platform_manager_spec.rb
201
202
  - spec/unit/edit_manager_spec.rb
203
+ - spec/unit/tag_manager_spec.rb.orig
202
204
  - spec/integration/service_manager_sysv_spec.rb
203
205
  - spec/integration/template_manager_erb_spec.rb
204
206
  - spec/integration/package_manager_spec.rb
metadata.gz.sig CHANGED
Binary file