cpee-instantiation 1.0.20 → 1.0.22
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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/cpee-instantiation.gemspec +1 -1
- data/lib/cpee-instantiation/instantiation.rb +40 -13
- data/lib/cpee-instantiation/instantiation.xml +18 -0
- data/lib/cpee-instantiation/utils.rb +52 -0
- data/server/instantiation +17 -0
- data/tools/cpee-instantiation +32 -11
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c4bcaada2f94288fb474c05aa57efd0ccc51920f7b4a877f6baac3ee9a52106c
|
4
|
+
data.tar.gz: 234e40846f6fd47f1eda15737e5b5c39aaa83627a9b305e0a8f900df344c4b3f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e15606a4a56063d3004fe4bf9aa954509ccfebc771fb8cede8319b1847941886214ed7cc309ec501463c74092f8376eaf4a88100fb2cecad0b0a17ea057430cf
|
7
|
+
data.tar.gz: 3a134b1a185a3a0c95f34143a7224be55fb220db21971db21ad13befb7d16d05aebbf4fe39f7000bf7163cc6c530e5a4f8d9dcccf038894434f21df88e284eb4
|
data/README.md
CHANGED
data/cpee-instantiation.gemspec
CHANGED
@@ -1,21 +1,22 @@
|
|
1
1
|
# This file is part of CPEE-INSTANTIATION.
|
2
2
|
#
|
3
3
|
# CPEE-INSTANTIATION is free software: you can redistribute it and/or modify it
|
4
|
-
# under the terms of the GNU General Public License as published by the
|
5
|
-
# Software Foundation, either version 3 of the License, or (at your
|
6
|
-
# later version.
|
4
|
+
# under the terms of the GNU Lesser General Public License as published by the
|
5
|
+
# Free Software Foundation, either version 3 of the License, or (at your
|
6
|
+
# option) any later version.
|
7
7
|
#
|
8
8
|
# CPEE-INSTANTIATION is distributed in the hope that it will be useful, but
|
9
9
|
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
10
|
-
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
11
|
-
# more details.
|
10
|
+
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
11
|
+
# for more details.
|
12
12
|
#
|
13
|
-
# You should have received a copy of the GNU General Public License
|
14
|
-
# CPEE-INSTANTIATION (file LICENSE in the main directory). If not,
|
15
|
-
# <http://www.gnu.org/licenses/>.
|
13
|
+
# You should have received a copy of the GNU Lesser General Public License
|
14
|
+
# along with CPEE-INSTANTIATION (file LICENSE in the main directory). If not,
|
15
|
+
# see <http://www.gnu.org/licenses/>.
|
16
16
|
|
17
17
|
require 'rubygems'
|
18
18
|
require 'cpee/value_helper'
|
19
|
+
require 'cpee/redis'
|
19
20
|
require 'xml/smart'
|
20
21
|
require 'riddl/server'
|
21
22
|
require 'securerandom'
|
@@ -24,6 +25,8 @@ require 'uri'
|
|
24
25
|
require 'redis'
|
25
26
|
require 'json'
|
26
27
|
|
28
|
+
require_relative 'utils'
|
29
|
+
|
27
30
|
module CPEE
|
28
31
|
module Instantiation
|
29
32
|
|
@@ -288,15 +291,18 @@ module CPEE
|
|
288
291
|
end
|
289
292
|
end #}}}
|
290
293
|
|
291
|
-
|
294
|
+
class InstantiateXML < Riddl::Implementation #{{{
|
292
295
|
include Helpers
|
293
296
|
|
294
297
|
def response
|
298
|
+
puts "InstantiateXML response method called: #{@a[1]}",
|
295
299
|
cpee = @h['X_CPEE'] || @a[0]
|
296
300
|
behavior = @a[1] ? 'fork_ready' : @p[0].value
|
297
301
|
data = @a[1] ? 0 : 1
|
298
302
|
selfurl = @a[2]
|
299
303
|
cblist = @a[3]
|
304
|
+
puts "Received data: #{@p}"
|
305
|
+
puts "p[data]: #{@p[data]}"
|
300
306
|
tdoc = if @p[data].additional =~ /base64/
|
301
307
|
Base64.decode64(@p[data].value.read)
|
302
308
|
else
|
@@ -405,15 +411,36 @@ module CPEE
|
|
405
411
|
]
|
406
412
|
end
|
407
413
|
end
|
408
|
-
|
414
|
+
|
415
|
+
end #}}}
|
409
416
|
|
410
417
|
def self::implementation(opts)
|
411
418
|
opts[:cpee] ||= 'http://localhost:9298/'
|
412
|
-
opts[:redis_path] ||= '/tmp/redis.sock'
|
413
|
-
opts[:redis_db] ||= 14
|
414
419
|
opts[:self] ||= "http#{opts[:secure] ? 's' : ''}://#{opts[:host]}:#{opts[:port]}/"
|
415
|
-
|
420
|
+
|
421
|
+
opts[:watchdog_frequency] ||= 7
|
422
|
+
opts[:watchdog_start_off] ||= false
|
423
|
+
|
424
|
+
### set redis_cmd to nil if you want to do global
|
425
|
+
### at least redis_path or redis_url and redis_db have to be set if you do global
|
426
|
+
opts[:redis_path] ||= 'redis.sock' # use e.g. /tmp/redis.sock for global stuff. Look it up in your redis config
|
427
|
+
opts[:redis_db] ||= 0
|
428
|
+
### optional redis stuff
|
429
|
+
opts[:redis_url] ||= nil
|
430
|
+
opts[:redis_cmd] ||= 'redis-server --port 0 --unixsocket #redis_path# --unixsocketperm 600 --pidfile #redis_pid# --dir #redis_db_dir# --dbfilename #redis_db_name# --databases 1 --save 900 1 --save 300 10 --save 60 10000 --rdbcompression yes --daemonize yes'
|
431
|
+
opts[:redis_pid] ||= 'redis.pid' # use e.g. /var/run/redis.pid if you do global. Look it up in your redis config
|
432
|
+
opts[:redis_db_name] ||= 'redis.rdb' # use e.g. /var/lib/redis.rdb for global stuff. Look it up in your redis config
|
433
|
+
|
434
|
+
opts[:cblist] = CPEE::redis_connect opts, 'Instantiation'
|
435
|
+
|
416
436
|
Proc.new do
|
437
|
+
parallel do
|
438
|
+
CPEE::Instantiation::watch_services(opts[:watchdog_start_off],opts[:redis_url],File.join(opts[:basepath],opts[:redis_path]),opts[:redis_db])
|
439
|
+
EM.add_periodic_timer(opts[:watchdog_frequency]) do ### start services
|
440
|
+
CPEE::Instantiation::watch_services(opts[:watchdog_start_off],opts[:redis_url],File.join(opts[:basepath],opts[:redis_path]),opts[:redis_db])
|
441
|
+
end
|
442
|
+
end
|
443
|
+
|
417
444
|
on resource do
|
418
445
|
run InstantiateXML, opts[:cpee], true if post 'xmlsimple'
|
419
446
|
on resource 'xml' do
|
@@ -1,3 +1,21 @@
|
|
1
|
+
<!--
|
2
|
+
This file is part of CPEE-INSTANTIATION.
|
3
|
+
|
4
|
+
CPEE-INSTANTIATION is free software: you can redistribute it and/or modify it
|
5
|
+
under the terms of the GNU Lesser General Public License as published by the
|
6
|
+
Free Software Foundation, either version 3 of the License, or (at your
|
7
|
+
option) any later version.
|
8
|
+
|
9
|
+
CPEE-INSTANTIATION is distributed in the hope that it will be useful, but
|
10
|
+
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
11
|
+
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
12
|
+
for more details.
|
13
|
+
|
14
|
+
You should have received a copy of the GNU Lesser General Public License
|
15
|
+
along with CPEE-INSTANTIATION (file LICENSE in the main directory). If not,
|
16
|
+
see <http://www.gnu.org/licenses/>.
|
17
|
+
-->
|
18
|
+
|
1
19
|
<description datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://riddl.org/ns/description/1.0" xmlns:xi="http://www.w3.org/2001/XInclude">
|
2
20
|
<message name="xmlsimple">
|
3
21
|
<parameter name="xml" mimetype="*/xml"/>
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# This file is part of CPEE-INSTANTIATION
|
2
|
+
#
|
3
|
+
# CPEE-INSTANTIATION is free software: you can redistribute it and/or modify it
|
4
|
+
# under the terms of the GNU Lesser General Public License as published by the
|
5
|
+
# Free Software Foundation, either version 3 of the License, or (at your
|
6
|
+
# option) any later version.
|
7
|
+
#
|
8
|
+
# CPEE-INSTANTIATION is distributed in the hope that it will be useful, but WITHOUT
|
9
|
+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
10
|
+
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
|
11
|
+
# details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU Lesser General Public License
|
14
|
+
# along with CPEE-INSTANTIATION (file LICENSE in the main directory). If not, see
|
15
|
+
# <http://www.gnu.org/licenses/>.
|
16
|
+
|
17
|
+
module CPEE
|
18
|
+
module Instantiation
|
19
|
+
|
20
|
+
def self::watch_services(watchdog_start_off,url,path,db)
|
21
|
+
return if watchdog_start_off
|
22
|
+
EM.defer do
|
23
|
+
Dir[File.join(__dir__,'routing','*.rb')].each do |s|
|
24
|
+
s = s.sub(/\.rb$/,'')
|
25
|
+
pid = (File.read(s + '.pid').to_i rescue nil)
|
26
|
+
cmd = if url.nil?
|
27
|
+
"-p \"#{path}\" -d #{db} restart"
|
28
|
+
else
|
29
|
+
"-u \"#{url}\" -d #{db} restart"
|
30
|
+
end
|
31
|
+
if (pid.nil? || !(Process.kill(0, pid) rescue false)) && !File.exist?(s + '.lock')
|
32
|
+
system "#{s}.rb " + cmd + " 1>/dev/null 2>&1"
|
33
|
+
puts "➡ Service #{File.basename(s)} (-v #{cmd}) started ..."
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def self::cleanup_services(watchdog_start_off)
|
40
|
+
return if watchdog_start_off
|
41
|
+
Dir[File.join(__dir__,'routing','*.rb')].each do |s|
|
42
|
+
s = s.sub(/\.rb$/,'')
|
43
|
+
pid = (File.read(s + '.pid').to_i rescue nil)
|
44
|
+
if !pid.nil? || (Process.kill(0, pid) rescue false)
|
45
|
+
system "#{s}.rb stop 1>/dev/null 2>&1"
|
46
|
+
puts "➡ Service #{File.basename(s,'.rb')} stopped ..."
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
data/server/instantiation
CHANGED
@@ -1,4 +1,21 @@
|
|
1
1
|
#!/usr/bin/ruby
|
2
|
+
#
|
3
|
+
# This file is part of CPEE-INSTANTIATION.
|
4
|
+
#
|
5
|
+
# CPEE-INSTANTIATION is free software: you can redistribute it and/or modify it
|
6
|
+
# under the terms of the GNU General Public License as published by the Free
|
7
|
+
# Software Foundation, either version 3 of the License, or (at your option) any
|
8
|
+
# later version.
|
9
|
+
#
|
10
|
+
# CPEE-INSTANTIATION is distributed in the hope that it will be useful, but
|
11
|
+
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
12
|
+
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
13
|
+
# more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU General Public License along with
|
16
|
+
# CPEE-INSTANTIATION (file LICENSE in the main directory). If not, see
|
17
|
+
# <http://www.gnu.org/licenses/>.
|
18
|
+
|
2
19
|
require 'rubygems'
|
3
20
|
require 'cpee-instantiation/instantiation'
|
4
21
|
|
data/tools/cpee-instantiation
CHANGED
@@ -1,4 +1,21 @@
|
|
1
1
|
#!/usr/bin/ruby
|
2
|
+
#
|
3
|
+
# This file is part of CPEE-INSTANTIATION.
|
4
|
+
#
|
5
|
+
# CPEE-INSTANTIATION is free software: you can redistribute it and/or modify it
|
6
|
+
# under the terms of the GNU General Public License as published by the Free
|
7
|
+
# Software Foundation, either version 3 of the License, or (at your option) any
|
8
|
+
# later version.
|
9
|
+
#
|
10
|
+
# CPEE-INSTANTIATION is distributed in the hope that it will be useful, but
|
11
|
+
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
12
|
+
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
13
|
+
# more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU General Public License along with
|
16
|
+
# CPEE-INSTANTIATION (file LICENSE in the main directory). If not, see
|
17
|
+
# <http://www.gnu.org/licenses/>.
|
18
|
+
|
2
19
|
curpath = __dir__
|
3
20
|
require 'rubygems'
|
4
21
|
require 'optparse'
|
@@ -26,24 +43,28 @@ end
|
|
26
43
|
ARGV.options { |opt|
|
27
44
|
opt.summary_indent = ' ' * 2
|
28
45
|
opt.summary_width = 15
|
29
|
-
opt.banner = "Usage:\n#{opt.summary_indent}#{File.basename($0)} [DIR
|
46
|
+
opt.banner = "Usage:\n#{opt.summary_indent}#{File.basename($0)} [options] new DIR\n"
|
30
47
|
opt.on("Options:")
|
31
48
|
opt.on("--help", "-h", "This text") { puts opt; exit }
|
32
49
|
opt.on("")
|
33
|
-
opt.on(wrap("[DIR]
|
50
|
+
opt.on(wrap("[new DIR] scaffolds a sample instantiation service. Post a testset to a model to keep going in one operation."))
|
34
51
|
opt.parse!
|
35
52
|
}
|
36
|
-
if (ARGV.length
|
53
|
+
if (ARGV.length < 2) ||
|
54
|
+
(ARGV.length == 2 && !(%w(new).include?(ARGV[0]))) ||
|
55
|
+
(ARGV.length > 2)
|
37
56
|
puts ARGV.options
|
38
57
|
exit
|
39
|
-
else
|
40
|
-
p1 = ARGV[0]
|
41
58
|
end
|
59
|
+
command = ARGV[0]
|
60
|
+
p1 = ARGV[1]
|
42
61
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
62
|
+
if command == 'new'
|
63
|
+
insta = "#{curpath}/../server/"
|
64
|
+
if !File.exist?(p1)
|
65
|
+
FileUtils.cp_r(insta,p1)
|
66
|
+
else
|
67
|
+
FileUtils.cp_r(Dir.glob(File.join(insta,'*')).delete_if{|e| e =~ /\.conf/ },p1,remove_destination: true)
|
68
|
+
puts 'Directory already exists, updating ...'
|
69
|
+
end
|
49
70
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cpee-instantiation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.22
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juergen eTM Mangler
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: tools
|
11
11
|
cert_chain: []
|
12
|
-
date: 2024-
|
12
|
+
date: 2024-07-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: riddl
|
@@ -88,6 +88,7 @@ files:
|
|
88
88
|
- cpee-instantiation.gemspec
|
89
89
|
- lib/cpee-instantiation/instantiation.rb
|
90
90
|
- lib/cpee-instantiation/instantiation.xml
|
91
|
+
- lib/cpee-instantiation/utils.rb
|
91
92
|
- server/instantiation
|
92
93
|
- tools/cpee-instantiation
|
93
94
|
homepage: http://cpee.org/
|