class Construqt::Flavour::Mikrotik::Bond

Public Class Methods

new(cfg) click to toggle source
Calls superclass method
# File lib/construqt/flavour/mikrotik/flavour_mikrotik.rb, line 69
def initialize(cfg)
  super(cfg)
end

Public Instance Methods

build_config(host, iface) click to toggle source
# File lib/construqt/flavour/mikrotik/flavour_mikrotik.rb, line 124
def build_config(host, iface)
  iface = iface.delegate
  default = {
    "mode" => Schema.string.default("active-backup"),
    "mtu" => Schema.int.required,
    "name" => Schema.identifier.required.key,
    "slaves" => Schema.identifiers.required,
  }
  host.result.render_mikrotik(default, {
    "mtu" => iface.mtu,
    "name" => iface.name,
    "mode" => iface.mode,
    "slaves" => iface.interfaces.map{|iface| iface.name}.join(',')
  }, "interface", "bonding")
  Interface.build_config(host, iface)
  scheduler_hack(host, iface)
end
scheduler_hack(host, iface) click to toggle source
# File lib/construqt/flavour/mikrotik/flavour_mikrotik.rb, line 73
        def scheduler_hack(host, iface)
          #binding.pry if iface.name=="sw12"
          return [] unless iface.interfaces.find{|iface| iface.class.kind_of? self.class }

          system_script_schema = {
            "name" => Schema.identifier.key.required,
            "source" => Schema.source.required
          }
          host.result.render_mikrotik(system_script_schema, {
            "no_auto_disable" => true,
            "name" => "disable-#{iface.name}",
            "source" => <<SRC
/interface bonding disable [ find name=#{iface.name} ]
/system scheduler enable [ find name=enable-#{iface.name} ]
SRC
          }, "system", "script")

          or_condition = "(" + iface.interfaces.map{|iface| "name=#{iface.name}"}.join(" or ") + ")"
          host.result.render_mikrotik(system_script_schema, {
            "no_auto_disable" => true,
            "name" => "enable-#{iface.name}",
            "source" => <<SRC
:local run [ /interface bonding find running=yes and #{or_condition}]
:if ($run!="") do={
  /interface bonding enable [find name=sw12]
  /system schedule disable [ find name=enable-sw12 ]
}
SRC
          }, "system", "script")

          system_scheduler_script = {
            "name" => Schema.identifier.key.required,
            "on-event" => Schema.identifier.required,
            "start-time" => Schema.identifier.null,
            "interval" => Schema.interval.null,
            "disabled" => Schema.boolean.default(false)
          }
          host.result.render_mikrotik(system_scheduler_script, {
            "name" => "disable-#{iface.name}",
            "on-event" => "disable-#{iface.name}",
            "start-time" => "startup"
          }, "system", "scheduler")

          host.result.render_mikrotik(system_scheduler_script, {
            "name" => "enable-#{iface.name}",
            "on-event" => "enable-#{iface.name}",
            "interval" => "00:00:10",
            "disabled" => true
          }, "system", "scheduler")
        end