karma_messages 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c4fc92338635c4dc312346b58d3acae65276ed75
4
+ data.tar.gz: c0688fa673d3cbfa2eb65837be500c07020aa660
5
+ SHA512:
6
+ metadata.gz: 11fbde59ef9ca0ae0fb6fac1579d78111a637c1d1565bd057f8419d3d980b57c8e1a4d328da345cb0d029e99f00ea8809233f726f26d2ad5058d966ce67aae5a
7
+ data.tar.gz: bbe4a37b60c6f9fe2417444d9994e05609ada7b8b82c4abd0a20112846b19d358a6415c118e5a7fc135c7b77cd2bf45f9c4338ad5a20236418891c05c3e13bee
data/.editorconfig ADDED
@@ -0,0 +1,8 @@
1
+ root = true
2
+
3
+ [*]
4
+ end_of_line = lf
5
+ insert_final_newline = true
6
+ trim_trailing_whitespace = true
7
+ indent_style = space
8
+ indent_size = 2
data/.gitignore ADDED
@@ -0,0 +1,66 @@
1
+ # See http://help.github.com/ignore-files/ for more about ignoring files.
2
+ #
3
+ # If you find yourself ignoring temporary files generated by your text editor
4
+ # or operating system, you probably want to add a global ignore instead:
5
+ # git config --global core.excludesfile ~/.gitignore_global
6
+
7
+ .DS_Store
8
+ /.tm_properties
9
+ # rvm gemset
10
+ .rvmrc*
11
+ .yardoc
12
+
13
+ #Database file
14
+ config/database.yml
15
+ config/sunspot.yml
16
+ config/settings.yml
17
+
18
+ #Ignore this file used for the light.rb class
19
+ #ssl certificate fix
20
+ /config/initializers/fix_ssl.rb
21
+ /lib/ca-bundle
22
+
23
+ .sass-cache
24
+
25
+ # Ignore bundler config
26
+ /.bundle
27
+
28
+ # Ignore the default SQLite database.
29
+ /db/*.sqlite3
30
+
31
+ # Ignore all logfiles and tempfiles.
32
+ /log/*.log*
33
+ /log/processes/*.log*
34
+ /log/threads/*.log*
35
+ /tmp
36
+ /beanstalk/*
37
+ /solr/data
38
+ /solr/pids
39
+ /solr/pulsarplatform-master/data
40
+ /solr/pulsarplatform-master/pids
41
+ /solr/pulsarplatform-slave/pids
42
+ /solr/pulsarplatform-slave/pids
43
+ /doc
44
+ /.idea
45
+ /nbproject
46
+ *.pid
47
+ dump.rdb
48
+
49
+ /data/exports
50
+ /data/gexf
51
+ nohup.out
52
+
53
+ # solr test data
54
+ spec/solr/test/data/*
55
+ !spec/solr/test/data/.gitkeep
56
+
57
+ # byebug history file
58
+ .byebug_history
59
+
60
+ /node_modules
61
+ /dump.rdb
62
+ /cassandra.*
63
+
64
+ # cassandra 2.1.2
65
+ /spec/cassandra/apache-cassandra-2.1.2/data
66
+ /spec/cassandra/apache-cassandra-2.1.2/logs
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.4.0
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source 'https://rubygems.org'
2
+
3
+ group :development, :test do
4
+ # Call 'byebug' anywhere in the code to stop execution and get a debugger console
5
+ gem 'byebug', platform: :mri
6
+ end
7
+
8
+ # Specify your gem's dependencies in karma_messages.gemspec
9
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,37 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ karma_messages (0.1.0)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ byebug (9.0.6)
10
+ diff-lcs (1.3)
11
+ rake (10.5.0)
12
+ rspec (3.5.0)
13
+ rspec-core (~> 3.5.0)
14
+ rspec-expectations (~> 3.5.0)
15
+ rspec-mocks (~> 3.5.0)
16
+ rspec-core (3.5.4)
17
+ rspec-support (~> 3.5.0)
18
+ rspec-expectations (3.5.0)
19
+ diff-lcs (>= 1.2.0, < 2.0)
20
+ rspec-support (~> 3.5.0)
21
+ rspec-mocks (3.5.0)
22
+ diff-lcs (>= 1.2.0, < 2.0)
23
+ rspec-support (~> 3.5.0)
24
+ rspec-support (3.5.0)
25
+
26
+ PLATFORMS
27
+ ruby
28
+
29
+ DEPENDENCIES
30
+ bundler (~> 1.14)
31
+ byebug
32
+ karma_messages!
33
+ rake (~> 10.0)
34
+ rspec (~> 3.0)
35
+
36
+ BUNDLED WITH
37
+ 1.14.6
data/README.md ADDED
@@ -0,0 +1,31 @@
1
+ # KarmaMessages
2
+
3
+ Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/karma_messages`. To experiment with that code, run `bin/console` for an interactive prompt.
4
+
5
+ TODO: Delete this and the text above, and describe your gem
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'karma_messages'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install karma_messages
22
+
23
+ ## Usage
24
+
25
+ TODO: Write usage instructions here
26
+
27
+ ## Development
28
+
29
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
30
+
31
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "karma_messages"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,35 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'karma_messages/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "karma_messages"
8
+ spec.version = Karma::Messages::VERSION
9
+ spec.authors = ["extendi"]
10
+ spec.email = ["info@extendi.it"]
11
+
12
+ spec.summary = "Sqs message parser"
13
+ spec.description = ""
14
+ spec.homepage = "http://extendi.it"
15
+
16
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
17
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
18
+ # if spec.respond_to?(:metadata)
19
+ # spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
20
+ # else
21
+ # raise "RubyGems 2.0 or newer is required to protect against " \
22
+ # "public gem pushes."
23
+ # end
24
+
25
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
26
+ f.match(%r{^(test|spec|features)/})
27
+ end
28
+ spec.bindir = "exe"
29
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
30
+ spec.require_paths = ["lib"]
31
+
32
+ spec.add_development_dependency "bundler", "~> 1.14"
33
+ spec.add_development_dependency "rake", "~> 10.0"
34
+ spec.add_development_dependency "rspec", "~> 3.0"
35
+ end
@@ -0,0 +1,21 @@
1
+ require 'logger'
2
+
3
+ module Karma
4
+ module Messages
5
+
6
+ class << self
7
+ attr_writer :logger
8
+
9
+ def logger
10
+ filename = $stdout
11
+ @@logger ||= Logger.new(filename).tap do |log|
12
+ log.progname = self.name
13
+ end
14
+ end
15
+ end
16
+
17
+ end
18
+ end
19
+
20
+ require 'karma_messages/version'
21
+ require 'karma_messages/base'
@@ -0,0 +1,42 @@
1
+ module Karma::Messages
2
+ class Base
3
+ attr_accessor :errors, :service
4
+
5
+ def initialize(params)
6
+ parse(params)
7
+ end
8
+
9
+ def to_message
10
+ { service: @service, type: message_type }
11
+ end
12
+
13
+ def parse(params)
14
+ clear_errors
15
+ @errors << {service: 'Required'} if params[:service].nil?
16
+
17
+ @service = params[:service]
18
+ end
19
+
20
+ def clear_errors
21
+ @errors = []
22
+ end
23
+
24
+ def valid?
25
+ @errors.empty?
26
+ end
27
+
28
+ def message_type
29
+ self.class.name
30
+ end
31
+
32
+ end
33
+ end
34
+
35
+ require "karma_messages/base_karma"
36
+ require "karma_messages/base_karmap"
37
+
38
+ require "karma_messages/process_command_message"
39
+ require "karma_messages/process_register_message"
40
+ require "karma_messages/process_config_update_message"
41
+ require "karma_messages/process_status_update_message"
42
+ require "karma_messages/thread_config_update_message"
@@ -0,0 +1,20 @@
1
+ module Karma::Messages
2
+ class BaseKarma < Base
3
+
4
+ attr_reader :host, :project
5
+
6
+ def parse(params)
7
+ super(params)
8
+ @errors << {host: 'Required'} if params[:host].nil?
9
+ @errors << {project: 'Required'} if params[:project].nil?
10
+
11
+ @project = params[:project]
12
+ @host = params[:host]
13
+ end
14
+
15
+ def to_message
16
+ ret = super
17
+ ret.merge!({ project: @project, host: @host })
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,4 @@
1
+ module Karma::Messages
2
+ class BaseKarmap < Base
3
+ end
4
+ end
@@ -0,0 +1,42 @@
1
+ module Karma::Messages
2
+ class ProcessCommandMessage < BaseKarmap
3
+
4
+ attr_accessor :command, :pid
5
+
6
+ COMMANDS = ['start', 'stop'].freeze
7
+
8
+ def self.services=(val)
9
+ @@services = val
10
+ end
11
+
12
+ def self.services
13
+ @@services
14
+ end
15
+
16
+ def initialize(params)
17
+ Karma::Messages.logger.debug("ProcessCommandMessage::initialize")
18
+ Karma::Messages.logger.debug(params)
19
+ super(params)
20
+ end
21
+
22
+ def parse(params)
23
+ super(params)
24
+ @@services ||= {}
25
+ @errors << {service: 'Not a valid service'} if !@@services.empty? && !@@services.include?(params[:service])
26
+ @errors << {command: 'Required'} if params[:command].nil?
27
+ @errors << {command: 'Not a valid command'} if !params[:command].nil? && !COMMANDS.include?(params[:command])
28
+ @errors << {pid: 'Required'} if params[:command] == 'stop' && params[:pid].nil?
29
+
30
+ @command = params[:command]
31
+ @pid = params[:pid]
32
+ end
33
+
34
+ def to_message
35
+ ret = super
36
+ ret.merge!({ type: message_type, command: @command})
37
+ ret.merge!({ pid: @pid}) if @command == 'stop'
38
+ ret
39
+ end
40
+
41
+ end
42
+ end
@@ -0,0 +1,31 @@
1
+ module Karma::Messages
2
+ class ProcessConfigUpdateMessage < BaseKarmap
3
+
4
+ attr_accessor :memory_max, :cpu_quota, :min_running, :max_running, :auto_restart, :auto_start
5
+
6
+ def parse(params)
7
+ super(params)
8
+
9
+ @errors << { memory_max: 'Required' } if params[:memory_max].nil?
10
+ @errors << { cpu_quota: 'Required' } if params[:cpu_quota].nil?
11
+ @errors << { min_running: 'Required' } if params[:min_running].nil?
12
+ @errors << { max_running: 'Required' } if params[:max_running].nil?
13
+ @errors << { auto_restart: 'Required' } if params[:auto_restart].nil?
14
+ @errors << { auto_start: 'Required' } if params[:auto_start].nil?
15
+
16
+ @memory_max = params[:memory_max]
17
+ @cpu_quota = params[:cpu_quota]
18
+ @min_running = params[:min_running]
19
+ @max_running = params[:max_running]
20
+ @auto_restart = params[:auto_restart]
21
+ @auto_start = params[:auto_start]
22
+
23
+ end
24
+
25
+ def to_message
26
+ ret = super
27
+ ret.merge!({ type: message_type, memory_max: @memory_max, cpu_quota: @cpu_quota, min_running: @min_running, max_running: @max_running, auto_restart: @auto_restart, auto_start: @auto_start })
28
+ ret
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,5 @@
1
+ module Karma::Messages
2
+ class ProcessRegisterMessage < BaseKarma
3
+
4
+ end
5
+ end
@@ -0,0 +1,25 @@
1
+ module Karma::Messages
2
+ class ProcessStatusUpdateMessage < BaseKarma
3
+
4
+ STATUSES = {running: 'running', stopped: 'stopped', dead: 'dead'}.freeze
5
+
6
+ attr_reader :pid, :instance_name, :status
7
+
8
+ def parse(params)
9
+ super(params)
10
+ @errors << {pid: 'Required'} if params[:pid].nil?
11
+ @errors << {instance_name: 'Required'} if params[:instance_name].nil?
12
+ @errors << {status: 'Not a valid status'} if params[:status].nil? && !STATUSES.values.include?(params[:status])
13
+
14
+ @pid = params[:pid]
15
+ @instance_name = params[:instance_name]
16
+ @status = params[:status]
17
+ end
18
+
19
+ def to_message
20
+ ret = super
21
+ ret.merge!({ pid: @pid, instance_name: @instance_name, status: @status })
22
+ end
23
+
24
+ end
25
+ end
@@ -0,0 +1,22 @@
1
+ module Karma::Messages
2
+ class ThreadConfigUpdateMessage < BaseKarmap
3
+ attr_accessor :log_level, :num_threads
4
+
5
+ def parse(params)
6
+ super(params)
7
+
8
+ @errors << { log_level: 'Required' } if params[:log_level].nil?
9
+ @errors << { num_threads: 'Required' } if params[:num_threads].nil?
10
+
11
+ @log_level = params[:log_level]
12
+ @num_threads = params[:num_threads]
13
+
14
+ end
15
+
16
+ def to_message
17
+ ret = super
18
+ ret.merge!({ type: message_type, log_level: @log_level, num_threads: @num_threads })
19
+ ret
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,5 @@
1
+ module Karma
2
+ module Messages
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,105 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: karma_messages
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - extendi
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2017-03-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.14'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.14'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ description: ''
56
+ email:
57
+ - info@extendi.it
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - ".editorconfig"
63
+ - ".gitignore"
64
+ - ".ruby-version"
65
+ - Gemfile
66
+ - Gemfile.lock
67
+ - README.md
68
+ - Rakefile
69
+ - bin/console
70
+ - bin/setup
71
+ - karma_messages.gemspec
72
+ - lib/karma_messages.rb
73
+ - lib/karma_messages/base.rb
74
+ - lib/karma_messages/base_karma.rb
75
+ - lib/karma_messages/base_karmap.rb
76
+ - lib/karma_messages/process_command_message.rb
77
+ - lib/karma_messages/process_config_update_message.rb
78
+ - lib/karma_messages/process_register_message.rb
79
+ - lib/karma_messages/process_status_update_message.rb
80
+ - lib/karma_messages/thread_config_update_message.rb
81
+ - lib/karma_messages/version.rb
82
+ homepage: http://extendi.it
83
+ licenses: []
84
+ metadata: {}
85
+ post_install_message:
86
+ rdoc_options: []
87
+ require_paths:
88
+ - lib
89
+ required_ruby_version: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ required_rubygems_version: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ requirements: []
100
+ rubyforge_project:
101
+ rubygems_version: 2.6.8
102
+ signing_key:
103
+ specification_version: 4
104
+ summary: Sqs message parser
105
+ test_files: []