diff options
Diffstat (limited to 'lib/oxidized')
| -rw-r--r-- | lib/oxidized/config/vars.rb | 3 | ||||
| -rw-r--r-- | lib/oxidized/fix/grit.rb | 18 | ||||
| -rw-r--r-- | lib/oxidized/model/ios.rb | 2 | ||||
| -rw-r--r-- | lib/oxidized/output/git.rb | 51 | 
4 files changed, 29 insertions, 45 deletions
diff --git a/lib/oxidized/config/vars.rb b/lib/oxidized/config/vars.rb index 0d6aaa7..40e4808 100644 --- a/lib/oxidized/config/vars.rb +++ b/lib/oxidized/config/vars.rb @@ -4,7 +4,6 @@ module Oxidized::Config::Vars    def vars name      r =   @node.vars[name] unless @node.vars.nil?      r ||= Oxidized::CFG.groups[@node.group].vars[name.to_s] if Oxidized::CFG.groups.has_key?(@node.group) -    r ||= Oxidized::CFG.vars[name.to_s] +    r ||= Oxidized::CFG.vars[name.to_s] if Oxidized::CFG.vars.has_key?(name)    end  end - diff --git a/lib/oxidized/fix/grit.rb b/lib/oxidized/fix/grit.rb deleted file mode 100644 index 49be76b..0000000 --- a/lib/oxidized/fix/grit.rb +++ /dev/null @@ -1,18 +0,0 @@ -Object.send :remove_const, :PACK_IDX_SIGNATURE -PACK_IDX_SIGNATURE = "\377tOc".b - -class String -  if self.method_defined?(:ord) -    def getord(offset); self[offset].ord; end -  else -    alias :getord :[] -  end - -  unless self.method_defined?(:b) -    if self.method_defined?(:force_encoding) -      def b; self.dup.force_encoding(Encoding::ASCII_8BIT); end -    else -      def b; self.dup; end -    end -  end -end diff --git a/lib/oxidized/model/ios.rb b/lib/oxidized/model/ios.rb index a9c2d3b..186c9e8 100644 --- a/lib/oxidized/model/ios.rb +++ b/lib/oxidized/model/ios.rb @@ -22,7 +22,7 @@ class IOS < Oxidized::Model      cfg.each_line.to_a[1..-2].join    end -  cmd :secret do |cfg|  +  cmd :secret do |cfg|      cfg.gsub! /^(snmp-server community).*/, '\\1 <configuration removed>'      cfg.gsub! /username (\S+) privilege (\d+) (\S+).*/, '<secret hidden>'      cfg diff --git a/lib/oxidized/output/git.rb b/lib/oxidized/output/git.rb index 70dd30f..848608f 100644 --- a/lib/oxidized/output/git.rb +++ b/lib/oxidized/output/git.rb @@ -1,12 +1,10 @@  module Oxidized  class Git < Output    begin -    require 'grit' +    require 'rugged'    rescue LoadError -    raise OxidizedError, 'grit not found: sudo gem install grit' +    raise OxidizedError, 'rugged not found: sudo gem install rugged'    end -  require 'oxidized/fix/grit' if RUBY_VERSION[0..1] == '2.' -  include Grit    def initialize      @cfg = CFG.output.git @@ -31,14 +29,11 @@ class Git < Output        repo = File.join File.dirname(repo), opt[:group] + '.git'      end      begin -      repo = Repo.new repo -      actor = Actor.new user, email -      update_repo repo, file, data, msg, actor -    rescue Grit::NoSuchPathError -      Repo.init_bare repo +      repo = Rugged::Repository.new repo +      update_repo repo, file, data, msg, user, email +    rescue Rugged::OSError, Rugged::RepositoryError +      Rugged::Repository.init_at repo, :bare        retry -    rescue Grit::Git::GitTimeout -      Log.error "git timeout for #{file}"      end    end @@ -48,8 +43,10 @@ class Git < Output        if group          repo = File.join File.dirname(repo), group + '.git'        end -      repo = Repo.new(repo) -      (repo.tree / node).data +      repo = Rugged::Repository.new repo +      index = repo.index +      index.read_tree repo.head.target.tree unless repo.empty? +      repo.read(index.get(node)[:oid]).data      rescue        'node not found'      end @@ -57,17 +54,23 @@ class Git < Output    private -  def update_repo repo, file, data, msg, actor -    index  = repo.index -    index.read_tree 'master' -    old = index.write_tree index.tree, index.current_tree -    index.add file, data -    new = index.write_tree index.tree, index.current_tree -    if old != new -      parent = repo.commits(nil, 1).first -      parent = [parent] if parent -      Log.debug "GIT: comitting #{file}" -      index.commit msg, parent, actor +  def update_repo repo, file, data, msg, user, email +    oid = repo.write data, :blob +    index = repo.index +    index.read_tree repo.head.target.tree unless repo.empty? + +    tree_old = index.write_tree repo +    index.add :path=>file, :oid=>oid, :mode=>0100644 +    tree_new = index.write_tree repo + +    if tree_old != tree_new +      Rugged::Commit.create(repo, +        :tree       => index.write_tree(repo), +        :message    => msg, +        :parents    => repo.empty? ? [] : [repo.head.target].compact, +        :update_ref => 'HEAD', +        :author     => {:name=>user, :email=>email, :time=>Time.now.utc} +      )      end    end  end  | 
