solr_wrapper 0.8.1 → 0.9.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.
- checksums.yaml +4 -4
- data/exe/solr_wrapper +13 -5
- data/lib/solr_wrapper.rb +11 -3
- data/lib/solr_wrapper/configuration.rb +17 -1
- data/lib/solr_wrapper/instance.rb +41 -0
- data/lib/solr_wrapper/settings.rb +11 -1
- data/lib/solr_wrapper/tasks/solr_wrapper.rake +1 -2
- data/lib/solr_wrapper/version.rb +1 -1
- data/spec/lib/solr_wrapper/instance_spec.rb +20 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 21a2a6e484329fe66c2531342783d9ac4007a1a3
|
4
|
+
data.tar.gz: 25cd86f3084f418c6a88192986b0ba6d6a2013b5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 08b856eb075be3bb9521531f700ba0dd367f18917a787cda40537419707c16a69abc6c6ad27c1a64459a6642a73c7e0aa705d41e5fcc1a13d212dc5708b020fe
|
7
|
+
data.tar.gz: 9ee588f5119ad0806f84178b2969e7b06f26d3a0407913e5f0a99ae5d80585249a6b360e64e032795d778b3bc04173ab8419ad1b6ef4616a6eb2ea38a7e97481
|
data/exe/solr_wrapper
CHANGED
@@ -5,14 +5,14 @@ require 'optparse'
|
|
5
5
|
|
6
6
|
options = {}
|
7
7
|
collection_options = {}
|
8
|
-
OptionParser.new do |opts|
|
8
|
+
args = OptionParser.new do |opts|
|
9
9
|
opts.banner = "Usage: solr_wrapper [options]"
|
10
10
|
|
11
11
|
opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
|
12
12
|
options[:verbose] = v
|
13
13
|
end
|
14
14
|
|
15
|
-
opts.on("--config", "Load configuration from a file") do |v|
|
15
|
+
opts.on("--config FILE", "Load configuration from a file") do |v|
|
16
16
|
options[:config] = v
|
17
17
|
end
|
18
18
|
|
@@ -20,7 +20,7 @@ OptionParser.new do |opts|
|
|
20
20
|
options[:version] = v
|
21
21
|
end
|
22
22
|
|
23
|
-
opts.on("-pPORT", "--port PORT", "Specify the port Solr should run at (default:
|
23
|
+
opts.on("-pPORT", "--port PORT", "Specify the port Solr should run at (default: #{SolrWrapper.default_solr_port})") do |p|
|
24
24
|
if p == 'random'
|
25
25
|
options[:port] = nil
|
26
26
|
else
|
@@ -55,12 +55,20 @@ OptionParser.new do |opts|
|
|
55
55
|
opts.on("--no-checksum", "Skip running checksum validation on the downloaded file") do |d|
|
56
56
|
options[:ignore_md5sum] = true
|
57
57
|
end
|
58
|
-
end
|
58
|
+
end
|
59
|
+
|
60
|
+
begin
|
61
|
+
args.parse!
|
62
|
+
rescue => error
|
63
|
+
$stderr.puts "ERROR: #{error}\n"
|
64
|
+
$stderr.puts args.help
|
65
|
+
exit 1
|
66
|
+
end
|
59
67
|
|
60
68
|
# default to verbose
|
61
69
|
options[:verbose] = true if options[:verbose].nil?
|
62
70
|
|
63
|
-
instance = SolrWrapper.
|
71
|
+
instance = SolrWrapper.instance(options)
|
64
72
|
$stderr.print "Starting Solr #{instance.version} on port #{instance.port} ... "
|
65
73
|
instance.wrap do |conn|
|
66
74
|
conn.with_collection(collection_options) do
|
data/lib/solr_wrapper.rb
CHANGED
@@ -10,9 +10,13 @@ module SolrWrapper
|
|
10
10
|
'6.0.0'
|
11
11
|
end
|
12
12
|
|
13
|
+
def self.default_solr_port
|
14
|
+
'8983'
|
15
|
+
end
|
16
|
+
|
13
17
|
def self.default_instance_options
|
14
18
|
@default_instance_options ||= {
|
15
|
-
port:
|
19
|
+
port: SolrWrapper.default_solr_port,
|
16
20
|
version: SolrWrapper.default_solr_version
|
17
21
|
}
|
18
22
|
end
|
@@ -22,12 +26,16 @@ module SolrWrapper
|
|
22
26
|
end
|
23
27
|
|
24
28
|
def self.default_instance(options = {})
|
25
|
-
@default_instance ||=
|
29
|
+
@default_instance ||= instance(default_instance_options)
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.instance(options)
|
33
|
+
SolrWrapper::Instance.new(options)
|
26
34
|
end
|
27
35
|
|
28
36
|
##
|
29
37
|
# Ensures a Solr service is running before executing the block
|
30
38
|
def self.wrap(options = {}, &block)
|
31
|
-
|
39
|
+
instance(options).wrap &block
|
32
40
|
end
|
33
41
|
end
|
@@ -38,12 +38,28 @@ module SolrWrapper
|
|
38
38
|
options.fetch(:port) { SolrWrapper.default_instance_options[:port] }.to_s
|
39
39
|
end
|
40
40
|
|
41
|
+
def zookeeper_host
|
42
|
+
options[:zookeeper_host]
|
43
|
+
end
|
44
|
+
|
45
|
+
def zookeeper_port
|
46
|
+
options[:zookeeper_port]
|
47
|
+
end
|
48
|
+
|
41
49
|
def download_path
|
42
50
|
options[:download_path]
|
43
51
|
end
|
44
52
|
|
45
53
|
def download_dir
|
46
|
-
options[:download_dir]
|
54
|
+
options[:download_dir] || default_download_dir
|
55
|
+
end
|
56
|
+
|
57
|
+
def default_download_dir
|
58
|
+
if defined? Rails
|
59
|
+
File.join(Rails.root, 'tmp')
|
60
|
+
else
|
61
|
+
Dir.tmpdir
|
62
|
+
end
|
47
63
|
end
|
48
64
|
|
49
65
|
def solr_options
|
@@ -130,12 +130,49 @@ module SolrWrapper
|
|
130
130
|
|
131
131
|
create_options = { p: port }
|
132
132
|
create_options[:c] = options[:name] if options[:name]
|
133
|
+
create_options[:n] = options[:config_name] if options[:config_name]
|
133
134
|
create_options[:d] = options[:dir] if options[:dir]
|
134
135
|
exec("create", create_options)
|
135
136
|
|
136
137
|
options[:name]
|
137
138
|
end
|
138
139
|
|
140
|
+
##
|
141
|
+
# Update the collection configuration in zookeeper
|
142
|
+
# @param [Hash] options
|
143
|
+
# @option options [String] :config_name
|
144
|
+
# @option options [String] :dir
|
145
|
+
def upconfig(options = {})
|
146
|
+
options[:name] ||= SecureRandom.hex
|
147
|
+
options[:zkhost] ||= zkhost
|
148
|
+
|
149
|
+
upconfig_options = { upconfig: true, n: options[:name] }
|
150
|
+
upconfig_options[:d] = options[:dir] if options[:dir]
|
151
|
+
upconfig_options[:z] = options[:zkhost] if options[:zkhost]
|
152
|
+
|
153
|
+
exec 'zk', upconfig_options
|
154
|
+
|
155
|
+
options[:name]
|
156
|
+
end
|
157
|
+
|
158
|
+
##
|
159
|
+
# Copy the collection configuration from zookeeper to a local directory
|
160
|
+
# @param [Hash] options
|
161
|
+
# @option options [String] :config_name
|
162
|
+
# @option options [String] :dir
|
163
|
+
def downconfig(options = {})
|
164
|
+
options[:name] ||= SecureRandom.hex
|
165
|
+
options[:zkhost] ||= zkhost
|
166
|
+
|
167
|
+
downconfig_options = { downconfig: true, n: options[:name] }
|
168
|
+
downconfig_options[:d] = options[:dir] if options[:dir]
|
169
|
+
downconfig_options[:z] = options[:zkhost] if options[:zkhost]
|
170
|
+
|
171
|
+
exec 'zk', downconfig_options
|
172
|
+
|
173
|
+
options[:name]
|
174
|
+
end
|
175
|
+
|
139
176
|
##
|
140
177
|
# Create a new collection in solr
|
141
178
|
# @param [String] name collection name
|
@@ -318,6 +355,10 @@ module SolrWrapper
|
|
318
355
|
end
|
319
356
|
end
|
320
357
|
|
358
|
+
def zkhost
|
359
|
+
"#{config.zookeeper_host}:#{config.zookeeper_port}" if config.cloud
|
360
|
+
end
|
361
|
+
|
321
362
|
def raise_error_unless_extracted
|
322
363
|
raise RuntimeError, "there is no solr instance at #{config.instance_dir}. Run SolrWrapper.extract first." unless extracted?
|
323
364
|
end
|
@@ -25,6 +25,11 @@ module SolrWrapper
|
|
25
25
|
'127.0.0.1'
|
26
26
|
end
|
27
27
|
|
28
|
+
def zookeeper_host
|
29
|
+
@zookeeper_host ||= static_config.zookeeper_port
|
30
|
+
@zookeeper_host ||= host
|
31
|
+
end
|
32
|
+
|
28
33
|
##
|
29
34
|
# Get the port this Solr instance is running at
|
30
35
|
def port
|
@@ -32,6 +37,12 @@ module SolrWrapper
|
|
32
37
|
@port ||= random_open_port.to_s
|
33
38
|
end
|
34
39
|
|
40
|
+
def zookeeper_port
|
41
|
+
@zookeeper_port ||= static_config.zookeeper_port
|
42
|
+
@zookeeper_port ||= "#{port.to_i + 1000}"
|
43
|
+
end
|
44
|
+
|
45
|
+
|
35
46
|
##
|
36
47
|
# Get a (likely) URL to the solr instance
|
37
48
|
def url
|
@@ -85,7 +96,6 @@ module SolrWrapper
|
|
85
96
|
|
86
97
|
def download_dir
|
87
98
|
@download_dir ||= static_config.download_dir
|
88
|
-
@download_dir ||= Dir.tmpdir
|
89
99
|
FileUtils.mkdir_p @download_dir
|
90
100
|
@download_dir
|
91
101
|
end
|
@@ -4,8 +4,7 @@ require 'solr_wrapper'
|
|
4
4
|
namespace :solr do
|
5
5
|
desc "Load the solr options and solr instance"
|
6
6
|
task :environment do
|
7
|
-
|
8
|
-
@solr_instance = SolrWrapper.default_instance
|
7
|
+
@solr_instance = SolrWrapper.instance
|
9
8
|
end
|
10
9
|
|
11
10
|
desc 'Install a clean version of solr. Replaces the existing copy if there is one.'
|
data/lib/solr_wrapper/version.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe SolrWrapper::Instance do
|
4
|
-
let(:
|
4
|
+
let(:options) { {} }
|
5
|
+
let(:solr_instance) { SolrWrapper::Instance.new(options) }
|
5
6
|
subject { solr_instance }
|
6
7
|
let(:client) { SimpleSolrClient::Client.new(subject.url) }
|
7
8
|
|
@@ -34,6 +35,24 @@ describe SolrWrapper::Instance do
|
|
34
35
|
end
|
35
36
|
end
|
36
37
|
|
38
|
+
context 'with a SolrCloud instance' do
|
39
|
+
let(:options) { { cloud: true } }
|
40
|
+
it 'can upload configurations' do
|
41
|
+
subject.wrap do |solr|
|
42
|
+
config_name = solr.upconfig dir: File.join(FIXTURES_DIR, 'basic_configs')
|
43
|
+
Dir.mktmpdir do |dir|
|
44
|
+
solr.downconfig name: config_name, dir: dir
|
45
|
+
end
|
46
|
+
solr.with_collection(config_name: config_name) do |collection_name|
|
47
|
+
core = client.core(collection_name)
|
48
|
+
unless defined? JRUBY_VERSION
|
49
|
+
expect(core.all.size).to eq 0
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
37
56
|
describe 'exec' do
|
38
57
|
let(:cmd) { 'start' }
|
39
58
|
let(:options) { { p: '4098', help: true } }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solr_wrapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Beer
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
11
|
+
date: 2016-04-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubyzip
|