Age | Commit message (Collapse) | Author |
|
|
|
|
|
- ios show first line of 'show version'
- junos display omitted config
|
|
|
|
ScreenOS support
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a) put metainformation on top, rancid style
b) remove changing data from 'show system'
|
|
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
|
|
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.
|
|
|
|
|
|
- we need config/vars before model
- some whitespace changes
Bump up gemspec
|
|
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
|
|
Model can inmplement something like
cmd :secret do |cfg|
cfg.sub! / secret (\d+) (\S+).*/, '\\1 SECRET'
cfg
end
Which is called for all commands if CFG.remove_secret is set
|
|
It is now separately in oxidized-web package
|
|
Will allow convenience methods such as
cmd :all do |cfg|
cfg.pop.shift
end
instead of:
cmd :all do |cfg|
cfg.each_line.to_a[1..-2].join
end
And what ever convenience configs we come up with
|
|
sh ip bgp | i foo
and you won't see empty line before prompt, ergo, we cannot always
remove it.
But I'm not too surprised JunOS + IOS templates are still mostly exactly
the same they were from my testing to see how Oxidized works over year
ago, they need rework to be production quality.
|
|
Change models to Asetus syntax
|
|
|
|
tested on SR and SAS routers
|
|
supports virtual chassis for OS6900
|
|
|
|
|
|
|
|
at least from version 5 onwards
|
|
|
|
that was run
|
|
|
|
|
|
|
|
|
|
^\r? was too strict
Also move non-config above of config, rancid-style.
Also Procurve is unbelievably shitty crapbox, screen drawing is shit,
telnet password is maximum 17 chars, ssh password maximum 16 chars, que?
|
|
Block must return string, it returned nil which broke it.
Also coerce type to string in future, so block won't fail so
catastrophically, just output missing.
|
|
Both post and pre are called after all 'cmd' are already called, but
output from 'pre' is put on top of configuration output and output from
'post' is put on bottom of confguration output.
Rationale is dynamic configuration, where you'll only know after running
some commands what commands you want to run.
Both except blocks, such as
pre do
# commands to execute
end
Both can be called multiple times
|
|
|
|
|
|
They keep changing dynamically in config
|
|
Crappy Cisco WLC 5k, much quality, very implementation, such secure
* stop pre_logout from expecting prompt by default
|
|
Outputs about what we've seen last in input class. Quite dirty in
telnet, so not sure I'm going to support it. Let's see if there is
use-case for it.
|
|
Specifically AOS 6, vxworks era, not linux era 7
|
|
|
|
always attempt to enable if :enable password is configured
|
|
|
|
|
|
Now we can deal with pager and additional PW prompts, such as 'enable'
Examples in IOS model how to use.
The Telnet implementation is particularly fugly, I just need one line in
'waitfor' to handle pager while waiting for prompt, but couldn't figure
out clean way to do it, so needed to rewrit whole Telnet#waitfor just to
add that line.
|