klogger 1.7.0 → 2.0.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 +7 -7
- data/.travis.yml +22 -3
- data/Gemfile +1 -1
- data/Gemfile.head +5 -0
- data/Gemfile.lock +71 -0
- data/Jarfile +9 -6
- data/Jarfile.lock +58 -0
- data/README.md +18 -9
- data/VERSION +1 -1
- data/klogger.gemspec +7 -6
- data/lib/klogger.rb +79 -35
- data/pom.xml +3 -2
- data/release.sh +41 -21
- data/spec/klogger/integration_spec.rb +26 -8
- metadata +13 -12
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 810f50cd7068a8ee2b806df06e61c4bbc00a8262
|
|
4
|
+
data.tar.gz: 8df861f3a791eb43fa3db096573caa16a47c6959
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 17d157ebb18ccb4eaf0dd9764a03f84df386cee00e8a4c82b9609924031a7f53d275f64375b730f794e2734ab75458c6d9baf50717246f46aabb9aa48582a05e
|
|
7
|
+
data.tar.gz: e1937dfaacaaa369fbcba8e3a48e5a193d244ccf166034f8eb3733826f60584e3b384bd0a2a7163ebbf02e821a98426116c4e108d8fc3f66479e81ec081119b1
|
data/.gitignore
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
*.gem
|
|
2
2
|
*.rbc
|
|
3
|
+
*.swp
|
|
3
4
|
.bundle
|
|
4
5
|
.config
|
|
5
6
|
coverage
|
|
@@ -18,16 +19,15 @@ _yardoc
|
|
|
18
19
|
doc/
|
|
19
20
|
|
|
20
21
|
.jbundler
|
|
21
|
-
Jarfile.lock
|
|
22
|
-
Gemfile.lock
|
|
23
|
-
|
|
24
|
-
# Build directory
|
|
25
|
-
/klogger/
|
|
26
22
|
|
|
27
23
|
# Config file
|
|
28
24
|
klogger.yml
|
|
29
25
|
|
|
30
26
|
.DS_Store
|
|
31
27
|
|
|
32
|
-
|
|
33
|
-
|
|
28
|
+
target
|
|
29
|
+
pom.xml.asc
|
|
30
|
+
|
|
31
|
+
.idea/
|
|
32
|
+
|
|
33
|
+
Gemfile.head.lock
|
data/.travis.yml
CHANGED
|
@@ -1,19 +1,38 @@
|
|
|
1
1
|
language: ruby
|
|
2
2
|
|
|
3
|
+
sudo: false
|
|
4
|
+
cache: bundler
|
|
5
|
+
|
|
6
|
+
script: 'bundle exec rake spec'
|
|
7
|
+
|
|
3
8
|
notifications:
|
|
4
9
|
email:
|
|
5
10
|
- kill-bill-commits@googlegroups.com
|
|
6
11
|
|
|
12
|
+
env:
|
|
13
|
+
global:
|
|
14
|
+
- JRUBY_OPTS='-J-Xmx1024M'
|
|
15
|
+
|
|
7
16
|
rvm:
|
|
8
|
-
- jruby-
|
|
9
|
-
- jruby-20mode
|
|
17
|
+
- jruby-1.7.19
|
|
18
|
+
- jruby-20mode # latest 1.7.x
|
|
10
19
|
- jruby-head
|
|
11
20
|
|
|
21
|
+
gemfile:
|
|
22
|
+
- Gemfile
|
|
23
|
+
- Gemfile.head
|
|
24
|
+
|
|
12
25
|
jdk:
|
|
13
|
-
- openjdk6
|
|
14
26
|
- openjdk7
|
|
15
27
|
- oraclejdk7
|
|
28
|
+
- oraclejdk8
|
|
16
29
|
|
|
17
30
|
matrix:
|
|
18
31
|
allow_failures:
|
|
19
32
|
- rvm: jruby-head
|
|
33
|
+
- jdk: oraclejdk8
|
|
34
|
+
- gemfile: Gemfile.head
|
|
35
|
+
fast_finish: true
|
|
36
|
+
|
|
37
|
+
after_success:
|
|
38
|
+
- '[ "${TRAVIS_PULL_REQUEST}" = "false" ] && echo "<settings><servers><server><id>sonatype-nexus-snapshots</id><username>\${env.OSSRH_USER}</username><password>\${env.OSSRH_PASS}</password></server></servers></settings>" > ~/settings.xml && MVN="mvn --settings $HOME/settings.xml" NO_RELEASE=1 travis_retry travis_wait bash release.sh | egrep -v "Download|Install|Upload" ; rm -f ~/settings.xml'
|
data/Gemfile
CHANGED
data/Gemfile.head
ADDED
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
klogger (2.0.0)
|
|
5
|
+
cinch (~> 2.0.3)
|
|
6
|
+
jruby-openssl (~> 0.9.6)
|
|
7
|
+
killbill (~> 4.0.0)
|
|
8
|
+
mail (~> 2.5.3)
|
|
9
|
+
|
|
10
|
+
GEM
|
|
11
|
+
remote: https://rubygems.org/
|
|
12
|
+
specs:
|
|
13
|
+
cinch (2.0.12)
|
|
14
|
+
diff-lcs (1.1.3)
|
|
15
|
+
ethon (0.7.3)
|
|
16
|
+
ffi (>= 1.3.0)
|
|
17
|
+
ffi (1.9.8-java)
|
|
18
|
+
jbundler (0.4.3)
|
|
19
|
+
maven-tools (~> 0.32.1)
|
|
20
|
+
ruby-maven (~> 3.0.4)
|
|
21
|
+
jruby-openssl (0.9.7-java)
|
|
22
|
+
killbill (4.0.0)
|
|
23
|
+
rack (>= 1.5.2)
|
|
24
|
+
sinatra (~> 1.3.4)
|
|
25
|
+
typhoeus (~> 0.6.9)
|
|
26
|
+
tzinfo (~> 1.2.0)
|
|
27
|
+
mail (2.5.4)
|
|
28
|
+
mime-types (~> 1.16)
|
|
29
|
+
treetop (~> 1.4.8)
|
|
30
|
+
maven-tools (0.32.5)
|
|
31
|
+
mime-types (1.25.1)
|
|
32
|
+
polyglot (0.3.5)
|
|
33
|
+
rack (1.6.1)
|
|
34
|
+
rack-protection (1.5.3)
|
|
35
|
+
rack
|
|
36
|
+
rake (10.4.2)
|
|
37
|
+
rspec (2.12.0)
|
|
38
|
+
rspec-core (~> 2.12.0)
|
|
39
|
+
rspec-expectations (~> 2.12.0)
|
|
40
|
+
rspec-mocks (~> 2.12.0)
|
|
41
|
+
rspec-core (2.12.2)
|
|
42
|
+
rspec-expectations (2.12.1)
|
|
43
|
+
diff-lcs (~> 1.1.3)
|
|
44
|
+
rspec-mocks (2.12.2)
|
|
45
|
+
ruby-maven (3.0.4.1.4)
|
|
46
|
+
maven-tools (~> 0.32.3)
|
|
47
|
+
thor (>= 0.14.6, < 2.0)
|
|
48
|
+
sinatra (1.3.6)
|
|
49
|
+
rack (~> 1.4)
|
|
50
|
+
rack-protection (~> 1.3)
|
|
51
|
+
tilt (~> 1.3, >= 1.3.3)
|
|
52
|
+
thor (0.19.1)
|
|
53
|
+
thread_safe (0.3.5-java)
|
|
54
|
+
tilt (1.4.1)
|
|
55
|
+
treetop (1.4.15)
|
|
56
|
+
polyglot
|
|
57
|
+
polyglot (>= 0.3.1)
|
|
58
|
+
typhoeus (0.6.9)
|
|
59
|
+
ethon (>= 0.7.1)
|
|
60
|
+
tzinfo (1.2.2)
|
|
61
|
+
thread_safe (~> 0.1)
|
|
62
|
+
|
|
63
|
+
PLATFORMS
|
|
64
|
+
java
|
|
65
|
+
|
|
66
|
+
DEPENDENCIES
|
|
67
|
+
jbundler (~> 0.4.3)
|
|
68
|
+
klogger!
|
|
69
|
+
rack (>= 1.5.2)
|
|
70
|
+
rake (>= 10.0.0)
|
|
71
|
+
rspec (~> 2.12.0)
|
data/Jarfile
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
jar 'org.kill-bill.billing:killbill-api', '0.
|
|
2
|
-
jar 'org.kill-bill.billing.plugin:killbill-plugin-api-
|
|
3
|
-
jar 'org.kill-bill.billing.plugin:killbill-plugin-api-
|
|
4
|
-
jar 'org.kill-bill.billing.plugin:killbill-plugin-api-
|
|
5
|
-
jar 'org.kill-bill.billing:killbill-
|
|
6
|
-
jar '
|
|
1
|
+
jar 'org.kill-bill.billing:killbill-api', '0.14'
|
|
2
|
+
jar 'org.kill-bill.billing.plugin:killbill-plugin-api-currency', '0.9'
|
|
3
|
+
jar 'org.kill-bill.billing.plugin:killbill-plugin-api-invoice', '0.9'
|
|
4
|
+
jar 'org.kill-bill.billing.plugin:killbill-plugin-api-notification', '0.9'
|
|
5
|
+
jar 'org.kill-bill.billing.plugin:killbill-plugin-api-payment', '0.9'
|
|
6
|
+
jar 'org.kill-bill.billing.plugin:killbill-plugin-api-routing', '0.9'
|
|
7
|
+
jar 'org.kill-bill.billing:killbill-util:tests', '0.13.7'
|
|
8
|
+
jar 'org.mockito:mockito-all', '1.10.19'
|
|
9
|
+
jar 'javax.servlet:javax.servlet-api', '3.1.0'
|
data/Jarfile.lock
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
org.kill-bill.billing:killbill-api:jar:0.14
|
|
2
|
+
com.fasterxml.jackson.core:jackson-annotations:jar:2.4.3
|
|
3
|
+
joda-time:joda-time:jar:2.3
|
|
4
|
+
org.kill-bill.billing.plugin:killbill-plugin-api-currency:jar:0.9
|
|
5
|
+
org.kill-bill.billing.plugin:killbill-plugin-api-invoice:jar:0.9
|
|
6
|
+
org.kill-bill.billing.plugin:killbill-plugin-api-notification:jar:0.9
|
|
7
|
+
org.kill-bill.billing.plugin:killbill-plugin-api-payment:jar:0.9
|
|
8
|
+
org.kill-bill.billing.plugin:killbill-plugin-api-routing:jar:0.9
|
|
9
|
+
org.kill-bill.billing:killbill-util:jar:tests:0.13.7
|
|
10
|
+
com.fasterxml.jackson.core:jackson-databind:jar:2.4.3
|
|
11
|
+
com.fasterxml.jackson.core:jackson-core:jar:2.4.3
|
|
12
|
+
com.fasterxml.jackson.dataformat:jackson-dataformat-csv:jar:2.4.3
|
|
13
|
+
com.fasterxml.jackson.datatype:jackson-datatype-joda:jar:2.4.3
|
|
14
|
+
com.samskivert:jmustache:jar:1.5
|
|
15
|
+
io.dropwizard.metrics:metrics-core:jar:3.1.1
|
|
16
|
+
io.dropwizard.metrics:metrics-ehcache:jar:3.1.1
|
|
17
|
+
net.sf.ehcache:ehcache:jar:2.9.1
|
|
18
|
+
org.antlr:stringtemplate:jar:3.2.1
|
|
19
|
+
antlr:antlr:jar:2.7.7
|
|
20
|
+
org.apache.commons:commons-email:jar:1.2
|
|
21
|
+
javax.mail:mail:jar:1.4.1
|
|
22
|
+
javax.activation:activation:jar:1.1
|
|
23
|
+
org.apache.shiro:shiro-core:jar:1.2.3
|
|
24
|
+
commons-beanutils:commons-beanutils:jar:1.8.3
|
|
25
|
+
commons-logging:commons-logging:jar:1.1.1
|
|
26
|
+
org.apache.shiro:shiro-ehcache:jar:1.2.3
|
|
27
|
+
net.sf.ehcache:ehcache-core:jar:2.5.0
|
|
28
|
+
org.apache.shiro:shiro-guice:jar:1.2.3
|
|
29
|
+
com.google.guava:guava:jar:r09
|
|
30
|
+
com.google.inject:guice:jar:3.0
|
|
31
|
+
aopalliance:aopalliance:jar:1.0
|
|
32
|
+
com.google.inject.extensions:guice-multibindings:jar:3.0
|
|
33
|
+
org.jdbi:jdbi:jar:2.62
|
|
34
|
+
org.joda:joda-money:jar:0.9
|
|
35
|
+
org.kill-bill.billing:killbill-internal-api:jar:0.13.7
|
|
36
|
+
org.kill-bill.billing:killbill-platform-api:jar:0.2
|
|
37
|
+
org.kill-bill.billing:killbill-platform-base:jar:0.2
|
|
38
|
+
com.google.code.findbugs:annotations:jar:3.0.0
|
|
39
|
+
org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4:jar:1.16
|
|
40
|
+
org.kill-bill.billing:killbill-platform-osgi-api:jar:0.2
|
|
41
|
+
org.osgi:org.osgi.core:jar:5.0.0
|
|
42
|
+
org.kill-bill.commons:killbill-clock:jar:0.3
|
|
43
|
+
org.kill-bill.commons:killbill-concurrent:jar:0.3
|
|
44
|
+
org.kill-bill.commons:killbill-embeddeddb-common:jar:0.3
|
|
45
|
+
org.kill-bill.commons:killbill-jdbi:jar:0.3
|
|
46
|
+
com.h2database:h2:jar:1.4.186
|
|
47
|
+
javax.inject:javax.inject:jar:1
|
|
48
|
+
org.kill-bill.commons:killbill-locker:jar:0.3
|
|
49
|
+
org.kill-bill.commons:killbill-queue:jar:0.3
|
|
50
|
+
org.kill-bill.commons:killbill-xmlloader:jar:0.3
|
|
51
|
+
org.skife.config:config-magic:jar:0.14
|
|
52
|
+
org.slf4j:jcl-over-slf4j:jar:1.7.12
|
|
53
|
+
org.slf4j:slf4j-api:jar:1.7.12
|
|
54
|
+
org.weakref:jmxutils:jar:1.12
|
|
55
|
+
org.mockito:mockito-all:jar:1.10.19
|
|
56
|
+
javax.servlet:javax.servlet-api:jar:3.1.0
|
|
57
|
+
org.bouncycastle:bcpkix-jdk15on:jar:1.50
|
|
58
|
+
org.bouncycastle:bcprov-jdk15on:jar:1.50
|
data/README.md
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
[](https://travis-ci.org/killbill/killbill-logging-plugin)
|
|
2
|
-
[](https://codeclimate.com/github/killbill/killbill-logging-plugin)
|
|
3
|
-
|
|
4
1
|
killbill-logging-plugin
|
|
5
2
|
=======================
|
|
6
3
|
|
|
@@ -8,12 +5,25 @@ Plugin to log Kill Bill events to Syslog, IRC, emails, ...
|
|
|
8
5
|
|
|
9
6
|
Release builds are available on [Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.kill-bill.billing.plugin.ruby%22%20AND%20a%3A%22logging-plugin%22) with coordinates `org.kill-bill.billing.plugin.ruby:logging-plugin`.
|
|
10
7
|
|
|
8
|
+
Kill Bill compatibility
|
|
9
|
+
-----------------------
|
|
10
|
+
|
|
11
|
+
| Plugin version | Kill Bill version |
|
|
12
|
+
| -------------: | ----------------: |
|
|
13
|
+
| 2.x.y | 0.14.z |
|
|
14
|
+
|
|
11
15
|
Configuration
|
|
12
16
|
-------------
|
|
13
17
|
|
|
14
|
-
The plugin expects a `klogger.yml` configuration file containing the following:
|
|
15
|
-
|
|
16
18
|
```
|
|
19
|
+
curl -v \
|
|
20
|
+
-X POST \
|
|
21
|
+
-u admin:password \
|
|
22
|
+
-H 'X-Killbill-ApiKey: bob' \
|
|
23
|
+
-H 'X-Killbill-ApiSecret: lazar' \
|
|
24
|
+
-H 'X-Killbill-CreatedBy: admin' \
|
|
25
|
+
-H 'Content-Type: text/plain' \
|
|
26
|
+
-d '
|
|
17
27
|
syslog:
|
|
18
28
|
:enabled: true
|
|
19
29
|
:ident: 'klogger'
|
|
@@ -22,7 +32,7 @@ syslog:
|
|
|
22
32
|
|
|
23
33
|
irc:
|
|
24
34
|
:enabled: true
|
|
25
|
-
:channels: ['#
|
|
35
|
+
:channels: ['#killbillio']
|
|
26
36
|
:nick: 'klogger'
|
|
27
37
|
:server: 'irc.freenode.org'
|
|
28
38
|
:port: 6667
|
|
@@ -39,7 +49,6 @@ email:
|
|
|
39
49
|
:password: 'password'
|
|
40
50
|
:authentication: 'plain'
|
|
41
51
|
:enable_starttls_auto: true
|
|
52
|
+
' \
|
|
53
|
+
http://127.0.0.1:8080/1.0/kb/tenants/uploadPluginConfig/killbill-logger
|
|
42
54
|
```
|
|
43
|
-
|
|
44
|
-
By default, the plugin will look at the plugin directory root (where `killbill.properties` is located) to find this file.
|
|
45
|
-
Alternatively, set the Kill Bill system property `-Dorg.killbill.billing.osgi.bundles.jruby.conf.dir=/my/directory` to specify another location.
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
2.0.0
|
data/klogger.gemspec
CHANGED
|
@@ -12,25 +12,26 @@ Gem::Specification.new do |s|
|
|
|
12
12
|
|
|
13
13
|
s.author = 'Kill Bill core team'
|
|
14
14
|
s.email = 'killbilling-users@googlegroups.com'
|
|
15
|
-
s.homepage = 'http://
|
|
15
|
+
s.homepage = 'http://killbill.io'
|
|
16
16
|
|
|
17
17
|
s.files = `git ls-files`.split("\n")
|
|
18
18
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
|
19
19
|
s.bindir = 'bin'
|
|
20
|
-
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
|
21
|
-
s.require_paths = [
|
|
20
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
|
21
|
+
s.require_paths = ['lib']
|
|
22
22
|
|
|
23
23
|
s.rdoc_options << '--exclude' << '.'
|
|
24
24
|
|
|
25
|
-
s.add_dependency 'killbill', '~>
|
|
25
|
+
s.add_dependency 'killbill', '~> 4.0.0'
|
|
26
|
+
|
|
26
27
|
s.add_dependency 'cinch', '~> 2.0.3'
|
|
27
28
|
s.add_dependency 'mail', '~> 2.5.3'
|
|
28
29
|
if defined?(JRUBY_VERSION)
|
|
29
30
|
# Required to avoid errors like java.lang.NoClassDefFoundError: org/bouncycastle/asn1/DERBoolean
|
|
30
|
-
s.add_dependency 'jruby-openssl', '~> 0.9.
|
|
31
|
+
s.add_dependency 'jruby-openssl', '~> 0.9.6'
|
|
31
32
|
end
|
|
32
33
|
|
|
33
|
-
s.add_development_dependency 'jbundler', '~> 0.4.
|
|
34
|
+
s.add_development_dependency 'jbundler', '~> 0.4.3'
|
|
34
35
|
s.add_development_dependency 'rake', '>= 10.0.0'
|
|
35
36
|
s.add_development_dependency 'rack', '>= 1.5.2'
|
|
36
37
|
s.add_development_dependency 'rspec', '~> 2.12.0'
|
data/lib/klogger.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'logger'
|
|
2
|
+
require 'pathname'
|
|
2
3
|
require 'psych'
|
|
3
4
|
|
|
4
5
|
require 'killbill'
|
|
@@ -20,69 +21,112 @@ module Klogger
|
|
|
20
21
|
|
|
21
22
|
def initialize(*args)
|
|
22
23
|
super(*args)
|
|
23
|
-
|
|
24
|
+
|
|
25
|
+
@config_key_name = "PLUGIN_CONFIG_killbill-logger".to_sym
|
|
26
|
+
@enabled_modules = {}
|
|
24
27
|
end
|
|
25
28
|
|
|
26
29
|
def start_plugin
|
|
27
|
-
configure_modules
|
|
28
|
-
@enabled_modules.each do |m|
|
|
29
|
-
begin
|
|
30
|
-
m.start_plugin
|
|
31
|
-
rescue => e
|
|
32
|
-
@logger.warn "Unable to start module #{m.class}: #{e.message}"
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
30
|
super
|
|
37
31
|
|
|
32
|
+
@global_config = global_configuration
|
|
38
33
|
@logger.info "Klogger::KloggerPlugin started"
|
|
39
34
|
end
|
|
40
35
|
|
|
41
36
|
def on_event(event)
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
end
|
|
37
|
+
tenant_id = tenant(event)
|
|
38
|
+
|
|
39
|
+
if (event.event_type == :TENANT_CONFIG_CHANGE || event.event_type == :TENANT_CONFIG_DELETION) &&
|
|
40
|
+
event.meta_data.to_sym == @config_key_name
|
|
41
|
+
@enabled_modules[tenant_id] = nil
|
|
48
42
|
end
|
|
43
|
+
configure_modules(tenant_id) if @enabled_modules[tenant_id].nil?
|
|
44
|
+
|
|
45
|
+
dispatch_event(event, tenant_id)
|
|
49
46
|
end
|
|
50
47
|
|
|
51
48
|
def stop_plugin
|
|
52
49
|
super
|
|
53
50
|
|
|
54
|
-
@enabled_modules.each
|
|
55
|
-
begin
|
|
56
|
-
m.stop_plugin
|
|
57
|
-
rescue => e
|
|
58
|
-
@logger.warn "Unable to stop module #{m.class}: #{e.message}"
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
|
51
|
+
@enabled_modules.keys.each { |kb_tenant_id| stop_modules(kb_tenant_id) }
|
|
62
52
|
@logger.info "Klogger::KloggerPlugin stopped"
|
|
63
53
|
end
|
|
64
54
|
|
|
65
55
|
private
|
|
66
56
|
|
|
67
|
-
def configure_modules
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
return
|
|
74
|
-
end
|
|
57
|
+
def configure_modules(kb_tenant_id)
|
|
58
|
+
@enabled_modules[kb_tenant_id] ||= []
|
|
59
|
+
|
|
60
|
+
stop_modules(kb_tenant_id)
|
|
61
|
+
|
|
62
|
+
tenant_config = @global_config.merge(tenant_configuration(kb_tenant_id))
|
|
75
63
|
|
|
76
64
|
# Instantiate each module
|
|
77
|
-
|
|
65
|
+
tenant_config.each do |kmodule, config|
|
|
78
66
|
next unless config[:enabled]
|
|
79
67
|
|
|
80
68
|
module_klass = MODULES[kmodule.to_sym]
|
|
81
69
|
next unless module_klass
|
|
82
70
|
|
|
83
|
-
@logger.info "Module #{module_klass} enabled"
|
|
84
|
-
@enabled_modules << module_klass.send('new', config, @logger)
|
|
71
|
+
@logger.info "Module #{module_klass} enabled for tenant #{kb_tenant_id}"
|
|
72
|
+
@enabled_modules[kb_tenant_id] << module_klass.send('new', config, @logger)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
start_modules(kb_tenant_id)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def tenant_configuration(kb_tenant_id)
|
|
79
|
+
return {} if kb_tenant_id.nil? || kb_tenant_id == :monotenant
|
|
80
|
+
context = @kb_apis.create_context(kb_tenant_id)
|
|
81
|
+
values = @kb_apis.tenant_user_api.get_tenant_values_for_key(@config_key_name, context)
|
|
82
|
+
values && values[0] ? Psych.load(values[0]) : {}
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def global_configuration
|
|
86
|
+
config_file = "#{@conf_dir}/klogger.yml"
|
|
87
|
+
return {} unless Pathname.new(config_file).file?
|
|
88
|
+
|
|
89
|
+
begin
|
|
90
|
+
Psych.load_file(config_file)
|
|
91
|
+
rescue
|
|
92
|
+
@logger.warn "Unable to parse the config file #{config_file}"
|
|
93
|
+
{}
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def dispatch_event(event, kb_tenant_id)
|
|
98
|
+
@enabled_modules[kb_tenant_id].each do |m|
|
|
99
|
+
begin
|
|
100
|
+
m.on_event(event)
|
|
101
|
+
rescue => e
|
|
102
|
+
@logger.warn "Unable to send event to module #{m.class}: #{e.message}"
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def start_modules(kb_tenant_id)
|
|
108
|
+
@enabled_modules[kb_tenant_id].each do |m|
|
|
109
|
+
begin
|
|
110
|
+
m.start_plugin
|
|
111
|
+
rescue => e
|
|
112
|
+
@logger.warn "Unable to start module #{m.class}: #{e.message}"
|
|
113
|
+
end
|
|
85
114
|
end
|
|
86
115
|
end
|
|
116
|
+
|
|
117
|
+
def stop_modules(kb_tenant_id)
|
|
118
|
+
@enabled_modules[kb_tenant_id].each do |m|
|
|
119
|
+
begin
|
|
120
|
+
m.stop_plugin
|
|
121
|
+
rescue => e
|
|
122
|
+
@logger.warn "Unable to stop module #{m.class}: #{e.message}"
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
@enabled_modules[kb_tenant_id] = []
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def tenant(event)
|
|
129
|
+
event.tenant_id.nil? ? :monotenant : event.tenant_id
|
|
130
|
+
end
|
|
87
131
|
end
|
|
88
132
|
end
|
data/pom.xml
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
2
|
<!--
|
|
3
3
|
~ Copyright 2010-2013 Ning, Inc.
|
|
4
|
+
~ Copyright 2014-2015 The Billing Project, LLC
|
|
4
5
|
~
|
|
5
|
-
~
|
|
6
|
+
~ The Billing Project licenses this file to you under the Apache License, version 2.0
|
|
6
7
|
~ (the "License"); you may not use this file except in compliance with the
|
|
7
8
|
~ License. You may obtain a copy of the License at:
|
|
8
9
|
~
|
|
@@ -25,7 +26,7 @@
|
|
|
25
26
|
<groupId>org.kill-bill.billing.plugin.ruby</groupId>
|
|
26
27
|
<artifactId>logging-plugin</artifactId>
|
|
27
28
|
<packaging>pom</packaging>
|
|
28
|
-
<version>
|
|
29
|
+
<version>2.0.0</version>
|
|
29
30
|
<name>logging-plugin</name>
|
|
30
31
|
<url>http://github.com/killbill/killbill-logging-plugin</url>
|
|
31
32
|
<description>Plugin to log Kill Bill events</description>
|
data/release.sh
CHANGED
|
@@ -1,41 +1,61 @@
|
|
|
1
1
|
set -e
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
BUNDLE=${BUNDLE-"bundle exec"}
|
|
4
|
+
MVN=${MVN-"mvn"}
|
|
5
|
+
|
|
6
|
+
if [ 'GNU' != "$(tar --help | grep GNU | head -1 | awk '{print $1}')" ]; then
|
|
7
|
+
echo 'Unable to release: make sure to use GNU tar'
|
|
5
8
|
exit 1
|
|
6
9
|
fi
|
|
7
10
|
|
|
8
11
|
if $(ruby -e'require "java"'); then
|
|
9
12
|
# Good
|
|
10
|
-
echo
|
|
13
|
+
echo 'Detected JRuby'
|
|
11
14
|
else
|
|
12
|
-
echo
|
|
15
|
+
echo 'Unable to release: make sure to use JRuby'
|
|
13
16
|
exit 1
|
|
14
17
|
fi
|
|
15
18
|
|
|
16
19
|
VERSION=`grep -E '<version>([0-9]+\.[0-9]+\.[0-9]+)</version>' pom.xml | sed 's/[\t \n]*<version>\(.*\)<\/version>[\t \n]*/\1/'`
|
|
17
|
-
if [ "$VERSION" != "$(cat $PWD/VERSION)" ]; then
|
|
18
|
-
echo
|
|
20
|
+
if [[ -z "$NO_RELEASE" && "$VERSION" != "$(cat $PWD/VERSION)" ]]; then
|
|
21
|
+
echo 'Unable to release: make sure the versions in pom.xml and VERSION match'
|
|
19
22
|
exit 1
|
|
20
23
|
fi
|
|
21
24
|
|
|
22
|
-
echo
|
|
23
|
-
rake killbill:clean
|
|
25
|
+
echo 'Cleaning up'
|
|
26
|
+
$BUNDLE rake killbill:clean
|
|
27
|
+
|
|
28
|
+
echo 'Building gem'
|
|
29
|
+
$BUNDLE rake build
|
|
24
30
|
|
|
25
|
-
|
|
26
|
-
|
|
31
|
+
if [[ -z "$NO_RELEASE" ]]; then
|
|
32
|
+
echo 'Pushing the gem to Rubygems'
|
|
33
|
+
$BUNDLE rake release
|
|
34
|
+
fi
|
|
27
35
|
|
|
28
|
-
echo
|
|
29
|
-
rake killbill:package
|
|
36
|
+
echo 'Building artifact'
|
|
37
|
+
$BUNDLE rake killbill:package
|
|
30
38
|
|
|
31
39
|
ARTIFACT="$PWD/pkg/klogger-$VERSION.tar.gz"
|
|
32
40
|
echo "Pushing $ARTIFACT to Maven Central"
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
|
|
42
|
+
if [[ -z "$NO_RELEASE" ]]; then
|
|
43
|
+
GOAL=gpg:sign-and-deploy-file
|
|
44
|
+
REPOSITORY_ID=ossrh-releases
|
|
45
|
+
URL=https://oss.sonatype.org/service/local/staging/deploy/maven2/
|
|
46
|
+
else
|
|
47
|
+
GOAL=deploy:deploy-file
|
|
48
|
+
REPOSITORY_ID=sonatype-nexus-snapshots
|
|
49
|
+
URL=https://oss.sonatype.org/content/repositories/snapshots/
|
|
50
|
+
VERSION="$VERSION-SNAPSHOT"
|
|
51
|
+
fi
|
|
52
|
+
|
|
53
|
+
$MVN $GOAL \
|
|
54
|
+
-DgroupId=org.kill-bill.billing.plugin.ruby \
|
|
55
|
+
-DartifactId=logging-plugin \
|
|
56
|
+
-Dversion=$VERSION \
|
|
57
|
+
-Dpackaging=tar.gz \
|
|
58
|
+
-DrepositoryId=$REPOSITORY_ID \
|
|
59
|
+
-Durl=$URL \
|
|
60
|
+
-Dfile=$ARTIFACT \
|
|
61
|
+
-DpomFile=pom.xml
|
|
@@ -6,25 +6,39 @@ class String
|
|
|
6
6
|
end
|
|
7
7
|
end
|
|
8
8
|
|
|
9
|
+
class FakeJavaTenantUserApi
|
|
10
|
+
|
|
11
|
+
attr_accessor :per_tenant_config
|
|
12
|
+
|
|
13
|
+
def initialize(per_tenant_config = {})
|
|
14
|
+
@per_tenant_config = per_tenant_config
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def get_tenant_values_for_key(key, context)
|
|
18
|
+
result = @per_tenant_config[context.tenant_id.to_s]
|
|
19
|
+
result ? [result] : nil
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
9
23
|
class MockEvent
|
|
10
|
-
def
|
|
24
|
+
def event_type
|
|
11
25
|
'InvoiceCreationEvent'
|
|
12
26
|
end
|
|
13
27
|
|
|
14
|
-
def
|
|
28
|
+
def object_type
|
|
15
29
|
'INVOICE'
|
|
16
30
|
end
|
|
17
31
|
|
|
18
|
-
def
|
|
19
|
-
|
|
32
|
+
def object_id
|
|
33
|
+
SecureRandom.uuid
|
|
20
34
|
end
|
|
21
35
|
|
|
22
|
-
def
|
|
23
|
-
|
|
36
|
+
def account_id
|
|
37
|
+
SecureRandom.uuid
|
|
24
38
|
end
|
|
25
39
|
|
|
26
|
-
def
|
|
27
|
-
|
|
40
|
+
def tenant_id
|
|
41
|
+
SecureRandom.uuid
|
|
28
42
|
end
|
|
29
43
|
end
|
|
30
44
|
|
|
@@ -47,6 +61,10 @@ email:
|
|
|
47
61
|
@plugin.logger = Logger.new(STDOUT)
|
|
48
62
|
@plugin.conf_dir = File.dirname(file)
|
|
49
63
|
|
|
64
|
+
@tenant_api = FakeJavaTenantUserApi.new
|
|
65
|
+
svcs = {:tenant_user_api => @tenant_api}
|
|
66
|
+
@plugin.kb_apis = Killbill::Plugin::KillbillApi.new('klogger', svcs)
|
|
67
|
+
|
|
50
68
|
# Start the plugin here - since the config file will be deleted
|
|
51
69
|
@plugin.start_plugin
|
|
52
70
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: klogger
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 2.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kill Bill core team
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2015-05-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: killbill
|
|
@@ -16,12 +16,12 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - ~>
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version:
|
|
19
|
+
version: 4.0.0
|
|
20
20
|
requirement: !ruby/object:Gem::Requirement
|
|
21
21
|
requirements:
|
|
22
22
|
- - ~>
|
|
23
23
|
- !ruby/object:Gem::Version
|
|
24
|
-
version:
|
|
24
|
+
version: 4.0.0
|
|
25
25
|
prerelease: false
|
|
26
26
|
type: :runtime
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
@@ -58,12 +58,12 @@ dependencies:
|
|
|
58
58
|
requirements:
|
|
59
59
|
- - ~>
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: 0.9.
|
|
61
|
+
version: 0.9.6
|
|
62
62
|
requirement: !ruby/object:Gem::Requirement
|
|
63
63
|
requirements:
|
|
64
64
|
- - ~>
|
|
65
65
|
- !ruby/object:Gem::Version
|
|
66
|
-
version: 0.9.
|
|
66
|
+
version: 0.9.6
|
|
67
67
|
prerelease: false
|
|
68
68
|
type: :runtime
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
@@ -72,12 +72,12 @@ dependencies:
|
|
|
72
72
|
requirements:
|
|
73
73
|
- - ~>
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: 0.4.
|
|
75
|
+
version: 0.4.3
|
|
76
76
|
requirement: !ruby/object:Gem::Requirement
|
|
77
77
|
requirements:
|
|
78
78
|
- - ~>
|
|
79
79
|
- !ruby/object:Gem::Version
|
|
80
|
-
version: 0.4.
|
|
80
|
+
version: 0.4.3
|
|
81
81
|
prerelease: false
|
|
82
82
|
type: :development
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
@@ -131,7 +131,10 @@ files:
|
|
|
131
131
|
- .gitignore
|
|
132
132
|
- .travis.yml
|
|
133
133
|
- Gemfile
|
|
134
|
+
- Gemfile.head
|
|
135
|
+
- Gemfile.lock
|
|
134
136
|
- Jarfile
|
|
137
|
+
- Jarfile.lock
|
|
135
138
|
- NEWS
|
|
136
139
|
- README.md
|
|
137
140
|
- Rakefile
|
|
@@ -147,7 +150,7 @@ files:
|
|
|
147
150
|
- release.sh
|
|
148
151
|
- spec/klogger/integration_spec.rb
|
|
149
152
|
- spec/spec_helper.rb
|
|
150
|
-
homepage: http://
|
|
153
|
+
homepage: http://killbill.io
|
|
151
154
|
licenses:
|
|
152
155
|
- Apache License (2.0)
|
|
153
156
|
metadata: {}
|
|
@@ -173,6 +176,4 @@ rubygems_version: 2.1.9
|
|
|
173
176
|
signing_key:
|
|
174
177
|
specification_version: 4
|
|
175
178
|
summary: Plugin to log Kill Bill events.
|
|
176
|
-
test_files:
|
|
177
|
-
- spec/klogger/integration_spec.rb
|
|
178
|
-
- spec/spec_helper.rb
|
|
179
|
+
test_files: []
|