summaryrefslogtreecommitdiff
path: root/lib/oxidized
diff options
context:
space:
mode:
authorSaku Ytti <saku@ytti.fi>2014-08-07 14:33:18 +0300
committerSaku Ytti <saku@ytti.fi>2014-08-07 14:33:18 +0300
commit7aa9299971a2cacad29ab86e82cc780354d659e0 (patch)
treec932d85d28b2c6d654e3bfff75db00b6906c9af4 /lib/oxidized
parent2a77796a7caf10601ae8edea5bf996f951694985 (diff)
Keep config as Oxidized::Config instead of hash
The model will look like this: cmd 'show ip cef' do |out| out.type = 'poop' out end cmd 'show process cpu' do |out| out.type = 'poop' out end cmd 'show memory statistics' do |out| out.type = 'poop' out end I think it's cleaner.
Diffstat (limited to 'lib/oxidized')
-rw-r--r--lib/oxidized/model/model.rb17
-rw-r--r--lib/oxidized/model/outputs.rb12
-rw-r--r--lib/oxidized/output/git.rb6
-rw-r--r--lib/oxidized/string.rb16
4 files changed, 29 insertions, 22 deletions
diff --git a/lib/oxidized/model/model.rb b/lib/oxidized/model/model.rb
index af86f1d..3dd3f98 100644
--- a/lib/oxidized/model/model.rb
+++ b/lib/oxidized/model/model.rb
@@ -79,16 +79,15 @@ module Oxidized
def cmd string, &block
out = @input.cmd string
return false unless out
- out = Oxidized::String.new out
self.class.cmds[:all].each do |all_block|
- out = instance_exec out, string, &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 out, string, &all_block
+ out = instance_exec Oxidized::String.new(out), string, &all_block
end
end
- out = instance_exec out, &block if block
+ out = instance_exec Oxidized::String.new(out), &block if block
process_cmd_output out, string
end
@@ -152,12 +151,12 @@ module Oxidized
private
- def process_cmd_output cmd, name
- if Hash === cmd
- cmd[:name] = name
- return cmd
+ def process_cmd_output output, name
+ if output.class != Oxidized::String
+ output = Oxidized::String.new output
end
- {:output=>cmd, :type=>'cfg', :name=>name}
+ output.cmd = name
+ output
end
end
diff --git a/lib/oxidized/model/outputs.rb b/lib/oxidized/model/outputs.rb
index 5ef9bc4..406f886 100644
--- a/lib/oxidized/model/outputs.rb
+++ b/lib/oxidized/model/outputs.rb
@@ -7,13 +7,7 @@ module Oxidized
end
def type_to_str want_type
- type(want_type).map { |h| h[:output] }.join
- end
-
- def each_type &block
- types.each do |want_type|
- yield [want_type, type(want_type)]
- end
+ type(want_type).map { |out| out }.join
end
def << output
@@ -25,11 +19,11 @@ module Oxidized
end
def type type
- @outputs.select { |h| h[:type]==type }
+ @outputs.select { |out| out.type==type }
end
def types
- @outputs.map { |h| h[:type] }.uniq
+ @outputs.map { |out| out.type }.uniq - ['cfg']
end
private
diff --git a/lib/oxidized/output/git.rb b/lib/oxidized/output/git.rb
index 59b6bd4..f87ab66 100644
--- a/lib/oxidized/output/git.rb
+++ b/lib/oxidized/output/git.rb
@@ -21,7 +21,6 @@ class Git < Output
end
def store file, outputs, opt={}
- data = outputs.to_cfg
@msg = opt[:msg]
@user = (opt[:user] or @cfg.user)
@email = (opt[:email] or @cfg.email)
@@ -29,11 +28,10 @@ class Git < Output
repo = @cfg.repo
outputs.types.each do |type|
- next if type == 'cfg'
type_repo = File.join File.dirname(repo), type + '.git'
outputs.type(type).each do |output|
- type_file = file + '--' + output[:name].strip.gsub(/\s+/, '_')
- update type_repo, type_file, output[:output]
+ type_file = file + '--' + output.name
+ update type_repo, type_file, output
end
end
diff --git a/lib/oxidized/string.rb b/lib/oxidized/string.rb
index 35dc5af..b17f896 100644
--- a/lib/oxidized/string.rb
+++ b/lib/oxidized/string.rb
@@ -1,13 +1,29 @@
module Oxidized
# Used in models, contains convenience methods
class String < String
+ attr_accessor :type, :cmd
+
# @return [Oxidized::String] copy of self with last line removed
def cut_tail
Oxidized::String.new each_line.to_a[0..-2].join
end
+
# @return [Oxidized::String] copy of self with first line removed
def cut_head
Oxidized::String.new each_line.to_a[1..-1].join
end
+
+ # @return clean/filename version of cmd
+ def name
+ cmd.strip.gsub(/\s+/, '_')
+ end
+
+ private
+
+ def initialize arg
+ super
+ @type = 'cfg'
+ @cmd = 'n/a'
+ end
end
end