diff options
| author | Saku Ytti <saku@ytti.fi> | 2014-02-25 12:59:24 +0200 | 
|---|---|---|
| committer | Saku Ytti <saku@ytti.fi> | 2014-02-25 12:59:24 +0200 | 
| commit | 54275a0576b05813e78aa7707111db3411602048 (patch) | |
| tree | 5cb0c8c3b00839310e40de08de8502771ebd8eff /lib | |
| parent | 596607c8bad948f605fdece2829e24eac3411279 (diff) | |
Fix crashes on missing config
We now merge user config with bootstrap config ensuring all configuratio
options are set even if not in configuratatin. Allowing us to add new
configuration options, without needing for users to touch their existing
configuration.
All default values are still written to user config when ever CFG.save
is called, which means when you change your output/input/source models
and configuration is missing, instead of just adding the configuration
needed for that particular module, it'll save full config to file.
Don't really think that is a bug, but might be something to fix later on
with maybe parameter to 'save'. Which would load user config, merge it
with 'save' argument level and save user config. But unless someone is
bothered by it, I won't do it.
This commit fixes #1
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/oxidized/config/bootstrap.rb | 3 | ||||
| -rw-r--r-- | lib/oxidized/config/core.rb | 9 | ||||
| -rw-r--r-- | lib/oxidized/source/csv.rb | 2 | ||||
| -rw-r--r-- | lib/oxidized/source/sql.rb | 2 | 
4 files changed, 10 insertions, 6 deletions
| diff --git a/lib/oxidized/config/bootstrap.rb b/lib/oxidized/config/bootstrap.rb index 73750de..4f9e2ab 100644 --- a/lib/oxidized/config/bootstrap.rb +++ b/lib/oxidized/config/bootstrap.rb @@ -10,7 +10,7 @@ module Oxidized    CFG.threads  = 30    CFG.timeout  = 5    CFG.prompt   = /^([\w.@-]+[#>]\s?)$/ -  CFG.rest     = 8888 +  CFG.rest     = '0.0.0.0:8888'    CFG.vars     = {      :enable  => 'enablePW',    } @@ -30,5 +30,4 @@ module Oxidized      'cisco'   => 'ios',      'juniper' => 'junos',    } -  CFG.save  end diff --git a/lib/oxidized/config/core.rb b/lib/oxidized/config/core.rb index c2cde58..9b93d91 100644 --- a/lib/oxidized/config/core.rb +++ b/lib/oxidized/config/core.rb @@ -11,17 +11,22 @@ module Oxidized      # load config from file or bootstrap with built-ins      def load        if File.exists? @file -        marshal_load YAML.load_file @file +        cfg = YAML.load_file @file +        marshal_load self.to_h.merge(cfg)        else -        require 'oxidized/config/bootstrap' +        save        end      end +    def defaults +      require 'oxidized/config/bootstrap' +    end      # save config to file      def save        File.write @file, YAML.dump(marshal_dump)      end    end    CFG = Config.new +  CFG.defaults    CFG.load    Log.file = CFG.log if CFG.log    Log.level = Logger::INFO unless CFG.debug diff --git a/lib/oxidized/source/csv.rb b/lib/oxidized/source/csv.rb index 6b08b18..cf73fc8 100644 --- a/lib/oxidized/source/csv.rb +++ b/lib/oxidized/source/csv.rb @@ -15,8 +15,8 @@ class CSV < Source            :model => 1,          }        } +      CFG.save      end -    CFG.save    end    def load diff --git a/lib/oxidized/source/sql.rb b/lib/oxidized/source/sql.rb index c563e15..385f632 100644 --- a/lib/oxidized/source/sql.rb +++ b/lib/oxidized/source/sql.rb @@ -18,8 +18,8 @@ class SQL < Source            :model     => 'rancid',          }        } +      CFG.save      end -    CFG.save    end    def load | 
