rse 0.2.0 → 0.3.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 +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