Class: Construqt::Flavour::Mikrotik::Interface
- Inherits:
-
Object
- Object
- Construqt::Flavour::Mikrotik::Interface
- Defined in:
- lib/construqt/flavour/mikrotik/flavour_mikrotik_interface.rb
Class Method Summary collapse
- .build_config(host, iface) ⇒ Object
- .render_ip(host, iface, ip) ⇒ Object
- .render_route(host, iface, rt) ⇒ Object
Class Method Details
.build_config(host, iface) ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/construqt/flavour/mikrotik/flavour_mikrotik_interface.rb', line 61 def self.build_config(host, iface) #name = File.join(host.name, "interface", "device") #ret = [] #ret += self.clazz.build_config(host, iface||self) if !(iface.address.nil? || iface.address.ips.empty?) iface.address.ips.each do |ip| render_ip(host, iface, ip) end iface.address.routes.each do |rt| render_route(host, iface, rt) end end #ret end |
.render_ip(host, iface, ip) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/construqt/flavour/mikrotik/flavour_mikrotik_interface.rb', line 7 def self.render_ip(host, iface, ip) cfg = { "address" => ip, "interface" => iface.name } if ip.ipv6? default = { "address" => Schema.addrprefix.required, "interface" => Schema.identifier.required, "advertise" => Schema.boolean.default(false), "comment" => Schema.string.required.key } cfg['comment'] = "#{cfg['interface']}-#{cfg['address']}-CONSTRUQT" #puts ">>>>>>>> #{cfg.inspect}" host.result.render_mikrotik(default, cfg, "ipv6", "address") else default = { "address" => Schema.addrprefix.required, "interface" => Schema.identifier.required, "comment" => Schema.string.required.key } cfg['comment'] = "#{cfg['interface']}-#{cfg['address']}-CONSTRUQT" host.result.render_mikrotik(default, cfg, "ip", "address") end end |
.render_route(host, iface, rt) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/construqt/flavour/mikrotik/flavour_mikrotik_interface.rb', line 33 def self.render_route(host, iface, rt) throw "dst via mismatch #{rt}" if rt.type.nil? and !(rt.dst.ipv6? == rt.via.ipv6? or rt.dst.ipv4? == rt.via.ipv4?) cfg = { "dst-address" => rt.dst, "gateway" => rt.via, } if rt.type.nil? cfg['gateway'] = rt.via else cfg['type'] = rt.type end cfg['distance'] = rt.metric if rt.metric default = { "dst-address" => Schema.network.required.key(0), "gateway" => Schema.address, "type" => Schema.identifier, "distance" => Schema.int, "comment" => Schema.string.required.key(1) } cfg['comment'] = "#{cfg['dst-address']} via #{cfg['gateway']} CONSTRUQT" if rt.dst.ipv6? host.result.render_mikrotik(default, cfg, "ipv6", "route") else host.result.render_mikrotik(default, cfg, "ip", "route") end end |