cpee 1.5.7 → 1.5.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3b9072d66749c0b959532cde9a01d95fdf94280d6e2068e68c012027e8f94fcb
4
- data.tar.gz: 71b87598486ac3dbb351bd2946090aed25b525f1603d8902988e0cd9ead4f61e
3
+ metadata.gz: 34b1f3d471e5c92ca9881d9d87b40e64a2174f124e1798b0f7a0dbd3a0735ead
4
+ data.tar.gz: aee9d4bd111c3358f93a0131fb832700909539c1bbbea3368c07468de1ae3369
5
5
  SHA512:
6
- metadata.gz: '082193a63a7e5d2506232ae27e367c94f8689631b7b09d832053495a3dc276b1b1ed3a9c637a9523b1879bcef79c59ec2851f14735893bde43bada52ee4a5604'
7
- data.tar.gz: 579a869a59bcd79ae5c9c5f75eaaa0e3eca6f8c4926b62f615e91ae413ede2b0e5652aa6e172413ba3e627e62854a0ee5f6a5d777cbb9f9b756005b2854b134a
6
+ metadata.gz: 4d4fb94c2c888fbd119ef01740df796346d1ab861ceedc9ba0a2164af557472fec49edd88f9b30f25484ab7997cafd5b54ae753e8d54061684881e338f2f49c1
7
+ data.tar.gz: bca86531f532f2f05c40d24d50fae035d4d569a798a9e418de6febb2364bc8255e1d9ced729ffbc226e18911f9d6224821529bc3ebe44fca6dc614cd7c9192cc
@@ -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="state_sim" title='simulate'>Sim</button>
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>
@@ -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=state_simulate]").click(function(){ $(this).attr("disabled","disabled");sim_instance(); });
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=state_sim]").show();
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=state_sim]").hide();
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 sim_instance() {// {{{
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: "simulating"}),
707
+ data: ({value: "replaying"}),
708
708
  error: report_failure
709
709
  });
710
710
  }// }}}
@@ -83,11 +83,11 @@
83
83
  </button>
84
84
  <span id="state_extended">
85
85
  <span> / </span>
86
- <button name="state_sim" title='simulate'>
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="M 0,7.0741552 1.598154,6.8788136 q 0.144277,1.0115903 0.58266,1.4859901 0.443932,0.474402 1.193067,0.474402 0.793528,0 1.193066,-0.418589 0.405089,-0.4255654 0.405089,-0.990661 0,-0.362777 -0.172025,-0.6139303 Q 4.633538,6.5578953 4.211802,6.3695302 3.923247,6.2439536 2.896654,5.9230353 1.575957,5.5114228 1.04324,4.911445 0.294105,4.0672905 0.294105,2.8533821 q 0,-0.7813662 0.349596,-1.4580852 Q 0.998846,0.7116014 1.659195,0.3558006 2.325092,0 3.262898,0 4.794462,0 5.565794,0.8441546 6.342674,1.6883092 6.381518,3.0975591 L 4.73897,3.1882531 Q 4.633538,2.3999106 4.283941,2.0580629 3.939894,1.7092386 3.246251,1.7092386 q -0.71584,0 -1.120927,0.3697537 -0.260811,0.2372006 -0.260811,0.6348602 0,0.3627771 0.244164,0.6209071 0.31075,0.3278947 1.509366,0.6836954 1.198616,0.3558008 1.770178,0.7395073 0.577111,0.3767302 0.898962,1.0394962 0.327399,0.6557896 0.327399,1.6255215 0,0.8790367 -0.388439,1.6464517 -0.388442,0.767412 -1.098732,1.1441413 -0.710291,0.369755 -1.770178,0.369755 -1.542663,0 -2.369485,-0.8929903 Q 0.160924,8.7903717 0,7.0741552 Z"/>
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>
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "cpee"
3
- s.version = "1.5.7"
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"
@@ -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'
@@ -46,8 +46,12 @@ class DefaultHandlerWrapper < WEEL::HandlerWrapperBase
46
46
  @label = ''
47
47
  end # }}}
48
48
 
49
- def prepare(readonly, endpoints, parameters) #{{{
50
- @handler_endpoint = endpoints.is_a?(Array) ? endpoints.map{ |ep| readonly.endpoints[ep] }.compact : readonly.endpoints[endpoints]
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
51
55
  params = parameters.dup
52
56
  params[:arguments] = params[:arguments].dup if params[:arguments]
53
57
  params[:arguments]&.map! do |ele|
@@ -60,73 +64,78 @@ class DefaultHandlerWrapper < WEEL::HandlerWrapperBase
60
64
  params
61
65
  end #}}}
62
66
 
63
- def activity_handle(passthrough, parameters) # {{{
64
- raise "Wrong endpoint" if @handler_endpoint.nil? || @handler_endpoint.empty?
65
- @label = parameters[:label]
66
- @sensors = parameters[:sensors]
67
- @aggregators = parameters[:aggregators]
68
- @costs = parameters[:costs]
69
- @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)
70
- if passthrough.to_s.empty?
71
- params = []
72
- callback = Digest::MD5.hexdigest(Kernel::rand().to_s)
73
- (parameters[:arguments] || []).each do |s|
74
- if s.respond_to?(:mimetype)
75
- params << Riddl::Parameter::Complex.new(s.name.to_s,v.mimetype,v.value)
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))
76
82
  else
77
- if s.name.to_s =~ /^__Q_/
78
- params << Riddl::Parameter::Simple.new(s.name.to_s.sub(/^__Q_/,''),CPEE::ValueHelper::generate(s.value),:query)
79
- elsif s.name.to_s =~ /^__B_/
80
- params << Riddl::Parameter::Simple.new(s.name.to_s.sub(/^__B_/,''),CPEE::ValueHelper::generate(s.value),:body)
81
- elsif s.name.to_s =~ /^__H_/
82
- params << Riddl::Header.new(s.name.to_s.sub(/^__H_/,''),CPEE::ValueHelper::generate(s.value))
83
- elsif s.name.to_s =~ /^__C_/
84
- params << Riddl::Parameter::Complex.new(s.name.to_s.sub(/^__C_/,''),*CPEE::ValueHelper::generate(s.value).split(';',2))
85
- else
86
- params << Riddl::Parameter::Simple.new(s.name.to_s,CPEE::ValueHelper::generate(s.value))
87
- end
83
+ params << Riddl::Parameter::Simple.new(s.name.to_s,CPEE::ValueHelper::generate(s.value))
88
84
  end
89
85
  end
86
+ end
90
87
 
91
- params << Riddl::Header.new("CPEE-BASE",@controller.base_url)
92
- params << Riddl::Header.new("CPEE-INSTANCE",@controller.instance)
93
- params << Riddl::Header.new("CPEE-INSTANCE-URL",@controller.instance_url)
94
- params << Riddl::Header.new("CPEE-INSTANCE-UUID",@controller.uuid)
95
- params << Riddl::Header.new("CPEE-CALLBACK",@controller.instance_url + '/callbacks/' + callback)
96
- params << Riddl::Header.new("CPEE-CALLBACK-ID",callback)
97
- params << Riddl::Header.new("CPEE-ACTIVITY",@handler_position)
98
- params << Riddl::Header.new("CPEE-LABEL",parameters[:label]||'')
99
- @controller.attributes.each do |key,value|
100
- params << Riddl::Header.new("CPEE-ATTR-#{key.to_s.gsub(/_/,'-')}",value)
101
- end
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
102
100
 
103
- tendpoint = @handler_endpoint.sub(/^http(s)?-(get|put|post|delete):/,'http\\1:')
104
- type = $2 || parameters[:method] || 'post'
101
+ tendpoint = @handler_endpoint.sub(/^http(s)?-(get|put|post|delete):/,'http\\1:')
102
+ type = $2 || parameters[:method] || 'post'
105
103
 
106
- client = Riddl::Client.new(tendpoint)
104
+ client = Riddl::Client.new(tendpoint)
107
105
 
108
- @controller.callbacks[callback] = CPEE::Callback.new("callback activity: #{@handler_position}",self,:callback,nil,nil,:http)
109
- @handler_passthrough = callback
106
+ @controller.callbacks[callback] = CPEE::Callback.new("callback activity: #{@handler_position}",self,:callback,nil,nil,:http)
107
+ @handler_passthrough = callback
110
108
 
111
- status, result, headers = client.request type => params
112
- if status < 200 || status >= 300
113
- headers['CPEE_SALVAGE'] = true
114
- c = result[0]&.value
115
- c = c.read if c.respond_to? :read
116
- callback([ Riddl::Parameter::Complex.new('error','application/json',StringIO.new(JSON::generate({ 'status' => status, 'error' => c }))) ], headers)
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
117
124
  else
118
- if headers['CPEE_INSTANTIATION']
119
- @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)
120
- end
121
- if headers['CPEE_CALLBACK'] && headers['CPEE_CALLBACK'] == 'true' && result.any?
122
- headers['CPEE_UPDATE'] = true
123
- callback result, headers
124
- elsif headers['CPEE_CALLBACK'] && headers['CPEE_CALLBACK'] == 'true' && result.empty?
125
- # do nothing, later on things will happend
126
- else
127
- callback result, headers
128
- end
125
+ callback result, headers
129
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
130
139
  else
131
140
  @controller.callbacks[passthrough] = CPEE::Callback.new("callback activity: #{@handler_position}",self,:callback,nil,nil,:http)
132
141
  @handler_passthrough = passthrough
@@ -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
- <stopping>
86
- <stopped putable="false"/>
87
- </stopping>
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/>
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.7
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-15 00:00:00.000000000 Z
14
+ date: 2019-10-21 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: riddl