Class: MCORPC

Inherits:
Object
  • Object
show all
Defined in:
lib/mcorpc.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#mcoObject (readonly)

Returns the value of attribute mco.



7
8
9
# File 'lib/mcorpc.rb', line 7

def mco
  @mco
end

Instance Method Details

#closeObject



22
23
24
25
# File 'lib/mcorpc.rb', line 22

def close
  # Close rpcclient connection
  @mco.disconnect
end

#conn(agent) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/mcorpc.rb', line 9

def conn(agent)
  # Initialize rpcclient connection for agent
  mc = rpcclient(agent)
  mc.reset_filter 
  mc.timeout = 60
  # Set -T global
  mc.collective = 'global'
  # Disable Progress bar
  mc.progress = false
  mc.verbose = false
  @mco = mc
end

#mcocmd(host, cmd) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
# File 'lib/mcorpc.rb', line 32

def mcocmd(host,cmd)
  # shellcmd agent to execute commands
  conn("shellcmd")  
  value = nil
  # MCO filter for -F hostname='hostname'
  mco.fact_filter "hostname",host
  mco.discover :verbose => false
  response = mco.runcmd(:cmd => cmd)
  response.each { |a| value = a.results[:data][:stdout]}
  return value
end

#mcodiscoverfact(fact, facts, classes = nil) ⇒ Object



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/mcorpc.rb', line 77

def mcodiscoverfact(fact,facts,classes=nil)
  # facts agent to search fact value
  conn("rpcutil")  
  value = nil
  facts = facts.split(",")
  # Set fact discovery
  facts.each { |f|
    factName,factValue = f.split("=")
    mco.fact_filter factName, factValue
  }
  #Set class discovery
  if classes
    classes = classes.split(",")
    classes.each {|classname|  
      mco.class_filter classname
    }
  end
  mco.discover :verbose => false
  response = mco.get_fact(:fact => fact)
  response.each { |a| 
    value = []
    value.push  a.results[:data][:value] 
    value = value.uniq
  }
  return value
end

#mcodiscovernode(facts, classes = nil) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/mcorpc.rb', line 55

def mcodiscovernode(facts,classes=nil)
  # find agent to discover hosts
  conn("rpcutil")  
  value = nil
  facts = facts.split(",")
  # Set fact discovery
  facts.each { |f|
    factName,factValue = f.split("=")
    mco.fact_filter factName, factValue
  }
  #Set class discovery
  if classes
    classes = classes.split(",")
    classes.each {|classname|  
      mco.class_filter classname
    }
  end
  mco.discover :verbose => false
  value = mco.discover
  return value
end

#mcohostfact(host, fact) ⇒ Object



44
45
46
47
48
49
50
51
52
53
# File 'lib/mcorpc.rb', line 44

def mcohostfact(host,fact)
  # facts agent to get fact value for a host 
  conn("rpcutil")   
  value = nil
  mco.fact_filter "hostname", host
  mco.discover :verbose => false
  response = mco.get_fact(:fact => fact)
  response.each { |a| value = a.results[:data][:value]}
  return value
end

#reset_filterObject



27
28
29
30
# File 'lib/mcorpc.rb', line 27

def reset_filter
  # Reset Filters
  @mco.reset_filter
end