construqt 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/lib/construqt/addresses.rb +121 -10
  3. data/lib/construqt/bgps.rb +10 -12
  4. data/lib/construqt/firewalls.rb +115 -16
  5. data/lib/construqt/flavour/ciscian/ciscian.rb +73 -93
  6. data/lib/construqt/flavour/ciscian/deploy_template.rb +36 -0
  7. data/lib/construqt/flavour/ciscian/dialect_dlink-dgs15xx.rb +62 -114
  8. data/lib/construqt/flavour/ciscian/dialect_hp-2510g.rb +74 -14
  9. data/lib/construqt/flavour/delegates.rb +9 -0
  10. data/lib/construqt/flavour/mikrotik/flavour_mikrotik.rb +0 -3
  11. data/lib/construqt/flavour/mikrotik/flavour_mikrotik_bgp.rb +12 -1
  12. data/lib/construqt/flavour/mikrotik/flavour_mikrotik_interface.rb +32 -1
  13. data/lib/construqt/flavour/mikrotik/flavour_mikrotik_result.rb +2 -0
  14. data/lib/construqt/flavour/mikrotik/flavour_mikrotik_schema.rb +3 -3
  15. data/lib/construqt/flavour/plantuml/plantuml.rb +2 -2
  16. data/lib/construqt/flavour/ubuntu/flavour_ubuntu.rb +24 -13
  17. data/lib/construqt/flavour/ubuntu/flavour_ubuntu_bgp.rb +16 -7
  18. data/lib/construqt/flavour/ubuntu/flavour_ubuntu_dns.rb +5 -5
  19. data/lib/construqt/flavour/ubuntu/flavour_ubuntu_firewall.rb +218 -67
  20. data/lib/construqt/flavour/ubuntu/flavour_ubuntu_ipsec.rb +33 -17
  21. data/lib/construqt/flavour/ubuntu/flavour_ubuntu_opvn.rb +5 -5
  22. data/lib/construqt/flavour/ubuntu/flavour_ubuntu_result.rb +77 -14
  23. data/lib/construqt/flavour/ubuntu/flavour_ubuntu_services.rb +77 -29
  24. data/lib/construqt/flavour/ubuntu/flavour_ubuntu_vrrp.rb +18 -3
  25. data/lib/construqt/interfaces.rb +25 -6
  26. data/lib/construqt/ipsecs.rb +5 -3
  27. data/lib/construqt/rack.rb +51 -0
  28. data/lib/construqt/resource.rb +25 -3
  29. data/lib/construqt/reverse.rb +1 -0
  30. data/lib/construqt/services.rb +15 -29
  31. data/lib/construqt/tags.rb +21 -15
  32. data/lib/construqt/templates.rb +17 -0
  33. data/lib/construqt/users.rb +4 -0
  34. data/lib/construqt/util.rb +1 -1
  35. data/lib/construqt/version.rb +1 -1
  36. data/lib/construqt/vlans.rb +13 -2
  37. data/lib/construqt.rb +2 -1
  38. metadata +4 -2
@@ -25,37 +25,43 @@ module Construqt
25
25
 
26
26
  def self.find(tag, clazz = nil)
27
27
  #binding.pry
28
- ret = (@tags[tag] || []).select{|o| clazz.nil? || o.kind_of?(clazz) }
28
+ ret = (@tags[tag] || []).select{|o| clazz.nil? || o.instance_of?(clazz.class) || (clazz.kind_of?(Proc) && clazz.call(o)) }
29
29
  Construqt.logger.warn("tag #{tag} #{clazz.inspect} empty result") if ret.empty?
30
30
  ret
31
31
  end
32
32
 
33
- def self.ips_net(tag, family)
34
- ip_module = family==Construqt::Addresses::IPV4 ? IPAddress::IPv4: IPAddress::IPv6
35
- IPAddress::IPv4::summarize(*(@tags[tag]||[]).map do |obj|
36
- if obj.kind_of?(IPAddress)
33
+ def self.ips_adr(tag, family)
34
+ (@tags[tag]||[]).map do |obj|
35
+ if obj.kind_of?(IPAddress) || obj.kind_of?(Construqt::Addresses::CqIpAddress)
37
36
  obj
38
37
  elsif obj.respond_to? :ips
39
38
  obj.ips
40
39
  elsif obj.kind_of?(Construqt::Flavour::HostDelegate)
41
- #binding.pry
42
40
  res = obj.interfaces.values.map do |i|
43
41
  i.delegate.address.ips.map do |a|
44
- prefix = a.ipv4? ? 32 : 128
45
- ret = IPAddress.parse("#{a.to_s}/#{prefix}")
46
- puts "ADR=#{tag} #{ret.to_string} #{a.to_s}"
47
- ret
42
+ #prefix = a.ipv4? ? 32 : 128
43
+ #ret = IPAddress.parse("#{a.to_s}/#{prefix}")
44
+ #ret
45
+ a
48
46
  end
49
- end.flatten
50
- puts "HOST=>#{tag} #{res.map{|i| i.to_string }}"
47
+ end
48
+ #puts "HOST=>#{tag} #{res.map{|i| i.to_string }}"
51
49
  res
52
50
  else
53
51
  nil
54
52
  end
55
53
  end.flatten.compact.select do |i|
56
- (family==Construqt::Addresses::IPV4 && i.ipv4?) ||
57
- (family==Construqt::Addresses::IPV6 && i.ipv6?)
58
- end)
54
+ (((family==Construqt::Addresses::IPV4||family==IPAddress::IPv4) && i.ipv4?) ||
55
+ ((family==Construqt::Addresses::IPV6||family==IPAddress::IPv6) && i.ipv6?))
56
+ end
57
+ end
58
+
59
+ def self.ips_hosts(tag, family)
60
+ IPAddress.summarize(ips_adr(tag, family).map{|i| IPAddress.parse("#{i.to_s}/#{i.ipv4? ? 32 : 128}") })
61
+ end
62
+
63
+ def self.ips_net(tag, family)
64
+ IPAddress.summarize(ips_adr(tag, family).map{|i| i.network })
59
65
  end
60
66
  end
61
67
  end
@@ -18,6 +18,23 @@ module Construqt
18
18
 
19
19
  throw "vlan with id #{vlan_id} not found in template #{self}"
20
20
  end
21
+
22
+ def is_untagged?(vlan_id)
23
+ self.vlans.each do |vlan|
24
+ return vlan.untagged? if vlan.vlan_id == vlan_id
25
+ end
26
+
27
+ throw "vlan with id #{vlan_id} not found in template #{self}"
28
+ end
29
+
30
+ def is_nountagged?(vlan_id)
31
+ self.vlans.each do |vlan|
32
+ return vlan.nountagged? if vlan.vlan_id == vlan_id
33
+ end
34
+
35
+ throw "vlan with id #{vlan_id} not found in template #{self}"
36
+ end
37
+
21
38
  end
22
39
 
23
40
  def find(name)
@@ -12,6 +12,10 @@ module Construqt
12
12
  @users[name] = OpenStruct.new(cfg)
13
13
  end
14
14
 
15
+ def find(name)
16
+ @users[name]
17
+ end
18
+
15
19
  def all
16
20
  @users.values
17
21
  end
@@ -128,7 +128,7 @@ module Construqt
128
128
  ranges.join(",")
129
129
  end
130
130
 
131
- PORTS_DEF_REGEXP = "([^\\d\\s]*[\\d,-]+)+"
131
+ PORTS_DEF_REGEXP = "((?:[^\\d\\s]*[\\d,-]+)+)"
132
132
  PORT_NAME_REGEXP="^(.*?)(\\d+)$"
133
133
  def self.expandRangeDefinition(list_str)
134
134
  ports = list_str.strip.split(",").map do |range_def|
@@ -1,3 +1,3 @@
1
1
  module Construqt
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
@@ -13,20 +13,31 @@ module Construqt
13
13
  end
14
14
 
15
15
  def tagged?
16
- @tagged
16
+ !@nountagged && @tagged
17
17
  end
18
18
 
19
19
  def tagged
20
20
  @tagged=true
21
+ @nountagged=false
21
22
  self
22
23
  end
23
24
 
24
25
  def untagged?
25
- !@tagged
26
+ !@nountagged && !@tagged
26
27
  end
27
28
 
28
29
  def untagged
29
30
  @tagged = false
31
+ @nountagged=false
32
+ self
33
+ end
34
+
35
+ def nountagged?
36
+ @nountagged
37
+ end
38
+
39
+ def nountagged
40
+ @nountagged=true
30
41
  self
31
42
  end
32
43
  end
data/lib/construqt.rb CHANGED
@@ -13,7 +13,8 @@ require 'securerandom'
13
13
  module Construqt
14
14
 
15
15
  @logger = Logger.new(STDOUT)
16
- @logger.level = Logger::DEBUG
16
+ @LOGLEVEL||=Logger::DEBUG
17
+ @logger.level = @LOGLEVEL
17
18
 
18
19
  def self.log_level(level)
19
20
  @logger.level = level
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: construqt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Meno Abels
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-08 00:00:00.000000000 Z
11
+ date: 2014-12-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: construqt-ipaddress
@@ -51,6 +51,7 @@ files:
51
51
  - lib/construqt/cables.rb
52
52
  - lib/construqt/firewalls.rb
53
53
  - lib/construqt/flavour/ciscian/ciscian.rb
54
+ - lib/construqt/flavour/ciscian/deploy_template.rb
54
55
  - lib/construqt/flavour/ciscian/dialect_dlink-dgs15xx.rb
55
56
  - lib/construqt/flavour/ciscian/dialect_hp-2510g.rb
56
57
  - lib/construqt/flavour/delegates.rb
@@ -77,6 +78,7 @@ files:
77
78
  - lib/construqt/interfaces.rb
78
79
  - lib/construqt/ipsecs.rb
79
80
  - lib/construqt/networks.rb
81
+ - lib/construqt/rack.rb
80
82
  - lib/construqt/regions.rb
81
83
  - lib/construqt/resource.rb
82
84
  - lib/construqt/reverse.rb