karma_messages 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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: []