foreman-tasks-core 0.1.3 → 0.1.4
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
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: a9545fcacabab85924de6070358ad45b18b8ce0a
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: cf563160a416cd39d7e921a10d1168293988cfc4
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 1f662ebb982a6545dbf65fbe8e54b97928105ec1c8e9338207ca610e486fdf706aba2a326f090c3f9ff18217b09d2f970a0aafb8719d217b802b9a429f3cdbb1
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: a94805c8b5ce1762fc22f4d69aa0aa9ed3e93d729b46a460ef016792ab284a166055e554c59c6440b812b00355f9c1b94322ff941d7dafffb34818aa3a64187d
         
     | 
| 
         @@ -1,3 +1,5 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'foreman_tasks_core/ticker'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
       1 
3 
     | 
    
         
             
            module ForemanTasksCore
         
     | 
| 
       2 
4 
     | 
    
         
             
              module Runner
         
     | 
| 
       3 
5 
     | 
    
         
             
                class Dispatcher
         
     | 
| 
         @@ -11,6 +13,7 @@ module ForemanTasksCore 
     | 
|
| 
       11 
13 
     | 
    
         
             
                    def initialize(dispatcher, suspended_action, runner, clock, logger, options = {})
         
     | 
| 
       12 
14 
     | 
    
         
             
                      @dispatcher = dispatcher
         
     | 
| 
       13 
15 
     | 
    
         
             
                      @clock = clock
         
     | 
| 
      
 16 
     | 
    
         
            +
                      @ticker = dispatcher.ticker
         
     | 
| 
       14 
17 
     | 
    
         
             
                      @logger = logger
         
     | 
| 
       15 
18 
     | 
    
         
             
                      @suspended_action = suspended_action
         
     | 
| 
       16 
19 
     | 
    
         
             
                      @runner = runner
         
     | 
| 
         @@ -82,7 +85,7 @@ module ForemanTasksCore 
     | 
|
| 
       82 
85 
     | 
    
         
             
                    def plan_next_refresh
         
     | 
| 
       83 
86 
     | 
    
         
             
                      if !@finishing && !@refresh_planned
         
     | 
| 
       84 
87 
     | 
    
         
             
                        @logger.debug("planning to refresh #{@runner.id}")
         
     | 
| 
       85 
     | 
    
         
            -
                        @ 
     | 
| 
      
 88 
     | 
    
         
            +
                        @ticker.tell([:add_event, reference, :refresh_runner])
         
     | 
| 
       86 
89 
     | 
    
         
             
                        @refresh_planned = true
         
     | 
| 
       87 
90 
     | 
    
         
             
                      end
         
     | 
| 
       88 
91 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -92,10 +95,12 @@ module ForemanTasksCore 
     | 
|
| 
       92 
95 
     | 
    
         
             
                    end
         
     | 
| 
       93 
96 
     | 
    
         
             
                  end
         
     | 
| 
       94 
97 
     | 
    
         | 
| 
      
 98 
     | 
    
         
            +
                  attr_reader :ticker
         
     | 
| 
       95 
99 
     | 
    
         
             
                  def initialize(clock, logger)
         
     | 
| 
       96 
     | 
    
         
            -
                    @mutex 
     | 
| 
       97 
     | 
    
         
            -
                    @clock 
     | 
| 
      
 100 
     | 
    
         
            +
                    @mutex  = Mutex.new
         
     | 
| 
      
 101 
     | 
    
         
            +
                    @clock  = clock
         
     | 
| 
       98 
102 
     | 
    
         
             
                    @logger = logger
         
     | 
| 
      
 103 
     | 
    
         
            +
                    @ticker = ::ForemanTasksCore::Ticker.spawn('dispatcher-ticker', @clock, @logger)
         
     | 
| 
       99 
104 
     | 
    
         
             
                    @runner_actors = {}
         
     | 
| 
       100 
105 
     | 
    
         
             
                    @runner_suspended_actions = {}
         
     | 
| 
       101 
106 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -0,0 +1,45 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module ForemanTasksCore
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Ticker < ::Dynflow::Actor
         
     | 
| 
      
 3 
     | 
    
         
            +
                attr_reader :clock
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                def initialize(clock, logger)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  @clock = clock
         
     | 
| 
      
 7 
     | 
    
         
            +
                  @logger = logger
         
     | 
| 
      
 8 
     | 
    
         
            +
                  @events = []
         
     | 
| 
      
 9 
     | 
    
         
            +
                  @refresh_interval = 1
         
     | 
| 
      
 10 
     | 
    
         
            +
                  plan_next_tick
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                def tick
         
     | 
| 
      
 14 
     | 
    
         
            +
                  @logger.debug("Ticker ticking for #{@events.size} events")
         
     | 
| 
      
 15 
     | 
    
         
            +
                  @events.each do |(target, args)|
         
     | 
| 
      
 16 
     | 
    
         
            +
                    pass_event(target, args)
         
     | 
| 
      
 17 
     | 
    
         
            +
                  end
         
     | 
| 
      
 18 
     | 
    
         
            +
                  @events = []
         
     | 
| 
      
 19 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 20 
     | 
    
         
            +
                  @planned = false
         
     | 
| 
      
 21 
     | 
    
         
            +
                  plan_next_tick
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                def add_event(target, args)
         
     | 
| 
      
 25 
     | 
    
         
            +
                  @events << [target, args]
         
     | 
| 
      
 26 
     | 
    
         
            +
                  plan_next_tick
         
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                private
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                def pass_event(target, args)
         
     | 
| 
      
 32 
     | 
    
         
            +
                  target.tell(args)
         
     | 
| 
      
 33 
     | 
    
         
            +
                rescue => e
         
     | 
| 
      
 34 
     | 
    
         
            +
                  @logger.error("Failed passing event to #{target} with #{args}")
         
     | 
| 
      
 35 
     | 
    
         
            +
                  @logger.error(e)
         
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                def plan_next_tick
         
     | 
| 
      
 39 
     | 
    
         
            +
                  if !@planned && !@events.empty?
         
     | 
| 
      
 40 
     | 
    
         
            +
                    @clock.ping(reference, Time.now.getlocal + @refresh_interval, :tick)
         
     | 
| 
      
 41 
     | 
    
         
            +
                    @planned = true
         
     | 
| 
      
 42 
     | 
    
         
            +
                  end
         
     | 
| 
      
 43 
     | 
    
         
            +
                end
         
     | 
| 
      
 44 
     | 
    
         
            +
              end
         
     | 
| 
      
 45 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: foreman-tasks-core
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.1.4
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Ivan Nečas
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2017- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2017-07-11 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies: []
         
     | 
| 
       13 
13 
     | 
    
         
             
            description: |
         
     | 
| 
       14 
14 
     | 
    
         
             
              Common code used both at Forman and Foreman proxy regarding tasks
         
     | 
| 
         @@ -29,6 +29,7 @@ files: 
     | 
|
| 
       29 
29 
     | 
    
         
             
            - lib/foreman_tasks_core/runner/update.rb
         
     | 
| 
       30 
30 
     | 
    
         
             
            - lib/foreman_tasks_core/settings_loader.rb
         
     | 
| 
       31 
31 
     | 
    
         
             
            - lib/foreman_tasks_core/shareable_action.rb
         
     | 
| 
      
 32 
     | 
    
         
            +
            - lib/foreman_tasks_core/ticker.rb
         
     | 
| 
       32 
33 
     | 
    
         
             
            - lib/foreman_tasks_core/version.rb
         
     | 
| 
       33 
34 
     | 
    
         
             
            homepage: https://github.com/theforeman/foreman-tasks
         
     | 
| 
       34 
35 
     | 
    
         
             
            licenses: []
         
     |