Class: Oxidized::Model
- Inherits:
-
Object
show all
- Includes:
- Config::Vars
- Defined in:
- lib/oxidized/model/model.rb,
lib/oxidized/model/outputs.rb
Direct Known Subclasses
ACOS, AOS, AOS7, AOSW, ASA, Aireos, Airos, CiscoSMB, Comware, EOS, FTOS, FabricOS, FortiOS, IOS, IOSXR, ISAM, IronWare, JunOS, NOS, NXOS, PowerConnect, Procurve, RouterOS, ScreenOS, TiMOS, VRP, Vyatta, XOS
Defined Under Namespace
Classes: Outputs
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
#vars
Instance Attribute Details
Returns the value of attribute input.
77
78
79
|
# File 'lib/oxidized/model/model.rb', line 77
def input
@input
end
|
#node ⇒ Object
Returns the value of attribute node.
77
78
79
|
# File 'lib/oxidized/model/model.rb', line 77
def node
@node
end
|
Class Method Details
.cfg(*methods, &block) ⇒ Object
22
23
24
25
26
|
# File 'lib/oxidized/model/model.rb', line 22
def cfg *methods, &block
[methods].flatten.each do |method|
@cfg[method.to_s] << block
end
end
|
.cfgs ⇒ Object
27
28
29
|
# File 'lib/oxidized/model/model.rb', line 27
def cfgs
@cfg
end
|
.cmd(_cmd = nil, &block) ⇒ Object
30
31
32
33
34
35
36
|
# File 'lib/oxidized/model/model.rb', line 30
def cmd _cmd=nil, &block
if _cmd.class == Symbol
@cmd[_cmd] << block
else
@cmd[:cmd] << [_cmd, block]
end
end
|
.cmds ⇒ Object
37
38
39
|
# File 'lib/oxidized/model/model.rb', line 37
def cmds
@cmd
end
|
15
16
17
18
|
# File 'lib/oxidized/model/model.rb', line 15
def ='# '
return @comment if @comment
@comment = block_given? ? yield :
end
|
.expect(re, &block) ⇒ Object
40
41
42
|
# File 'lib/oxidized/model/model.rb', line 40
def expect re, &block
@expect << [re, block]
end
|
.expects ⇒ Object
43
44
45
|
# File 'lib/oxidized/model/model.rb', line 43
def expects
@expect
end
|
.inherited(klass) ⇒ Object
8
9
10
11
12
13
14
|
# File 'lib/oxidized/model/model.rb', line 8
def inherited klass
klass.instance_variable_set '@cmd', Hash.new { |h,k| h[k] = [] }
klass.instance_variable_set '@cfg', Hash.new { |h,k| h[k] = [] }
klass.instance_variable_set '@procs', Hash.new { |h,k| h[k] = [] }
klass.instance_variable_set '@expect', []
klass.const_set :CFG, CFG
end
|
.post { ... } ⇒ void
This method returns an undefined value.
calls the block at the end of the model, adding the output of the block to the output string
65
66
67
|
# File 'lib/oxidized/model/model.rb', line 65
def post &block
@procs[:post] << block
end
|
.pre { ... } ⇒ void
This method returns an undefined value.
calls the block at the end of the model, prepending the output of the block to the output string
54
55
56
|
# File 'lib/oxidized/model/model.rb', line 54
def pre &block
@procs[:pre] << block
end
|
.procs ⇒ Hash
Returns hash proc procs :pre+:post to be prepended/postfixed to output.
72
73
74
|
# File 'lib/oxidized/model/model.rb', line 72
def procs
@procs
end
|
.prompt(_prompt = nil) ⇒ Object
19
20
21
|
# File 'lib/oxidized/model/model.rb', line 19
def prompt _prompt=nil
@prompt or @prompt = _prompt
end
|
Instance Method Details
#cfg ⇒ Object
106
107
108
|
# File 'lib/oxidized/model/model.rb', line 106
def cfg
self.class.cfgs
end
|
#cmd(string, &block) ⇒ Object
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
# File 'lib/oxidized/model/model.rb', line 79
def cmd string, &block
out = @input.cmd string
return false unless out
self.class.cmds[:all].each do |all_block|
out = instance_exec Oxidized::String.new(out), string, &all_block
end
if vars :remove_secret
self.class.cmds[:secret].each do |all_block|
out = instance_exec Oxidized::String.new(out), string, &all_block
end
end
out = instance_exec Oxidized::String.new(out), &block if block
process_cmd_output out, string
end
|
144
145
146
147
148
149
150
|
# File 'lib/oxidized/model/model.rb', line 144
def
data = ''
.each_line do |line|
data << self.class. << line
end
data
end
|
#expect(re, &block) ⇒ Object
102
103
104
|
# File 'lib/oxidized/model/model.rb', line 102
def expect re, &block
self.class.expect re, &block
end
|
#expects(data) ⇒ Object
114
115
116
117
118
119
120
121
122
123
124
125
|
# File 'lib/oxidized/model/model.rb', line 114
def expects data
self.class.expects.each do |re, cb|
if data.match re
if cb.arity == 2
data = instance_exec [data, re], &cb
else
data = instance_exec data, &cb
end
end
end
data
end
|
#get ⇒ Object
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
# File 'lib/oxidized/model/model.rb', line 127
def get
outputs = Outputs.new
procs = self.class.procs
self.class.cmds[:cmd].each do |command, block|
out = cmd command, &block
return false unless out
outputs << out
end
procs[:pre].each do |pre_proc|
outputs.unshift process_cmd_output(instance_eval(&pre_proc), '')
end
procs[:post].each do |post_proc|
outputs << process_cmd_output(instance_eval(&post_proc), '')
end
outputs
end
|
#output ⇒ Object
94
95
96
|
# File 'lib/oxidized/model/model.rb', line 94
def output
@input.output
end
|
#prompt ⇒ Object
110
111
112
|
# File 'lib/oxidized/model/model.rb', line 110
def prompt
self.class.prompt
end
|
#send(data) ⇒ Object
98
99
100
|
# File 'lib/oxidized/model/model.rb', line 98
def send data
@input.send data
end
|