rse 0.2.0 → 0.3.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.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/lib/rse.rb +170 -40
  5. metadata +45 -25
  6. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 37030503f31b2375b3c839fa1a8badf4dfdfa084f4b590ca75709132971a4730
4
- data.tar.gz: 9de364427b5014027fcf2c93c7bc930b2e94db3c877c7a0a541943f6214f7e29
3
+ metadata.gz: e4815a8971c00376767179739875abeb246ab65a28ff6a43cba52055238585e2
4
+ data.tar.gz: 1e0008e4927b0cdc5771965c682eb3246daca3eed882c4c6c2fe0611038efaf3
5
5
  SHA512:
6
- metadata.gz: 4cfdaa962a33cd09113d867dc528e46c682a8b3c588fc688a71958fb6f9b1a375360bc81a95ca4827fcca652b84528bf3f375592b7f654428c16d2a5fa4f43a4
7
- data.tar.gz: 9e77f798d315d8b836fff1a9a06133920d2d88769b3d4bea3b032cbb2c5d2792ab9f75fc3edf05e4ae96b3ccbde9dd9a54090394f6edb7e9ca59f881173ceb1b
6
+ metadata.gz: 573f887917c5ba682e637f8b1901b6afb404499bbbd9d07a957f59eed5c8dffd7b05524f2f379a5ee65609f35ad2313abe277131afb01ba8cd88752873b60918
7
+ data.tar.gz: fade8a505895afcf58d04e3c0573f3efe87c5fcdaad7c02cf69c09311acb2364b7cb3ec05110890cc74f4f5ed9b0d336b5aa02d33b27b306d738e341a9ce912b
Binary file
data.tar.gz.sig CHANGED
Binary file
data/lib/rse.rb CHANGED
@@ -4,68 +4,198 @@
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
14
+ module Rse
15
15
 
16
- def initialize(package_basepath=nil, host: '0.0.0.0', port: '61000',
17
- debug: false, loghost: nil, logport: '9090',
18
- reghost: nil, spshost: nil, app_rsf: nil)
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',
21
+ reghost: nil, spshost: nil, app_rsf: nil)
19
22
 
20
- @host, @port, @debug = host, port, debug
23
+ @host, @port, @debug = host, port, debug
21
24
 
22
- puts 'before spspublog'.info if @debug
23
- log = loghost ? SPSPubLogDRbClient.new(host: loghost, port: logport) : nil
24
-
25
- puts 'before reg'.info if @debug
26
- reg = reghost ? RemoteDwsRegistry.new(domain: reghost) : nil
25
+ puts 'before spspublog'.info if @debug
26
+ log = loghost ? SPSPubLogDRbClient.new(host: loghost, port: logport) : nil
27
+
28
+ puts 'before reg'.info if @debug
29
+ reg = reghost ? RemoteDwsRegistry.new(domain: reghost) : nil
30
+
31
+ @rs = rs = RSFServices.new reg, package_basepath: package_basepath,
32
+ log: log, app_rsf: app_rsf, debug: debug
33
+
34
+ @rs.services['sps'] = SPSPub.new(host: spshost) if spshost
35
+
36
+ puts 'ready'
37
+
38
+ end
39
+
40
+ def start()
41
+ puts 'starting ...'
42
+ puts "druby://#{@host}:#{@port}"
43
+ DRb.start_service "druby://#{@host}:#{@port}", @rs
44
+ DRb.thread.join
27
45
 
28
- @rs = rs = RSFServices.new reg, package_basepath: package_basepath,
29
- log: log, app_rsf: app_rsf, debug: debug
46
+ end
47
+ end
48
+
49
+ class Subscriber < SPSSub
30
50
 
31
- sps = spshost ? SPSSub.new(host: spshost) : nil
51
+ def initialize(host: 'rse.home', spshost: 'sps.home')
52
+
53
+ @rsc = RSC.new(host)
54
+ super(host: spshost)
32
55
 
33
- if sps then
56
+ end
57
+
58
+ def subscribe(topic: 'rse/#')
59
+
60
+ super(topic: topic) do |msg, topic|
61
+
62
+ a = topic.split('/')[1..-1]
34
63
 
35
- Thread.new do
36
- sps.subscribe(topic: 'rse/#') do |msg,topic|
37
- a = topic.split('/')[1..-1]
38
- if a.length < 2 then
39
- begin
40
- r = rs.run_job(a.first, msg)
41
- rescue
42
- sps.notice 'rse_result: no job ' + a.first
43
- end
44
- sps.notice 'rse_result: ' + r.inspect
45
- else
46
- package, job = a
47
- begin
48
- r = rs.run_job(package, job, {}, msg)
49
- rescue
50
- sps.notice 'rse_result: no job ' + a.first
51
- end
52
- sps.notice "rse_result/%s/%s: %s" % [package, job, r.inspect ]
64
+ if a.length < 2 then
65
+
66
+ begin
67
+ r = @rsc.run_job(a.first, msg)
68
+ rescue
69
+ self.notice 'rse_result: no job ' + a.first
70
+ end
71
+
72
+ self.notice 'rse_result: ' + r.inspect
73
+
74
+ else
75
+
76
+ package, job = a
77
+
78
+ begin
79
+ r = @rsc.run_job(package, job, {}, msg)
80
+ rescue
81
+ self.notice 'rse_result: no job ' + a.first
53
82
  end
83
+
84
+ self.notice "rse_result/%s/%s: %s" % [package, job, r.inspect ]
54
85
  end
86
+
55
87
  end
88
+ end
89
+
90
+ end
91
+
92
+ end
56
93
 
57
- @rs.services['sps'] = sps
94
+
95
+ module RseProxy
96
+
97
+ class PassThru
98
+
99
+ def initialize(serversx=[], servers: serversx, log: nil )
100
+
101
+ DRb.start_service
102
+
103
+ @servers = servers.map do |x|
104
+
105
+ host, port = x.is_a?(Hash) ? [x[:host], x[:port]] : x
106
+
107
+ end
108
+
109
+ @log = Logger.new log, 'daily' if log
58
110
 
59
111
  end
60
112
 
61
- puts 'ready'
113
+ def delete()
114
+ fetch_server() { |rse| rse.delete }
115
+ end
116
+
117
+ def get()
118
+ fetch_server() { |rse| rse.get }
119
+ end
120
+
121
+ def put()
122
+ fetch_server() { |rse| rse.put }
123
+ end
124
+
125
+ def post()
126
+ fetch_server() { |rse| rse.post }
127
+ end
128
+
129
+ def package_methods(name)
130
+ fetch_server() { |rse| rse.package_methods(name) }
131
+ end
132
+
133
+ def run_job(package, job, params={}, *args)
134
+
135
+ @log.info "package: %s, job: %s, params: %s, args: %s" \
136
+ % [package, job, params, args] if @log
137
+
138
+ fetch_server() { |rse| rse.run_job package, job, params, *args }
139
+
140
+ end
141
+
142
+ def fetch_server()
143
+
144
+ begin
145
+
146
+ servers = @servers.clone
147
+
148
+ server = servers.shift
149
+ host, port = server
150
+ rse = DRbObject.new_with_uri("druby://#{host}:#{port}")
151
+ yield(rse) if block_given?
152
+
153
+ rescue
154
+
155
+ puts ($!).inspect
156
+ @log.warn "server #{host}:#{port} down" if @log
157
+ retry if servers.any?
158
+
159
+ end
160
+
161
+ end
62
162
 
163
+ def type()
164
+ fetch_server() { |rse| rse.type }
165
+ end
166
+
167
+ def type=(s)
168
+ fetch_server() { |rse| rse.type=(s) }
169
+ end
170
+
171
+ private
172
+
173
+ def method_missing(method_name, *args)
174
+ fetch_server() { |rse| rse.get.method(method_name).call(*args) }
175
+ end
176
+
177
+
63
178
  end
64
179
 
65
- def start()
66
- puts 'starting ...'
67
- DRb.start_service "druby://#{@host}:#{@port}", @rs
68
- DRb.thread.join
69
-
180
+ class Server
181
+
182
+ def initialize(host: 'rse.home', port: '61000', servers: [], log: nil,
183
+ spshost: 'sps.home')
184
+
185
+ @host, @port, @servers, @log = host, port, servers, log
186
+ @spshost = spshost
187
+
188
+ end
189
+
190
+ def start()
191
+
192
+ DRb.start_service "druby://#{@host}:#{@port}",
193
+ PassThru.new(@servers, log: @log)
194
+ DRb.thread.join
195
+
196
+ end
70
197
  end
198
+
71
199
  end
200
+
201
+
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.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -11,32 +11,52 @@ cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
13
  MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTkwMzI1MjIwNjI1WhcN
15
- MjAwMzI0MjIwNjI1WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDSmdqb
17
- vlxlGfBzluHMGj/iMbNgP1RHxRerWYNFm4RULDYmEgzziyDvmSdiIJhrmUTQ9kAu
18
- 5/1dG5Qv/DexeUIAGeDcNQer+1WqY5szZwXlg+dmmqRNjZTvtiCt+Nv8srSdY2+V
19
- Ba36+CuyuZNTJIlQUlG5+byT3+R29ZNqP5fGfBIrpnK70HDqcpn9+63HwbVnUXeV
20
- aOqh+6FSU1eoR+GyLeG4kOVndEZlTUrn9FXOeTU81dVSkXbWat8UfJXb7ldIb4Ot
21
- LkLbcnQJLVco3zwp2kus3y6lYBFdFC/xgV3jq7RtrPbgZFbG/uMQcGIZ96++Zmrg
22
- ZSc4/fD4ptFtdrVvVHL+I6JEpru6kJ35OPXa1x+LC4taIf9rNZ+t21Kq6Tb6+UVy
23
- tRvvfrhZJtbXyjOjHBZEszk2D6unRIFbnzIb/fh0PKdsrz4JVkHZ8d2kGWnmtaFU
24
- 3wTGzz6QSAQHtsOLPGAbUmn6HHYzTBrOVXxQ44kvK51B/jdtwxojJGydbX0CAwEA
25
- AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUq4MAVfVC
26
- BWX1ArO4wymRRhR+ySYwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjAxMTIyMjEyNDA3WhcN
15
+ MjExMTIyMjEyNDA3WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCihhtC
17
+ NWhPDa/+7n40XI/Gwe6vP1Fh5BN3PCm+oKlMMM0R8054kn1OiCsnX1Y+D9/L6ru7
18
+ +h1EnAkl87iZpi9gQdYkZv6jXd1/MSjb9fIYo9vHUBx9cNxFCUdI9VYFuECCWzYM
19
+ O47FEYzXcCoRWOMEi0jClV3rrXrQOdX4rgxnNW0r6Z4RGhnAe4IHA0l7eOdO9TVC
20
+ KJR1NIcqtAPhXvDN+tJjvH/ruHyTq1gJU/6rkBfqRPN4CboFQv6m10SwaQvSXcbi
21
+ RtK4WzbX13SQNazl4txUf2Gho+Ox+Uqr9teQOhWbmj2XSJJpIXBBvP1xzGvXzONp
22
+ dc8lMhyz9hn4PDcbL1HtS0uGHAORdNPV1J1Gy2OBMpdqP4E3faKzC+khX8HPgiU+
23
+ BnONs4Nx5d1Y5WW5sImGxF0+5pBPutc0afePXDaQUswrzpXMJzKTnRfOk6NmVfgq
24
+ eSjMorIKV1GWSaY3bw1MfzMZBh+3lmxyo3X9qrpd/qOGGKqXGzqPZEYHs28CAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUeSSXAcam
26
+ wjFwibMEFjMZxalP9GQwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
27
  c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
- BgkqhkiG9w0BAQsFAAOCAYEAphtm0kF4w34GsaclAwrWBqA01scjJhWenRadT6+5
29
- 3nJZc7284zWwd11H0rEf64CEbgxdUhqVg2+tcKaBdvCrPw7+I+gMEr4B0MD1r2dq
30
- nJct4Q/2TD1AGPFKa+GYWGpXH2yKJiHhIHs+2m4Iugb4mAukhwuXaKeZCiENMp/p
31
- i31FVPkmCk26KSIfwZoNldBjlpfmEwMyBNlNgv7zYZuMf+Qchqvt2J+TgWQ5rOSY
32
- RoLsFrst2KMslz3sxRLmwu8BJk6OMPgclk5B4cR+2lRhev2RUXUI72dsAHtOe5Fx
33
- ovNEkn9DLhVi3Onf1trHGYeW5GyB5q9XuOnCVhCyARmOkcS07TCu1MuUIypVnUOl
34
- m1/DlryaUR8I8InR60+GgcH5B8Rg9B1nO91wh1wYEy6psDkAzYllLXT53hu2gDjX
35
- gLIcOm5figGx9YoCYFixR00ARSKpMaCDMCJwL3iA1m4pL04Smvm0XogHNs49NRTP
36
- odE6WphoqAaREBcw0TYGZZLM
28
+ BgkqhkiG9w0BAQsFAAOCAYEAIfe8sv0O48m/92CylOWvxvLk5k4QwkXQloTTLkAQ
29
+ 2n1L/09T78ER6rGXaTfIZeUEEo/nPBHcbAJOOfo7Q+liRCB14690XrfgAFaeuYnx
30
+ T/d1YEPn0FgYCgAeynu9Ho+mHKAQM73HYWvHkHHJtvqIjMWfC/IQU3HZrD3lBKph
31
+ 41FjKsTzo2+lMeArUVCI7atpZaquuKoKm1Y9WHTwS4Pf37U1L1hKRkDYWydYR9dp
32
+ +6e9OaaiG4H5vFDzqrN0okE/k0BgGe7XXg6NcMOlqlfYfeW+OZdNOjozMZgqkVpf
33
+ /s5TlMG8sJ2a3/8ldYCcqd3Fw5+l1Wy2ZgRpjFhTnQ4nwqRIckkwUoQVeWLfLEJO
34
+ P3owz5MZ0sRUb8tOQEY7rDI2+Cue92lCbxXNOnIUEVNd/CAlK4WDKgAgzjt1t6SO
35
+ IpNfs/xhu8xjRvzdsqJVUemNMTetQWq1uJCL744VBWdD+Aya9lFL2MnAXiPPhhpf
36
+ H7Eu+IZctiL+0kLHA1iPEKAx
37
37
  -----END CERTIFICATE-----
38
- date: 2019-03-25 00:00:00.000000000 Z
38
+ date: 2020-11-22 00:00:00.000000000 Z
39
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
40
60
  - !ruby/object:Gem::Dependency
41
61
  name: sps-sub
42
62
  requirement: !ruby/object:Gem::Requirement
@@ -143,7 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
163
  - !ruby/object:Gem::Version
144
164
  version: '0'
145
165
  requirements: []
146
- rubygems_version: 3.0.1
166
+ rubygems_version: 3.0.3
147
167
  signing_key:
148
168
  specification_version: 4
149
169
  summary: Executes Ruby jobs (using the rsf_services gem) from a DRb server.
metadata.gz.sig CHANGED
Binary file