Age | Commit message (Collapse) | Author |
|
- we need config/vars before model
- some whitespace changes
Bump up gemspec
|
|
|
|
in addition:
- move vars helper to separate file
- add csv support for node variables
|
|
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
|
|
|
|
|
|
|
|
1) ssh fails
2) user clicks 'update'
3) node is reset and moved head of queue
4) telnet fails
5) node last time is set to current
net result, head of queue will block until interval has passed, even
though below head there are nodes which need to be processed.
|
|
|
|
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
|
|
Let's raise OxidizedError instead for known dependencies
|
|
It's useful to run interactively during startup, to get the helpful
messages about missing stuff.
|
|
|
|
It is now separately in oxidized-web package
|
|
Not every installation will use git + sql. Try to give helpful error
message on missing dependencies.
|
|
Once web is moved to 'oxidized-web' package and sqlite+git dependencies
are removed, it's lot easier to install 'oxidized-script' + 'oxidized'
on other machines which actually don't intend to run oxidized to collect
config
Now as we depend on puma + sqlite we need to compile native extensions,
which may be problematic and certainly unnecesassary just to run 'oxs'
|
|
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.
|
|
Waittime is how long it waits for /more/ input /after/ matching to RE.
This has been wrong always in Oxidized but only after changing default
timeout to 30, it became apparent.
When timeout was 5s, it just gave 5s delay to every command, now it
gives 30s delay.
|
|
|
|
|
|
|
|
Change models to Asetus syntax
|
|
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
|
|
|
|
|
|
|
|
- add 'connnected?' method to ssh/telnet to query if or not we're
connected
- subclass OxidizedError from StandardError, all future OxidizedErrors
should be subclasssed from this.
|
|
|
|
potential use in perhaps upcoming CLI:
[fisakytt@lan-login1 ~/projects/oxidized-cli]% ./oxi S-2250219.fi.cpe.tdc.net 'show ver'
Dec 2 2009 00:19:01
Q.11.25
106
[fisakytt@lan-login1 ~/projects/oxidized-cli]% ./oxi 62.236.123.197 'show ver'
Cisco IOS Software, C3560 Software (C3560-IPBASEK9-M), Version 12.2(55)SE1, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2010 by Cisco Systems, Inc.
Compiled Thu 02-Dec-10 07:16 by prod_rel_team
Image text-base: 0x01000000, data-base: 0x02D00000
ROM: Bootstrap program is C3560 boot loader
BOOTLDR: C3560 Boot Loader (C3560-HBOOT-M) Version 12.2(35r)SE2, RELEASE SOFTWARE (fc1)
S-1035880.fi uptime is 7 weeks, 3 days, 15 hours, 43 minutes
System returned to ROM by power-on
System restarted at 00:54:59 UTC Wed Feb 19 2014
System image file is "flash:c3560-ipbasek9-mz.122-55.SE1.bin"
This product contains cryptographic features and is subject to United
States and local country laws governing import, export, transfer and
use. Delivery of Cisco cryptographic products does not imply
third-party authority to import, export, distribute or use encryption.
Importers, exporters, distributors and users are responsible for
compliance with U.S. and local country laws. By using this product you
agree to comply with applicable laws and regulations. If you are unable
to comply with U.S. and local laws, return this product immediately.
A summary of U.S. laws governing Cisco cryptographic products may be found at:
http://www.cisco.com/wwl/export/crypto/tool/stqrg.html
If you require further assistance please contact us by sending email to
export@cisco.com.
cisco WS-C3560-8PC (PowerPC405) processor (revision F0) with 131072K bytes of memory.
Processor board ID FOC1449W2ZU
Last reset from power-on
2 Virtual Ethernet interfaces
8 FastEthernet interfaces
1 Gigabit Ethernet interface
The password-recovery mechanism is enabled.
512K bytes of flash-simulated non-volatile configuration memory.
Base ethernet MAC Address : 10:8C:CF:F0:68:80
Motherboard assembly number : 73-10612-09
Power supply part number : 341-0207-02
Motherboard serial number : FOC14493DDW
Power supply serial number : LIT14430ZXA
Model revision number : F0
Motherboard revision number : A0
Model number : WS-C3560-8PC-S
System serial number : FOC1449W2ZU
Top Assembly Part Number : 800-28131-04
Top Assembly Revision Number : C0
Version ID : V04
CLEI Code Number : COML900ARA
Hardware Board Revision Number : 0x01
Switch Ports Model SW Version SW Image
------ ----- ----- ---------- ----------
* 1 9 WS-C3560-8PC 12.2(55)SE1 C3560-IPBASEK9-M
Configuration register is 0xF
[fisakytt@lan-login1 ~/projects/oxidized-cli]% cat oxi
require 'pry'
require 'pp'
require 'oxidized'
require 'resolv'
module Oxidized
class Oxi
def cmd command
@model.cmd command
end
def disconnect
@input.disconnect_cli
end
alias_method :close, :disconnect
private
def initialize node
Oxidized.mgr = Manager.new
@node = Nodes.new(:node=>node).first
@model = @node.model
@input = nil
connect
if block_given?
yield self
disconnect
end
end
def connect
@node.input.each do |input|
begin
@node.model.input = input.new
@node.model.input.connect @node
break
rescue
end
end
@input = @node.model.input
@input.connect_cli
end
end
end
Oxidized::Oxi.new(ARGV[0]) do |cli|
puts cli.cmd ARGV[1]
end
[fisakytt@lan-login1 ~/projects/oxidized-cli]% ls -la
total 12
drwxrwxr-x 2 fisakytt fisakytt 4096 Apr 12 19:39 .
drwxrwxr-x 7 fisakytt fisakytt 4096 Apr 12 17:52 ..
-rwxr-xr-x 1 fisakytt fisakytt 820 Apr 12 19:39 oxi
|
|
|
|
|
|
tested on SR and SAS routers
|
|
|
|
supports virtual chassis for OS6900
|
|
|
|
|
|
|
|
|
|
|
|
|
|
at least from version 5 onwards
|
|
|
|
|
|
that was run
|
|
|
|
|
|
|
|
If we stay connected on the device (model broken?) give up after
timeout, instead of sitting in the model forever
|