pushyd 0.24.1 → 0.25.0
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/.gitignore +4 -0
- data/bin/pushyd +5 -5
- data/defaults.yml +8 -1
- data/lib/pushyd/consumer.rb +1 -1
- data/lib/pushyd/proxy.rb +25 -13
- data/pushyd.gemspec +2 -2
- metadata +6 -7
- data/Gemfile.lock +0 -101
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 1bf480c7c62d3a53870416ec77b427dd66dd0576
         | 
| 4 | 
            +
              data.tar.gz: 1de20b6c29e3aca9aef05a616bc28ae27f4a42d9
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: c3d64b444baa8cabd798e29933e214f3731a46439583014e35ded348d6e9f75a4132eb9d446b92aee14dcf310e8b1746f3dc4e2758374924fd6c11f0c246bfb2
         | 
| 7 | 
            +
              data.tar.gz: d2e5425547396b6e048d9c264a13ed63d00ac965d92b71f6cdd77a591dce731fab720d6eb8d1de9e957c1d9888aab74dd7cd81a8ca9f9fe3d93a9fe8ce1a4af4
         | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/bin/pushyd
    CHANGED
    
    | @@ -25,7 +25,7 @@ begin | |
| 25 25 |  | 
| 26 26 | 
             
              # Parse options and check compliance
         | 
| 27 27 | 
             
              parser = OptionParser.new do |opts|
         | 
| 28 | 
            -
                opts.banner = "Usage: #{File.basename $PROGRAM_NAME} [options] start|stop"
         | 
| 28 | 
            +
                opts.banner = "Usage: #{File.basename $PROGRAM_NAME} [options] run|start|stop"
         | 
| 29 29 | 
             
                opts.on("-l", "--log LOGFILE")                                  { |path| cmd_logfile = File.expand_path(path.to_s)}
         | 
| 30 30 | 
             
                opts.on("-c", "--config CONFIGFILE")                            { |path| cmd_config = File.expand_path(path.to_s)}
         | 
| 31 31 | 
             
                opts.on("-e", "--environment ENV")                              { |env| Conf.app_env = env }
         | 
| @@ -56,9 +56,9 @@ puts "Environment     \t #{Conf.app_env}" | |
| 56 56 | 
             
            puts "Config files    \t #{Conf.files}"
         | 
| 57 57 | 
             
            puts "Started at      \t #{Conf.app_started}"
         | 
| 58 58 | 
             
            puts "Loging to file  \t #{Conf[:log][:file]}" if Conf[:log].is_a? Enumerable
         | 
| 59 | 
            -
            puts "Process name    \t #{Conf. | 
| 60 | 
            -
            puts "Newrelic        \t #{Conf. | 
| 61 | 
            -
            puts "Rollbar         \t #{Conf. | 
| 59 | 
            +
            puts "Process name    \t #{Conf.generate_process_name}"
         | 
| 60 | 
            +
            puts "Newrelic        \t #{Conf.feature_newrelic? || '-'}"
         | 
| 61 | 
            +
            puts "Rollbar         \t #{Conf.feature_rollbar? || '-'}"
         | 
| 62 62 | 
             
            if cmd_dump
         | 
| 63 63 | 
             
              puts
         | 
| 64 64 | 
             
              puts Conf.dump
         | 
| @@ -73,7 +73,7 @@ monitor: false, | |
| 73 73 | 
             
              dir_mode: :normal,
         | 
| 74 74 | 
             
              dir: '/tmp/'
         | 
| 75 75 | 
             
              }
         | 
| 76 | 
            -
            Daemons.run_proc(Conf. | 
| 76 | 
            +
            Daemons.run_proc(Conf.generate_process_name, run_options) do
         | 
| 77 77 | 
             
              # Load code
         | 
| 78 78 | 
             
              Conf.prepare_newrelic
         | 
| 79 79 |  | 
    
        data/defaults.yml
    CHANGED
    
    | @@ -34,7 +34,14 @@ rollbar: | |
| 34 34 | 
             
            #   proxy_tests:
         | 
| 35 35 | 
             
            #     title: All proxy tests messages
         | 
| 36 36 | 
             
            #     topic: proxy
         | 
| 37 | 
            -
            #      | 
| 37 | 
            +
            #     keys: proxy.#
         | 
| 38 | 
            +
            #     keys: proxy.key1, proxy.key2, proxy.key3
         | 
| 39 | 
            +
                # keys: 
         | 
| 40 | 
            +
                #     - proxy.key1
         | 
| 41 | 
            +
                #     - proxy.key2
         | 
| 42 | 
            +
                #     - proxy.key3
         | 
| 43 | 
            +
            #     keys: "proxy.#"
         | 
| 44 | 
            +
            #     keys: "proxy.#"
         | 
| 38 45 | 
             
            #     subscribe: false
         | 
| 39 46 | 
             
            #     #relay: http://requestb.in/1clzv7v1
         | 
| 40 47 |  | 
    
        data/lib/pushyd/consumer.rb
    CHANGED
    
    
    
        data/lib/pushyd/proxy.rb
    CHANGED
    
    | @@ -18,7 +18,7 @@ module PushyDaemon | |
| 18 18 | 
             
                  # Init ASCII table
         | 
| 19 19 | 
             
                  @table = Terminal::Table.new
         | 
| 20 20 | 
             
                  @table.title = "Rules summary"
         | 
| 21 | 
            -
                  @table.headings = ["rule", "topic", " | 
| 21 | 
            +
                  @table.headings = ["rule", "topic", "> queue", "> relay", "routing key", "bind status"]
         | 
| 22 22 | 
             
                  @table.align_column(5, :right)
         | 
| 23 23 |  | 
| 24 24 | 
             
                  # Prepare logger
         | 
| @@ -82,23 +82,30 @@ module PushyDaemon | |
| 82 82 | 
             
                  end
         | 
| 83 83 | 
             
                  log_info "create_consumers: #{config_rules.keys.join(', ')}"
         | 
| 84 84 |  | 
| 85 | 
            -
                  # Subscribe for each and every rule/ | 
| 85 | 
            +
                  # Subscribe for each and every rule/key
         | 
| 86 86 | 
             
                  config_rules.each do |name, rule|
         | 
| 87 87 | 
             
                    rule[:name] = name
         | 
| 88 88 | 
             
                    @consumers << create_consumer(rule)
         | 
| 89 89 | 
             
                  end
         | 
| 90 90 | 
             
                end
         | 
| 91 91 |  | 
| 92 | 
            -
                # Subscribe to interesting topic/ | 
| 92 | 
            +
                # Subscribe to interesting topic/key and bind a listenner
         | 
| 93 93 | 
             
                def create_consumer rule
         | 
| 94 94 | 
             
                  # Check information
         | 
| 95 95 | 
             
                  rule_name   = rule[:name].to_s
         | 
| 96 96 | 
             
                  rule_topic  = rule[:topic].to_s
         | 
| 97 | 
            -
                  rule_routes = rule[:routes].to_s.split(' ')
         | 
| 98 97 | 
             
                  rule_queue  = sprintf('%s-%s', BmcDaemonLib::Conf.app_name, rule_name.gsub('_', '-'))
         | 
| 99 98 |  | 
| 99 | 
            +
                  # Extract routing keys
         | 
| 100 | 
            +
                  if rule[:keys].is_a? Array
         | 
| 101 | 
            +
                    rule_keys = rule[:keys].map(&:to_s)
         | 
| 102 | 
            +
                  else
         | 
| 103 | 
            +
                    rule_keys = rule[:keys].to_s.split(',').map(&:strip)
         | 
| 104 | 
            +
                  end
         | 
| 105 | 
            +
             | 
| 106 | 
            +
                  # Check we have a topic and at least one routing key
         | 
| 100 107 | 
             
                  fail PushyDaemon::EndpointSubscribeContext, "rule [#{rule_name}] lacking topic" unless rule_topic
         | 
| 101 | 
            -
                  fail PushyDaemon::EndpointSubscribeContext, "rule [#{rule_name}] lacking  | 
| 108 | 
            +
                  fail PushyDaemon::EndpointSubscribeContext, "rule [#{rule_name}] lacking keys" if rule_keys.empty?
         | 
| 102 109 |  | 
| 103 110 | 
             
                  # Build a new consumer
         | 
| 104 111 | 
             
                  consumer = Consumer.new(@conn, rule_name, rule)
         | 
| @@ -106,18 +113,23 @@ module PushyDaemon | |
| 106 113 | 
             
                  # Subscribe to my own queue
         | 
| 107 114 | 
             
                  consumer.subscribe_to_queue rule_queue, "rule:#{rule_name}"
         | 
| 108 115 |  | 
| 109 | 
            -
                  # Bind each  | 
| 110 | 
            -
                   | 
| 116 | 
            +
                  # Bind each key to exchange
         | 
| 117 | 
            +
                  rule_keys.each do |key|
         | 
| 111 118 | 
             
                    begin
         | 
| 112 | 
            -
                       | 
| 113 | 
            -
             | 
| 114 | 
            -
             | 
| 115 | 
            -
                      status = " | 
| 116 | 
            -
                      log_error " | 
| 119 | 
            +
                      q = consumer.listen_to rule_topic, key
         | 
| 120 | 
            +
                    rescue BmcDaemonLib::MqConsumerTopicNotFound,
         | 
| 121 | 
            +
                           BmcDaemonLib::MqConsumerException => e
         | 
| 122 | 
            +
                      status = "FAILED: #{e.class} \n#{e.message}"
         | 
| 123 | 
            +
                      log_error "create_consumer [#{e.class}] #{e.message}"
         | 
| 124 | 
            +
                    rescue StandardError => e
         | 
| 125 | 
            +
                      status = "FAILED: #{e.message}"
         | 
| 126 | 
            +
                      log_error "create_consumer: #{e.message}"
         | 
| 127 | 
            +
                    else
         | 
| 128 | 
            +
                      status = "QUEUE #{q.object_id}"
         | 
| 117 129 | 
             
                    end
         | 
| 118 130 |  | 
| 119 131 | 
             
                    # Add row to config table
         | 
| 120 | 
            -
                    @table.add_row [rule_name, rule_topic,  | 
| 132 | 
            +
                    @table.add_row [rule_name, rule_topic, rule_queue, rule[:relay].to_s, key, status ]
         | 
| 121 133 | 
             
                  end
         | 
| 122 134 |  | 
| 123 135 | 
             
                  # Return consumer
         | 
    
        data/pushyd.gemspec
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            # coding: utf-8
         | 
| 2 2 | 
             
            Gem::Specification.new do |spec|
         | 
| 3 3 | 
             
              # Project version
         | 
| 4 | 
            -
              spec.version                      = "0. | 
| 4 | 
            +
              spec.version                      = "0.25.0"
         | 
| 5 5 |  | 
| 6 6 | 
             
              # Project description
         | 
| 7 7 | 
             
              spec.name                         = "pushyd"
         | 
| @@ -28,7 +28,7 @@ Gem::Specification.new do |spec| | |
| 28 28 | 
             
              # spec.add_development_dependency "pry"
         | 
| 29 29 |  | 
| 30 30 | 
             
              # Runtime dependencies
         | 
| 31 | 
            -
              spec.add_runtime_dependency       "bmc-daemon-lib", " | 
| 31 | 
            +
              spec.add_runtime_dependency       "bmc-daemon-lib", "= 0.9.2"
         | 
| 32 32 | 
             
              spec.add_runtime_dependency       "daemons"
         | 
| 33 33 | 
             
              spec.add_runtime_dependency       "json"
         | 
| 34 34 | 
             
              spec.add_runtime_dependency       "bunny", "~> 2.3"
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: pushyd
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.25.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Bruno MEDICI
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2017- | 
| 11 | 
            +
            date: 2017-03-21 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -84,16 +84,16 @@ dependencies: | |
| 84 84 | 
             
              name: bmc-daemon-lib
         | 
| 85 85 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 86 | 
             
                requirements:
         | 
| 87 | 
            -
                - -  | 
| 87 | 
            +
                - - '='
         | 
| 88 88 | 
             
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            -
                    version: 0. | 
| 89 | 
            +
                    version: 0.9.2
         | 
| 90 90 | 
             
              type: :runtime
         | 
| 91 91 | 
             
              prerelease: false
         | 
| 92 92 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 93 | 
             
                requirements:
         | 
| 94 | 
            -
                - -  | 
| 94 | 
            +
                - - '='
         | 
| 95 95 | 
             
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            -
                    version: 0. | 
| 96 | 
            +
                    version: 0.9.2
         | 
| 97 97 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 98 98 | 
             
              name: daemons
         | 
| 99 99 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -217,7 +217,6 @@ files: | |
| 217 217 | 
             
            - ".gitignore"
         | 
| 218 218 | 
             
            - ".rubocop.yml"
         | 
| 219 219 | 
             
            - Gemfile
         | 
| 220 | 
            -
            - Gemfile.lock
         | 
| 221 220 | 
             
            - README.md
         | 
| 222 221 | 
             
            - Rakefile
         | 
| 223 222 | 
             
            - bin/pushyd
         | 
    
        data/Gemfile.lock
    DELETED
    
    | @@ -1,101 +0,0 @@ | |
| 1 | 
            -
            PATH
         | 
| 2 | 
            -
              remote: .
         | 
| 3 | 
            -
              specs:
         | 
| 4 | 
            -
                pushyd (0.24.1)
         | 
| 5 | 
            -
                  api-auth
         | 
| 6 | 
            -
                  bmc-daemon-lib (~> 0.6.0)
         | 
| 7 | 
            -
                  bunny (~> 2.3)
         | 
| 8 | 
            -
                  daemons
         | 
| 9 | 
            -
                  json
         | 
| 10 | 
            -
                  newrelic_rpm
         | 
| 11 | 
            -
                  rest-client (~> 1.8)
         | 
| 12 | 
            -
                  rollbar
         | 
| 13 | 
            -
                  terminal-table
         | 
| 14 | 
            -
             | 
| 15 | 
            -
            GEM
         | 
| 16 | 
            -
              remote: https://rubygems.org/
         | 
| 17 | 
            -
              specs:
         | 
| 18 | 
            -
                addressable (2.5.0)
         | 
| 19 | 
            -
                  public_suffix (~> 2.0, >= 2.0.2)
         | 
| 20 | 
            -
                amq-protocol (2.0.1)
         | 
| 21 | 
            -
                api-auth (2.1.0)
         | 
| 22 | 
            -
                ast (2.3.0)
         | 
| 23 | 
            -
                bmc-daemon-lib (0.6.0)
         | 
| 24 | 
            -
                  chamber (~> 2.9.1)
         | 
| 25 | 
            -
                bunny (2.6.2)
         | 
| 26 | 
            -
                  amq-protocol (>= 2.0.1)
         | 
| 27 | 
            -
                chamber (2.9.1)
         | 
| 28 | 
            -
                  hashie (~> 3.3)
         | 
| 29 | 
            -
                  thor (~> 0.19.1)
         | 
| 30 | 
            -
                daemons (1.2.4)
         | 
| 31 | 
            -
                diff-lcs (1.2.5)
         | 
| 32 | 
            -
                domain_name (0.5.20161129)
         | 
| 33 | 
            -
                  unf (>= 0.0.5, < 1.0.0)
         | 
| 34 | 
            -
                hashie (3.4.6)
         | 
| 35 | 
            -
                http (2.1.0)
         | 
| 36 | 
            -
                  addressable (~> 2.3)
         | 
| 37 | 
            -
                  http-cookie (~> 1.0)
         | 
| 38 | 
            -
                  http-form_data (~> 1.0.1)
         | 
| 39 | 
            -
                  http_parser.rb (~> 0.6.0)
         | 
| 40 | 
            -
                http-cookie (1.0.3)
         | 
| 41 | 
            -
                  domain_name (~> 0.5)
         | 
| 42 | 
            -
                http-form_data (1.0.1)
         | 
| 43 | 
            -
                http_parser.rb (0.6.0)
         | 
| 44 | 
            -
                json (2.0.3)
         | 
| 45 | 
            -
                mime-types (2.99.3)
         | 
| 46 | 
            -
                multi_json (1.12.1)
         | 
| 47 | 
            -
                netrc (0.11.0)
         | 
| 48 | 
            -
                newrelic_rpm (3.17.2.327)
         | 
| 49 | 
            -
                parser (2.3.3.1)
         | 
| 50 | 
            -
                  ast (~> 2.2)
         | 
| 51 | 
            -
                powerpack (0.1.1)
         | 
| 52 | 
            -
                public_suffix (2.0.5)
         | 
| 53 | 
            -
                rainbow (2.2.1)
         | 
| 54 | 
            -
                rake (12.0.0)
         | 
| 55 | 
            -
                rest-client (1.8.0)
         | 
| 56 | 
            -
                  http-cookie (>= 1.0.2, < 2.0)
         | 
| 57 | 
            -
                  mime-types (>= 1.16, < 3.0)
         | 
| 58 | 
            -
                  netrc (~> 0.7)
         | 
| 59 | 
            -
                rollbar (2.14.0)
         | 
| 60 | 
            -
                  multi_json
         | 
| 61 | 
            -
                rspec (3.5.0)
         | 
| 62 | 
            -
                  rspec-core (~> 3.5.0)
         | 
| 63 | 
            -
                  rspec-expectations (~> 3.5.0)
         | 
| 64 | 
            -
                  rspec-mocks (~> 3.5.0)
         | 
| 65 | 
            -
                rspec-core (3.5.4)
         | 
| 66 | 
            -
                  rspec-support (~> 3.5.0)
         | 
| 67 | 
            -
                rspec-expectations (3.5.0)
         | 
| 68 | 
            -
                  diff-lcs (>= 1.2.0, < 2.0)
         | 
| 69 | 
            -
                  rspec-support (~> 3.5.0)
         | 
| 70 | 
            -
                rspec-mocks (3.5.0)
         | 
| 71 | 
            -
                  diff-lcs (>= 1.2.0, < 2.0)
         | 
| 72 | 
            -
                  rspec-support (~> 3.5.0)
         | 
| 73 | 
            -
                rspec-support (3.5.0)
         | 
| 74 | 
            -
                rubocop (0.47.0)
         | 
| 75 | 
            -
                  parser (>= 2.3.3.1, < 3.0)
         | 
| 76 | 
            -
                  powerpack (~> 0.1)
         | 
| 77 | 
            -
                  rainbow (>= 1.99.1, < 3.0)
         | 
| 78 | 
            -
                  ruby-progressbar (~> 1.7)
         | 
| 79 | 
            -
                  unicode-display_width (~> 1.0, >= 1.0.1)
         | 
| 80 | 
            -
                ruby-progressbar (1.8.1)
         | 
| 81 | 
            -
                terminal-table (1.7.3)
         | 
| 82 | 
            -
                  unicode-display_width (~> 1.1.1)
         | 
| 83 | 
            -
                thor (0.19.4)
         | 
| 84 | 
            -
                unf (0.1.4)
         | 
| 85 | 
            -
                  unf_ext
         | 
| 86 | 
            -
                unf_ext (0.0.7.2)
         | 
| 87 | 
            -
                unicode-display_width (1.1.3)
         | 
| 88 | 
            -
             | 
| 89 | 
            -
            PLATFORMS
         | 
| 90 | 
            -
              ruby
         | 
| 91 | 
            -
             | 
| 92 | 
            -
            DEPENDENCIES
         | 
| 93 | 
            -
              bundler (~> 1.6)
         | 
| 94 | 
            -
              http (~> 2.0)
         | 
| 95 | 
            -
              pushyd!
         | 
| 96 | 
            -
              rake
         | 
| 97 | 
            -
              rspec
         | 
| 98 | 
            -
              rubocop
         | 
| 99 | 
            -
             | 
| 100 | 
            -
            BUNDLED WITH
         | 
| 101 | 
            -
               1.13.5
         |