chef-solr 0.8.16 → 0.9.0.a3

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -16,35 +16,56 @@
16
16
  # See the License for the specific language governing permissions and
17
17
  # limitations under the License.
18
18
  #
19
+ require File.dirname(__FILE__) + '/lib/chef/solr/version'
19
20
 
20
21
  require 'rubygems'
21
22
  require 'rake'
23
+ require 'rake/gempackagetask'
22
24
 
23
- begin
24
- require 'jeweler'
25
- Jeweler::Tasks.new do |gem|
26
- gem.name = "chef-solr"
27
- gem.summary = %Q{Search indexing for Chef}
28
- gem.email = "adam@opscode.com"
29
- gem.homepage = "http://wiki.opscode.com/display/chef"
30
- gem.authors = ["Adam Jacob"]
31
- gem.add_dependency "libxml-ruby", ">=1.1.3"
32
- gem.add_dependency "uuidtools", ">=2.0.0"
33
- gem.add_dependency "chef", IO.read("VERSION").strip
34
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
35
- gem.executables = [ 'chef-solr', 'chef-solr-indexer', 'chef-solr-rebuild' ]
36
- gem.files = [
37
- "README.rdoc",
38
- "Rakefile",
39
- "VERSION"
40
- ]
41
- gem.files.include %w{ README.rdoc Rakefile VERSION bin/* lib/**/* solr/* spec/**/* }
42
- end
25
+ GEM_NAME = "chef-solr"
43
26
 
44
- rescue LoadError
45
- puts "Jeweler (or a dependency) not available. Install it from gemcutter with: sudo gem install gemcutter jeweler"
27
+ spec = Gem::Specification.new do |gem|
28
+ gem.name = "chef-solr"
29
+ gem.version = Chef::Solr::VERSION
30
+ gem.summary = %Q{Search indexing for Chef}
31
+ gem.email = "adam@opscode.com"
32
+ gem.homepage = "http://wiki.opscode.com/display/chef"
33
+ gem.authors = ["Adam Jacob"]
34
+ gem.add_dependency "libxml-ruby", ">=1.1.3"
35
+ gem.add_dependency "uuidtools", ">=2.0.0"
36
+ gem.add_dependency "chef", Chef::Solr::VERSION
37
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
38
+ gem.executables = [ 'chef-solr', 'chef-solr-indexer', 'chef-solr-rebuild' ]
39
+ gem.files = [
40
+ "README.rdoc",
41
+ "Rakefile"
42
+ ]
43
+ gem.files = %w{ README.rdoc Rakefile LICENSE} + Dir.glob("{bin,lib,solr,spec}/**/*")
44
+ end
45
+
46
+ Rake::GemPackageTask.new(spec) do |pkg|
47
+ pkg.gem_spec = spec
48
+ end
49
+
50
+ desc "Install the gem"
51
+ task :install => :package do
52
+ sh %{gem install pkg/#{GEM_NAME}-#{Chef::Solr::VERSION} --no-rdoc --no-ri}
46
53
  end
47
54
 
55
+ desc "Uninstall the gem"
56
+ task :uninstall do
57
+ sh %{gem uninstall #{GEM_NAME} -x -v #{Chef::Solr::VERSION} }
58
+ end
59
+
60
+ desc "Create a gemspec file"
61
+ task :gemspec do
62
+ File.open("#{GEM_NAME}.gemspec", "w") do |file|
63
+ file.puts spec.to_ruby
64
+ end
65
+ end
66
+
67
+
68
+
48
69
  begin
49
70
  require 'spec/rake/spectask'
50
71
  Spec::Rake::SpecTask.new(:spec) do |spec|
@@ -79,7 +100,7 @@ Rake::RDocTask.new do |rdoc|
79
100
  config = YAML.load(File.read('VERSION.yml'))
80
101
  version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
81
102
  else
82
- version = ""
103
+ version = Chef::Solr::VERSION
83
104
  end
84
105
 
85
106
  rdoc.rdoc_dir = 'rdoc'
@@ -34,8 +34,6 @@ require 'uri'
34
34
  class Chef
35
35
  class Solr
36
36
 
37
- VERSION = "0.8.16"
38
-
39
37
  include Chef::Mixin::XMLEscape
40
38
 
41
39
  attr_accessor :solr_url, :http
@@ -58,7 +56,11 @@ class Chef
58
56
  Chef::Log.debug("Sending #{select_url} to Solr")
59
57
  req = Net::HTTP::Get.new(select_url)
60
58
  res = @http.request(req)
61
- res.error! unless res.kind_of?(Net::HTTPSuccess)
59
+ unless res.kind_of?(Net::HTTPSuccess)
60
+ Chef::Log.fatal("Search Query to Solr '#{select_url}' failed")
61
+ res.error!
62
+ end
63
+ Chef::Log.debug("Parsing Solr result set:\n#{res.body}")
62
64
  eval(res.body)
63
65
  end
64
66
 
@@ -211,4 +213,3 @@ class Chef
211
213
 
212
214
  end
213
215
  end
214
-
@@ -126,7 +126,8 @@ class Chef
126
126
  @logfile = File.new(Chef::Config[:log_location], "a")
127
127
  end
128
128
 
129
- Chef::Log.level = Chef::Config[:log_level]
129
+ #Chef::Log.level = Chef::Config[:log_level]
130
+ Chef::Log.level = :debug
130
131
 
131
132
  # Build up a client
132
133
  node = Chef::Node.new
@@ -137,13 +138,14 @@ class Chef
137
138
 
138
139
  solr_base = File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "..", "solr"))
139
140
 
141
+ run_context = Chef::RunContext.new(node, {})
140
142
  # Create the Jetty container
141
143
  unless File.directory?(Chef::Config[:solr_jetty_path])
142
144
  Chef::Log.warn("Initializing the Jetty container")
143
- solr_jetty_dir = Chef::Resource::Directory.new(Chef::Config[:solr_jetty_path], nil, node)
145
+ solr_jetty_dir = Chef::Resource::Directory.new(Chef::Config[:solr_jetty_path], run_context)
144
146
  solr_jetty_dir.recursive(true)
145
147
  solr_jetty_dir.run_action(:create)
146
- solr_jetty_untar = Chef::Resource::Execute.new("untar_jetty", nil, node)
148
+ solr_jetty_untar = Chef::Resource::Execute.new("untar_jetty", run_context)
147
149
  solr_jetty_untar.command("tar zxvf #{File.join(solr_base, 'solr-jetty.tar.gz')}")
148
150
  solr_jetty_untar.cwd(Chef::Config[:solr_jetty_path])
149
151
  solr_jetty_untar.run_action(:run)
@@ -152,10 +154,10 @@ class Chef
152
154
  # Create the solr home
153
155
  unless File.directory?(Chef::Config[:solr_home_path])
154
156
  Chef::Log.warn("Initializing Solr home directory")
155
- solr_home_dir = Chef::Resource::Directory.new(Chef::Config[:solr_home_path], nil, node)
157
+ solr_home_dir = Chef::Resource::Directory.new(Chef::Config[:solr_home_path], run_context)
156
158
  solr_home_dir.recursive(true)
157
159
  solr_home_dir.run_action(:create)
158
- solr_jetty_untar = Chef::Resource::Execute.new("untar_solr_home", nil, node)
160
+ solr_jetty_untar = Chef::Resource::Execute.new("untar_solr_home", run_context)
159
161
  solr_jetty_untar.command("tar zxvf #{File.join(solr_base, 'solr-home.tar.gz')}")
160
162
  solr_jetty_untar.cwd(Chef::Config[:solr_home_path])
161
163
  solr_jetty_untar.run_action(:run)
@@ -164,7 +166,7 @@ class Chef
164
166
  # Create the solr data path
165
167
  unless File.directory?(Chef::Config[:solr_data_path])
166
168
  Chef::Log.warn("Initializing Solr data directory")
167
- solr_data_dir = Chef::Resource::Directory.new(Chef::Config[:solr_data_path], nil, node)
169
+ solr_data_dir = Chef::Resource::Directory.new(Chef::Config[:solr_data_path], run_context)
168
170
  solr_data_dir.recursive(true)
169
171
  solr_data_dir.run_action(:create)
170
172
  end
@@ -201,3 +203,4 @@ class Chef
201
203
  end
202
204
  end
203
205
  end
206
+
@@ -40,14 +40,15 @@ class Chef
40
40
  index = Chef::Solr::Index.new
41
41
  Chef::Log.debug("Dequeued item for indexing: #{payload.inspect}")
42
42
 
43
- response = begin
44
- pitem = payload["item"].to_hash
45
- generate_response { index.add(payload["id"], payload["database"], payload["type"], pitem) }
46
- rescue NoMethodError
47
- generate_response() { raise ArgumentError, "Payload item does not respond to :keys or :to_hash, cannot index!" }
48
- end
43
+ begin
44
+ pitem = payload["item"].to_hash
45
+ response = generate_response { index.add(payload["id"], payload["database"], payload["type"], pitem) }
46
+ rescue NoMethodError
47
+ response = generate_response() { raise ArgumentError, "Payload item does not respond to :keys or :to_hash, cannot index!" }
48
+ end
49
49
 
50
- Chef::Log.info("Indexing #{payload["type"]} #{payload["id"]} from #{payload["database"]} status #{response[:status]}#{response[:status] == :error ? ' ' + response[:error] : ''}")
50
+ msg = "Indexing #{payload["type"]} #{payload["id"]} from #{payload["database"]} status #{status_message(response)}}"
51
+ Chef::Log.info(msg)
51
52
  response
52
53
  end
53
54
 
@@ -58,18 +59,25 @@ class Chef
58
59
  end
59
60
 
60
61
  private
61
- def generate_response(&block)
62
- response = {}
63
- begin
64
- block.call
65
- rescue
66
- response[:status] = :error
67
- response[:error] = $!
68
- else
69
- response[:status] = :ok
70
- end
71
- response
62
+
63
+ def generate_response(&block)
64
+ response = {}
65
+ begin
66
+ block.call
67
+ rescue => e
68
+ response[:status] = :error
69
+ response[:error] = e
70
+ else
71
+ response[:status] = :ok
72
72
  end
73
+ response
74
+ end
75
+
76
+ def status_message(response)
77
+ msg = response[:status].to_s
78
+ msg << ' ' + response[:error].to_s if response[:status] == :error
79
+ msg
80
+ end
73
81
 
74
82
  end
75
83
  end
@@ -1,6 +1,7 @@
1
1
  #
2
2
  # Author:: Adam Jacob (<adam@opscode.com>)
3
- # Copyright:: Copyright (c) 2009 Opscode, Inc.
3
+ # Author:: Nuo Yan (<nuo@opscode.com>)
4
+ # Copyright:: Copyright (c) 2010 Opscode, Inc.
4
5
  # License:: Apache License, Version 2.0
5
6
  #
6
7
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -30,11 +31,22 @@ class Chef
30
31
  class Query < Chef::Solr
31
32
 
32
33
  # Create a new Query object - takes the solr_url and optional
33
- # couchdb_database to inflate objects into.
34
- def initialize(solr_url=Chef::Config[:solr_url], database=Chef::Config[:couchdb_database])
34
+ # Chef::CouchDB object to inflate objects into.
35
+ def initialize(solr_url=Chef::Config[:solr_url], couchdb = nil)
35
36
  super(solr_url)
36
- @database = database
37
- @couchdb = Chef::CouchDB.new(nil, database)
37
+ if couchdb.nil?
38
+ @database = Chef::Config[:couchdb_database]
39
+ @couchdb = Chef::CouchDB.new(nil, Chef::Config[:couchdb_database])
40
+ else
41
+ unless couchdb.kind_of?(Chef::CouchDB)
42
+ Chef::Log.warn("Passing the database name to Chef::Solr::Query initialization is deprecated. Please pass in the Chef::CouchDB object instead.")
43
+ @database = couchdb
44
+ @couchdb = Chef::CouchDB.new(nil, couchdb)
45
+ else
46
+ @database = couchdb.couchdb_database
47
+ @couchdb = couchdb
48
+ end
49
+ end
38
50
  end
39
51
 
40
52
  # A raw query against CouchDB - takes the type of object to find, and raw
@@ -0,0 +1,5 @@
1
+ class Chef
2
+ class Solr
3
+ VERSION = '0.9.0.a3'
4
+ end
5
+ end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef-solr
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ prerelease: true
5
5
  segments:
6
6
  - 0
7
- - 8
8
- - 16
9
- version: 0.8.16
7
+ - 9
8
+ - 0
9
+ - a3
10
+ version: 0.9.0.a3
10
11
  platform: ruby
11
12
  authors:
12
13
  - Adam Jacob
@@ -14,13 +15,14 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-05-11 00:00:00 -07:00
18
+ date: 2010-06-04 00:00:00 -07:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: libxml-ruby
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ">="
26
28
  - !ruby/object:Gem::Version
@@ -35,6 +37,7 @@ dependencies:
35
37
  name: uuidtools
36
38
  prerelease: false
37
39
  requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
38
41
  requirements:
39
42
  - - ">="
40
43
  - !ruby/object:Gem::Version
@@ -49,14 +52,16 @@ dependencies:
49
52
  name: chef
50
53
  prerelease: false
51
54
  requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
52
56
  requirements:
53
57
  - - "="
54
58
  - !ruby/object:Gem::Version
55
59
  segments:
56
60
  - 0
57
- - 8
58
- - 16
59
- version: 0.8.16
61
+ - 9
62
+ - 0
63
+ - a3
64
+ version: 0.9.0.a3
60
65
  type: :runtime
61
66
  version_requirements: *id003
62
67
  description:
@@ -67,23 +72,23 @@ executables:
67
72
  - chef-solr-rebuild
68
73
  extensions: []
69
74
 
70
- extra_rdoc_files:
71
- - LICENSE
72
- - README.rdoc
75
+ extra_rdoc_files: []
76
+
73
77
  files:
74
78
  - README.rdoc
75
79
  - Rakefile
76
- - VERSION
80
+ - LICENSE
77
81
  - bin/chef-solr
78
82
  - bin/chef-solr-indexer
79
83
  - bin/chef-solr-rebuild
80
- - lib/chef/solr.rb
81
84
  - lib/chef/solr/application/indexer.rb
82
85
  - lib/chef/solr/application/rebuild.rb
83
86
  - lib/chef/solr/application/solr.rb
84
87
  - lib/chef/solr/index.rb
85
88
  - lib/chef/solr/index_queue_consumer.rb
86
89
  - lib/chef/solr/query.rb
90
+ - lib/chef/solr/version.rb
91
+ - lib/chef/solr.rb
87
92
  - solr/solr-home.tar.gz
88
93
  - solr/solr-jetty.tar.gz
89
94
  - spec/chef/solr/index_spec.rb
@@ -91,17 +96,17 @@ files:
91
96
  - spec/chef/solr_spec.rb
92
97
  - spec/spec.opts
93
98
  - spec/spec_helper.rb
94
- - LICENSE
95
99
  has_rdoc: true
96
100
  homepage: http://wiki.opscode.com/display/chef
97
101
  licenses: []
98
102
 
99
103
  post_install_message:
100
- rdoc_options:
101
- - --charset=UTF-8
104
+ rdoc_options: []
105
+
102
106
  require_paths:
103
107
  - lib
104
108
  required_ruby_version: !ruby/object:Gem::Requirement
109
+ none: false
105
110
  requirements:
106
111
  - - ">="
107
112
  - !ruby/object:Gem::Version
@@ -109,16 +114,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
109
114
  - 0
110
115
  version: "0"
111
116
  required_rubygems_version: !ruby/object:Gem::Requirement
117
+ none: false
112
118
  requirements:
113
- - - ">="
119
+ - - ">"
114
120
  - !ruby/object:Gem::Version
115
121
  segments:
116
- - 0
117
- version: "0"
122
+ - 1
123
+ - 3
124
+ - 1
125
+ version: 1.3.1
118
126
  requirements: []
119
127
 
120
128
  rubyforge_project:
121
- rubygems_version: 1.3.6
129
+ rubygems_version: 1.3.7
122
130
  signing_key:
123
131
  specification_version: 3
124
132
  summary: Search indexing for Chef
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.8.16