Class: RBoss::MBean

Inherits:
Object
  • Object
show all
Defined in:
lib/rboss/twiddle/mbean.rb

Constant Summary collapse

@@__detail__resourced__ =
proc do |resources, &block|
  resouces = parse_resource resources
  details = {}
  resouces.each do |resource|
    with resource do
      details[resource] = {}
      @properties.each do |property|
        details[resource][property] = self[property].value
      end
    end
  end
  details.each &block if block
  details
end
@@__detail__ =
proc do |&block|
  details = {}
  @properties.each do |property|
    details[property] = self[property].value
  end
  details.each &block if block
  details
end

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params) ⇒ MBean

Returns a new instance of MBean.



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/rboss/twiddle/mbean.rb', line 55

def initialize params
  @pattern = params[:pattern]
  @twiddle = params[:twiddle]
  @properties = params[:properties]
  @description = params[:description]
  if params[:scan]
    (
    class << self
      self
    end).send :define_method, :scan, &params[:scan]
    (
    class << self
      self
    end).send :define_method, :each do |&block|
      scan.each &block
    end
  end
  if params[:properties]
    (
    class << self
      self
    end).send :define_method,
              :detail,
              &(params[:scan] ?
                @@__detail__resourced__ : @@__detail__)
  end
end

Instance Attribute Details

#descriptionObject

Returns the value of attribute description.



29
30
31
# File 'lib/rboss/twiddle/mbean.rb', line 29

def description
  @description
end

#patternObject (readonly)

Returns the value of attribute pattern.



28
29
30
# File 'lib/rboss/twiddle/mbean.rb', line 28

def pattern
  @pattern
end

#resourceObject

Returns the value of attribute resource.



29
30
31
# File 'lib/rboss/twiddle/mbean.rb', line 29

def resource
  @resource
end

#twiddleObject

Returns the value of attribute twiddle.



29
30
31
# File 'lib/rboss/twiddle/mbean.rb', line 29

def twiddle
  @twiddle
end

Instance Method Details

#[](property) ⇒ Object



104
105
106
107
108
109
110
111
112
113
114
# File 'lib/rboss/twiddle/mbean.rb', line 104

def [] property
  resource = @resource
  query = eval("\"#{pattern}\"")
  result = @twiddle.execute(:get, query, property)

  def result.value
    self.split( /=/, 2)[1]
  end

  result
end

#[]=(property, value) ⇒ Object



116
117
118
119
120
# File 'lib/rboss/twiddle/mbean.rb', line 116

def []= property, value
  resource = @resource
  query = eval("\"#{pattern}\"")
  @twiddle.execute :set, query, property, value
end

#invoke(method, *args, &block) ⇒ Object



122
123
124
125
126
127
128
129
130
# File 'lib/rboss/twiddle/mbean.rb', line 122

def invoke method, *args, &block
  resource = @resource
  query = eval("\"#{pattern} #{method}\"")
  return_value = @twiddle.execute :invoke, query, args
  if block_given?
    block.call return_value
  end
  return_value
end

#nameObject



92
93
94
95
96
97
98
99
100
101
102
# File 'lib/rboss/twiddle/mbean.rb', line 92

def name
  if pattern['#{resource}'] and not @resource
    domain, name = pattern.split ':'
    name.gsub! /[^,]+\{resource\}/, ''
    name << "," if name.empty?
    name << "*"
    return "#{domain}:#{name}"
  end
  resource = @resource
  eval("\"#{pattern}\"")
end

#parse_resource(resources) ⇒ Object



139
140
141
142
143
# File 'lib/rboss/twiddle/mbean.rb', line 139

def parse_resource resources
  return scan if resources == :all
  return [resources] unless resources.respond_to? :each
  resources
end

#query(query, &block) ⇒ Object



132
133
134
135
136
137
# File 'lib/rboss/twiddle/mbean.rb', line 132

def query query, &block
  result = @twiddle.execute(:query, query)
  return [] unless result
  result = result.split /\s+/
  block ? result.collect(&block) : result
end

#with(resource) ⇒ Object



83
84
85
86
87
88
89
90
# File 'lib/rboss/twiddle/mbean.rb', line 83

def with resource
  @resource = resource
  if block_given?
    yield
    @resource = nil
  end
  self
end