rse 0.1.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data/lib/rse.rb +199 -29
  4. data.tar.gz.sig +0 -0
  5. metadata +62 -37
  6. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 893a33287506e9db67893036fc030f8c027feddc
4
- data.tar.gz: 3588af238cb00dcea8790b87867b3f5608cd3845
2
+ SHA256:
3
+ metadata.gz: f1157852fad295d25dac2a7e5e8907d3c0afd61682d4fdf2b926de56bfc116aa
4
+ data.tar.gz: 9ee0c46b6cace3db05c107f1f29e3c7ff105a8bd51b87310dcdd0895bf8d30d4
5
5
  SHA512:
6
- metadata.gz: 829b6bd1e7c32cb17cc5b351bfc8af232cb4c9c37f0d849c7091f43322c162b3f1460207530fe5c2df39202048d39734217a61690b9c0a610707ccb29047ef2b
7
- data.tar.gz: fe3bc64eda6443297f1cf24e71d320304cf783727c7099e6ec9854aec92db4c08427fedb5ed56a5a9592bbda16658a3125414da872ea6ab5ea9d7849b852f622
6
+ metadata.gz: 71df363891458d1a2f70ee1c325469395f11644dfdcfafb9965f81292340ec2833855751de0abaa09fb994f829a3b8b1ab10a077d12518f4d6a9b7ca446600b7
7
+ data.tar.gz: 8fa3a49adac81375fc07e17b9527a523703a918b48625a1e1f07f2257a4c7966133d655fc28b82f57c18860c319924195923b6f0276212ad9d526fb066919420
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/rse.rb CHANGED
@@ -4,61 +4,231 @@
4
4
 
5
5
 
6
6
  require 'drb'
7
+ require 'sps-pub'
7
8
  require 'sps-sub'
8
9
  require 'rsf_services'
9
10
  require 'remote_dwsregistry'
10
11
  require 'spspublog_drb_client'
11
12
 
12
13
 
14
+ module Rse
13
15
 
14
- class Rse
15
-
16
- def initialize(package_basepath=nil, host: '', port: '61000',
17
- debug: false, loghost: 'localhost', reghost: 'localhost',
18
- spshost: 'localhost', app_rsf: nil)
16
+ class Server
17
+ using ColouredText
19
18
 
20
- @host, @port, @debug = host, port, debug
19
+ def initialize(package_basepath=nil, host: '0.0.0.0', port: '61000',
20
+ debug: false, loghost: nil, logport: '9090', log: nil,
21
+ reghost: nil, spshost: nil, app_rsf: nil)
21
22
 
22
- log = SPSPubLogDRbClient.new host: loghost
23
- reg = RemoteDwsRegistry.new domain: reghost
23
+ @host, @port, @debug = host, port, debug
24
+
25
+ puts 'before spspublog'.info if @debug
26
+
27
+ log2 = if log then
28
+ log
29
+ elsif loghost
30
+ SPSPubLogDRbClient.new(host: loghost, port: logport)
31
+ end
32
+
33
+ puts 'before reg'.info if @debug
34
+ reg = reghost ? RemoteDwsRegistry.new(domain: reghost) : nil
35
+
36
+ @rs = rs = RSFServices.new reg, package_basepath: package_basepath,
37
+ log: log2, app_rsf: app_rsf, debug: debug
38
+
39
+ @rs.services['sps'] = SPSPub.new(host: spshost) if spshost
40
+
41
+ puts 'ready'
42
+
43
+ end
44
+
45
+ def start()
46
+ puts 'starting ...'
47
+ puts "druby://#{@host}:#{@port}"
48
+ DRb.start_service "druby://#{@host}:#{@port}", @rs
49
+ DRb.thread.join
50
+
51
+ end
52
+ end
53
+
54
+ class Subscriber < SPSSub
55
+
56
+ def initialize(host: 'rse.home', spshost: 'sps.home')
57
+
58
+ @rsc = RSC.new(host)
59
+ super(host: spshost)
60
+
61
+ end
62
+
63
+ def subscribe(topic: 'rse/#')
64
+
65
+ super(topic: topic) do |msg, topic|
24
66
 
25
- @rs = rs = RSFServices.new reg,
26
- package_basepath: package_basepath, log: log, app_rsf: app_rsf
27
-
28
- sps = SPSSub.new host: spshost
29
-
30
- Thread.new do
31
- sps.subscribe(topic: 'rse/#') do |msg,topic|
32
67
  a = topic.split('/')[1..-1]
68
+
33
69
  if a.length < 2 then
70
+
34
71
  begin
35
- r = rs.run_job(a.first, msg)
72
+ r = @rsc.run_job(a.first, msg)
36
73
  rescue
37
- sps.notice 'rse_result: no job ' + a.first
74
+ self.notice 'rse_result: no job ' + a.first
38
75
  end
39
- sps.notice 'rse_result: ' + r.inspect
76
+
77
+ self.notice 'rse_result: ' + r.inspect
78
+
40
79
  else
80
+
41
81
  package, job = a
82
+
42
83
  begin
43
- r = rs.run_job(package, job, {}, msg)
44
- rescue
45
- sps.notice 'rse_result: no job ' + a.first
46
- end
47
- sps.notice "rse_result/%s/%s: %s" % [package, job, r.inspect ]
84
+ r = @rsc.run_job(package, job, {}, msg)
85
+ rescue
86
+ self.notice 'rse_result: no job ' + a.first
87
+ end
88
+
89
+ self.notice "rse_result/%s/%s: %s" % [package, job, r.inspect ]
48
90
  end
91
+
92
+ end
93
+ end
94
+
95
+ end
96
+
97
+ end
98
+
99
+
100
+ module RseProxy
101
+
102
+ class PassThru
103
+
104
+ # job_filter (which is optional) expects a block
105
+ #
106
+ def initialize(serversx=[], servers: serversx, log: nil, jobfilter: nil )
107
+
108
+ DRb.start_service
109
+
110
+ @servers = servers.map do |x|
111
+
112
+ host, port = x.is_a?(Hash) ? [x[:host], x[:port]] : x
113
+
114
+ end
115
+
116
+ @log = Logger.new log, 'daily' if log
117
+
118
+ @rse = nil
119
+ @jobfilter = jobfilter
120
+
121
+ end
122
+
123
+ def delete()
124
+ fetch_server() { |rse| rse.delete }
125
+ end
126
+
127
+ def get()
128
+ fetch_server() { |rse| rse.get }
129
+ end
130
+
131
+ def put()
132
+ fetch_server() { |rse| rse.put }
133
+ end
134
+
135
+ def post()
136
+ fetch_server() { |rse| rse.post }
137
+ end
138
+
139
+ def package_methods(name)
140
+ fetch_server() { |rse| rse.package_methods(name) }
141
+ end
142
+
143
+ def run_job(package, job, params={}, *args)
144
+
145
+ if @log then
146
+ @log.info "package: %s, job: %s, " +
147
+ "params: %s, args: %s" % [package, job, params, args]
148
+ end
149
+
150
+ #we pass in the job to determine the server
151
+ fetch_server(job) do |rse|
152
+ rse.run_job package, job, params, *args
49
153
  end
154
+
50
155
  end
51
156
 
52
- @rs.services['sps'] = sps
157
+ def fetch_server(job=nil)
158
+
159
+ host, port = nil, nil
160
+
161
+ exit if @servers.empty?
162
+
163
+ # using a job filter we can send a job (by checking its name) to
164
+ # a specific server
165
+ #
166
+ r = @jobfilter.call(job) if job and @jobfilter.is_a? Proc
167
+
168
+ server = if r then
169
+ r
170
+ else
171
+ @log.info 'job: ' + job.inspect if @log
172
+ @servers.first
173
+ end
174
+
175
+ puts 'server: ' + server.inspect
176
+
177
+ begin
178
+ host, port = server
179
+ @rse = DRbObject.new_with_uri("druby://#{host}:#{port}")
180
+
181
+ yield(@rse) if block_given?
182
+
183
+ rescue
184
+
185
+ @servers.shift unless port.to_i > 61005
186
+ @rse = nil
187
+ puts ($!).inspect
188
+ @log.warn "server #{host}:#{port} #{($!).inspect}" if @log
189
+ #sleep 1
190
+ #jr20210725 retry
191
+
192
+
193
+ end
194
+
195
+ end
196
+
197
+ def type()
198
+ fetch_server() { |rse| rse.type }
199
+ end
200
+
201
+ def type=(s)
202
+ fetch_server() { |rse| rse.type=(s) }
203
+ end
204
+
205
+ private
206
+
207
+ def method_missing(method_name, *args)
208
+ fetch_server() { |rse| rse.get.method(method_name).call(*args) }
209
+ end
53
210
 
54
- puts 'ready'
55
211
 
56
212
  end
57
213
 
58
- def start()
59
- puts 'starting ...'
60
- DRb.start_service "druby://#{@host}:#{@port}", @rs
61
- DRb.thread.join
214
+ class Server
62
215
 
216
+ def initialize(host: 'rse.home', port: '61000', servers: [], log: nil,
217
+ spshost: 'sps.home', jobfilter: nil)
218
+
219
+ @host, @port, @servers, @log = host, port, servers, log
220
+ @spshost = spshost
221
+ @jobfilter = jobfilter
222
+
223
+ end
224
+
225
+ def start()
226
+
227
+ DRb.start_service "druby://#{@host}:#{@port}",
228
+ PassThru.new(@servers, log: @log, jobfilter: @jobfilter)
229
+ DRb.thread.join
230
+
231
+ end
63
232
  end
233
+
64
234
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rse
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -10,28 +10,53 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDXjCCAkagAwIBAgIBATANBgkqhkiG9w0BAQUFADAsMSowKAYDVQQDDCFnZW1t
14
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTgwMzIyMTIyNjIzWhcN
15
- MTkwMzIyMTIyNjIzWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDKgZh3
17
- L6Dw+LGmfDESYKAzFPLp7/DBCngXOpF9Xs67N9oWW6VvXuI4QfYP3TMWgML63LZW
18
- fPbMIiIV77DgNzKEFIdkuVw4hBdS3rOBU8CM1rsCuzTNEz5dIk3j4X8f2u1MXj+R
19
- xj8Kobrsf4T4j+GCnWmF8vs6A8mZ61ErqJZuAo/3DJk00e/feRpJMLDDauZ9jN1s
20
- q/oLq0qGjgUEMfXzBpzc6ZH4ThQ/K18gVDs/5lVok+p2PnT6eBHll8KGQHrBLJ12
21
- hOaPn2CfXXc1QIEhlFes5CuTga8UPslZKDsB0GUyP5i2UDCWtbLx3/lohits6ahB
22
- Cq9TE50l+qgNussvAgMBAAGjgYowgYcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
23
- HQYDVR0OBBYEFO4iKKVwKQysm3lDMP3B7tVBNZ0mMCYGA1UdEQQfMB2BG2dlbW1h
24
- c3RlckBqYW1lc3JvYmVydHNvbi5ldTAmBgNVHRIEHzAdgRtnZW1tYXN0ZXJAamFt
25
- ZXNyb2JlcnRzb24uZXUwDQYJKoZIhvcNAQEFBQADggEBABG0GDpCcLRqUaSpe01+
26
- P7faKJpVfFpGTeBOeFMhXcIfXBts6XDkt0BV5WVs8hELMOuygayayVXegSkFRPCr
27
- /f6GsmIVVUffLVoKhh8sbC9WH6ZE3hddzGZ4ak98DkYE+6a9V/07qjjjQIwYJBQ7
28
- FKi+vwEKeiIniq3jsTvxUnZBLx+FaO+vVWgbqi2LI5FjXWEU1+Pv0sF1dHXUKOiR
29
- 6VLVRd61U5PLkXgiFDUQTMQxbROuNge8Tn1sTxSPIK1FbNsKnx+1+5sonMBgu4zn
30
- gou7xRtdjGdiyT3PyvX0OQ+99BHHx73PhDP1g8iDZJM0XfIVmfFIYOOCSNgKEgUM
31
- V1M=
13
+ MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjExMjEzMjE0OTI3WhcN
15
+ MjIxMjEzMjE0OTI3WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC5GgnY
17
+ 3NAIglTeWLyCCzCJEg7gjKrf9LiVJWjD7RC3Ga13pueAD94Lk8hNqb5zUt0D19nv
18
+ HpCCvxjGhYSsekaqZHY+dtR6uJKN50mdHHWU7Tg+46uUMFsgGm9pVrcLtlVlqHhs
19
+ C4agY/2p28UvU+H7fUQinkbpgaD+bMJ4oYSrTLTUGhuqWDcQpH0kH+lVAwdhjFTs
20
+ hn0K2E3ikEr0RNW0x1v+XPabxpxi58V3tqV8HpMUvrQ9nNLsjL3hi3RPOd/1yuvQ
21
+ /HsQY9W1WGdhwZ8DF94E0rS4i6pmrAYW0mNm0euGPEhrQ8FeNznaSrAGghqFJQQ4
22
+ NzkRuwBUIGj3Fg/bj7FGJn8Gbh97JMxnn9W0VrvlczKnLOH/nLVw/jc9b7hx21yh
23
+ XYDfwlWtHaPIfbqfs+p1GSP8dtWflT8cnUs/jFav0JE9B6E/5DBL09J6TJctwOEF
24
+ FQhLb45sWsXHi/wgpHwUKtdXIU1+JUYn4ZRw+RO+sYN6ii1TodgfMIjqySkCAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU06PIdeEz
26
+ +zgy9XVLqBDAyk7tw10wJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
+ c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
+ BgkqhkiG9w0BAQsFAAOCAYEAb9n3/OhaFl0l0Gl6eVhG8rRmuWvOk8eLGAQmJ8RJ
29
+ qSw1990eQGzT6CIX0atlZgmqxihV2OUgivTCZZxhUYOSMN5k5YpRDp0CsudqZMBn
30
+ iR8hQguKSxvuEQYybU1e5exGWrEMXBZSqmzMBNGWO35gjtoOCWClrCN3aRzo58GG
31
+ vt3P/4N0odpk4s6CiH84pVGzclufcm4scPHhNhQBz3FSMrj3tXfLY53EjQ0r5Ih2
32
+ aIljodE+UKtgJTKsVQ8B7VOzygL5ifDq9VJ5EPvPN9CVopIHmEeJUHzDy1lO5B8m
33
+ YNYycxb46Jr0FhPdqmYV9C7kgduvaF30PUCX4nzHjIItXLvGVuhTXksSwldD85NX
34
+ 4dt+Bk5nY7dMy57gzGYIcLJSLoz0vR5V9tMoFpaATj9+QRhkuhPJAv12rers1Imr
35
+ uURNkBXNIh3CdFpGJunoxVicC2OU2CglMgh+92Fjj2tRAV1M5njVnDnXcDSIsw7T
36
+ b5bDlFc8Qgl3+y8V3vxPf7WX
32
37
  -----END CERTIFICATE-----
33
- date: 2018-07-31 00:00:00.000000000 Z
38
+ date: 2021-12-13 00:00:00.000000000 Z
34
39
  dependencies:
40
+ - !ruby/object:Gem::Dependency
41
+ name: sps-pub
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '0.5'
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 0.5.5
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '0.5'
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 0.5.5
35
60
  - !ruby/object:Gem::Dependency
36
61
  name: sps-sub
37
62
  requirement: !ruby/object:Gem::Requirement
@@ -41,7 +66,7 @@ dependencies:
41
66
  version: '0.3'
42
67
  - - ">="
43
68
  - !ruby/object:Gem::Version
44
- version: 0.3.6
69
+ version: 0.3.7
45
70
  type: :runtime
46
71
  prerelease: false
47
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -51,69 +76,69 @@ dependencies:
51
76
  version: '0.3'
52
77
  - - ">="
53
78
  - !ruby/object:Gem::Version
54
- version: 0.3.6
79
+ version: 0.3.7
55
80
  - !ruby/object:Gem::Dependency
56
81
  name: rsf_services
57
82
  requirement: !ruby/object:Gem::Requirement
58
83
  requirements:
59
84
  - - "~>"
60
85
  - !ruby/object:Gem::Version
61
- version: '0.7'
86
+ version: '0.9'
62
87
  - - ">="
63
88
  - !ruby/object:Gem::Version
64
- version: 0.7.1
89
+ version: 0.9.5
65
90
  type: :runtime
66
91
  prerelease: false
67
92
  version_requirements: !ruby/object:Gem::Requirement
68
93
  requirements:
69
94
  - - "~>"
70
95
  - !ruby/object:Gem::Version
71
- version: '0.7'
96
+ version: '0.9'
72
97
  - - ">="
73
98
  - !ruby/object:Gem::Version
74
- version: 0.7.1
99
+ version: 0.9.5
75
100
  - !ruby/object:Gem::Dependency
76
101
  name: remote_dwsregistry
77
102
  requirement: !ruby/object:Gem::Requirement
78
103
  requirements:
79
104
  - - "~>"
80
105
  - !ruby/object:Gem::Version
81
- version: '0.2'
106
+ version: '0.4'
82
107
  - - ">="
83
108
  - !ruby/object:Gem::Version
84
- version: 0.2.7
109
+ version: 0.4.1
85
110
  type: :runtime
86
111
  prerelease: false
87
112
  version_requirements: !ruby/object:Gem::Requirement
88
113
  requirements:
89
114
  - - "~>"
90
115
  - !ruby/object:Gem::Version
91
- version: '0.2'
116
+ version: '0.4'
92
117
  - - ">="
93
118
  - !ruby/object:Gem::Version
94
- version: 0.2.7
119
+ version: 0.4.1
95
120
  - !ruby/object:Gem::Dependency
96
121
  name: spspublog_drb_client
97
122
  requirement: !ruby/object:Gem::Requirement
98
123
  requirements:
99
124
  - - "~>"
100
125
  - !ruby/object:Gem::Version
101
- version: '0.1'
126
+ version: '0.2'
102
127
  - - ">="
103
128
  - !ruby/object:Gem::Version
104
- version: 0.1.0
129
+ version: 0.2.1
105
130
  type: :runtime
106
131
  prerelease: false
107
132
  version_requirements: !ruby/object:Gem::Requirement
108
133
  requirements:
109
134
  - - "~>"
110
135
  - !ruby/object:Gem::Version
111
- version: '0.1'
136
+ version: '0.2'
112
137
  - - ">="
113
138
  - !ruby/object:Gem::Version
114
- version: 0.1.0
139
+ version: 0.2.1
115
140
  description:
116
- email: james@jamesrobertson.eu
141
+ email: digital.robertson@gmail.com
117
142
  executables: []
118
143
  extensions: []
119
144
  extra_rdoc_files: []
@@ -139,7 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
164
  version: '0'
140
165
  requirements: []
141
166
  rubyforge_project:
142
- rubygems_version: 2.6.13
167
+ rubygems_version: 2.7.10
143
168
  signing_key:
144
169
  specification_version: 4
145
170
  summary: Executes Ruby jobs (using the rsf_services gem) from a DRb server.
metadata.gz.sig CHANGED
Binary file