Class: Legion::Extensions::Synapse::Actor::Homeostasis
- Inherits:
-
Actors::Every
- Object
- Actors::Every
- Legion::Extensions::Synapse::Actor::Homeostasis
- Defined in:
- lib/legion/extensions/synapse/actors/homeostasis.rb
Instance Method Summary collapse
- #action(**_opts) ⇒ Object
- #check_subtask? ⇒ Boolean
- #generate_task? ⇒ Boolean
- #runner_class ⇒ Object
- #time ⇒ Object
- #use_runner? ⇒ Boolean
Instance Method Details
#action(**_opts) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/legion/extensions/synapse/actors/homeostasis.rb', line 14 def action(**_opts) return { status: :skipped, reason: :no_data } unless defined?(Legion::Data) results = { spikes: 0, droughts: 0, updated: 0 } return results unless defined?(Legion::Extensions::Synapse::Data::Model::Synapse) Legion::Extensions::Synapse::Data::Model::Synapse .where(status: 'active') .where { baseline_throughput > 0 } # rubocop:disable Style/NumericPredicate .each do |synapse| baseline = synapse.baseline_throughput signals = synapse.signals_dataset.where { created_at > (Time.now - 60) }.count current = signals.to_f if Helpers::Homeostasis.spike?(current, baseline, duration_seconds: 60) results[:spikes] += 1 elsif Helpers::Homeostasis.drought?(current, baseline, silent_seconds: 60) results[:droughts] += 1 end new_baseline = Helpers::Homeostasis.update_baseline(baseline, current) synapse.update(baseline_throughput: new_baseline) results[:updated] += 1 end results end |
#check_subtask? ⇒ Boolean
11 |
# File 'lib/legion/extensions/synapse/actors/homeostasis.rb', line 11 def check_subtask? = false |
#generate_task? ⇒ Boolean
12 |
# File 'lib/legion/extensions/synapse/actors/homeostasis.rb', line 12 def generate_task? = false |
#runner_class ⇒ Object
8 |
# File 'lib/legion/extensions/synapse/actors/homeostasis.rb', line 8 def runner_class = self.class |
#time ⇒ Object
9 |
# File 'lib/legion/extensions/synapse/actors/homeostasis.rb', line 9 def time = 30 |
#use_runner? ⇒ Boolean
10 |
# File 'lib/legion/extensions/synapse/actors/homeostasis.rb', line 10 def use_runner? = false |