cpee 1.5.2 → 1.5.8
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/cockpit/index.html +1 -1
- data/cockpit/js/instance.js +5 -5
- data/cockpit/themes/default/rngs/call.rng +1 -37
- data/cockpit/themes/default/rngs/callmanipulate.rng +1 -37
- data/cockpit/themes/preset/rngs/call.rng +1 -1
- data/cockpit/themes/preset/rngs/callmanipulate.rng +1 -1
- data/cockpit/themes/preset/rngs/scripts.rng +24 -0
- data/cockpit/themes/preset/theme.js +1 -1
- data/cockpit/track.html +2 -2
- data/cpee.gemspec +2 -2
- data/lib/cpee/controller.rb +8 -1
- data/server/handlerwrappers/default.rb +83 -57
- data/server/resources/properties.schema.active +7 -0
- data/server/resources/properties.schema.finished +7 -0
- data/server/resources/properties.schema.inactive +7 -3
- data/tools/cpee +22 -3
- metadata +5 -6
- data/cockpit/themes/preset/rngs/finalize.rng +0 -1
- data/cockpit/themes/preset/rngs/update.rng +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 34b1f3d471e5c92ca9881d9d87b40e64a2174f124e1798b0f7a0dbd3a0735ead
|
4
|
+
data.tar.gz: aee9d4bd111c3358f93a0131fb832700909539c1bbbea3368c07468de1ae3369
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d4fb94c2c888fbd119ef01740df796346d1ab861ceedc9ba0a2164af557472fec49edd88f9b30f25484ab7997cafd5b54ae753e8d54061684881e338f2f49c1
|
7
|
+
data.tar.gz: bca86531f532f2f05c40d24d50fae035d4d569a798a9e418de6febb2364bc8255e1d9ced729ffbc226e18911f9d6224821529bc3ebe44fca6dc614cd7c9192cc
|
data/cockpit/index.html
CHANGED
@@ -188,7 +188,7 @@
|
|
188
188
|
<button name="state_stop" title='stop'>Stop</button>
|
189
189
|
<span id="state_extended">
|
190
190
|
<span> / </span>
|
191
|
-
<button name="
|
191
|
+
<button name="state_replay" title='replay'>Replay</button>
|
192
192
|
<span> / </span>
|
193
193
|
<button name="state_abandon" title='abandon'>Abandon</button>
|
194
194
|
</span>
|
data/cockpit/js/instance.js
CHANGED
@@ -78,7 +78,7 @@ function cockpit() { //{{{
|
|
78
78
|
$("button[name=savesvg]").click(function(){ save_svg(); });
|
79
79
|
$("button[name=state_start]").click(function(){ $(this).attr("disabled","disabled");start_instance(); });
|
80
80
|
$("button[name=state_stop]").click(function(){ $(this).attr("disabled","disabled");stop_instance(); });
|
81
|
-
$("button[name=
|
81
|
+
$("button[name=state_replay]").click(function(){ $(this).attr("disabled","disabled");replay_instance(); });
|
82
82
|
$("button[name=state_abandon]").click(function(){ aba_instance(); });
|
83
83
|
$("input[name=votecontinue]").click(check_subscription);
|
84
84
|
$("input[name=testsetfile]").change(load_testsetfile_after);
|
@@ -624,13 +624,13 @@ function monitor_instance_state_change(notification) { //{{{
|
|
624
624
|
$('#state_extended').show();
|
625
625
|
$("button[name=state_start]").show();
|
626
626
|
$("button[name=state_stop]").hide();
|
627
|
-
$("button[name=
|
627
|
+
$("button[name=state_replay]").show();
|
628
628
|
$("button[name=state_abandon]").show();
|
629
629
|
} else if (notification == "running") {
|
630
630
|
$('#state_extended').hide();
|
631
631
|
$("button[name=state_start]").hide();
|
632
632
|
$("button[name=state_stop]").show();
|
633
|
-
$("button[name=
|
633
|
+
$("button[name=state_replay]").hide();
|
634
634
|
$("button[name=state_abandon]").hide();
|
635
635
|
}
|
636
636
|
|
@@ -699,12 +699,12 @@ function start_instance() {// {{{
|
|
699
699
|
error: report_failure
|
700
700
|
});
|
701
701
|
}// }}}
|
702
|
-
function
|
702
|
+
function replay_instance() {// {{{
|
703
703
|
var url = $('body').attr('current-instance');
|
704
704
|
$.ajax({
|
705
705
|
type: "PUT",
|
706
706
|
url: url + "/properties/values/state",
|
707
|
-
data: ({value: "
|
707
|
+
data: ({value: "replaying"}),
|
708
708
|
error: report_failure
|
709
709
|
});
|
710
710
|
}// }}}
|
@@ -19,7 +19,7 @@
|
|
19
19
|
</element>
|
20
20
|
<element name="arguments" rngui:header="Arguments">
|
21
21
|
<zeroOrMore rngui:label="Create Argument Pair">
|
22
|
-
<element rngui:label='Name'>
|
22
|
+
<element rngui:label='Name' rngui:labeltype='xml'>
|
23
23
|
<anyName/>
|
24
24
|
<data type="string" rngui:label="Value"/>
|
25
25
|
</element>
|
@@ -40,9 +40,6 @@
|
|
40
40
|
<element name="visualizer_url" rngui:label="Visualizer Url">
|
41
41
|
<data type="string" rngui:label="Url"/>
|
42
42
|
</element>
|
43
|
-
<element name="visualizer_config" rngui:label="Visualizer Config">
|
44
|
-
<data type="string" rngui:label="Url"/>
|
45
|
-
</element>
|
46
43
|
<element name="visualizer_params" rngui:header="Visualizer Arguments">
|
47
44
|
<zeroOrMore rngui:label="Create Argument Pair">
|
48
45
|
<element rngui:label='Name'>
|
@@ -54,21 +51,6 @@
|
|
54
51
|
</element>
|
55
52
|
</zeroOrMore>
|
56
53
|
</element>
|
57
|
-
<element name="aggregators" rngui:header="Aggregators">
|
58
|
-
<zeroOrMore rngui:label="Add Aggregator">
|
59
|
-
<element name="aggregator">
|
60
|
-
<element name="name" rngui:label="Label">
|
61
|
-
<data type="string" rngui:label="Label"/>
|
62
|
-
</element>
|
63
|
-
<element name="aggregator_url" rngui:label="Aggregator Url">
|
64
|
-
<data type="string" rngui:label="Url"/>
|
65
|
-
</element>
|
66
|
-
<element name="aggregator_arg" rngui:label="Aggregator Argument">
|
67
|
-
<data type="string" rngui:label="Path"/>
|
68
|
-
</element>
|
69
|
-
</element>
|
70
|
-
</zeroOrMore>
|
71
|
-
</element>
|
72
54
|
</element>
|
73
55
|
<element name="_timing" rngui:header="Timing">
|
74
56
|
<element name="_timing_min" rngui:label='Min in min'>
|
@@ -81,24 +63,6 @@
|
|
81
63
|
<data type='float' rngui:label='Minutes'/>
|
82
64
|
</element>
|
83
65
|
</element>
|
84
|
-
<element name="_cost" rngui:header="Costs">
|
85
|
-
<zeroOrMore rngui:label="Create Cost Factor">
|
86
|
-
<element name='_cost_factor'>
|
87
|
-
<element name="name" rngui:label="Label">
|
88
|
-
<data type="string" rngui:label="Label"/>
|
89
|
-
</element>
|
90
|
-
<element name="target" rngui:label="Target Value">
|
91
|
-
<data type="string" rngui:label="Value"/>
|
92
|
-
</element>
|
93
|
-
<element name="vfunc" rngui:label="Violation Function">
|
94
|
-
<data type="string" rngui:label="Url"/>
|
95
|
-
</element>
|
96
|
-
<element name="vcost" rngui:label="Violation Cost">
|
97
|
-
<data type="string" rngui:label="Value"/>
|
98
|
-
</element>
|
99
|
-
</element>
|
100
|
-
</zeroOrMore>
|
101
|
-
</element>
|
102
66
|
<element name="_notes" rngui:header="Notes">
|
103
67
|
<element name="_notes_general" rngui:label='General'>
|
104
68
|
<text rngui:wrap='true' rngui:label='Notes'/>
|
@@ -19,7 +19,7 @@
|
|
19
19
|
</element>
|
20
20
|
<element name="arguments" rngui:header="Arguments">
|
21
21
|
<zeroOrMore rngui:label="Create Argument Pair">
|
22
|
-
<element rngui:label='Name'>
|
22
|
+
<element rngui:label='Name' rngui:labeltype='xml'>
|
23
23
|
<anyName/>
|
24
24
|
<data type="string" rngui:label="Value"/>
|
25
25
|
</element>
|
@@ -40,9 +40,6 @@
|
|
40
40
|
<element name="visualizer_url" rngui:label="Visualizer Url">
|
41
41
|
<data type="string" rngui:label="Url"/>
|
42
42
|
</element>
|
43
|
-
<element name="visualizer_config" rngui:label="Visualizer Config">
|
44
|
-
<data type="string" rngui:label="Url"/>
|
45
|
-
</element>
|
46
43
|
<element name="visualizer_params" rngui:header="Visualizer Arguments">
|
47
44
|
<zeroOrMore rngui:label="Create Argument Pair">
|
48
45
|
<element rngui:label='Name'>
|
@@ -54,21 +51,6 @@
|
|
54
51
|
</element>
|
55
52
|
</zeroOrMore>
|
56
53
|
</element>
|
57
|
-
<element name="aggregators" rngui:header="Aggregators">
|
58
|
-
<zeroOrMore rngui:label="Add Aggregator">
|
59
|
-
<element name="aggregator">
|
60
|
-
<element name="name" rngui:label="Label">
|
61
|
-
<data type="string" rngui:label="Label"/>
|
62
|
-
</element>
|
63
|
-
<element name="aggregator_url" rngui:label="Aggregator Url">
|
64
|
-
<data type="string" rngui:label="Url"/>
|
65
|
-
</element>
|
66
|
-
<element name="aggregator_arg" rngui:label="Aggregator Argument">
|
67
|
-
<data type="string" rngui:label="Path"/>
|
68
|
-
</element>
|
69
|
-
</element>
|
70
|
-
</zeroOrMore>
|
71
|
-
</element>
|
72
54
|
</element>
|
73
55
|
<element name="finalize" rngui:header="Finalize" rngui:label="Code">
|
74
56
|
<attribute name="output" rngui:label="Access Variable" rngui:default="result">
|
@@ -93,24 +75,6 @@
|
|
93
75
|
<data type='float' rngui:label='Minutes'/>
|
94
76
|
</element>
|
95
77
|
</element>
|
96
|
-
<element name="_cost" rngui:header="Costs">
|
97
|
-
<zeroOrMore rngui:label="Create Cost Factor">
|
98
|
-
<element name='_cost_factor'>
|
99
|
-
<element name="name" rngui:label="Label">
|
100
|
-
<data type="string" rngui:label="Label"/>
|
101
|
-
</element>
|
102
|
-
<element name="target" rngui:label="Target Value">
|
103
|
-
<data type="string" rngui:label="Value"/>
|
104
|
-
</element>
|
105
|
-
<element name="vfunc" rngui:label="Violation Function">
|
106
|
-
<data type="string" rngui:label="Url"/>
|
107
|
-
</element>
|
108
|
-
<element name="vcost" rngui:label="Violation Cost">
|
109
|
-
<data type="string" rngui:label="Value"/>
|
110
|
-
</element>
|
111
|
-
</element>
|
112
|
-
</zeroOrMore>
|
113
|
-
</element>
|
114
78
|
<element name="_notes" rngui:header="Notes">
|
115
79
|
<element name="_notes_general" rngui:label='General'>
|
116
80
|
<text rngui:wrap='true' rngui:label='Notes'/>
|
@@ -19,7 +19,7 @@
|
|
19
19
|
</element>
|
20
20
|
<element name="arguments" rngui:header="Arguments">
|
21
21
|
<zeroOrMore rngui:label="Create Argument Pair">
|
22
|
-
<element rngui:label='Name'>
|
22
|
+
<element rngui:label='Name' rngui:labeltype='xml'>
|
23
23
|
<anyName/>
|
24
24
|
<data type="string" rngui:label="Value"/>
|
25
25
|
</element>
|
@@ -19,7 +19,7 @@
|
|
19
19
|
</element>
|
20
20
|
<element name="arguments" rngui:header="Arguments">
|
21
21
|
<zeroOrMore rngui:label="Create Argument Pair">
|
22
|
-
<element rngui:label='Name'>
|
22
|
+
<element rngui:label='Name' rngui:labeltype='xml'>
|
23
23
|
<anyName/>
|
24
24
|
<data type="string" rngui:label="Value"/>
|
25
25
|
</element>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<element rngui:version="1.2" name="code" rngui:header="Implementation" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0" xmlns:rngui="http://rngui.org">
|
2
|
+
<element name="prepare" rngui:header="Prepare" rngui:label="Code" rngui:fold='closed_conditional'>
|
3
|
+
<text rngui:label='Script that is executed, before a service call'/>
|
4
|
+
</element>
|
5
|
+
<element name="finalize" rngui:header="Finalize" rngui:label="Code" rngui:fold='closed_conditional'>
|
6
|
+
<attribute name="output" rngui:label="Access Variable" rngui:default="result">
|
7
|
+
<data type="string" rngui:readonly="true"/>
|
8
|
+
</attribute>
|
9
|
+
<text rngui:label='Script that is executed, when a service returns data'/>
|
10
|
+
</element>
|
11
|
+
<element name="update" rngui:header="Update" rngui:label="Code" rngui:fold='closed_conditional'>
|
12
|
+
<attribute name="output" rngui:label="Access Variable" rngui:default="result">
|
13
|
+
<data type="string" rngui:readonly="true"/>
|
14
|
+
</attribute>
|
15
|
+
<text rngui:label='Script that is executed, when a service sends intermediate data'/>
|
16
|
+
</element>
|
17
|
+
<element name="rescue" rngui:header="Rescue" rngui:label="Code" rngui:fold='closed_conditional'>
|
18
|
+
<attribute name="output" rngui:label="Access Variable" rngui:default="result">
|
19
|
+
<data type="string" rngui:readonly="true"/>
|
20
|
+
</attribute>
|
21
|
+
<text rngui:label='Script that is executed, if a service call fails'/>
|
22
|
+
</element>
|
23
|
+
</element>
|
24
|
+
|
@@ -1184,6 +1184,6 @@ function WFAdaptorManifestation(adaptor) {
|
|
1184
1184
|
}//}}}
|
1185
1185
|
}; /*}}}*/
|
1186
1186
|
this.elements.scripts = { /*{{{*/
|
1187
|
-
'description': [self.adaptor.theme_dir + 'rngs/
|
1187
|
+
'description': [self.adaptor.theme_dir + 'rngs/scripts.rng']
|
1188
1188
|
}; /*}}}*/
|
1189
1189
|
}
|
data/cockpit/track.html
CHANGED
@@ -83,11 +83,11 @@
|
|
83
83
|
</button>
|
84
84
|
<span id="state_extended">
|
85
85
|
<span> / </span>
|
86
|
-
<button name="
|
86
|
+
<button name="state_replay" title='replay'>
|
87
87
|
<svg viewBox="0 -1.5 7 12" width="10" height="16">
|
88
88
|
<path
|
89
89
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
90
|
-
d="
|
90
|
+
d="m -0.24999978,8.9999993 c 0,-2.7488167 0,-5.4976332 0,-8.24644997 C 1.1183278,0.76955385 2.4884861,0.71666052 3.8555376,0.79065567 4.5083287,0.83810218 5.2238942,1.0790874 5.5755039,1.7307256 6.1661398,2.7080902 6.0299484,4.2180754 5.1108772,4.9019222 4.7622397,5.1617467 4.3480204,5.2956156 3.9336064,5.3605366 4.9287868,5.9394132 5.4254071,7.0996814 6.0167729,8.0858876 6.1549588,8.3769029 6.4657247,8.7723933 6.5,8.9999999 c -0.5944185,0 -1.1888371,0 -1.7832559,0 C 4.0758679,7.9893475 3.4946311,6.9294648 2.7923497,5.9678488 2.4230355,5.5319748 1.8508715,5.5458842 1.3513114,5.5576027 c -0.1507526,-0.00412 -0.044576,0.272902 -0.076255,0.3990664 0,1.0144436 0,2.028887 0,3.0433307 -0.50835205,-3e-7 -1.01670555,8e-7 -1.52505618,-5e-7 z M 1.2750578,4.2411336 C 2.111059,4.2189781 2.9581852,4.3060525 3.7849326,4.1387394 4.4863715,3.8915585 4.5732952,2.6432813 3.9026802,2.2941453 3.5098807,2.068434 3.050719,2.1857044 2.6267379,2.1489138 c -0.4505578,-0.00242 -0.90112,0.00147 -1.3516801,-3.456e-4 0,0.6975176 0,1.3950347 0,2.0925522 z"
|
91
91
|
</svg>
|
92
92
|
</button>
|
93
93
|
<span> / </span>
|
data/cpee.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "cpee"
|
3
|
-
s.version = "1.5.
|
3
|
+
s.version = "1.5.8"
|
4
4
|
s.platform = Gem::Platform::RUBY
|
5
5
|
s.license = "LGPL-3.0"
|
6
6
|
s.summary = "Preliminary release of cloud process execution engine (cpee). If you just need workflow execution, without a rest/xmpp service exposing it, then use WEEL"
|
@@ -22,7 +22,7 @@ Gem::Specification.new do |s|
|
|
22
22
|
s.homepage = 'http://cpee.org/'
|
23
23
|
|
24
24
|
s.add_runtime_dependency 'riddl', '~> 0.99'
|
25
|
-
s.add_runtime_dependency 'weel', '~> 1.99', '>= 1.99.
|
25
|
+
s.add_runtime_dependency 'weel', '~> 1.99', '>= 1.99.78'
|
26
26
|
s.add_runtime_dependency 'savon', '~> 2'
|
27
27
|
s.add_runtime_dependency 'highline', '~> 1.6'
|
28
28
|
s.add_runtime_dependency 'json', '~>2.1'
|
data/lib/cpee/controller.rb
CHANGED
@@ -167,6 +167,11 @@ module CPEE
|
|
167
167
|
@thread = @instance.sim
|
168
168
|
end # }}}
|
169
169
|
|
170
|
+
def replay # {{{
|
171
|
+
@thread.join if !@thread.nil? && @thread.alive?
|
172
|
+
@thread = @instance.replay
|
173
|
+
end # }}}
|
174
|
+
|
170
175
|
def start # {{{
|
171
176
|
@thread.join if !@thread.nil? && @thread.alive?
|
172
177
|
unless @positions.empty?
|
@@ -244,7 +249,7 @@ module CPEE
|
|
244
249
|
def serialize_state! # {{{
|
245
250
|
@properties.activate_schema(:finished) if @instance.state == :finished || @instance.state == :abandoned
|
246
251
|
@properties.activate_schema(:inactive) if @instance.state == :stopped || @instance.state == :ready
|
247
|
-
@properties.activate_schema(:active) if @instance.state == :running || @instance.state == :simulating
|
252
|
+
@properties.activate_schema(:active) if @instance.state == :running || @instance.state == :simulating || @instance.state == :replaying
|
248
253
|
if [:finished, :stopped, :ready, :abandoned].include?(@instance.state)
|
249
254
|
state_change! @instance.state
|
250
255
|
end
|
@@ -376,6 +381,8 @@ module CPEE
|
|
376
381
|
start
|
377
382
|
when 'simulating'
|
378
383
|
sim
|
384
|
+
when 'replaying'
|
385
|
+
replay
|
379
386
|
when 'ready'
|
380
387
|
@instance.state_signal
|
381
388
|
when 'abandoned'
|
@@ -42,77 +42,100 @@ class DefaultHandlerWrapper < WEEL::HandlerWrapperBase
|
|
42
42
|
@handler_position = position
|
43
43
|
@handler_passthrough = nil
|
44
44
|
@handler_returnValue = nil
|
45
|
+
@handler_returnOptions = nil
|
45
46
|
@label = ''
|
46
47
|
end # }}}
|
47
48
|
|
48
|
-
def prepare(readonly, endpoints, parameters)
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
49
|
+
def prepare(readonly, endpoints, parameters, replay=false) #{{{
|
50
|
+
if replay
|
51
|
+
@handler_endpoint = @controller.attributes[:replayer]
|
52
|
+
else
|
53
|
+
@handler_endpoint = endpoints.is_a?(Array) ? endpoints.map{ |ep| readonly.endpoints[ep] }.compact : readonly.endpoints[endpoints]
|
54
|
+
end
|
55
|
+
params = parameters.dup
|
56
|
+
params[:arguments] = params[:arguments].dup if params[:arguments]
|
57
|
+
params[:arguments]&.map! do |ele|
|
58
|
+
t = ele.dup
|
59
|
+
if t.value.is_a?(Proc)
|
60
|
+
t.value = readonly.instance_exec &t.value
|
53
61
|
end
|
62
|
+
t
|
54
63
|
end
|
55
|
-
|
56
|
-
end
|
64
|
+
params
|
65
|
+
end #}}}
|
57
66
|
|
58
|
-
def
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
params << Riddl::
|
67
|
+
def proto_curl(parameters) #{{{
|
68
|
+
params = []
|
69
|
+
callback = Digest::MD5.hexdigest(Kernel::rand().to_s)
|
70
|
+
(parameters[:arguments] || []).each do |s|
|
71
|
+
if s.respond_to?(:mimetype)
|
72
|
+
params << Riddl::Parameter::Complex.new(s.name.to_s,v.mimetype,v.value)
|
73
|
+
else
|
74
|
+
if s.name.to_s =~ /^__Q_/
|
75
|
+
params << Riddl::Parameter::Simple.new(s.name.to_s.sub(/^__Q_/,''),CPEE::ValueHelper::generate(s.value),:query)
|
76
|
+
elsif s.name.to_s =~ /^__B_/
|
77
|
+
params << Riddl::Parameter::Simple.new(s.name.to_s.sub(/^__B_/,''),CPEE::ValueHelper::generate(s.value),:body)
|
78
|
+
elsif s.name.to_s =~ /^__H_/
|
79
|
+
params << Riddl::Header.new(s.name.to_s.sub(/^__H_/,''),CPEE::ValueHelper::generate(s.value))
|
80
|
+
elsif s.name.to_s =~ /^__C_/
|
81
|
+
params << Riddl::Parameter::Complex.new(s.name.to_s.sub(/^__C_/,''),*CPEE::ValueHelper::generate(s.value).split(';',2))
|
71
82
|
else
|
72
|
-
|
73
|
-
params << Riddl::Parameter::Simple.new(s.name.to_s.chop.chop,CPEE::ValueHelper::generate(s.value),:query)
|
74
|
-
else
|
75
|
-
params << Riddl::Parameter::Simple.new(s.name.to_s,CPEE::ValueHelper::generate(s.value))
|
76
|
-
end
|
83
|
+
params << Riddl::Parameter::Simple.new(s.name.to_s,CPEE::ValueHelper::generate(s.value))
|
77
84
|
end
|
78
85
|
end
|
86
|
+
end
|
79
87
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
88
|
+
params << Riddl::Header.new("CPEE-BASE",@controller.base_url)
|
89
|
+
params << Riddl::Header.new("CPEE-INSTANCE",@controller.instance)
|
90
|
+
params << Riddl::Header.new("CPEE-INSTANCE-URL",@controller.instance_url)
|
91
|
+
params << Riddl::Header.new("CPEE-INSTANCE-UUID",@controller.uuid)
|
92
|
+
params << Riddl::Header.new("CPEE-CALLBACK",@controller.instance_url + '/callbacks/' + callback)
|
93
|
+
params << Riddl::Header.new("CPEE-CALLBACK-ID",callback)
|
94
|
+
params << Riddl::Header.new("CPEE-ACTIVITY",@handler_position)
|
95
|
+
params << Riddl::Header.new("CPEE-LABEL",@label||'')
|
96
|
+
params << Riddl::Header.new("CPEE-REPLAY",@controller.attributes['replayer_args'])
|
97
|
+
@controller.attributes.each do |key,value|
|
98
|
+
params << Riddl::Header.new("CPEE-ATTR-#{key.to_s.gsub(/_/,'-')}",value)
|
99
|
+
end
|
91
100
|
|
92
|
-
|
93
|
-
|
101
|
+
tendpoint = @handler_endpoint.sub(/^http(s)?-(get|put|post|delete):/,'http\\1:')
|
102
|
+
type = $2 || parameters[:method] || 'post'
|
94
103
|
|
95
|
-
|
104
|
+
client = Riddl::Client.new(tendpoint)
|
96
105
|
|
97
|
-
|
98
|
-
|
106
|
+
@controller.callbacks[callback] = CPEE::Callback.new("callback activity: #{@handler_position}",self,:callback,nil,nil,:http)
|
107
|
+
@handler_passthrough = callback
|
99
108
|
|
100
|
-
|
101
|
-
|
102
|
-
|
109
|
+
status, result, headers = client.request type => params
|
110
|
+
if status < 200 || status >= 300
|
111
|
+
headers['CPEE_SALVAGE'] = true
|
112
|
+
c = result[0]&.value
|
113
|
+
c = c.read if c.respond_to? :read
|
114
|
+
callback([ Riddl::Parameter::Complex.new('error','application/json',StringIO.new(JSON::generate({ 'status' => status, 'error' => c }))) ], headers)
|
115
|
+
else
|
116
|
+
if headers['CPEE_INSTANTIATION']
|
117
|
+
@controller.notify("task/instantiation", :instance => @controller.instance, :label => @label, :instance_name => @controller.info, :instance_uuid => @controller.uuid, :activity => @handler_position, :endpoint => @handler_endpoint, :received => CPEE::ValueHelper.parse(headers['CPEE_INSTANTIATION']), :timestamp => Time.now.strftime("%Y-%m-%dT%H:%M:%S.%L%:z"), :attributes => @controller.attributes_translated)
|
118
|
+
end
|
119
|
+
if headers['CPEE_CALLBACK'] && headers['CPEE_CALLBACK'] == 'true' && result.any?
|
120
|
+
headers['CPEE_UPDATE'] = true
|
121
|
+
callback result, headers
|
122
|
+
elsif headers['CPEE_CALLBACK'] && headers['CPEE_CALLBACK'] == 'true' && result.empty?
|
123
|
+
# do nothing, later on things will happend
|
103
124
|
else
|
104
|
-
|
105
|
-
@controller.notify("task/instantiation", :instance => @controller.instance, :label => @label, :instance_name => @controller.info, :instance_uuid => @controller.uuid, :activity => @handler_position, :endpoint => @handler_endpoint, :received => CPEE::ValueHelper.parse(headers['CPEE_INSTANTIATION']), :timestamp => Time.now.strftime("%Y-%m-%dT%H:%M:%S.%L%:z"), :attributes => @controller.attributes_translated)
|
106
|
-
end
|
107
|
-
if headers['CPEE_CALLBACK'] && headers['CPEE_CALLBACK'] == 'true' && result.any?
|
108
|
-
headers['CPEE_UPDATE'] = true
|
109
|
-
callback result, headers
|
110
|
-
elsif headers['CPEE_CALLBACK'] && headers['CPEE_CALLBACK'] == 'true' && result.empty?
|
111
|
-
# do nothing, later on things will happend
|
112
|
-
else
|
113
|
-
callback result
|
114
|
-
end
|
125
|
+
callback result, headers
|
115
126
|
end
|
127
|
+
end
|
128
|
+
end #}}}
|
129
|
+
|
130
|
+
def activity_handle(passthrough, parameters) # {{{
|
131
|
+
raise "Wrong endpoint" if @handler_endpoint.nil? || @handler_endpoint.empty?
|
132
|
+
@label = parameters[:label]
|
133
|
+
@sensors = parameters[:sensors]
|
134
|
+
@aggregators = parameters[:aggregators]
|
135
|
+
@costs = parameters[:costs]
|
136
|
+
@controller.notify("activity/calling", :instance => @controller.instance, :instance_uuid => @controller.uuid, :label => @label, :instance_name => @controller.info, :activity => @handler_position, :passthrough => passthrough, :endpoint => @handler_endpoint, :parameters => parameters, :timestamp => Time.now.strftime("%Y-%m-%dT%H:%M:%S.%L%:z"), :attributes => @controller.attributes_translated)
|
137
|
+
if passthrough.to_s.empty?
|
138
|
+
proto_curl parameters
|
116
139
|
else
|
117
140
|
@controller.callbacks[passthrough] = CPEE::Callback.new("callback activity: #{@handler_position}",self,:callback,nil,nil,:http)
|
118
141
|
@handler_passthrough = passthrough
|
@@ -125,6 +148,9 @@ class DefaultHandlerWrapper < WEEL::HandlerWrapperBase
|
|
125
148
|
def activity_result_value # {{{
|
126
149
|
@handler_returnValue
|
127
150
|
end # }}}
|
151
|
+
def activity_result_options # {{{
|
152
|
+
@handler_returnOptions
|
153
|
+
end # }}}
|
128
154
|
|
129
155
|
def activity_stop # {{{
|
130
156
|
unless @handler_passthrough.nil?
|
@@ -230,15 +256,15 @@ class DefaultHandlerWrapper < WEEL::HandlerWrapperBase
|
|
230
256
|
def callback(result=nil,options={})
|
231
257
|
@controller.notify("activity/receiving", :instance => @controller.instance, :label => @label, :instance_name => @controller.info, :instance_uuid => @controller.uuid, :activity => @handler_position, :endpoint => @handler_endpoint, :received => structurize_result(result), :timestamp => Time.now.strftime("%Y-%m-%dT%H:%M:%S.%L%:z"), :attributes => @controller.attributes_translated, :sensors => @sensors, :aggregators => @aggregators, :costs => @costs)
|
232
258
|
result = simplify_result(result)
|
259
|
+
@handler_returnValue = result
|
260
|
+
@handler_returnOptions = options
|
233
261
|
if options['CPEE_UPDATE']
|
234
|
-
@handler_returnValue = result
|
235
262
|
if options['CPEE_UPDATE_STATUS']
|
236
263
|
@controller.notify("activity/status", :instance => @controller.instance, :instance_uuid => @controller.uuid, :activity => @handler_position, :endpoint => @handler_endpoint, :status => options['CPEE_UPDATE_STATUS'], :timestamp => Time.now.strftime("%Y-%m-%dT%H:%M:%S.%L%:z"), :attributes => @controller.attributes_translated)
|
237
264
|
end
|
238
265
|
@handler_continue.continue WEEL::Signal::Again
|
239
266
|
else
|
240
267
|
@controller.callbacks.delete(@handler_passthrough)
|
241
|
-
@handler_returnValue = result
|
242
268
|
@handler_passthrough = nil
|
243
269
|
if options['CPEE_SALVAGE']
|
244
270
|
@handler_continue.continue WEEL::Signal::Salvage
|
@@ -71,6 +71,7 @@
|
|
71
71
|
<running putable="true"/>
|
72
72
|
<ready putable="true"/>
|
73
73
|
<simulating putable="true"/>
|
74
|
+
<replaying putable="true"/>
|
74
75
|
<abandoned putable="true"/>
|
75
76
|
</ready>
|
76
77
|
<running>
|
@@ -82,6 +83,11 @@
|
|
82
83
|
<ready putable="false"/>
|
83
84
|
<stopped putable="false"/>
|
84
85
|
</simulating>
|
86
|
+
<replaying>
|
87
|
+
<stopping putable="true"/>
|
88
|
+
<finishing putable="false"/>
|
89
|
+
<finished putable="false"/>
|
90
|
+
</replaying>
|
85
91
|
<stopping>
|
86
92
|
<stopped putable="false"/>
|
87
93
|
</stopping>
|
@@ -89,6 +95,7 @@
|
|
89
95
|
<abandoned putable="true"/>
|
90
96
|
<stopped putable="true"/>
|
91
97
|
<running putable="true"/>
|
98
|
+
<replaying putable="true"/>
|
92
99
|
<simulating putable="true"/>
|
93
100
|
</stopped>
|
94
101
|
<abandoned/>
|
@@ -71,6 +71,7 @@
|
|
71
71
|
<ready putable="true"/>
|
72
72
|
<running putable="true"/>
|
73
73
|
<simulating putable="true"/>
|
74
|
+
<replaying putable="true"/>
|
74
75
|
<abandoned putable="true"/>
|
75
76
|
</ready>
|
76
77
|
<running>
|
@@ -82,6 +83,11 @@
|
|
82
83
|
<ready putable="false"/>
|
83
84
|
<stopped putable="false"/>
|
84
85
|
</simulating>
|
86
|
+
<replaying>
|
87
|
+
<stopping putable="true"/>
|
88
|
+
<finishing putable="false"/>
|
89
|
+
<finished putable="false"/>
|
90
|
+
</replaying>
|
85
91
|
<stopping>
|
86
92
|
<stopped putable="false"/>
|
87
93
|
</stopping>
|
@@ -90,6 +96,7 @@
|
|
90
96
|
<stopped putable="true"/>
|
91
97
|
<running putable="true"/>
|
92
98
|
<simulating putable="true"/>
|
99
|
+
<replaying putable="true"/>
|
93
100
|
</stopped>
|
94
101
|
<abandoned/>
|
95
102
|
<finished/>
|
@@ -71,6 +71,7 @@
|
|
71
71
|
<running putable="true"/>
|
72
72
|
<ready putable="true"/>
|
73
73
|
<simulating putable="true"/>
|
74
|
+
<replaying putable="true"/>
|
74
75
|
<abandoned putable="true"/>
|
75
76
|
</ready>
|
76
77
|
<running>
|
@@ -82,14 +83,17 @@
|
|
82
83
|
<ready putable="false"/>
|
83
84
|
<stopped putable="false"/>
|
84
85
|
</simulating>
|
85
|
-
<
|
86
|
-
<
|
87
|
-
|
86
|
+
<replaying>
|
87
|
+
<stopping putable="true"/>
|
88
|
+
<finishing putable="false"/>
|
89
|
+
<finished putable="false"/>
|
90
|
+
</replaying>
|
88
91
|
<stopped>
|
89
92
|
<abandoned putable="true"/>
|
90
93
|
<stopped putable="true"/>
|
91
94
|
<running putable="true"/>
|
92
95
|
<simulating putable="true"/>
|
96
|
+
<replaying putable="true"/>
|
93
97
|
</stopped>
|
94
98
|
<abandoned/>
|
95
99
|
<finished/>
|
data/tools/cpee
CHANGED
@@ -33,11 +33,13 @@ ARGV.options { |opt|
|
|
33
33
|
opt.on("Options:")
|
34
34
|
opt.on("--help", "-h", "This text") { puts opt; exit }
|
35
35
|
opt.on("")
|
36
|
-
opt.on(wrap("[archive DIR URL] save properties from all finished instances listed at URL into DIR. Examples:\ncpee archive ./archive http://localhost:9298/\ncpee archive ./archive http://localhost:9298/1/"))
|
36
|
+
opt.on(wrap("[archive DIR URL] save properties from all finished instances listed at URL into DIR. Examples:\ncpee archive ./archive http://localhost:9298/\ncpee archive ./archive http://localhost:9298/1/\ncpee archive ./archive http://localhost:9298/1-200"))
|
37
37
|
opt.on("")
|
38
|
-
opt.on(wrap("[abandon URL] running processes are stopped; ready or stopped processes are abandoned
|
38
|
+
opt.on(wrap("[abandon URL] running processes are stopped; ready or stopped processes are abandoned. Examples:\ncpee abandon http://localhost:9298/1/\ncpee abandon http://localhost:9298/1-200"))
|
39
39
|
opt.on("")
|
40
|
-
opt.on(wrap("[
|
40
|
+
opt.on(wrap("[start URL] stopped processes are started; all others are not touched. Examples:\ncpee start http://localhost:9298/1-200"))
|
41
|
+
opt.on("")
|
42
|
+
opt.on(wrap("[delete! URL] DANGER ZONE. Vanishes forever. Not in archive. Examples:\ncpee delete! http://localhost:9298/1/"))
|
41
43
|
opt.on("")
|
42
44
|
opt.on(wrap("[new DIR] scaffolds a sample execution engine. Everything except instances can be removed for default behaviour."))
|
43
45
|
opt.on("")
|
@@ -165,6 +167,23 @@ elsif command == 'abandon'
|
|
165
167
|
end
|
166
168
|
end
|
167
169
|
end
|
170
|
+
elsif command == 'start'
|
171
|
+
base = File.dirname(p1)
|
172
|
+
names = []
|
173
|
+
if File.basename(p1) =~ /(\d+)-(\d+)/
|
174
|
+
names = ($1.to_i..$2.to_i).to_a
|
175
|
+
else
|
176
|
+
names << File.basename(p1)
|
177
|
+
end
|
178
|
+
names.each do |name|
|
179
|
+
res = Typhoeus.get(File.join(base,name.to_s,'properties','values','state','/'))
|
180
|
+
if res.success?
|
181
|
+
case res.response_body
|
182
|
+
when "stopped" then
|
183
|
+
Typhoeus.put(File.join(base,name.to_s,'properties','values','state','/'), headers: {'Content-Type' => 'application/x-www-form-urlencoded'}, body: "value=running")
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
168
187
|
elsif command == 'delete!'
|
169
188
|
Typhoeus.delete(File.join(p1,'/'))
|
170
189
|
else
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cpee
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juergen eTM Mangler
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: tools
|
13
13
|
cert_chain: []
|
14
|
-
date: 2019-10-
|
14
|
+
date: 2019-10-21 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: riddl
|
@@ -36,7 +36,7 @@ dependencies:
|
|
36
36
|
version: '1.99'
|
37
37
|
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: 1.99.
|
39
|
+
version: 1.99.78
|
40
40
|
type: :runtime
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -46,7 +46,7 @@ dependencies:
|
|
46
46
|
version: '1.99'
|
47
47
|
- - ">="
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: 1.99.
|
49
|
+
version: 1.99.78
|
50
50
|
- !ruby/object:Gem::Dependency
|
51
51
|
name: savon
|
52
52
|
requirement: !ruby/object:Gem::Requirement
|
@@ -227,16 +227,15 @@ files:
|
|
227
227
|
- cockpit/themes/preset/rngs/choose.rng
|
228
228
|
- cockpit/themes/preset/rngs/critical.rng
|
229
229
|
- cockpit/themes/preset/rngs/escape.rng
|
230
|
-
- cockpit/themes/preset/rngs/finalize.rng
|
231
230
|
- cockpit/themes/preset/rngs/group.rng
|
232
231
|
- cockpit/themes/preset/rngs/loop.rng
|
233
232
|
- cockpit/themes/preset/rngs/manipulate.rng
|
234
233
|
- cockpit/themes/preset/rngs/otherwise.rng
|
235
234
|
- cockpit/themes/preset/rngs/parallel.rng
|
236
235
|
- cockpit/themes/preset/rngs/parallel_branch.rng
|
236
|
+
- cockpit/themes/preset/rngs/scripts.rng
|
237
237
|
- cockpit/themes/preset/rngs/stop.rng
|
238
238
|
- cockpit/themes/preset/rngs/terminate.rng
|
239
|
-
- cockpit/themes/preset/rngs/update.rng
|
240
239
|
- cockpit/themes/preset/theme.js
|
241
240
|
- cockpit/track.html
|
242
241
|
- contrib/Screenshot at 2011-09-28 02:38:11.png
|
@@ -1 +0,0 @@
|
|
1
|
-
../../default/rngs/finalize.rng
|
@@ -1 +0,0 @@
|
|
1
|
-
../../default/rngs/update.rng
|