sensu 0.18.1-java → 0.19.0.beta.1-java
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/CHANGELOG.md +35 -0
- data/lib/sensu/api/process.rb +61 -0
- data/lib/sensu/client/process.rb +30 -8
- data/lib/sensu/constants.rb +1 -1
- data/lib/sensu/daemon.rb +11 -8
- data/lib/sensu/redis.rb +2 -2
- data/lib/sensu/server/process.rb +71 -5
- data/sensu.gemspec +5 -5
- metadata +61 -61
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 1b14366e10ecd072a11321772c05290328d02a5d
         | 
| 4 | 
            +
              data.tar.gz: d60538ee8e8fcc18f721d4c6bd89be1306804750
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 599e6341ce3a3c4f6c7260204d3daf92d6d812f2c747854bc8ef01372ff2cdeb1da08f3bb414bd002866a7640008f69d7057acdd65af41c32e437d6ad38ee54e
         | 
| 7 | 
            +
              data.tar.gz: 2983af3cd6f4920658f4aa833af423e0dd7942a7562c187c4edfab32b56d643fd465b089a703cf171869034b2df837c0830c597b2b40d6fa32e2c6e8232edfde
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,3 +1,38 @@ | |
| 1 | 
            +
            ## 0.19.0 - TBD
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            ### Features
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            Redis Sensu transport, a built-in alternative to the default RabbitMQ
         | 
| 6 | 
            +
            transport. The Redis transport is currently considered experimental.
         | 
| 7 | 
            +
            Configuring the transport name to be `redis` will enable the Redis
         | 
| 8 | 
            +
            transport instead of RabbitMQ, e.g. `{"transport": {"name": "redis"}}`.
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            Round-robin client subscriptions, allowing check requests to be sent to a
         | 
| 11 | 
            +
            single client in a subscription in a round-robin fashion. To create a
         | 
| 12 | 
            +
            round-robin subscription, start its name with `roundrobin:` to specify the
         | 
| 13 | 
            +
            type, e.g. "roundrobin:elasticsearch". Any check that targets the
         | 
| 14 | 
            +
            "roundrobin:elasticsearch" subscription will have its check requests sent
         | 
| 15 | 
            +
            to clients in a round-robin fashion.
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            Stale check result detection, using a defined check `ttl` and stored check
         | 
| 18 | 
            +
            results. Sensu is now able to monitor check results, ensuring that checks
         | 
| 19 | 
            +
            with a defined TTL (time to live) continue to be executed by clients. For
         | 
| 20 | 
            +
            example, a standalone check could have an interval of 30 seconds and a ttl
         | 
| 21 | 
            +
            of 50 seconds, Sensu would expect a result at least once every 50 seconds.
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            Check results API routes/endpoints: `/results`, `/results/:client`, and
         | 
| 24 | 
            +
            `/results/:client/:check`. These new check result API routes/endpoints
         | 
| 25 | 
            +
            enable new tooling, such as green light dashboards.
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            ### Other
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            POSIX spawn libraries are now loaded upfront/immediately, not at child
         | 
| 30 | 
            +
            process creation. This removes the possibility of load race conditions
         | 
| 31 | 
            +
            when real threads are used.
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            Many Ruby EventMachine fixes and improvements, including FD_CLOEXEC for
         | 
| 34 | 
            +
            the Sensu client UDP socket.
         | 
| 35 | 
            +
             | 
| 1 36 | 
             
            ## 0.18.1 - 2015-05-11
         | 
| 2 37 |  | 
| 3 38 | 
             
            ### Other
         | 
    
        data/lib/sensu/api/process.rb
    CHANGED
    
    | @@ -725,6 +725,67 @@ module Sensu | |
| 725 725 | 
             
                      end
         | 
| 726 726 | 
             
                    end
         | 
| 727 727 | 
             
                  end
         | 
| 728 | 
            +
             | 
| 729 | 
            +
                  aget "/results/?" do
         | 
| 730 | 
            +
                    response = Array.new
         | 
| 731 | 
            +
                    settings.redis.smembers("clients") do |clients|
         | 
| 732 | 
            +
                      unless clients.empty?
         | 
| 733 | 
            +
                        clients.each_with_index do |client_name, client_index|
         | 
| 734 | 
            +
                          settings.redis.smembers("result:#{client_name}") do |checks|
         | 
| 735 | 
            +
                            unless checks.empty?
         | 
| 736 | 
            +
                              checks.each_with_index do |check_name, check_index|
         | 
| 737 | 
            +
                                result_key = "result:#{client_name}:#{check_name}"
         | 
| 738 | 
            +
                                settings.redis.get(result_key) do |result_json|
         | 
| 739 | 
            +
                                  check = MultiJson.load(result_json)
         | 
| 740 | 
            +
                                  response << {:client => client_name, :check => check}
         | 
| 741 | 
            +
                                  if client_index == clients.size - 1 && check_index == checks.size - 1
         | 
| 742 | 
            +
                                    body MultiJson.dump(response)
         | 
| 743 | 
            +
                                  end
         | 
| 744 | 
            +
                                end
         | 
| 745 | 
            +
                              end
         | 
| 746 | 
            +
                            else
         | 
| 747 | 
            +
                              body MultiJson.dump(response)
         | 
| 748 | 
            +
                            end
         | 
| 749 | 
            +
                          end
         | 
| 750 | 
            +
                        end
         | 
| 751 | 
            +
                      else
         | 
| 752 | 
            +
                        body MultiJson.dump(response)
         | 
| 753 | 
            +
                      end
         | 
| 754 | 
            +
                    end
         | 
| 755 | 
            +
                  end
         | 
| 756 | 
            +
             | 
| 757 | 
            +
                  aget %r{^/results?/([\w\.-]+)/?$} do |client_name|
         | 
| 758 | 
            +
                    response = Array.new
         | 
| 759 | 
            +
                    settings.redis.smembers("result:#{client_name}") do |checks|
         | 
| 760 | 
            +
                      unless checks.empty?
         | 
| 761 | 
            +
                        checks.each_with_index do |check_name, check_index|
         | 
| 762 | 
            +
                          result_key = "result:#{client_name}:#{check_name}"
         | 
| 763 | 
            +
                          settings.redis.get(result_key) do |result_json|
         | 
| 764 | 
            +
                            check = MultiJson.load(result_json)
         | 
| 765 | 
            +
                            response << {:client => client_name, :check => check}
         | 
| 766 | 
            +
                            if check_index == checks.size - 1
         | 
| 767 | 
            +
                              body MultiJson.dump(response)
         | 
| 768 | 
            +
                            end
         | 
| 769 | 
            +
                          end
         | 
| 770 | 
            +
                        end
         | 
| 771 | 
            +
                      else
         | 
| 772 | 
            +
                        not_found!
         | 
| 773 | 
            +
                      end
         | 
| 774 | 
            +
                    end
         | 
| 775 | 
            +
                  end
         | 
| 776 | 
            +
             | 
| 777 | 
            +
                  aget %r{^/results?/([\w\.-]+)/([\w\.-]+)/?$} do |client_name, check_name|
         | 
| 778 | 
            +
                    result_key = "result:#{client_name}:#{check_name}"
         | 
| 779 | 
            +
                    settings.redis.get(result_key) do |result_json|
         | 
| 780 | 
            +
                      unless result_json.nil?
         | 
| 781 | 
            +
                        check = MultiJson.load(result_json)
         | 
| 782 | 
            +
                        response = {:client => client_name, :check => check}
         | 
| 783 | 
            +
                        body MultiJson.dump(response)
         | 
| 784 | 
            +
                      else
         | 
| 785 | 
            +
                        not_found!
         | 
| 786 | 
            +
                      end
         | 
| 787 | 
            +
                    end
         | 
| 788 | 
            +
                  end
         | 
| 728 789 | 
             
                end
         | 
| 729 790 | 
             
              end
         | 
| 730 791 | 
             
            end
         | 
    
        data/lib/sensu/client/process.rb
    CHANGED
    
    | @@ -233,20 +233,42 @@ module Sensu | |
| 233 233 | 
             
                    end
         | 
| 234 234 | 
             
                  end
         | 
| 235 235 |  | 
| 236 | 
            +
                  # Determine the Sensu transport subscribe options for a
         | 
| 237 | 
            +
                  # subscription. If a subscription begins with a transport pipe
         | 
| 238 | 
            +
                  # type, either "direct:" or "roundrobin:", the subscription uses
         | 
| 239 | 
            +
                  # a direct transport pipe, and the subscription name is used for
         | 
| 240 | 
            +
                  # both the pipe and the funnel names. If a subscription does not
         | 
| 241 | 
            +
                  # specify a transport pipe type, a fanout transport pipe is
         | 
| 242 | 
            +
                  # used, the subscription name is used for the pipe, and a unique
         | 
| 243 | 
            +
                  # funnel is created for the Sensu client. The unique funnel name
         | 
| 244 | 
            +
                  # for the Sensu client is created using a combination of the
         | 
| 245 | 
            +
                  # client name, the Sensu version, and the process start time
         | 
| 246 | 
            +
                  # (epoch).
         | 
| 247 | 
            +
                  #
         | 
| 248 | 
            +
                  # @param subscription [String]
         | 
| 249 | 
            +
                  # @return [Array] containing the transport subscribe options:
         | 
| 250 | 
            +
                  #   the transport pipe type, pipe, and funnel.
         | 
| 251 | 
            +
                  def transport_subscribe_options(subscription)
         | 
| 252 | 
            +
                    _, raw_type = subscription.split(":", 2).reverse
         | 
| 253 | 
            +
                    case raw_type
         | 
| 254 | 
            +
                    when "direct", "roundrobin"
         | 
| 255 | 
            +
                      [:direct, subscription, subscription]
         | 
| 256 | 
            +
                    else
         | 
| 257 | 
            +
                      funnel = [@settings[:client][:name], VERSION, start_time].join("-")
         | 
| 258 | 
            +
                      [:fanout, subscription, funnel]
         | 
| 259 | 
            +
                    end
         | 
| 260 | 
            +
                  end
         | 
| 261 | 
            +
             | 
| 236 262 | 
             
                  # Set up Sensu client subscriptions. Subscriptions determine the
         | 
| 237 | 
            -
                  # kinds of check requests the client will receive.  | 
| 238 | 
            -
                  # transport funnel is created for the Sensu client, using a
         | 
| 239 | 
            -
                  # combination of it's name, the Sensu version, and the current
         | 
| 240 | 
            -
                  # timestamp (epoch). The unique funnel is bound to each
         | 
| 241 | 
            -
                  # transport pipe, named after the client subscription. The Sensu
         | 
| 263 | 
            +
                  # kinds of check requests the client will receive. The Sensu
         | 
| 242 264 | 
             
                  # client will receive JSON serialized check requests from its
         | 
| 243 | 
            -
                  #  | 
| 265 | 
            +
                  # subscriptions, that get parsed and processed.
         | 
| 244 266 | 
             
                  def setup_subscriptions
         | 
| 245 267 | 
             
                    @logger.debug("subscribing to client subscriptions")
         | 
| 246 268 | 
             
                    @settings[:client][:subscriptions].each do |subscription|
         | 
| 247 269 | 
             
                      @logger.debug("subscribing to a subscription", :subscription => subscription)
         | 
| 248 | 
            -
                       | 
| 249 | 
            -
                      @transport.subscribe( | 
| 270 | 
            +
                      options = transport_subscribe_options(subscription)
         | 
| 271 | 
            +
                      @transport.subscribe(*options) do |message_info, message|
         | 
| 250 272 | 
             
                        begin
         | 
| 251 273 | 
             
                          check = MultiJson.load(message)
         | 
| 252 274 | 
             
                          @logger.info("received check request", :check => check)
         | 
    
        data/lib/sensu/constants.rb
    CHANGED
    
    
    
        data/lib/sensu/daemon.rb
    CHANGED
    
    | @@ -2,13 +2,13 @@ require "rubygems" | |
| 2 2 |  | 
| 3 3 | 
             
            gem "multi_json", "1.11.0"
         | 
| 4 4 |  | 
| 5 | 
            -
            gem "sensu-em", "2. | 
| 5 | 
            +
            gem "sensu-em", "2.5.0.beta"
         | 
| 6 6 | 
             
            gem "sensu-logger", "1.0.0"
         | 
| 7 | 
            -
            gem "sensu-settings", "1. | 
| 7 | 
            +
            gem "sensu-settings", "1.9.0"
         | 
| 8 8 | 
             
            gem "sensu-extension", "1.1.2"
         | 
| 9 9 | 
             
            gem "sensu-extensions", "1.2.0"
         | 
| 10 | 
            -
            gem "sensu-transport", " | 
| 11 | 
            -
            gem "sensu-spawn", "1. | 
| 10 | 
            +
            gem "sensu-transport", "3.0.0"
         | 
| 11 | 
            +
            gem "sensu-spawn", "1.2.0"
         | 
| 12 12 |  | 
| 13 13 | 
             
            require "time"
         | 
| 14 14 | 
             
            require "uri"
         | 
| @@ -31,13 +31,16 @@ module Sensu | |
| 31 31 | 
             
              module Daemon
         | 
| 32 32 | 
             
                include Utilities
         | 
| 33 33 |  | 
| 34 | 
            -
                 | 
| 35 | 
            -
             | 
| 36 | 
            -
                #  | 
| 37 | 
            -
                #  | 
| 34 | 
            +
                attr_reader :start_time
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                # Initialize the Sensu process. Set the start time, initial
         | 
| 37 | 
            +
                # service state, set up the logger, load settings, load
         | 
| 38 | 
            +
                # extensions, and optionally daemonize the process and/or create a
         | 
| 39 | 
            +
                # PID file. A subclass may override this method.
         | 
| 38 40 | 
             
                #
         | 
| 39 41 | 
             
                # @param options [Hash]
         | 
| 40 42 | 
             
                def initialize(options={})
         | 
| 43 | 
            +
                  @start_time = Time.now.to_i
         | 
| 41 44 | 
             
                  @state = :initializing
         | 
| 42 45 | 
             
                  @timers = {:run => []}
         | 
| 43 46 | 
             
                  setup_logger(options)
         | 
    
        data/lib/sensu/redis.rb
    CHANGED
    
    
    
        data/lib/sensu/server/process.rb
    CHANGED
    
    | @@ -436,6 +436,26 @@ module Sensu | |
| 436 436 | 
             
                    end
         | 
| 437 437 | 
             
                  end
         | 
| 438 438 |  | 
| 439 | 
            +
                  # Determine the Sensu transport publish options for a
         | 
| 440 | 
            +
                  # subscription. If a subscription begins with a transport pipe
         | 
| 441 | 
            +
                  # type, either "direct:" or "roundrobin:", the subscription uses
         | 
| 442 | 
            +
                  # a direct transport pipe. If a subscription does not specify a
         | 
| 443 | 
            +
                  # transport pipe type, a fanout transport pipe is used.
         | 
| 444 | 
            +
                  #
         | 
| 445 | 
            +
                  # @param subscription [String]
         | 
| 446 | 
            +
                  # @return [Array] containing the transport publish options:
         | 
| 447 | 
            +
                  #   the transport pipe type, pipe, and the message to be
         | 
| 448 | 
            +
                  #   published.
         | 
| 449 | 
            +
                  def transport_publish_options(subscription, message)
         | 
| 450 | 
            +
                    _, raw_type = subscription.split(":", 2).reverse
         | 
| 451 | 
            +
                    case raw_type
         | 
| 452 | 
            +
                    when "direct", "roundrobin"
         | 
| 453 | 
            +
                      [:direct, subscription, message]
         | 
| 454 | 
            +
                    else
         | 
| 455 | 
            +
                      [:fanout, subscription, message]
         | 
| 456 | 
            +
                    end
         | 
| 457 | 
            +
                  end
         | 
| 458 | 
            +
             | 
| 439 459 | 
             
                  # Publish a check request to the transport. A check request is
         | 
| 440 460 | 
             
                  # composted of a check `:name`, an `:issued` timestamp, and a
         | 
| 441 461 | 
             
                  # check `:command` if available. The check request is published
         | 
| @@ -456,7 +476,8 @@ module Sensu | |
| 456 476 | 
             
                      :subscribers => check[:subscribers]
         | 
| 457 477 | 
             
                    })
         | 
| 458 478 | 
             
                    check[:subscribers].each do |subscription|
         | 
| 459 | 
            -
                       | 
| 479 | 
            +
                      options = transport_publish_options(subscription, MultiJson.dump(payload))
         | 
| 480 | 
            +
                      @transport.publish(*options) do |info|
         | 
| 460 481 | 
             
                        if info[:error]
         | 
| 461 482 | 
             
                          @logger.error("failed to publish check request", {
         | 
| 462 483 | 
             
                            :subscription => subscription,
         | 
| @@ -527,11 +548,11 @@ module Sensu | |
| 527 548 | 
             
                  # serialization is used when publishing the check result payload
         | 
| 528 549 | 
             
                  # to the transport pipe. Transport errors are logged.
         | 
| 529 550 | 
             
                  #
         | 
| 530 | 
            -
                  # @param  | 
| 551 | 
            +
                  # @param client_name [String]
         | 
| 531 552 | 
             
                  # @param check [Hash]
         | 
| 532 | 
            -
                  def publish_check_result( | 
| 553 | 
            +
                  def publish_check_result(client_name, check)
         | 
| 533 554 | 
             
                    payload = {
         | 
| 534 | 
            -
                      :client =>  | 
| 555 | 
            +
                      :client => client_name,
         | 
| 535 556 | 
             
                      :check => check
         | 
| 536 557 | 
             
                    }
         | 
| 537 558 | 
             
                    @logger.debug("publishing check result", :payload => payload)
         | 
| @@ -606,7 +627,7 @@ module Sensu | |
| 606 627 | 
             
                              check[:output] << "#{time_since_last_keepalive} seconds ago"
         | 
| 607 628 | 
             
                              check[:status] = 0
         | 
| 608 629 | 
             
                            end
         | 
| 609 | 
            -
                            publish_check_result(client, check)
         | 
| 630 | 
            +
                            publish_check_result(client[:name], check)
         | 
| 610 631 | 
             
                          end
         | 
| 611 632 | 
             
                        end
         | 
| 612 633 | 
             
                      end
         | 
| @@ -623,6 +644,50 @@ module Sensu | |
| 623 644 | 
             
                    end
         | 
| 624 645 | 
             
                  end
         | 
| 625 646 |  | 
| 647 | 
            +
                  # Determine stale check results, those that have not executed in
         | 
| 648 | 
            +
                  # a specified amount of time (check TTL). This method iterates
         | 
| 649 | 
            +
                  # through the client registry and check results for checks with
         | 
| 650 | 
            +
                  # a defined TTL value (in seconds). If a check result has a
         | 
| 651 | 
            +
                  # defined TTL, the time since last check execution (in seconds)
         | 
| 652 | 
            +
                  # is calculated. If the time since last execution is equal to or
         | 
| 653 | 
            +
                  # greater than the check TTL, a warning check result is
         | 
| 654 | 
            +
                  # published with the appropriate check output.
         | 
| 655 | 
            +
                  def determine_stale_check_results
         | 
| 656 | 
            +
                    @logger.info("determining stale check results")
         | 
| 657 | 
            +
                    @redis.smembers("clients") do |clients|
         | 
| 658 | 
            +
                      clients.each do |client_name|
         | 
| 659 | 
            +
                        @redis.smembers("result:#{client_name}") do |checks|
         | 
| 660 | 
            +
                          checks.each do |check_name|
         | 
| 661 | 
            +
                            result_key = "#{client_name}:#{check_name}"
         | 
| 662 | 
            +
                            @redis.get("result:#{result_key}") do |result_json|
         | 
| 663 | 
            +
                              unless result_json.nil?
         | 
| 664 | 
            +
                                check = MultiJson.load(result_json)
         | 
| 665 | 
            +
                                next unless check[:ttl] && check[:executed]
         | 
| 666 | 
            +
                                time_since_last_execution = Time.now.to_i - check[:executed]
         | 
| 667 | 
            +
                                if time_since_last_execution >= check[:ttl]
         | 
| 668 | 
            +
                                  check[:output] = "Last check execution was "
         | 
| 669 | 
            +
                                  check[:output] << "#{time_since_last_execution} seconds ago"
         | 
| 670 | 
            +
                                  check[:status] = 1
         | 
| 671 | 
            +
                                  publish_check_result(client_name, check)
         | 
| 672 | 
            +
                                end
         | 
| 673 | 
            +
                              end
         | 
| 674 | 
            +
                            end
         | 
| 675 | 
            +
                          end
         | 
| 676 | 
            +
                        end
         | 
| 677 | 
            +
                      end
         | 
| 678 | 
            +
                    end
         | 
| 679 | 
            +
                  end
         | 
| 680 | 
            +
             | 
| 681 | 
            +
                  # Set up the check result monitor, a periodic timer to run
         | 
| 682 | 
            +
                  # `determine_stale_check_results()` every 30 seconds. The timer
         | 
| 683 | 
            +
                  # is stored in the timers hash under `:leader`.
         | 
| 684 | 
            +
                  def setup_check_result_monitor
         | 
| 685 | 
            +
                    @logger.debug("monitoring check results")
         | 
| 686 | 
            +
                    @timers[:leader] << EM::PeriodicTimer.new(30) do
         | 
| 687 | 
            +
                      determine_stale_check_results
         | 
| 688 | 
            +
                    end
         | 
| 689 | 
            +
                  end
         | 
| 690 | 
            +
             | 
| 626 691 | 
             
                  # Prune check result aggregations (aggregates). Sensu only
         | 
| 627 692 | 
             
                  # stores the 20 latest aggregations for a check, to keep the
         | 
| 628 693 | 
             
                  # amount of data stored to a minimum.
         | 
| @@ -672,6 +737,7 @@ module Sensu | |
| 672 737 | 
             
                  def leader_duties
         | 
| 673 738 | 
             
                    setup_check_request_publisher
         | 
| 674 739 | 
             
                    setup_client_monitor
         | 
| 740 | 
            +
                    setup_check_result_monitor
         | 
| 675 741 | 
             
                    setup_check_result_aggregation_pruner
         | 
| 676 742 | 
             
                  end
         | 
| 677 743 |  | 
    
        data/sensu.gemspec
    CHANGED
    
    | @@ -17,14 +17,14 @@ Gem::Specification.new do |s| | |
| 17 17 | 
             
              s.add_dependency "multi_json", "1.11.0"
         | 
| 18 18 | 
             
              s.add_dependency "uuidtools", "2.1.4"
         | 
| 19 19 | 
             
              s.add_dependency "eventmachine", "1.0.3"
         | 
| 20 | 
            -
              s.add_dependency "sensu-em", "2. | 
| 20 | 
            +
              s.add_dependency "sensu-em", "2.5.0.beta"
         | 
| 21 21 | 
             
              s.add_dependency "sensu-logger", "1.0.0"
         | 
| 22 | 
            -
              s.add_dependency "sensu-settings", "1. | 
| 22 | 
            +
              s.add_dependency "sensu-settings", "1.9.0"
         | 
| 23 23 | 
             
              s.add_dependency "sensu-extension", "1.1.2"
         | 
| 24 24 | 
             
              s.add_dependency "sensu-extensions", "1.2.0"
         | 
| 25 | 
            -
              s.add_dependency "sensu-transport", " | 
| 26 | 
            -
              s.add_dependency "sensu-spawn", "1. | 
| 27 | 
            -
              s.add_dependency "em-redis-unified", "0. | 
| 25 | 
            +
              s.add_dependency "sensu-transport", "3.0.0"
         | 
| 26 | 
            +
              s.add_dependency "sensu-spawn", "1.2.0"
         | 
| 27 | 
            +
              s.add_dependency "em-redis-unified", "1.0.0"
         | 
| 28 28 | 
             
              s.add_dependency "sinatra", "1.4.6"
         | 
| 29 29 | 
             
              s.add_dependency "async_sinatra", "1.2.0"
         | 
| 30 30 | 
             
              s.add_dependency "thin", "1.5.0" unless RUBY_PLATFORM =~ /java/
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: sensu
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.19.0.beta.1
         | 
| 5 5 | 
             
            platform: java
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Sean Porter
         | 
| @@ -9,232 +9,232 @@ authors: | |
| 9 9 | 
             
            autorequire:
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2015-05- | 
| 12 | 
            +
            date: 2015-05-29 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 | 
            -
              name: multi_json
         | 
| 16 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 17 | 
            -
                requirements:
         | 
| 18 | 
            -
                - - '='
         | 
| 19 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 20 | 
            -
                    version: 1.11.0
         | 
| 21 15 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 22 16 | 
             
                requirements:
         | 
| 23 17 | 
             
                - - '='
         | 
| 24 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 25 19 | 
             
                    version: 1.11.0
         | 
| 20 | 
            +
              name: multi_json
         | 
| 26 21 | 
             
              prerelease: false
         | 
| 27 22 | 
             
              type: :runtime
         | 
| 28 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 29 | 
            -
              name: uuidtools
         | 
| 30 23 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 31 24 | 
             
                requirements:
         | 
| 32 25 | 
             
                - - '='
         | 
| 33 26 | 
             
                  - !ruby/object:Gem::Version
         | 
| 34 | 
            -
                    version:  | 
| 27 | 
            +
                    version: 1.11.0
         | 
| 28 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 35 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 36 30 | 
             
                requirements:
         | 
| 37 31 | 
             
                - - '='
         | 
| 38 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 39 33 | 
             
                    version: 2.1.4
         | 
| 34 | 
            +
              name: uuidtools
         | 
| 40 35 | 
             
              prerelease: false
         | 
| 41 36 | 
             
              type: :runtime
         | 
| 42 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 43 | 
            -
              name: eventmachine
         | 
| 44 37 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 45 38 | 
             
                requirements:
         | 
| 46 39 | 
             
                - - '='
         | 
| 47 40 | 
             
                  - !ruby/object:Gem::Version
         | 
| 48 | 
            -
                    version: 1. | 
| 41 | 
            +
                    version: 2.1.4
         | 
| 42 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 49 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 50 44 | 
             
                requirements:
         | 
| 51 45 | 
             
                - - '='
         | 
| 52 46 | 
             
                  - !ruby/object:Gem::Version
         | 
| 53 47 | 
             
                    version: 1.0.3
         | 
| 48 | 
            +
              name: eventmachine
         | 
| 54 49 | 
             
              prerelease: false
         | 
| 55 50 | 
             
              type: :runtime
         | 
| 56 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 57 | 
            -
              name: sensu-em
         | 
| 58 51 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 59 52 | 
             
                requirements:
         | 
| 60 53 | 
             
                - - '='
         | 
| 61 54 | 
             
                  - !ruby/object:Gem::Version
         | 
| 62 | 
            -
                    version:  | 
| 55 | 
            +
                    version: 1.0.3
         | 
| 56 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 63 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 64 58 | 
             
                requirements:
         | 
| 65 59 | 
             
                - - '='
         | 
| 66 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 67 | 
            -
                    version: 2. | 
| 61 | 
            +
                    version: 2.5.0.beta
         | 
| 62 | 
            +
              name: sensu-em
         | 
| 68 63 | 
             
              prerelease: false
         | 
| 69 64 | 
             
              type: :runtime
         | 
| 70 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 71 | 
            -
              name: sensu-logger
         | 
| 72 65 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 73 66 | 
             
                requirements:
         | 
| 74 67 | 
             
                - - '='
         | 
| 75 68 | 
             
                  - !ruby/object:Gem::Version
         | 
| 76 | 
            -
                    version:  | 
| 69 | 
            +
                    version: 2.5.0.beta
         | 
| 70 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 77 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 78 72 | 
             
                requirements:
         | 
| 79 73 | 
             
                - - '='
         | 
| 80 74 | 
             
                  - !ruby/object:Gem::Version
         | 
| 81 75 | 
             
                    version: 1.0.0
         | 
| 76 | 
            +
              name: sensu-logger
         | 
| 82 77 | 
             
              prerelease: false
         | 
| 83 78 | 
             
              type: :runtime
         | 
| 84 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 85 | 
            -
              name: sensu-settings
         | 
| 86 79 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 87 80 | 
             
                requirements:
         | 
| 88 81 | 
             
                - - '='
         | 
| 89 82 | 
             
                  - !ruby/object:Gem::Version
         | 
| 90 | 
            -
                    version: 1. | 
| 83 | 
            +
                    version: 1.0.0
         | 
| 84 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 91 85 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 92 86 | 
             
                requirements:
         | 
| 93 87 | 
             
                - - '='
         | 
| 94 88 | 
             
                  - !ruby/object:Gem::Version
         | 
| 95 | 
            -
                    version: 1. | 
| 89 | 
            +
                    version: 1.9.0
         | 
| 90 | 
            +
              name: sensu-settings
         | 
| 96 91 | 
             
              prerelease: false
         | 
| 97 92 | 
             
              type: :runtime
         | 
| 98 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 99 | 
            -
              name: sensu-extension
         | 
| 100 93 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 101 94 | 
             
                requirements:
         | 
| 102 95 | 
             
                - - '='
         | 
| 103 96 | 
             
                  - !ruby/object:Gem::Version
         | 
| 104 | 
            -
                    version: 1. | 
| 97 | 
            +
                    version: 1.9.0
         | 
| 98 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 105 99 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 106 100 | 
             
                requirements:
         | 
| 107 101 | 
             
                - - '='
         | 
| 108 102 | 
             
                  - !ruby/object:Gem::Version
         | 
| 109 103 | 
             
                    version: 1.1.2
         | 
| 104 | 
            +
              name: sensu-extension
         | 
| 110 105 | 
             
              prerelease: false
         | 
| 111 106 | 
             
              type: :runtime
         | 
| 112 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 113 | 
            -
              name: sensu-extensions
         | 
| 114 107 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 115 108 | 
             
                requirements:
         | 
| 116 109 | 
             
                - - '='
         | 
| 117 110 | 
             
                  - !ruby/object:Gem::Version
         | 
| 118 | 
            -
                    version: 1.2 | 
| 111 | 
            +
                    version: 1.1.2
         | 
| 112 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 119 113 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 120 114 | 
             
                requirements:
         | 
| 121 115 | 
             
                - - '='
         | 
| 122 116 | 
             
                  - !ruby/object:Gem::Version
         | 
| 123 117 | 
             
                    version: 1.2.0
         | 
| 118 | 
            +
              name: sensu-extensions
         | 
| 124 119 | 
             
              prerelease: false
         | 
| 125 120 | 
             
              type: :runtime
         | 
| 126 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 127 | 
            -
              name: sensu-transport
         | 
| 128 121 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 129 122 | 
             
                requirements:
         | 
| 130 123 | 
             
                - - '='
         | 
| 131 124 | 
             
                  - !ruby/object:Gem::Version
         | 
| 132 | 
            -
                    version: 2. | 
| 125 | 
            +
                    version: 1.2.0
         | 
| 126 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 133 127 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 134 128 | 
             
                requirements:
         | 
| 135 129 | 
             
                - - '='
         | 
| 136 130 | 
             
                  - !ruby/object:Gem::Version
         | 
| 137 | 
            -
                    version:  | 
| 131 | 
            +
                    version: 3.0.0
         | 
| 132 | 
            +
              name: sensu-transport
         | 
| 138 133 | 
             
              prerelease: false
         | 
| 139 134 | 
             
              type: :runtime
         | 
| 140 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 141 | 
            -
              name: sensu-spawn
         | 
| 142 135 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 143 136 | 
             
                requirements:
         | 
| 144 137 | 
             
                - - '='
         | 
| 145 138 | 
             
                  - !ruby/object:Gem::Version
         | 
| 146 | 
            -
                    version:  | 
| 139 | 
            +
                    version: 3.0.0
         | 
| 140 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 147 141 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 148 142 | 
             
                requirements:
         | 
| 149 143 | 
             
                - - '='
         | 
| 150 144 | 
             
                  - !ruby/object:Gem::Version
         | 
| 151 | 
            -
                    version: 1. | 
| 145 | 
            +
                    version: 1.2.0
         | 
| 146 | 
            +
              name: sensu-spawn
         | 
| 152 147 | 
             
              prerelease: false
         | 
| 153 148 | 
             
              type: :runtime
         | 
| 154 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 155 | 
            -
              name: em-redis-unified
         | 
| 156 149 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 157 150 | 
             
                requirements:
         | 
| 158 151 | 
             
                - - '='
         | 
| 159 152 | 
             
                  - !ruby/object:Gem::Version
         | 
| 160 | 
            -
                    version:  | 
| 153 | 
            +
                    version: 1.2.0
         | 
| 154 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 161 155 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 162 156 | 
             
                requirements:
         | 
| 163 157 | 
             
                - - '='
         | 
| 164 158 | 
             
                  - !ruby/object:Gem::Version
         | 
| 165 | 
            -
                    version: 0. | 
| 159 | 
            +
                    version: 1.0.0
         | 
| 160 | 
            +
              name: em-redis-unified
         | 
| 166 161 | 
             
              prerelease: false
         | 
| 167 162 | 
             
              type: :runtime
         | 
| 168 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 169 | 
            -
              name: sinatra
         | 
| 170 163 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 171 164 | 
             
                requirements:
         | 
| 172 165 | 
             
                - - '='
         | 
| 173 166 | 
             
                  - !ruby/object:Gem::Version
         | 
| 174 | 
            -
                    version: 1. | 
| 167 | 
            +
                    version: 1.0.0
         | 
| 168 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 175 169 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 176 170 | 
             
                requirements:
         | 
| 177 171 | 
             
                - - '='
         | 
| 178 172 | 
             
                  - !ruby/object:Gem::Version
         | 
| 179 173 | 
             
                    version: 1.4.6
         | 
| 174 | 
            +
              name: sinatra
         | 
| 180 175 | 
             
              prerelease: false
         | 
| 181 176 | 
             
              type: :runtime
         | 
| 182 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 183 | 
            -
              name: async_sinatra
         | 
| 184 177 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 185 178 | 
             
                requirements:
         | 
| 186 179 | 
             
                - - '='
         | 
| 187 180 | 
             
                  - !ruby/object:Gem::Version
         | 
| 188 | 
            -
                    version: 1. | 
| 181 | 
            +
                    version: 1.4.6
         | 
| 182 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 189 183 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 190 184 | 
             
                requirements:
         | 
| 191 185 | 
             
                - - '='
         | 
| 192 186 | 
             
                  - !ruby/object:Gem::Version
         | 
| 193 187 | 
             
                    version: 1.2.0
         | 
| 188 | 
            +
              name: async_sinatra
         | 
| 194 189 | 
             
              prerelease: false
         | 
| 195 190 | 
             
              type: :runtime
         | 
| 196 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 197 | 
            -
              name: rake
         | 
| 198 191 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 199 192 | 
             
                requirements:
         | 
| 200 | 
            -
                - -  | 
| 193 | 
            +
                - - '='
         | 
| 201 194 | 
             
                  - !ruby/object:Gem::Version
         | 
| 202 | 
            -
                    version:  | 
| 195 | 
            +
                    version: 1.2.0
         | 
| 196 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 203 197 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 204 198 | 
             
                requirements:
         | 
| 205 199 | 
             
                - - ~>
         | 
| 206 200 | 
             
                  - !ruby/object:Gem::Version
         | 
| 207 201 | 
             
                    version: '10.3'
         | 
| 202 | 
            +
              name: rake
         | 
| 208 203 | 
             
              prerelease: false
         | 
| 209 204 | 
             
              type: :development
         | 
| 210 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 211 | 
            -
              name: rspec
         | 
| 212 205 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 213 206 | 
             
                requirements:
         | 
| 214 207 | 
             
                - - ~>
         | 
| 215 208 | 
             
                  - !ruby/object:Gem::Version
         | 
| 216 | 
            -
                    version: 3 | 
| 209 | 
            +
                    version: '10.3'
         | 
| 210 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 217 211 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 218 212 | 
             
                requirements:
         | 
| 219 213 | 
             
                - - ~>
         | 
| 220 214 | 
             
                  - !ruby/object:Gem::Version
         | 
| 221 215 | 
             
                    version: 3.0.0
         | 
| 216 | 
            +
              name: rspec
         | 
| 222 217 | 
             
              prerelease: false
         | 
| 223 218 | 
             
              type: :development
         | 
| 224 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 225 | 
            -
              name: em-http-request
         | 
| 226 219 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 227 220 | 
             
                requirements:
         | 
| 228 221 | 
             
                - - ~>
         | 
| 229 222 | 
             
                  - !ruby/object:Gem::Version
         | 
| 230 | 
            -
                    version:  | 
| 223 | 
            +
                    version: 3.0.0
         | 
| 224 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 231 225 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 232 226 | 
             
                requirements:
         | 
| 233 227 | 
             
                - - ~>
         | 
| 234 228 | 
             
                  - !ruby/object:Gem::Version
         | 
| 235 229 | 
             
                    version: '1.1'
         | 
| 230 | 
            +
              name: em-http-request
         | 
| 236 231 | 
             
              prerelease: false
         | 
| 237 232 | 
             
              type: :development
         | 
| 233 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 234 | 
            +
                requirements:
         | 
| 235 | 
            +
                - - ~>
         | 
| 236 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 237 | 
            +
                    version: '1.1'
         | 
| 238 238 | 
             
            description: A monitoring framework that aims to be simple, malleable, and scalable.
         | 
| 239 239 | 
             
            email:
         | 
| 240 240 | 
             
            - portertech@gmail.com
         | 
| @@ -283,9 +283,9 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 283 283 | 
             
                  version: '0'
         | 
| 284 284 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 285 285 | 
             
              requirements:
         | 
| 286 | 
            -
              - - ' | 
| 286 | 
            +
              - - '>'
         | 
| 287 287 | 
             
                - !ruby/object:Gem::Version
         | 
| 288 | 
            -
                  version:  | 
| 288 | 
            +
                  version: 1.3.1
         | 
| 289 289 | 
             
            requirements: []
         | 
| 290 290 | 
             
            rubyforge_project:
         | 
| 291 291 | 
             
            rubygems_version: 2.1.9
         |