rse 0.1.2 → 0.4.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.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/lib/rse.rb +203 -36
  4. data.tar.gz.sig +0 -0
  5. metadata +67 -41
  6. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 36a05c67f09a77d1bdcb8afcf542ff78b0b19948651a27de39f9d572e68f0e3f
4
- data.tar.gz: 717d9df27c6c4c6dcc3e3c81feb6f00786d463e473834e81b516da562cd64984
3
+ metadata.gz: a780fa384905f730d59549d3809d4127da681dcf95b59b55dc64a5993dd86053
4
+ data.tar.gz: 620728ba13757e873a334175a6cfb2dbb1893b7315afc4bdcada6ee1af64b2c5
5
5
  SHA512:
6
- metadata.gz: ca8db30032ab3aaa604993761d13e7743df9f160a6a47a190d5d3bf3456223557e900e9b3fc34e15465d30e76c3f4238026482bc3a1bfc9084d8803a8dd2499f
7
- data.tar.gz: 72a133e9035d09d96fc11d66e73a879fb480dc0f4012c89df4d9c6199f8a3958ebc7a2bee644d7db928f9eaed86899b28384a2ae0a21a3d2b6cb8fc6a1e6b1a8
6
+ metadata.gz: aeed7f472a9ad20122dbe00f914119ee985445be1d6e88d3ad4a202962594271e4ab53c082a032d80413b543674a1025a381faed21fe63e09f3795848311529b
7
+ data.tar.gz: 65ada2f5d1f2e27a2792e9c2dd1c39ba672eda7e21c00df9f509ac9ae718ebf623868b2a77227e3048dd2a352e993d332a6557387f790801f33addf2f49cdbb5
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/rse.rb CHANGED
@@ -4,64 +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
 
13
- class Rse
14
- using ColouredText
15
-
16
- def initialize(package_basepath=nil, host: '', port: '61000',
17
- debug: false, loghost: 'localhost', logport: '9090',
18
- reghost: 'localhost', spshost: 'localhost', app_rsf: nil)
19
-
20
- @host, @port, @debug = host, port, debug
21
-
22
- puts 'before spspublog'.info if @debug
23
- log = SPSPubLogDRbClient.new host: loghost, port: logport
24
-
25
- puts 'before reg'.info if @debug
26
- reg = RemoteDwsRegistry.new domain: reghost
27
-
28
- @rs = rs = RSFServices.new reg, package_basepath: package_basepath,
29
- log: log, app_rsf: app_rsf, debug: debug
30
-
31
- sps = SPSSub.new host: spshost
32
-
33
- Thread.new do
34
- sps.subscribe(topic: 'rse/#') do |msg,topic|
14
+ module Rse
15
+
16
+ class Server
17
+ using ColouredText
18
+
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)
22
+
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.to_s}:#{@port}"
48
+
49
+ DRb.start_service "druby://" + @host.to_s + ':' + @port, @rs
50
+ DRb.thread.join
51
+
52
+ end
53
+ end
54
+
55
+ class Subscriber < SPSSub
56
+
57
+ def initialize(host: 'rse.home', spshost: 'sps.home')
58
+
59
+ @rsc = RSC.new(host)
60
+ super(host: spshost)
61
+
62
+ end
63
+
64
+ def subscribe(topic: 'rse/#')
65
+
66
+ super(topic: topic) do |msg, topic|
67
+
35
68
  a = topic.split('/')[1..-1]
69
+
36
70
  if a.length < 2 then
71
+
37
72
  begin
38
- r = rs.run_job(a.first, msg)
73
+ r = @rsc.run_job(a.first, msg)
39
74
  rescue
40
- sps.notice 'rse_result: no job ' + a.first
75
+ self.notice 'rse_result: no job ' + a.first
41
76
  end
42
- sps.notice 'rse_result: ' + r.inspect
77
+
78
+ self.notice 'rse_result: ' + r.inspect
79
+
43
80
  else
81
+
44
82
  package, job = a
83
+
45
84
  begin
46
- r = rs.run_job(package, job, {}, msg)
47
- rescue
48
- sps.notice 'rse_result: no job ' + a.first
49
- end
50
- sps.notice "rse_result/%s/%s: %s" % [package, job, r.inspect ]
85
+ r = @rsc.run_job(package, job, {}, msg)
86
+ rescue
87
+ self.notice 'rse_result: no job ' + a.first
88
+ end
89
+
90
+ self.notice "rse_result/%s/%s: %s" % [package, job, r.inspect ]
51
91
  end
92
+
52
93
  end
53
94
  end
54
95
 
55
- @rs.services['sps'] = sps
96
+ end
97
+
98
+ end
99
+
100
+
101
+ module RseProxy
102
+
103
+ class PassThru
104
+
105
+ # job_filter (which is optional) expects a block
106
+ #
107
+ def initialize(serversx=[], servers: serversx, log: nil, jobfilter: nil )
108
+
109
+ DRb.start_service
110
+
111
+ @servers = servers.map do |x|
112
+
113
+ host, port = x.is_a?(Hash) ? [x[:host], x[:port]] : x
114
+
115
+ end
116
+
117
+ @log = Logger.new log, 'daily' if log
118
+
119
+ @rse = nil
120
+ @jobfilter = jobfilter
121
+
122
+ end
123
+
124
+ def delete()
125
+ fetch_server() { |rse| rse.delete }
126
+ end
127
+
128
+ def get()
129
+ fetch_server() { |rse| rse.get }
130
+ end
131
+
132
+ def put()
133
+ fetch_server() { |rse| rse.put }
134
+ end
135
+
136
+ def post()
137
+ fetch_server() { |rse| rse.post }
138
+ end
139
+
140
+ def package_methods(name)
141
+ fetch_server() { |rse| rse.package_methods(name) }
142
+ end
143
+
144
+ def run_job(package, job, params={}, *args)
145
+
146
+ if @log then
147
+ @log.info "package: %s, job: %s, 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
153
+ end
154
+
155
+ end
156
+
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
56
210
 
57
- puts 'ready'
58
211
 
59
212
  end
60
213
 
61
- def start()
62
- puts 'starting ...'
63
- DRb.start_service "druby://#{@host}:#{@port}", @rs
64
- DRb.thread.join
214
+ class Server
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
65
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
66
232
  end
233
+
67
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.2
4
+ version: 0.4.1
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: 2019-01-21 00:00:00.000000000 Z
38
+ date: 2022-01-15 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
- - - ">="
100
- - !ruby/object:Gem::Version
101
- version: 0.1.0
102
124
  - - "~>"
103
125
  - !ruby/object:Gem::Version
104
- version: '0.1'
126
+ version: '0.2'
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
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
- - - ">="
110
- - !ruby/object:Gem::Version
111
- version: 0.1.0
112
134
  - - "~>"
113
135
  - !ruby/object:Gem::Version
114
- version: '0.1'
136
+ version: '0.2'
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
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: []
@@ -138,7 +163,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
138
163
  - !ruby/object:Gem::Version
139
164
  version: '0'
140
165
  requirements: []
141
- rubygems_version: 3.0.2
166
+ rubyforge_project:
167
+ rubygems_version: 2.7.10
142
168
  signing_key:
143
169
  specification_version: 4
144
170
  summary: Executes Ruby jobs (using the rsf_services gem) from a DRb server.
metadata.gz.sig CHANGED
Binary file