Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
|
|
|
|
two primary goals
- username and password can come from different sources (Global PW, per
group username)
- model can come from group
|
|
|
|
fix repository path resolution
|
|
this correctly respects the repo declaration as Hash or String
|
|
|
|
|
|
ref.: https://github.com/ytti/oxidized/pull/326/files#r53557892
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Model: SAM1316-22 STU-C
ZyNOS version: V3.53(BVE.2)
|
|
|
|
sql/csv can now set IP as well as name, useful if you don't have FQDN.
If IP is given, then we don't try to resolve name.
closes #78
|
|
Without this, config gets 'true' value, which is not string, and git
output will barf.
|
|
|
|
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
|
|
How this works in ruby2.0 normally? What component has loaded this
implicitly?
Thanks to @RichiH for spotting.
|
|
temporary fix. Maybe node#last should check the type or we shouldn't use
last for the nodes#next in the first place
|
|
We may need this in future, but as we don't need this in oxidized-script
now after all, I don't want something to be implemented just-in-case
|
|
|
|
So that we can easily check last time node failed/succceded etc
|
|
|
|
Variables can now be fed to model from multiple locations. In order of
preference:
1) node (from source)
2) group
3) global
In a model vars should be accessed via 'vars' helper method though it is
not required. Helper method ignores nil values so care needs to taken
when designing model behaviour.
Support for node level vars is currently available on sql source via
'vars_map' configuration.
Following example populates node vars 'enable' and 'somevariable' from sql
columns 'var_enable' and 'var_somevariable'
sql:
adapter: sqlite
file: /home/aakso/.config/oxidized/sqrouter.db
table: nodes
map:
name: hostname
model: model
group: node_group
username: username
password: password
vars_map:
enable: var_enablepw
somevariable: var_somevariable
|
|
For rancid-like behaviour one can now set username and password for node groups. These parameters are considered in the following order:
1) node parameters (from source)
2) group level parameters
3) global level parameters
example configuration for group 'testlab'
groups:
testlab:
username: testuser
password: testpassword
|
|
Main benefits
a) we get support for system wide configs
b) we don't use symbols in config file, they're confusing to
non-rubyist
|
|
|
|
If we use assignment method (#method=) we don't get return value, so we
never know that manager fails to load.
Also we do not want to rescue failures of input/output/source loading,
they are catastrophic and should fail whole process, loading of model is
not catastrophic.
|
|
If module crashes with unexpected error class, rescue it, and write it
backtrace
Also log if unknown model is attempted instead of crash
|
|
As I can't do IO#select on sinatra/puma to run it when I have time, I
have to run it on separate thread.
This means Nodes container needs to be thread safe, it now has ghetto
mutex locking, but I probably need to be be more focused what are the
external methods that can be called and wrap those in @mutex.synchronize
Provide also HTML UI not just JSON for ghetto UI to people who don't want to
integrate
|
|
Rakefile changes
Bump up gemspec version
|
|
|
|
Specifically AOS 6, vxworks era, not linux era 7
|
|
Now input ssh has configuration secure which is false by default,
meaning we don't care about changing keys. It breaks ssh security model
but rancid does it too.
Also input models error handling is now mostly moved to node.rb for
centralized handling + logging. With input models only defining which
errors they want to receover from.
|
|
Kudos to Samer Abdel-Hafez for noticing
|
|
|
|
'syslog.rb' listed to UDP port (or reads file). When IOS or JunOS style
config change/commit message is seen, it triggers immediate update ot
config
It transports commit message (junos) remote host from which change was
mde (ios) and who made the change (junos+ios). This is carried over to
the 'output' methods, that is, 'git blame' will show IOS/JunOS user-name
who made the change.
|
|
|
|
Silly for shit-and-giggles attempt at rancid
|