Sha256: 64bf91470a3e7b9cada2a2be03ec196667bb21f6fe57029a96f0e508db0e76e7

Contents?: true

Size: 1.87 KB

Versions: 1

Compression:

Stored size: 1.87 KB

Contents

require 'socket'
require 'yaml'

module Splash
  module Orchestrator

    module SchedulerHooks
      def on_pre_trigger(job, trigger_time)

      end

      def on_post_trigger(job, trigger_time)

      end

      def init_log

      end
    end

    module Commander
      include Splash::Transports
      def send_message (options)
        client = get_default_client
        client.publish  options
      end
    end

    module Grammar

      VERBS=[:ping]

      def ping(payload)
        return "Pong : #{payload[:hostname]} !"
      end
    end


    class Scheduler
        include Splash::Constants
        include Splash::Helpers
        include Splash::Config
        include Splash::Transports
        include Splash::Orchestrator::Grammar
        def initialize
          @server  = Rufus::Scheduler::new
          @server.extend SchedulerHooks
          @server.init_log
          @result = LogScanner::new
          @server.every '20s' do
            begin
              puts "Notify"
              @result.analyse
              @result.notify
              $stdout.flush
            rescue Errno::ECONNREFUSED
              $stderr.puts "PushGateway seems to be done, please start it."
            end
          end
          hostname = Socket.gethostname
          transport = get_default_subscriber queue: "splash.#{hostname}.input"
          transport.subscribe(:block => true) do |delivery_info, properties, body|
            content = YAML::load(body)
            if VERBS.include? content[:verb]
              res = self.send content[:verb], content[:payload]
              get_default_client.publish queue: content[:return_to], message: res.to_yaml
            else
              get_default_client.publish queue: content[:return_to], message: "Unkown verb #{content[:verb]}".to_yaml
            end
          end
        end

        def terminate
        end

      end


    end

  end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
prometheus-splash-0.1.0 lib/splash/orchestrator.rb