summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2014-07-21Merge pull request #27 from thakala/masterytti
Added Brocade Fabric OS support
2014-07-21Added Brocade Fabric OS supportTomi Hakala
2014-07-21update changelogSaku Ytti
2014-07-21make convenience methods usableSaku Ytti
2014-07-21fix README config exampleSaku Ytti
we now support network based SQL and 'file' make little sense in postgres/mysql, changing that to 'database' makes it reusable for both use cases.
2014-07-21Merge pull request #26 from lysiszegerman/masterytti
Added Force10 support
2014-07-21Fix bug in 'vars.rb'0.1.1Saku Ytti
We need to return value of 'r' instead of value of previous evaluation.
2014-07-21Added Force10 supportMarcus Stoegbauer
2014-07-20bump up gemspec0.1.0Saku Ytti
- actually start to follow semantic version - a.b.c a == major, b == minor c == patch - c only for bug-fixes etc - b for non-breaking new features - a for breaking new featires - a == 0 is special, can break anywhere - http://semver.org - add more specific version restrictions for gems
2014-07-20Depend on newer asetus versionSaku Ytti
We are doing this in sql.rb :user => @cfg.sql.user? :password => @cfg.sql.password? As 'asetus' will accept arbitrary chain @cfg.sql.one.two.three it is clear that 'one' or 'two' cannot _ever_ return nil/false, otherwise you cannot create 'three'. So if there isn't value of one/two, instance of 'asetus' is returned, upon which we can build two, and then tree'. one?, two?, three? version existed in old asetus, as strict boolean test @cfg.sql.one? would return true, false or nil In newer version, instead of returning true, it returns actual value.
2014-07-20Return useful error message on missing SQL adapterSaku Ytti
SQL file in configuration renamed to database. Should the generated example file have host+user+password+query?
2014-07-20Merge pull request #25 from lysiszegerman/masterytti
Generic SQL support for source
2014-07-20Added support for custom SQL databases. Works as expected for sqlite, except ↵Marcus Stoegbauer
config option "file" got renamed to "database", added authentication options for other SQL adapters and an optional query argument to overwrite the generic query. config snipplet: sql: adapter: mysql2 user: sqluser password: sekrit host: mysql.local database: inventory table: devices query: SELECT `fqhn` AS `name`, lower(`vendor`) AS `model` FROM `devices` INNER JOIN `devtypes` ON (`devtypes`.`id` = `devices`.`model_id`) WHERE (`aktiv` = 'J') map: name: name model: model
2014-07-17remove secret is under vars, not globalSaku Ytti
2014-07-17Merge branch 'master' of https://github.com/ytti/oxidizedSaku Ytti
2014-07-17bump up gemspec version0.0.65Saku Ytti
2014-07-14Merge pull request #24 from RichiH/patch-5ytti
core.rb: Improve error message
2014-07-14core.rb: Improve error messageRichard Hartmann
2014-07-14Fix powerconnect modelSaku Ytti
a) put metainformation on top, rancid style b) remove changing data from 'show system'
2014-07-14Allow it to work without local existing configSaku Ytti
Even after manually setting author+committer, it still crashed with: Config value 'user.name' was not found [Rugged::ConfigError] Not sure where it would want to use it, after author+committer already are set, but I guess this method is more robust anyhow.
2014-07-13Explain how to disable oxidized-web if load errorSaku Ytti
Ratioinale is, we want to keep it default, but it should be easy for people to understand what to do, if they don't want it. Closes #17
2014-07-13Change from grit to ruggedSaku Ytti
a) grit is not supported, rugged is b) grit requires git CLI installed, rugged does not c) grit needs monkey patching to work, rugged does not Closes #21 Closes #22
2014-07-11bump up gemspec version0.0.64Saku Ytti
2014-07-11reset retry count on successSaku Ytti
2014-07-11add support for retrying failed attemptsSaku Ytti
Looks like this in syslog: Jul 11 21:05:53 ytti oxidized[9820]: 10.10.10.10 raised Errno::ENETUNREACH with msg "Network is unreachable - connect(2) for "10.10.10.10" port 22" Jul 11 21:05:53 ytti oxidized[9820]: 10.10.10.10 raised Errno::ENETUNREACH with msg "Network is unreachable - connect(2) for "10.10.10.10" port 23" Jul 11 21:05:54 ytti oxidized[9820]: 10.10.10.10 status no_connection, retry attempt 1 Jul 11 21:05:54 ytti oxidized[9820]: 10.10.10.10 raised Errno::ENETUNREACH with msg "Network is unreachable - connect(2) for "10.10.10.10" port 22" Jul 11 21:05:54 ytti oxidized[9820]: 10.10.10.10 raised Errno::ENETUNREACH with msg "Network is unreachable - connect(2) for "10.10.10.10" port 23" Jul 11 21:05:55 ytti oxidized[9820]: 10.10.10.10 status no_connection, retry attempt 2 Jul 11 21:05:55 ytti oxidized[9820]: 10.10.10.10 raised Errno::ENETUNREACH with msg "Network is unreachable - connect(2) for "10.10.10.10" port 22" Jul 11 21:05:55 ytti oxidized[9820]: 10.10.10.10 raised Errno::ENETUNREACH with msg "Network is unreachable - connect(2) for "10.10.10.10" port 23" Jul 11 21:05:56 ytti oxidized[9820]: 10.10.10.10 status no_connection, retry attempt 3 Jul 11 21:05:56 ytti oxidized[9820]: 10.10.10.10 raised Errno::ENETUNREACH with msg "Network is unreachable - connect(2) for "10.10.10.10" port 22" Jul 11 21:05:56 ytti oxidized[9820]: 10.10.10.10 raised Errno::ENETUNREACH with msg "Network is unreachable - connect(2) for "10.10.10.10" port 23" Jul 11 21:05:57 ytti oxidized[9820]: 10.10.10.10 status no_connection, retries exhausted, giving up
2014-07-11ignore empty lines in CSV sourceSaku Ytti
Closes #23
2014-07-11Bit friendlier error message on invalid configSaku Ytti
Closes #20 [ytti@ytti.fi ~/tmp/oxidized]% oxidized Error loading config: (<unknown>): mapping values are not s context at line 15 column 7 [ytti@ytti.fi ~/tmp/oxidized]%
2014-07-11support local modelsSaku Ytti
if ~/.config/oxidized/model/ios.rb exists it is used, iinstead of the system-wide model
2014-07-11bump up gemspec version0.0.63Saku Ytti
2014-07-11create config dir, before pointing log file thereSaku Ytti
thanks to @richih
2014-07-09bump up gemspecSaku Ytti
2014-07-09Require OpenStructSaku Ytti
How this works in ruby2.0 normally? What component has loaded this implicitly? Thanks to @RichiH for spotting.
2014-07-09Merge pull request #18 from RichiH/feature--README_prerequisitesytti
README.md: Require ruby-dev on Debian
2014-07-09README.md: Require ruby-dev on DebianRichard Hartmann
2014-07-09Merge pull request #16 from RichiH/feature--web_optionalytti
Default to local listening for oxidized-web
2014-07-09Default to local listening for oxidized-webRichard Hartmann
2014-07-09Merge pull request #15 from RichiH/patch-3ytti
README.md: Make optional oxidized-web really optional
2014-07-09README.md: Make optional oxidized-web really optionalRichard Hartmann
2014-07-09fixed #13Samer Abdel-Hafez
2014-07-09Merge pull request #12 from RichiH/patch-2ytti
README.md: Formatting
2014-07-09Merge pull request #11 from RichiH/patch-1ytti
README.md: Install ruby as well
2014-07-09README.md: FormattingRichard Hartmann
2014-07-09README.md: Install ruby as wellRichard Hartmann
2014-07-04match node[:name] to ipSaku Ytti
When running Oxidized via oxidized-script you want just one node, and you specify that as Nodes.new(:node=>x) however as router.db usually lacks 'ip' field, and only has 'name' field'. If you have router.db with IP in 'name' field, and you do Nodes.new(:node='192.0.2.1') it won't return anything, as '192.0.2.1' is matched against node[:ip] which does not exist. This change makes IP match against IP and Name.
2014-07-03Fix class name resolutionSaku Ytti
In new method, where we no long explicitly set loaded class name for later resolution we depend on file name being same as class name. However for File output, this is not true, because I didn't want plain File in code to resolve to Oxidized::File, and din't want to always write ::File, File ouput has class name OxFile. This change allows class names to start optionally with string 'Oxidized' if so, they still match.
2014-07-03Merge branch 'master' of https://github.com/ytti/oxidizedSaku Ytti
2014-07-03bump up gemspecSaku Ytti
2014-06-11Fix dynamic loading matchSaku Ytti
We can't use #match, if IOSXR is seen in source list before IOS, then IOS will #match on IOSXR class and wrong model is used for IOS devices. And obviously stupid to use regexp if you don't atbsolutely have to.
2014-06-11mention TREX preso in readmeSaku Ytti
2014-06-11Change dynamic discover of file => class nameSaku Ytti
We needed this, because use of 'def inherited' not idempotent, in Oxidized::Script use case we may need to restart Oxidized, even though it's already loaded, and we won't get class names populated via 'def inherited' anymore. There are quite many optiosn to do this a) filename == class name + no discovery/mapping, very clean - user 'source' must give us model name in exactly right capitalization b) add 'self' at end of files, so eval will return class name + deterministic with arbitrary name - DSL cruft, DSL being light is our main value (can we do this via parent class? I couldn't find way) c) load in new module via Module.module_eval X + module will contain only consts we just created - but which one is the one we want? - if we use eval, load errors won't tell line error But at least now we got rid of 'inherited' methods and not adding too much cruft, hope it's better than before.