gi_cat_driver 0.0.4 → 0.0.5
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/gi_cat_driver/version.rb +1 -1
- data/lib/gi_cat_driver.rb +60 -9
- metadata +11 -11
data/lib/gi_cat_driver.rb
CHANGED
@@ -4,6 +4,7 @@ require "open-uri"
|
|
4
4
|
require "rest-client"
|
5
5
|
require "base64"
|
6
6
|
require 'nokogiri'
|
7
|
+
require 'timeout'
|
7
8
|
|
8
9
|
# The GI-Cat Driver
|
9
10
|
module GiCatDriver
|
@@ -11,12 +12,13 @@ module GiCatDriver
|
|
11
12
|
|
12
13
|
ATOM_NAMESPACE = { "atom" => "http://www.w3.org/2005/Atom" }
|
13
14
|
RELEVANCE_NAMESPACE = { "relevance" => "http://a9.com/-/opensearch/extensions/relevance/1.0/" }
|
14
|
-
attr_accessor :base_url
|
15
|
+
attr_accessor :base_url, :harvestersid_array
|
15
16
|
|
16
17
|
def initialize( url, username, password )
|
17
|
-
|
18
|
+
@base_url = url.sub(/\/+$/, '')
|
18
19
|
@admin_username = username
|
19
20
|
@admin_password = password
|
21
|
+
@harvestersid_array = []
|
20
22
|
end
|
21
23
|
|
22
24
|
def basic_auth_string
|
@@ -32,13 +34,13 @@ module GiCatDriver
|
|
32
34
|
|
33
35
|
# Check whether the URL is accessible
|
34
36
|
def is_running?
|
35
|
-
open(
|
37
|
+
open(@base_url).status[0] == "200"
|
36
38
|
end
|
37
39
|
|
38
40
|
# Retrieve the ID for a profile given the name
|
39
41
|
# Returns an integer ID reference to the profile
|
40
42
|
def find_profile_id( profile_name )
|
41
|
-
get_profiles_request = "#{
|
43
|
+
get_profiles_request = "#{@base_url}/services/conf/brokerConfigurations?nameRepository=gicat"
|
42
44
|
modified_headers = standard_headers.merge({
|
43
45
|
:content_type => "*/*",
|
44
46
|
:Accept => 'application/xml'
|
@@ -59,7 +61,7 @@ module GiCatDriver
|
|
59
61
|
def enable_profile( profile_name )
|
60
62
|
profile_id = find_profile_id(profile_name)
|
61
63
|
raise "The specified profile could not be found." if profile_id.nil?
|
62
|
-
activate_profile_request = "#{
|
64
|
+
activate_profile_request = "#{@base_url}/services/conf/brokerConfigurations/#{profile_id}?opts=active"
|
63
65
|
|
64
66
|
RestClient.get(activate_profile_request, standard_headers)
|
65
67
|
end
|
@@ -67,7 +69,7 @@ module GiCatDriver
|
|
67
69
|
# Retrieve the ID for the active profile
|
68
70
|
# Returns an integer ID reference to the active profile
|
69
71
|
def get_active_profile_id
|
70
|
-
active_profile_request = "#{
|
72
|
+
active_profile_request = "#{@base_url}/services/conf/giconf/configuration"
|
71
73
|
|
72
74
|
return RestClient.get(active_profile_request, standard_headers)
|
73
75
|
end
|
@@ -83,12 +85,12 @@ module GiCatDriver
|
|
83
85
|
end
|
84
86
|
|
85
87
|
def set_lucene_enabled( enabled )
|
86
|
-
enable_lucene_request = "#{
|
88
|
+
enable_lucene_request = "#{@base_url}/services/conf/brokerConfigurations/#{get_active_profile_id}/luceneEnabled"
|
87
89
|
RestClient.put(enable_lucene_request,
|
88
90
|
enabled.to_s,
|
89
91
|
standard_headers)
|
90
92
|
|
91
|
-
activate_profile_request = "#{
|
93
|
+
activate_profile_request = "#{@base_url}/services/conf/brokerConfigurations/#{get_active_profile_id}?opts=active"
|
92
94
|
RestClient.get(activate_profile_request,
|
93
95
|
standard_headers)
|
94
96
|
end
|
@@ -99,12 +101,61 @@ module GiCatDriver
|
|
99
101
|
# Returns true if Lucene is turned on
|
100
102
|
def is_lucene_enabled?
|
101
103
|
query_string = EsipOpensearchQueryBuilder::get_query_string({ :st => "snow" })
|
102
|
-
results = Nokogiri::XML(open("#{
|
104
|
+
results = Nokogiri::XML(open("#{@base_url}/services/opensearchesip#{query_string}"))
|
103
105
|
|
104
106
|
result_scores = results.xpath('//atom:feed/atom:entry/relevance:score', ATOM_NAMESPACE.merge(RELEVANCE_NAMESPACE))
|
105
107
|
result_scores.map { |score| score.text }
|
106
108
|
|
107
109
|
return result_scores.count > 0
|
108
110
|
end
|
111
|
+
|
112
|
+
def add_new_uuids(new_harvesterids_array)
|
113
|
+
@harvestersid_array += new_harvesterids_array
|
114
|
+
end
|
115
|
+
|
116
|
+
def harvest_resource_for_active_configuration(harvesterid)
|
117
|
+
RestClient.get(
|
118
|
+
"#{@base_url}/services/conf/brokerConfigurations/#{self.get_active_profile_id}/harvesters/#{harvesterid}/start",
|
119
|
+
standard_headers){ |response, request, result, &block|
|
120
|
+
case response.code
|
121
|
+
when 200
|
122
|
+
p "Harvest initiated. Please wait a couple minutes for the process to complete."
|
123
|
+
else
|
124
|
+
raise "Failed to start GI-Cat resource harvest."
|
125
|
+
response.return!(request, result, &block)
|
126
|
+
end
|
127
|
+
}
|
128
|
+
end
|
129
|
+
|
130
|
+
def harvest_all_resources_for_active_configuration
|
131
|
+
harvestersid_array.each do |harvesterid|
|
132
|
+
harvest_resource_for_active_configuration(harvesterid)
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
def havest_request_is_done(harvesterid)
|
137
|
+
while(1) do
|
138
|
+
rnum=rand
|
139
|
+
request = @base_url + "/services/conf/giconf/status?id=#{harvesterid}&rand=#{rnum}"
|
140
|
+
response = RestClient.get request
|
141
|
+
teststring = String.new(response.body)
|
142
|
+
if teststring.include?("Harvesting completed")
|
143
|
+
break
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
def confirm_harvest_done
|
149
|
+
begin
|
150
|
+
Timeout::timeout(10) do
|
151
|
+
harvestersid_array.each do |harvesterid|
|
152
|
+
havest_request_is_done(harvesterid)
|
153
|
+
end
|
154
|
+
end
|
155
|
+
rescue Timeout::Error
|
156
|
+
puts "Warning: reharvest is time out, we are going to reuse the previous harvest results"
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
109
160
|
end
|
110
161
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gi_cat_driver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2013-03-15 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rest-client
|
16
|
-
requirement: &
|
16
|
+
requirement: &70269247878280 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.6.7
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70269247878280
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: nokogiri
|
27
|
-
requirement: &
|
27
|
+
requirement: &70269247877180 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.5.6
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70269247877180
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: bundler
|
38
|
-
requirement: &
|
38
|
+
requirement: &70269247876400 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '1.3'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70269247876400
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rake
|
49
|
-
requirement: &
|
49
|
+
requirement: &70269247875540 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 10.0.3
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70269247875540
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rspec
|
60
|
-
requirement: &
|
60
|
+
requirement: &70269247874660 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: 2.13.0
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70269247874660
|
69
69
|
description: Configure and control deployed instances of GI-Cat.
|
70
70
|
email:
|
71
71
|
- stuart.reed@nsidc.org
|