rboss 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +9 -0
- data/Gemfile +4 -0
- data/Rakefile +1 -0
- data/bin/jboss-profile +90 -0
- data/bin/twiddle +230 -0
- data/examples/jboss_profile/jbb_profile_1.yaml +32 -0
- data/examples/jboss_profile/jbb_profile_2.yaml +32 -0
- data/examples/jboss_profile/jboss_profile.yaml +7 -0
- data/examples/monitor/simple_monitor.rb +61 -0
- data/lib/rboss.rb +25 -0
- data/lib/rboss/component_processor.rb +177 -0
- data/lib/rboss/components/component.rb +52 -0
- data/lib/rboss/components/datasource.rb +198 -0
- data/lib/rboss/components/deploy_folder.rb +104 -0
- data/lib/rboss/components/hypersonic_replacer.rb +58 -0
- data/lib/rboss/components/jbossweb.rb +117 -0
- data/lib/rboss/components/jmx.rb +88 -0
- data/lib/rboss/components/mod_cluster.rb +81 -0
- data/lib/rboss/components/org/6.0/deploy_folder.rb +33 -0
- data/lib/rboss/components/org/jmx.rb +59 -0
- data/lib/rboss/components/profile_folder.rb +44 -0
- data/lib/rboss/components/resource.rb +53 -0
- data/lib/rboss/components/run_conf.rb +90 -0
- data/lib/rboss/components/run_conf.yaml +22 -0
- data/lib/rboss/components/service_script.rb +55 -0
- data/lib/rboss/components/slimming.rb +124 -0
- data/lib/rboss/components/soa-p/hypersonic_replacer.rb +79 -0
- data/lib/rboss/components/soa-p/jmx.rb +47 -0
- data/lib/rboss/components/xadatasource.rb +67 -0
- data/lib/rboss/file_processor.rb +107 -0
- data/lib/rboss/jboss_path.rb +53 -0
- data/lib/rboss/jboss_profile.rb +344 -0
- data/lib/rboss/resources/jboss_init_redhat.sh.erb +140 -0
- data/lib/rboss/resources/mod_cluster.sar/META-INF/mod_cluster-jboss-beans.xml +282 -0
- data/lib/rboss/resources/mod_cluster.sar/mod_cluster-1.1.2.Final.jar +0 -0
- data/lib/rboss/resources/run.conf.erb +62 -0
- data/lib/rboss/twiddle.rb +25 -0
- data/lib/rboss/twiddle/base_monitor.rb +57 -0
- data/lib/rboss/twiddle/mbean.rb +82 -0
- data/lib/rboss/twiddle/monitor.rb +144 -0
- data/lib/rboss/twiddle/scanner.rb +92 -0
- data/lib/rboss/twiddle/twiddle.rb +71 -0
- data/lib/rboss/utils.rb +33 -0
- data/lib/rboss/version.rb +25 -0
- data/rboss.gemspec +20 -0
- data/test/datasource_test.rb +211 -0
- data/test/deploy_folder_test.rb +126 -0
- data/test/mbean_test.rb +53 -0
- data/test/test_helper.rb +124 -0
- data/test/test_suite.rb +35 -0
- metadata +109 -0
@@ -0,0 +1,25 @@
|
|
1
|
+
# The MIT License
|
2
|
+
#
|
3
|
+
# Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in
|
13
|
+
# all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
# THE SOFTWARE.
|
22
|
+
|
23
|
+
require_relative 'twiddle/base_monitor'
|
24
|
+
require_relative 'twiddle/mbean'
|
25
|
+
require_relative 'twiddle/monitor'
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# The MIT License
|
2
|
+
#
|
3
|
+
# Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in
|
13
|
+
# all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
# THE SOFTWARE.
|
22
|
+
|
23
|
+
require_relative 'monitor'
|
24
|
+
require_relative 'scanner'
|
25
|
+
require_relative 'twiddle'
|
26
|
+
|
27
|
+
module JBoss
|
28
|
+
module Twiddle
|
29
|
+
|
30
|
+
class BaseMonitor
|
31
|
+
include JBoss::Twiddle::Monitor, JBoss::Twiddle::Scanner
|
32
|
+
|
33
|
+
def initialize twiddle
|
34
|
+
@twiddle = twiddle
|
35
|
+
defaults.each do |mbean_id, config|
|
36
|
+
monitor mbean_id, config
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
class Invoker
|
43
|
+
|
44
|
+
def monitor
|
45
|
+
@monitor ||= BaseMonitor::new self
|
46
|
+
@monitor
|
47
|
+
end
|
48
|
+
|
49
|
+
def mbean id
|
50
|
+
monitor.mbean id
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
# The MIT License
|
2
|
+
#
|
3
|
+
# Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in
|
13
|
+
# all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
# THE SOFTWARE.
|
22
|
+
|
23
|
+
require_relative 'twiddle'
|
24
|
+
|
25
|
+
module JBoss
|
26
|
+
class MBean
|
27
|
+
|
28
|
+
attr_reader :pattern
|
29
|
+
attr_accessor :resource, :twiddle
|
30
|
+
|
31
|
+
def initialize params
|
32
|
+
@pattern = params[:pattern]
|
33
|
+
@twiddle = params[:twiddle]
|
34
|
+
@env = @twiddle
|
35
|
+
end
|
36
|
+
|
37
|
+
def with resource
|
38
|
+
@resource = resource
|
39
|
+
if block_given?
|
40
|
+
yield
|
41
|
+
@resource = nil
|
42
|
+
end
|
43
|
+
self
|
44
|
+
end
|
45
|
+
|
46
|
+
def [] property
|
47
|
+
resource = @resource
|
48
|
+
env = @env
|
49
|
+
query = eval("\"#{pattern}\"")
|
50
|
+
result = @twiddle.invoke(:get, query, property)
|
51
|
+
def result.value
|
52
|
+
self.split(/=/)[1]
|
53
|
+
end
|
54
|
+
result
|
55
|
+
end
|
56
|
+
|
57
|
+
def []= property, value
|
58
|
+
resource = @resource
|
59
|
+
env = @env
|
60
|
+
query = eval("\"#{pattern}\"")
|
61
|
+
@twiddle.invoke :set, query, property, value
|
62
|
+
end
|
63
|
+
|
64
|
+
def method_missing(method, *args, &block)
|
65
|
+
_invoke_ method, args, block
|
66
|
+
end
|
67
|
+
|
68
|
+
def _invoke_ method, *args, &block
|
69
|
+
resource = @resource
|
70
|
+
env = @env
|
71
|
+
query = eval("\"#{pattern} #{method}\"")
|
72
|
+
return_value = @twiddle.invoke :invoke, query, args
|
73
|
+
if block_given?
|
74
|
+
block.call return_value
|
75
|
+
end
|
76
|
+
return_value
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
|
@@ -0,0 +1,144 @@
|
|
1
|
+
# The MIT License
|
2
|
+
#
|
3
|
+
# Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in
|
13
|
+
# all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
# THE SOFTWARE.
|
22
|
+
|
23
|
+
require_relative 'mbean'
|
24
|
+
|
25
|
+
module JBoss
|
26
|
+
module Twiddle
|
27
|
+
|
28
|
+
module Monitor
|
29
|
+
|
30
|
+
def defaults
|
31
|
+
{
|
32
|
+
:webapp => {
|
33
|
+
:pattern => 'jboss.web:type=Manager,host=localhost,path=/#{resource}',
|
34
|
+
:properties => %W(activeSessions maxActive)
|
35
|
+
},
|
36
|
+
:connector => {
|
37
|
+
:pattern => 'jboss.web:type=ThreadPool,name=#{resource}',
|
38
|
+
:properties => %W(maxThreads currentThreadCount currentThreadsBusy)
|
39
|
+
},
|
40
|
+
:server_info => {
|
41
|
+
:pattern => 'jboss.system:type=ServerInfo',
|
42
|
+
:properties => %W(ActiveThreadCount MaxMemory FreeMemory AvailableProcessors
|
43
|
+
HostAddress JavaVendor JavaVersion OSName OSArch)
|
44
|
+
},
|
45
|
+
:server => {
|
46
|
+
:pattern => 'jboss.system:type=Server',
|
47
|
+
:properties => %W(VersionNumber StartDate)
|
48
|
+
},
|
49
|
+
:system_properties => {
|
50
|
+
:pattern => 'jboss:name=SystemProperties,type=Service'
|
51
|
+
},
|
52
|
+
:request => {
|
53
|
+
:pattern => 'jboss.web:type=GlobalRequestProcessor,name=#{resource}',
|
54
|
+
:properties => %W(requestCount errorCount maxTime)
|
55
|
+
},
|
56
|
+
:datasource => {
|
57
|
+
:pattern => 'jboss.jca:service=ManagedConnectionPool,name=#{resource}',
|
58
|
+
:properties => %W(MinSize MaxSize AvailableConnectionCount InUseConnectionCount ConnectionCount)
|
59
|
+
},
|
60
|
+
:queue => {
|
61
|
+
:pattern => 'jboss.messaging.destination:service=Queue,name=#{resource}',
|
62
|
+
:properties => %W(Name JNDIName MessageCount DeliveringCount
|
63
|
+
ScheduledMessageCount MaxSize FullSize Clustered ConsumerCount)
|
64
|
+
},
|
65
|
+
:ejb => {
|
66
|
+
:pattern => 'jboss.j2ee:#{resource},service=EJB3',
|
67
|
+
:properties => %W(CreateCount RemoveCount CurrentSize AvailableCount)
|
68
|
+
}
|
69
|
+
}
|
70
|
+
end
|
71
|
+
|
72
|
+
def properties mbean_id = nil
|
73
|
+
@properties ||= {}
|
74
|
+
return properties[mbean_id] if mbean_id
|
75
|
+
@properties
|
76
|
+
end
|
77
|
+
|
78
|
+
def mbeans
|
79
|
+
@mbeans ||= {}
|
80
|
+
@mbeans
|
81
|
+
end
|
82
|
+
|
83
|
+
def resources mbean_id = nil, *resources
|
84
|
+
@resources ||= {}
|
85
|
+
return @resources unless mbean_id
|
86
|
+
return @resources[mbean_id] unless resources
|
87
|
+
if mbean_id.is_a? Array
|
88
|
+
mbean_id.each do |id|
|
89
|
+
@resources[id] = resources
|
90
|
+
end
|
91
|
+
else
|
92
|
+
@resources[mbean_id] = resources
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def monitor mbean_id, params
|
97
|
+
mbeans[mbean_id] = JBoss::MBean::new :pattern => params[:pattern], :twiddle => @twiddle
|
98
|
+
properties[mbean_id] = params[:properties]
|
99
|
+
end
|
100
|
+
|
101
|
+
def with resource
|
102
|
+
resource = send resource if resource.is_a? Symbol
|
103
|
+
if block_given?
|
104
|
+
if resource.kind_of? Array
|
105
|
+
resource.each do |res|
|
106
|
+
@current_resource = res
|
107
|
+
yield res
|
108
|
+
@current_resource = nil
|
109
|
+
end
|
110
|
+
else
|
111
|
+
@current_resource = resource
|
112
|
+
yield
|
113
|
+
@current_resource = nil
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
def mbean mbean_id = nil
|
119
|
+
return get current_scan unless mbean_id
|
120
|
+
mbeans[mbean_id]
|
121
|
+
end
|
122
|
+
|
123
|
+
def get mbean_id
|
124
|
+
mbean = mbeans[mbean_id]
|
125
|
+
if @current_resource
|
126
|
+
mbean.with @current_resource
|
127
|
+
end
|
128
|
+
mbean
|
129
|
+
end
|
130
|
+
|
131
|
+
alias_method :[], :get
|
132
|
+
|
133
|
+
def method_missing(method, *args, &block)
|
134
|
+
mbean_id = method
|
135
|
+
mbean = mbeans[mbean_id]
|
136
|
+
resource = args[0] || @current_resource
|
137
|
+
mbean.with resource
|
138
|
+
end
|
139
|
+
|
140
|
+
end
|
141
|
+
|
142
|
+
end
|
143
|
+
|
144
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
# The MIT License
|
2
|
+
#
|
3
|
+
# Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in
|
13
|
+
# all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
# THE SOFTWARE.
|
22
|
+
|
23
|
+
require "set"
|
24
|
+
|
25
|
+
module JBoss
|
26
|
+
module Twiddle
|
27
|
+
module Scanner
|
28
|
+
|
29
|
+
def webapps
|
30
|
+
_query_ "jboss.web:type=Manager,*" do |path|
|
31
|
+
path.gsub! "jboss.web:type=Manager,path=/", ""
|
32
|
+
path.gsub! /,host=.+/, ''
|
33
|
+
path
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def datasources
|
38
|
+
_query_ "jboss.jca:service=ManagedConnectionPool,*" do |path|
|
39
|
+
path.gsub "jboss.jca:service=ManagedConnectionPool,name=", ""
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def connectors
|
44
|
+
_query_ "jboss.web:type=ThreadPool,*" do |path|
|
45
|
+
path.gsub "jboss.web:type=ThreadPool,name=", ""
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def queues
|
50
|
+
_query_ "jboss.messaging.destination:service=Queue,*" do |path|
|
51
|
+
path.gsub "jboss.messaging.destination:service=Queue,name=", ""
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def ejbs
|
56
|
+
result = _query_ "jboss.j2ee:service=EJB3,*"
|
57
|
+
(result.find_all {|path| path["name="] && path["jar="]}).collect do |path|
|
58
|
+
path.gsub("jboss.j2ee:", '').gsub(/,?service=EJB3/, '')
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def deployments
|
63
|
+
wars = _query_ "jboss.web.deployment:*" do |path|
|
64
|
+
path.gsub("jboss.web.deployment:", "").split(/,/).find {|p| p.start_with? "war="}
|
65
|
+
end
|
66
|
+
ears = _query_ "jboss.j2ee:*"
|
67
|
+
ears = (ears.find_all {|path| path["ear="] && path["jar="]}).collect do |path|
|
68
|
+
path.gsub("jboss.j2ee:",'').split(/,/).find {|p| p.start_with? "ear="}
|
69
|
+
end
|
70
|
+
result = Set::new
|
71
|
+
(wars + ears).each do |deployment|
|
72
|
+
result << deployment
|
73
|
+
end
|
74
|
+
result
|
75
|
+
end
|
76
|
+
|
77
|
+
def can_scan? resource
|
78
|
+
self.respond_to? resource.to_sym
|
79
|
+
end
|
80
|
+
|
81
|
+
private
|
82
|
+
|
83
|
+
def _query_ query, &block
|
84
|
+
result = @twiddle.invoke(:query, query)
|
85
|
+
return [] if result["No MBean matches for query"]
|
86
|
+
result = result.split /\s+/
|
87
|
+
block ? result.collect(&block) : result
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# The MIT License
|
2
|
+
#
|
3
|
+
# Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in
|
13
|
+
# all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
# THE SOFTWARE.
|
22
|
+
|
23
|
+
module JBoss
|
24
|
+
module Twiddle
|
25
|
+
class Invoker
|
26
|
+
|
27
|
+
attr_reader :jboss_host, :jboss_port, :jboss_home, :jmx_user, :jmx_password
|
28
|
+
attr_accessor :command
|
29
|
+
|
30
|
+
def initialize params = {}
|
31
|
+
params = {
|
32
|
+
:jboss_home => ENV["JBOSS_HOME"],
|
33
|
+
:jboss_server => nil,
|
34
|
+
:jboss_host => '127.0.0.1',
|
35
|
+
:jboss_port => 1099,
|
36
|
+
:jmx_user => "admin",
|
37
|
+
:jmx_password => "admin"
|
38
|
+
}.merge! params
|
39
|
+
@jboss_home = params[:jboss_home]
|
40
|
+
|
41
|
+
@jboss_host = params[:jboss_host]
|
42
|
+
@jboss_port = params[:jboss_port]
|
43
|
+
@jboss_server = params[:jboss_server]
|
44
|
+
@jboss_server ||= [@jboss_host, @jboss_port].join ':'
|
45
|
+
|
46
|
+
@jmx_user = params[:jmx_user]
|
47
|
+
@jmx_password = params[:jmx_password]
|
48
|
+
|
49
|
+
@command = "#{@jboss_home}/bin/twiddle.sh -s #{@jboss_server} -u '#{@jmx_user}' -p '#{@jmx_password}'"
|
50
|
+
end
|
51
|
+
|
52
|
+
def home
|
53
|
+
@jboss_home
|
54
|
+
end
|
55
|
+
|
56
|
+
def invoke command, *arguments
|
57
|
+
execute(shell command, arguments)
|
58
|
+
end
|
59
|
+
|
60
|
+
def shell operation, *arguments
|
61
|
+
"#{command} #{operation} #{arguments.join " "}"
|
62
|
+
end
|
63
|
+
|
64
|
+
def execute shell
|
65
|
+
`#{shell}`.chomp
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
end
|