Class: Puppet_X::Coi::Jboss::Provider::AbstractJbossCli
- Inherits:
-
Puppet::Provider
- Object
- Puppet::Provider
- Puppet_X::Coi::Jboss::Provider::AbstractJbossCli
- Defined in:
- lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb
Overview
Base class for all JBoss providers
Constant Summary collapse
- @@bin =
"bin/jboss-cli.sh"
- @@contents =
nil
Class Method Summary collapse
- .compilecmd(runasdomain, profile, cmd) ⇒ Object
- .config_controller ⇒ Object
- .config_profile ⇒ Object
- .config_runasdomain ⇒ Object
- .controllerConfig(resource) ⇒ Object
- .escape(value) ⇒ Object
- .execshell(cmd) ⇒ Object
- .execute(jbosscmd, runasdomain, ctrlcfg, retry_count, retry_timeout) ⇒ Object
- .executeAndGet(cmd, runasdomain, ctrlcfg, retry_count, retry_timeout) ⇒ Object
- .jbossas? ⇒ Boolean
- .jbossclibin ⇒ Object
- .jbosshome ⇒ Object
- .jbosslog ⇒ Object
- .last_execute_status ⇒ Object
- .timeout_cli ⇒ Object
Instance Method Summary collapse
- #bringDown(typename, args) ⇒ Object
- #bringUp(typename, args) ⇒ Object
- #compilecmd(cmd) ⇒ Object
- #escape(value) ⇒ Object
- #execute(jbosscmd) ⇒ Object
- #executeAndGet(jbosscmd) ⇒ Object
- #executeWithFail(typename, passed_args, way) ⇒ Object
- #executeWithoutRetry(jbosscmd) ⇒ Object
- #getlog(lines) ⇒ Object
- #isprintinglog=(setting) ⇒ Object
- #printlog(lines) ⇒ Object
-
#runasdomain? ⇒ Boolean
TODO: Uncomment for defered provider confinment after droping support for Puppet < 3.0 commands :jbosscli => Puppet_X::Coi::Jboss::Provider::AbstractJbossCli.jbossclibin.
- #setattribute(path, name, value) ⇒ Object
- #setattribute_raw(path, name, value) ⇒ Object
- #trace(method) ⇒ Object
- #traceout(method, retval) ⇒ Object
Class Method Details
.compilecmd(runasdomain, profile, cmd) ⇒ Object
212 213 214 215 216 217 218 219 220 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 212 def self.compilecmd runasdomain, profile, cmd out = cmd.to_s convr = Puppet_X::Coi::Jboss::BuildinsUtils::ToBooleanConverter.new(runasdomain) asdomain = convr.to_bool if asdomain && out[0..9] == '/subsystem' out = "/profile=#{profile}#{out}" end return out end |
.config_controller ⇒ Object
30 31 32 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 30 def config_controller Puppet_X::Coi::Jboss::Configuration::config_value :controller end |
.config_profile ⇒ Object
34 35 36 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 34 def config_profile Puppet_X::Coi::Jboss::Configuration::config_value :profile end |
.config_runasdomain ⇒ Object
26 27 28 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 26 def config_runasdomain Puppet_X::Coi::Jboss::Configuration::config_value :runasdomain end |
.controllerConfig(resource) ⇒ Object
72 73 74 75 76 77 78 79 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 72 def self.controllerConfig resource conf = { :controller => resource[:controller], :ctrluser => resource[:ctrluser], :ctrlpasswd => resource[:ctrlpasswd], } return conf end |
.escape(value) ⇒ Object
183 184 185 186 187 188 189 190 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 183 def self.escape value if value.respond_to? :to_str str = value.gsub(/([^\\])\"/, '\1\\"') else str = value end return str.inspect end |
.execshell(cmd) ⇒ Object
85 86 87 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 85 def self.execshell(cmd) `#{cmd}` end |
.execute(jbosscmd, runasdomain, ctrlcfg, retry_count, retry_timeout) ⇒ Object
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 97 def self.execute jbosscmd, runasdomain, ctrlcfg, retry_count, retry_timeout file = Tempfile.new 'jbosscli' path = file.path file.close file.unlink File.open(path, 'w') {|f| f.write(jbosscmd + "\n") } ENV['JBOSS_HOME'] = self.jbosshome cmd = "#{self.jbossclibin} #{timeout_cli} --connect --file=#{path} --controller=#{ctrlcfg[:controller]}" unless ctrlcfg[:ctrluser].nil? cmd += " --user=#{ctrlcfg[:ctrluser]}" end unless ctrlcfg[:ctrlpasswd].nil? ENV['__PASSWD'] = ctrlcfg[:ctrlpasswd] cmd += " --password=$__PASSWD" end retries = 0 result = '' lines = '' begin if retries > 0 Puppet.warning "JBoss CLI command failed, try #{retries}/#{retry_count}, last status: #{result.exitstatus.to_s}, message: #{lines}" sleep retry_timeout.to_i end Puppet.debug "Command send to JBoss CLI: " + jbosscmd lines = self.execshell(cmd) result = self.last_execute_status retries += 1 end while (result.exitstatus != 0 && retries <= retry_count) Puppet.debug "Output from JBoss CLI [%s]: %s" % [result.inspect, lines] # deletes the temp file File.unlink path return { :cmd => jbosscmd, :result => result.exitstatus == 0, :lines => lines } end |
.executeAndGet(cmd, runasdomain, ctrlcfg, retry_count, retry_timeout) ⇒ Object
222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 222 def self.executeAndGet cmd, runasdomain, ctrlcfg, retry_count, retry_timeout ret = self.execute cmd, runasdomain, ctrlcfg, retry_count, retry_timeout if not ret[:result] return { :result => false, :data => ret[:lines] } end # Giving JBoss `undefine` value in Ruby undefined = nil # JBoss expression and Long value handling ret[:lines].gsub!(/expression \"(.+)\",/, '\'\1\',') ret[:lines].gsub!(/=> (\d+)L/, '=> \1') begin evalines = eval ret[:lines] Puppet.debug evalines.inspect return { :result => evalines["outcome"] == "success", :data => (evalines["outcome"] == "success" ? evalines["result"] : evalines["failure-description"]) } rescue Exception => e Puppet.err e return { :result => false, :data => ret[:lines] } end end |
.jbossas? ⇒ Boolean
89 90 91 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 89 def self.jbossas? Facter.value(:jboss_product) == 'jboss-as' end |
.jbossclibin ⇒ Object
12 13 14 15 16 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 12 def jbossclibin home = self.jbosshome path = "#{home}/#{@@bin}" return path end |
.jbosshome ⇒ Object
18 19 20 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 18 def jbosshome Puppet_X::Coi::Jboss::Configuration::config_value :home end |
.jbosslog ⇒ Object
22 23 24 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 22 def jbosslog Puppet_X::Coi::Jboss::Configuration::config_value :console_log end |
.last_execute_status ⇒ Object
81 82 83 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 81 def self.last_execute_status $? end |
.timeout_cli ⇒ Object
93 94 95 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 93 def self.timeout_cli '--timeout=50000' unless jbossas? end |
Instance Method Details
#bringDown(typename, args) ⇒ Object
165 166 167 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 165 def bringDown(typename, args) return executeWithFail(typename, args, 'to remove') end |
#bringUp(typename, args) ⇒ Object
161 162 163 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 161 def bringUp(typename, args) return executeWithFail(typename, args, 'to create') end |
#compilecmd(cmd) ⇒ Object
208 209 210 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 208 def compilecmd cmd Puppet_X::Coi::Jboss::Provider::AbstractJbossCli.compilecmd @resource[:runasdomain], @resource[:profile], cmd end |
#escape(value) ⇒ Object
192 193 194 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 192 def escape value Puppet_X::Coi::Jboss::Provider::AbstractJbossCli.escape(value) end |
#execute(jbosscmd) ⇒ Object
55 56 57 58 59 60 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 55 def execute jbosscmd retry_count = @resource[:retry] retry_timeout = @resource[:retry_timeout] ctrlcfg = Puppet_X::Coi::Jboss::Provider::AbstractJbossCli.controllerConfig @resource return Puppet_X::Coi::Jboss::Provider::AbstractJbossCli.execute jbosscmd, runasdomain?, ctrlcfg, retry_count, retry_timeout end |
#executeAndGet(jbosscmd) ⇒ Object
67 68 69 70 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 67 def executeAndGet jbosscmd ctrlcfg = Puppet_X::Coi::Jboss::Provider::AbstractJbossCli.controllerConfig @resource return Puppet_X::Coi::Jboss::Provider::AbstractJbossCli.executeAndGet jbosscmd, runasdomain?, ctrlcfg, 0, 0 end |
#executeWithFail(typename, passed_args, way) ⇒ Object
196 197 198 199 200 201 202 203 204 205 206 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 196 def executeWithFail(typename, passed_args, way) executed = execute(passed_args) if not executed[:result] ex = "\n#{typename} failed #{way}:\n[CLI command]: #{executed[:cmd]}\n[Error message]: #{executed[:lines]}" if not $add_log.nil? and $add_log > 0 ex = "#{ex}\n#{printlog $add_log}" end raise ex end return executed end |
#executeWithoutRetry(jbosscmd) ⇒ Object
62 63 64 65 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 62 def executeWithoutRetry jbosscmd ctrlcfg = Puppet_X::Coi::Jboss::Provider::AbstractJbossCli.controllerConfig @resource return Puppet_X::Coi::Jboss::Provider::AbstractJbossCli.execute jbosscmd, runasdomain?, ctrlcfg, 0, 0 end |
#getlog(lines) ⇒ Object
47 48 49 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 47 def getlog(lines) last_lines = `tail -n #{lines} #{jbosslog}` end |
#isprintinglog=(setting) ⇒ Object
171 172 173 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 171 def isprintinglog=(setting) $add_log = setting end |
#printlog(lines) ⇒ Object
51 52 53 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 51 def printlog(lines) return " ---\n JBoss AS log (last #{lines} lines): \n#{getlog lines}" end |
#runasdomain? ⇒ Boolean
TODO: Uncomment for defered provider confinment after droping support for Puppet < 3.0 commands :jbosscli => Puppet_X::Coi::Jboss::Provider::AbstractJbossCli.jbossclibin
43 44 45 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 43 def runasdomain? @resource[:runasdomain] end |
#setattribute(path, name, value) ⇒ Object
138 139 140 141 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 138 def setattribute(path, name, value) escaped = value.nil? ? nil : escape(value) setattribute_raw(path, name, escaped) end |
#setattribute_raw(path, name, value) ⇒ Object
143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 143 def setattribute_raw(path, name, value) Puppet.debug "#{name.inspect} setting to #{value.inspect} for path: #{path}" if value.nil? cmd = "#{path}:undefine-attribute(name=\"#{name.to_s}\")" else cmd = "#{path}:write-attribute(name=\"#{name.to_s}\", value=#{value})" end if runasdomain? cmd = "/profile=#{@resource[:profile]}#{cmd}" end res = executeAndGet(cmd) Puppet.debug("Setting attribute response: #{res.inspect}") if not res[:result] raise "Cannot set #{name} for #{path}: #{res[:data]}" end @property_hash[name] = value end |
#trace(method) ⇒ Object
175 176 177 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 175 def trace method Puppet.debug '%s[%s] > IN > %s' % [self.class, @resource[:name], method] end |
#traceout(method, retval) ⇒ Object
179 180 181 |
# File 'lib/puppet_x/coi/jboss/provider/abstract_jboss_cli.rb', line 179 def traceout method, retval Puppet.debug '%s[%s] > OUT > %s: %s' % [self.class, @resource[:name], method, retval.inspect] end |