Module: Construqt::Flavour::Mikrotik

Defined in:
lib/construqt/flavour/mikrotik/flavour_mikrotik.rb,
lib/construqt/flavour/mikrotik/flavour_mikrotik_bgp.rb,
lib/construqt/flavour/mikrotik/flavour_mikrotik_ipsec.rb,
lib/construqt/flavour/mikrotik/flavour_mikrotik_result.rb,
lib/construqt/flavour/mikrotik/flavour_mikrotik_schema.rb,
lib/construqt/flavour/mikrotik/flavour_mikrotik_interface.rb

Defined Under Namespace

Classes: Bgp, Bond, Bridge, Device, Gre, Host, Interface, Ipsec, Ovpn, Result, Schema, Template, Vlan, Vrrp

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.bgpObject



374
375
376
# File 'lib/construqt/flavour/mikrotik/flavour_mikrotik.rb', line 374

def self.bgp
  Bgp
end

.clazz(name) ⇒ Object



394
395
396
397
398
# File 'lib/construqt/flavour/mikrotik/flavour_mikrotik.rb', line 394

def self.clazz(name)
  ret = self.clazzes[name]
  throw "class not found #{name}" unless ret
  ret
end

.clazzesObject



378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
# File 'lib/construqt/flavour/mikrotik/flavour_mikrotik.rb', line 378

def self.clazzes
  {
    "opvn" => Ovpn,
    "gre" => Gre,
    "host" => Host,
    "device"=> Device,
    "vrrp" => Vrrp,
    "bridge" => Bridge,
    "bond" => Bond,
    "vlan" => Vlan,
    #"result" => Result,
    "template" => Template,
    #"bgp" => Ipsec,
    #"ipsec" => Bgp
  }
end

.compress_address(val) ⇒ Object



350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
# File 'lib/construqt/flavour/mikrotik/flavour_mikrotik.rb', line 350

def self.compress_address(val)
  return val.compressed if val.ipv4?
  found = 0
  val.groups.map do |i|
    if found > 0 && i != 0
      found = -1
    end

    if found == 0 && i == 0
      found += 1
      ""
    elsif found > 0 && i == 0
      found += 1
      nil
    else
      i.to_s 16
    end
  end.compact.join(":").sub(/:+$/, '::')
end

.create_bgp(cfg) ⇒ Object



413
414
415
# File 'lib/construqt/flavour/mikrotik/flavour_mikrotik.rb', line 413

def self.create_bgp(cfg)
  Bgp.new(cfg)
end

.create_host(name, cfg) ⇒ Object



400
401
402
403
404
405
406
# File 'lib/construqt/flavour/mikrotik/flavour_mikrotik.rb', line 400

def self.create_host(name, cfg)
  cfg['name'] = name
  cfg['result'] = nil
  host = Host.new(cfg)
  host.result = Result.new(host)
  host
end

.create_interface(name, cfg) ⇒ Object



408
409
410
411
# File 'lib/construqt/flavour/mikrotik/flavour_mikrotik.rb', line 408

def self.create_interface(name, cfg)
  cfg['name'] = name
  clazz(cfg['clazz']).new(cfg)
end

.create_ipsec(cfg) ⇒ Object



417
418
419
# File 'lib/construqt/flavour/mikrotik/flavour_mikrotik.rb', line 417

def self.create_ipsec(cfg)
  Ipsec.new(cfg)
end

.ipsecObject



370
371
372
# File 'lib/construqt/flavour/mikrotik/flavour_mikrotik.rb', line 370

def self.ipsec
  Ipsec
end

.nameObject



13
14
15
# File 'lib/construqt/flavour/mikrotik/flavour_mikrotik.rb', line 13

def self.name
  'mikrotik'
end

Instance Method Details

#set_ipv6_address(host, cfg) ⇒ Object



329
330
331
332
333
334
335
336
337
338
# File 'lib/construqt/flavour/mikrotik/flavour_mikrotik.rb', line 329

def set_ipv6_address(host, cfg)
  default = {
    "address"=>Schema.network.required,
    "interface"=>Schema.identifier.required,
    "comment" => Schema.string.required.key,
    "advertise"=>Schema.boolean.default(false)
  }
  cfg['comment'] = "#{cfg['interface']}-#{cfg['address']}"
  host.result.render_mikrotik(default, cfg, "ipv6", "address")
end