palletjack-tools 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 443662d2e6f9f483d2de9d2305340e50656ae500
4
- data.tar.gz: ffa79a21b570f12fdbb1f5ff4ff4c494f44cde4e
3
+ metadata.gz: 2437860b1eb4b4f167a5dff5af46472a057aa9b5
4
+ data.tar.gz: 2be532d8a2c4560506a9bb39a8ad8fa79d8a1126
5
5
  SHA512:
6
- metadata.gz: 97879673f71ef8f1f2ec8f643988a7145e0ec508675aa72d62c77b2756ad0cc1204355d88492d90c451034fe6209db1a6b6be890aab18e22788e2bbe707c0173
7
- data.tar.gz: ad68602d2ff0ba2cc16ed4c319db333e01abbb7003df90d313d20022618c8930ca536a51b0a55dcef670b1559124616b8299180687eaa78542ba11b7379ecc7d
6
+ metadata.gz: 3c39dbb871788b5b5530c23f772bea8e4d1f1caf6a0a38c58b7734f16dacd37460c73586f7b8876088d4a988cd79a1ccc9140cab12de67a4f76f1ce08527bc65
7
+ data.tar.gz: f7a4515815c3452a7b0f5d514f96127dc901d44a66a8d35ccc050ef54b9952e45fce3bb84aae1ab9ac7bcff220c5419a43a1fbed7fc966dfd6f48293eaad72af
checksums.yaml.gz.sig ADDED
Binary file
data.tar.gz.sig ADDED
Binary file
data/exe/create_domain CHANGED
@@ -23,30 +23,32 @@ Create domain and ipv4_network objects in a warehouse"
23
23
  required_option :domain
24
24
  required_option :network
25
25
  end
26
- end
27
-
28
- CreateDomain.run do
29
-
30
- # Create the IPv4 Network object
31
26
 
32
- pallet_dir 'ipv4_network', :network
33
- pallet_box 'ipv4_network', :network, 'dhcp' do
34
- { net:{ dhcp:{ 'tftp-server' => '', 'boot-file' => '' } } }
27
+ def output
28
+ # Create the IPv4 Network object
29
+
30
+ pallet_dir 'ipv4_network', :network
31
+ pallet_box 'ipv4_network', :network, 'dhcp' do
32
+ { net:{ dhcp:{ 'tftp-server' => '', 'boot-file' => '' } } }
33
+ end
34
+ pallet_box 'ipv4_network', :network, 'identity' do
35
+ { net:{ ipv4:{ gateway:'' },
36
+ dns:{ resolver:[''] } } }
37
+ end
38
+
39
+ # Create the DNS domain object
40
+
41
+ pallet_dir 'domain', :domain
42
+ pallet_box 'domain', :domain, 'dns' do
43
+ { net:{ dns:{ ns:[''], 'soa-ns' => '', 'soa-contact' => '' } } }
44
+ end
45
+ pallet_box 'domain', :domain, 'services' do
46
+ { net:{ service:{ syslog:[{address:'', port:'514', protocol:'udp' } ] } } }
47
+ end
48
+ pallet_links 'domain', :domain, 'ipv4_network' => ['ipv4_network', :network]
35
49
  end
36
- pallet_box 'ipv4_network', :network, 'identity' do
37
- { net:{ ipv4:{ gateway:'' },
38
- dns:{ resolver:[''] } } }
39
- end
40
-
41
- # Create the DNS domain object
42
-
43
- pallet_dir 'domain', :domain
44
- pallet_box 'domain', :domain, 'dns' do
45
- { net:{ dns:{ ns:[''], 'soa-ns' => '', 'soa-contact' => '' } } }
46
- end
47
- pallet_box 'domain', :domain, 'services' do
48
- { net:{ service:{ syslog:[{address:'', port:'514', protocol:'udp' } ] } } }
49
- end
50
- pallet_links 'domain', :domain, 'ipv4_network' => ['ipv4_network', :network]
50
+ end
51
51
 
52
+ if CreateDomain.standalone?(__FILE__)
53
+ CreateDomain.run
52
54
  end
@@ -29,23 +29,26 @@ Create phy_nic and ipv4_interface objects in a warehouse"
29
29
  required_option :addr
30
30
  required_option :network
31
31
  end
32
- end
33
32
 
34
- CreateIPv4Interface.run do
33
+ def output
34
+ # Create Physical NIC object
35
35
 
36
- # Create Physical NIC object
36
+ pallet_dir 'phy_nic', :mac
37
+ pallet_box 'phy_nic', :mac, 'identity' do
38
+ { net:{ layer2:{ name:'' } } }
39
+ end
37
40
 
38
- pallet_dir 'phy_nic', :mac
39
- pallet_box 'phy_nic', :mac, 'identity' do
40
- { net:{ layer2:{ name:'' } } }
41
- end
41
+ # Create IPv4 Interface object
42
42
 
43
- # Create IPv4 Interface object
43
+ pallet_dir 'ipv4_interface', :addr
44
+ pallet_links 'ipv4_interface', :addr,
45
+ 'ipv4_network' => ['ipv4_network', :network],
46
+ 'domain' => ['domain', :domain],
47
+ 'phy_nic' => ['phy_nic', :mac],
48
+ 'system' => ['system', :system]
49
+ end
50
+ end
44
51
 
45
- pallet_dir 'ipv4_interface', :addr
46
- pallet_links 'ipv4_interface', :addr,
47
- 'ipv4_network' => ['ipv4_network', :network],
48
- 'domain' => ['domain', :domain],
49
- 'phy_nic' => ['phy_nic', :mac],
50
- 'system' => ['system', :system]
52
+ if CreateIPv4Interface.standalone?(__FILE__)
53
+ CreateIPv4Interface.run
51
54
  end
data/exe/create_system CHANGED
@@ -26,20 +26,24 @@ Create system objects in a warehouse"
26
26
  required_option :os, :netinstall
27
27
  exclusive_options :os, :netinstall
28
28
  end
29
- end
30
29
 
31
- CreateSystem.run do
32
- pallet_dir 'system', :system
33
- pallet_box 'system', :system, 'role' do
34
- { system:{ role:[ '' ] } }
35
- end
36
- pallet_links 'system', :system, 'domain' => ['domain', :domain]
37
- pallet_links 'system', :system,
38
- if options[:os]
39
- { 'os' => ['os', :os], 'netinstall' => [] }
40
- elsif options[:netinstall]
41
- { 'os' => [], 'netinstall' => ['netinstall', :netinstall] }
42
- else
43
- abort('Both --os and --netinstall were nil; should not happen!')
30
+ def output
31
+ pallet_dir 'system', :system
32
+ pallet_box 'system', :system, 'role' do
33
+ { system:{ role:[ '' ] } }
44
34
  end
35
+ pallet_links 'system', :system, 'domain' => ['domain', :domain]
36
+ pallet_links 'system', :system,
37
+ if options[:os]
38
+ { 'os' => ['os', :os], 'netinstall' => [] }
39
+ elsif options[:netinstall]
40
+ { 'os' => [], 'netinstall' => ['netinstall', :netinstall] }
41
+ else
42
+ abort('Both --os and --netinstall were nil; should not happen!')
43
+ end
44
+ end
45
+ end
46
+
47
+ if CreateSystem.standalone?(__FILE__)
48
+ CreateSystem.run
45
49
  end
data/exe/dump_pallet CHANGED
@@ -22,6 +22,16 @@ pallets of the specified type."
22
22
  parser.on('-t TYPE', '--type TYPE',
23
23
  'type (default "system")',
24
24
  String) {|type| options[:type] = type }
25
+
26
+ options[:match_name] = :leaf_name
27
+ parser.on('-f', '--[no-]full-name',
28
+ 'match full_name of pallets instead of leaf_name'
29
+ ) {|maybe| options[:match_name] = if maybe
30
+ :full_name
31
+ else
32
+ :leaf_name
33
+ end
34
+ }
25
35
  end
26
36
 
27
37
  # Dump the yaml contents of all pallets given to STDOUT
@@ -35,16 +45,20 @@ pallets of the specified type."
35
45
  puts p.to_yaml
36
46
  end
37
47
  end
38
- end
39
48
 
40
- DumpPallet.run do
41
- # Since the Tool framework uses destructive opts.parse!, all options
42
- # were removed from argv, leaving just the names to search for.
43
- if argv.empty?
44
- dump_pallets jack[kind: options[:type]]
45
- else
46
- argv.each do |name|
47
- dump_pallets jack[kind: options[:type], name: name]
49
+ def output
50
+ # Since the Tool framework uses destructive opts.parse!, all options
51
+ # were removed from argv, leaving just the names to search for.
52
+ if argv.empty?
53
+ dump_pallets jack[kind: options[:type]]
54
+ else
55
+ argv.each do |name|
56
+ dump_pallets jack[kind: options[:type], options[:match_name] => name]
57
+ end
48
58
  end
49
59
  end
50
60
  end
61
+
62
+ if DumpPallet.standalone?(__FILE__)
63
+ DumpPallet.run
64
+ end
data/exe/palletjack2knot CHANGED
@@ -37,134 +37,164 @@ Write DNS server zone files from a Palletjack warehouse"
37
37
  }
38
38
  "
39
39
  end
40
- end
41
40
 
42
- PalletJack2Knot.run do
43
- config_dir :zone_dir
41
+ # Generate and store forward zone data for a Pallet Jack domain
42
+ # object.
44
43
 
45
- # Use Unix timestamp as serial number, and get it once so all zones get
46
- # the same one
47
- serial = Time.now.utc.to_i
44
+ def process_forward_zone(domain)
45
+ absolute_domain_name = "#{domain['net.dns.domain']}."
48
46
 
49
- config_file :output, 'zones.conf' do |conf_file|
50
- conf_file << git_header('palletjack2knot')
47
+ zone = DNS::Zone.new
51
48
 
52
- jack.each(kind:'domain') do |domain|
53
- absolute_domain_name = "#{domain['net.dns.domain']}."
49
+ zone.origin = absolute_domain_name
50
+ zone.ttl = domain['net.dns.ttl']
54
51
 
55
- zone = DNS::Zone.new
52
+ zone.soa.serial = @serial
53
+ zone.soa.label = zone.origin
54
+ zone.soa.nameserver = domain['net.dns.soa-ns']
55
+ zone.soa.email = "#{domain['net.dns.soa-contact']}.".sub('@', '.')
56
56
 
57
- zone.origin = absolute_domain_name
58
- zone.ttl = domain['net.dns.ttl']
57
+ if domain['net.dns.mx']
58
+ domain['net.dns.mx'].each do |server|
59
+ mx = DNS::Zone::RR::MX.new
60
+ mx.label = absolute_domain_name
61
+ mx.priority = server['priority']
62
+ mx.exchange = server['server']
63
+ zone.records << mx
64
+ end
65
+ end
59
66
 
60
- zone.soa.serial = serial
61
- zone.soa.label = absolute_domain_name
62
- zone.soa.nameserver = domain['net.dns.soa-ns']
63
- zone.soa.email = "#{domain['net.dns.soa-contact']}.".sub('@', '.')
67
+ domain['net.dns.ns'].each do |address|
68
+ ns = DNS::Zone::RR::NS.new
69
+ ns.label = absolute_domain_name
70
+ ns.nameserver = address
71
+ zone.records << ns
72
+ end
64
73
 
65
- if domain['net.dns.mx']
66
- domain['net.dns.mx'].each do |server|
67
- mx = DNS::Zone::RR::MX.new
68
- mx.label = absolute_domain_name
69
- mx.priority = server['priority']
70
- mx.exchange = server['server']
71
- zone.records << mx
72
- end
74
+ if domain['net.dns.cname']
75
+ domain['net.dns.cname'].each do |name, target|
76
+ cname = DNS::Zone::RR::CNAME.new
77
+ cname.label = name
78
+ cname.domainname = target
79
+ zone.records << cname
73
80
  end
81
+ end
74
82
 
75
- domain['net.dns.ns'].each do |address|
76
- ns = DNS::Zone::RR::NS.new
77
- ns.label = absolute_domain_name
78
- ns.nameserver = address
79
- zone.records << ns
83
+ if domain['net.dns.srv']
84
+ domain['net.dns.srv'].each do |service|
85
+ srv = DNS::Zone::RR::SRV.new
86
+ srv.label = "_#{service['service']}._#{service['protocol']}"
87
+ srv.target = service['target']
88
+ srv.port = service['port']
89
+ service['priority'] ||= 0
90
+ srv.priority = service['priority']
91
+ service['weight'] ||= 0
92
+ srv.weight = service['weight']
93
+ zone.records << srv
80
94
  end
95
+ end
96
+
97
+ domain.children(kind:'ipv4_interface') do |interface|
98
+ a = DNS::Zone::RR::A.new
99
+ a.label = interface['net.dns.name']
100
+ a.address = interface['net.ipv4.address']
101
+ zone.records << a
81
102
 
82
- if domain['net.dns.cname']
83
- domain['net.dns.cname'].each do |name, target|
103
+ if interface['net.dns.alias']
104
+ interface['net.dns.alias'].each do |label|
84
105
  cname = DNS::Zone::RR::CNAME.new
85
- cname.label = name
86
- cname.domainname = target
106
+ cname.label = label
107
+ cname.domainname = interface['net.dns.name']
87
108
  zone.records << cname
88
109
  end
89
110
  end
111
+ end
90
112
 
91
- if domain['net.dns.srv']
92
- domain['net.dns.srv'].each do |service|
93
- srv = DNS::Zone::RR::SRV.new
94
- srv.label = "_#{service['service']}._#{service['protocol']}"
95
- srv.target = service['target']
96
- srv.port = service['port']
97
- service['priority'] ||= 0
98
- srv.priority = service['priority']
99
- service['weight'] ||= 0
100
- srv.weight = service['weight']
101
- zone.records << srv
102
- end
103
- end
113
+ @forward_zones[domain['net.dns.domain']] = zone
114
+ end
104
115
 
105
- domain.children(kind:'ipv4_interface') do |interface|
106
- a = DNS::Zone::RR::A.new
107
- a.label = interface['net.dns.name']
108
- a.address = interface['net.ipv4.address']
109
- zone.records << a
110
-
111
- if interface['net.dns.alias']
112
- interface['net.dns.alias'].each do |label|
113
- cname = DNS::Zone::RR::CNAME.new
114
- cname.label = label
115
- cname.domainname = interface['net.dns.name']
116
- zone.records << cname
117
- end
118
- end
119
- end
120
116
 
121
- config_file :zone_dir, "#{domain['net.dns.domain']}.zone" do |zonefile|
122
- zonefile << git_header('palletjack2knot', comment_char: ';')
123
- zonefile << zone.dump_pretty
124
- end
117
+ # Generate and store reverse zone data for the IPv4 network
118
+ # associated with a Pallet Jack domain object.
125
119
 
126
- conf_file << zone_config(domain['net.dns.domain'])
120
+ def process_reverse_zone(domain)
121
+ # Assume all delegations happen on octet boundaries for now.
122
+ # TODO: RFC 2317 classless in-addr.arpa delegation
127
123
 
128
- next unless domain['net.ipv4.cidr']
124
+ reverse_zone = DNS::Zone.new
129
125
 
130
- # Assume all delegations happen on octet boundaries for now.
131
- # TODO: RFC 2317 classless in-addr.arpa delegation
126
+ absolute_reverse_zone_name = IP.new(domain['net.ipv4.cidr']).to_arpa
132
127
 
133
- reverse_zone = DNS::Zone.new
128
+ prefix_octets, _ = domain['net.ipv4.prefixlen'].to_i.divmod(8)
129
+ zone_file_name = absolute_reverse_zone_name.split('.')[-(2 + prefix_octets) .. 5].join('.')
130
+ reverse_zone.origin = zone_file_name + '.'
134
131
 
135
- ip_net = IP.new(domain['net.ipv4.cidr'])
136
- absolute_reverse_zone_name = ip_net.to_arpa
132
+ reverse_zone.ttl = domain['net.dns.ttl']
137
133
 
138
- prefix_octets, _ = domain['net.ipv4.prefixlen'].to_i.divmod(8)
139
- reverse_zone.origin = absolute_reverse_zone_name.split('.')[-(2 + prefix_octets) .. 5].join('.')
134
+ reverse_zone.soa.serial = @serial
135
+ reverse_zone.soa.label = reverse_zone.origin
136
+ reverse_zone.soa.nameserver = domain['net.dns.soa-ns']
137
+ reverse_zone.soa.email = "#{domain['net.dns.soa-contact']}.".sub('@', '.')
140
138
 
141
- reverse_zone.ttl = domain['net.dns.ttl']
139
+ domain['net.dns.ns'].each do |address|
140
+ ns = DNS::Zone::RR::NS.new
141
+ ns.label = reverse_zone.origin
142
+ ns.nameserver = address
143
+ reverse_zone.records << ns
144
+ end
142
145
 
143
- reverse_zone.soa.serial = serial
144
- reverse_zone.soa.label = "#{reverse_zone.origin}."
145
- reverse_zone.soa.nameserver = domain['net.dns.soa-ns']
146
- reverse_zone.soa.email = "#{domain['net.dns.soa-contact']}.".sub('@', '.')
146
+ domain.children(kind:'ipv4_interface') do |interface|
147
+ ptr = DNS::Zone::RR::PTR.new
148
+ ptr.label = IP.new(interface['net.ipv4.address']).to_arpa
149
+ ptr.name = "#{interface['net.dns.fqdn']}."
150
+ reverse_zone.records << ptr
151
+ end
147
152
 
148
- domain['net.dns.ns'].each do |address|
149
- ns = DNS::Zone::RR::NS.new
150
- ns.label = "#{reverse_zone.origin}."
151
- ns.nameserver = address
152
- reverse_zone.records << ns
153
- end
153
+ @reverse_zones[zone_file_name] = reverse_zone
154
+ end
154
155
 
155
- domain.children(kind:'ipv4_interface') do |interface|
156
- ptr = DNS::Zone::RR::PTR.new
157
- ptr.label = IP.new(interface['net.ipv4.address']).to_arpa
158
- ptr.name = "#{interface['net.dns.fqdn']}."
159
- reverse_zone.records << ptr
160
- end
161
156
 
162
- config_file :zone_dir, "#{reverse_zone.origin}.zone" do |zonefile|
163
- zonefile << git_header('palletjack2knot', comment_char: ';')
164
- zonefile << reverse_zone.dump_pretty
157
+ def process
158
+ config_dir :zone_dir
159
+
160
+ # Temporary storage in hashes of "domain name" => DNS::Zone object
161
+ @forward_zones = {}
162
+ @reverse_zones = {}
163
+
164
+ # Use Unix timestamp as serial number, and get it once so all zones get
165
+ # the same one
166
+ @serial = Time.now.utc.to_i
167
+
168
+ jack.each(kind:'domain') do |domain|
169
+ process_forward_zone(domain)
170
+ process_reverse_zone(domain)
171
+ end
172
+ end
173
+
174
+
175
+ def output
176
+ config_file :output, 'zones.conf' do |conf_file|
177
+ conf_file << git_header('palletjack2knot')
178
+
179
+ @forward_zones.each do |domain, zone|
180
+ config_file :zone_dir, "#{domain}.zone" do |zonefile|
181
+ zonefile << git_header('palletjack2knot', comment_char: ';')
182
+ zonefile << zone.dump_pretty
183
+ conf_file << zone_config(domain)
184
+ end
165
185
  end
166
186
 
167
- conf_file << zone_config(reverse_zone.origin)
187
+ @reverse_zones.each do |domain, zone|
188
+ config_file :zone_dir, "#{domain}.zone" do |zonefile|
189
+ zonefile << git_header('palletjack2knot', comment_char: ';')
190
+ zonefile << zone.dump_pretty
191
+ conf_file << zone_config(domain)
192
+ end
193
+ end
168
194
  end
169
195
  end
170
196
  end
197
+
198
+ if PalletJack2Knot.standalone?(__FILE__)
199
+ PalletJack2Knot.run
200
+ end
@@ -142,15 +142,14 @@ LABEL MainMenu
142
142
  "
143
143
  end
144
144
  end
145
- end
146
145
 
147
- PalletJack2PXELinux.run do
148
- config_dir :output, 'config'
149
- config_dir :output, 'pxelinux.cfg'
146
+ def output
147
+ config_dir :output, 'config'
148
+ config_dir :output, 'pxelinux.cfg'
150
149
 
151
- config_file :output, 'config', 'linux.menu' do |menufile|
152
- menufile << git_header('palletjack2pxelinux')
153
- menufile << "
150
+ config_file :output, 'config', 'linux.menu' do |menufile|
151
+ menufile << git_header('palletjack2pxelinux')
152
+ menufile << "
154
153
  UI menu.c32
155
154
  PROMPT 0
156
155
  MENU INCLUDE /config/graphics.conf
@@ -158,34 +157,39 @@ MENU INCLUDE /config/graphics.conf
158
157
  MENU TITLE Linux Installation Menu
159
158
  "
160
159
 
161
- jack.each(kind:'os') do |os|
162
- next unless config=os['host.pxelinux.config']
160
+ jack.each(kind:'os') do |os|
161
+ next unless config=os['host.pxelinux.config']
163
162
 
164
- label=config.gsub(/-/, ' ')
163
+ label=config.gsub(/-/, ' ')
165
164
 
166
- pxemenu_for_operating_system(os)
165
+ pxemenu_for_operating_system(os)
167
166
 
168
- menufile << "
167
+ menufile << "
169
168
  LABEL #{config}
170
169
  MENU LABEL Install #{label}
171
170
  KERNEL menu.c32
172
171
  APPEND /config/#{config}.menu
173
172
  "
173
+ end
174
174
  end
175
- end
176
175
 
177
- # Generate pxe default menu links for each system
176
+ # Generate pxe default menu links for each system
178
177
 
179
- jack.each(kind:'system') do |system|
180
- system.children(kind:'ipv4_interface') do |nic|
181
- if system['host.pxelinux.config']
182
- menuname = "#{system['host.pxelinux.config']}.menu"
183
- linkname = "01-#{nic['net.layer2.address'].gsub(':', '-').downcase}"
178
+ jack.each(kind:'system') do |system|
179
+ system.children(kind:'ipv4_interface') do |nic|
180
+ if system['host.pxelinux.config']
181
+ menuname = "#{system['host.pxelinux.config']}.menu"
182
+ linkname = "01-#{nic['net.layer2.address'].gsub(':', '-').downcase}"
184
183
 
185
- FileUtils.ln_s(config_path('..', 'config', menuname),
186
- config_path(:output, 'pxelinux.cfg', linkname),
187
- :force => true)
184
+ FileUtils.ln_s(config_path('..', 'config', menuname),
185
+ config_path(:output, 'pxelinux.cfg', linkname),
186
+ :force => true)
187
+ end
188
188
  end
189
189
  end
190
190
  end
191
191
  end
192
+
193
+ if PalletJack2PXELinux.standalone?(__FILE__)
194
+ PalletJack2PXELinux.run
195
+ end
@@ -66,7 +66,9 @@ stub-zone:
66
66
  def initialize(service_name)
67
67
  @tool = PalletJack2Unbound.instance
68
68
  @service_name = service_name
69
- @service_config = @tool.jack.fetch(kind:'service', name: @service_name)
69
+ @service_config = @tool.jack.fetch(kind:'service',
70
+ parent_name: 'dns-resolver',
71
+ name: @service_name)
70
72
  end
71
73
 
72
74
  # Generate unbound service configuration
metadata CHANGED
@@ -1,14 +1,37 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: palletjack-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Karl-Johan Karlsson
8
8
  autorequire:
9
9
  bindir: exe
10
- cert_chain: []
11
- date: 2016-11-10 00:00:00.000000000 Z
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDljCCAn6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBIMRYwFAYDVQQDDA1jYWxs
14
+ ZS5lbmdsdW5kMRkwFwYKCZImiZPyLGQBGRYJc2FhYmdyb3VwMRMwEQYKCZImiZPy
15
+ LGQBGRYDY29tMB4XDTE2MTEwMjA5MjYyN1oXDTE3MTEwMjA5MjYyN1owSDEWMBQG
16
+ A1UEAwwNY2FsbGUuZW5nbHVuZDEZMBcGCgmSJomT8ixkARkWCXNhYWJncm91cDET
17
+ MBEGCgmSJomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
18
+ ggEBAM7OxaztzD0LyOwK1mPcg3BhioX1EDVbD/qAFOAzBSGGlAhtmHMqAkyvJMvs
19
+ iiG7xvBidWUapxiEiBwamXiOTSrp2eW+XSXW9omdWHXjBZcwHqwb1VmAlYRDkSHf
20
+ dzcM/z4xlV+DJw/pFyMRWzqNdVBtWTbVXAFGjJSqQ6q21ACYJldV9U71AIpXo+oF
21
+ VEMf6PZS2uhB1G+FgAtnX/xmy7OM1Cy3qc/CaJbWSddpegxWJMUn2HNQxFwIe40g
22
+ WoEoiFA7qQg9DnR/5i3lW6QyfIaA5k9cv2su1VyjqKLbkFTTTjYw0P1BJmvfXjtc
23
+ rMl+3HCWYj6UunZwfZi2wDGsBkkCAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsGA1Ud
24
+ DwQEAwIEsDAdBgNVHQ4EFgQUwHCMEKgrIMaiTkTVLKZn6yOD1SIwJgYDVR0RBB8w
25
+ HYEbY2FsbGUuZW5nbHVuZEBzYWFiZ3JvdXAuY29tMCYGA1UdEgQfMB2BG2NhbGxl
26
+ LmVuZ2x1bmRAc2FhYmdyb3VwLmNvbTANBgkqhkiG9w0BAQUFAAOCAQEAP9OnE0jP
27
+ 2vRHI/vnOkgCvLFNoOqK/YB4yDVVW69Pza+xIXcmUBvl7DQ+bBdF5AK0B1A7U0rp
28
+ Pbdj0bpQtWxmUmMIbnE1w6iuVCXAabsyUfHY4mlztToWXMVOXc1SPlJ/S2XXaRd5
29
+ fiNj/nBTb0YTQA0E4pZ0Aud80qZ2WLdc6FfzHUEMW91BL3bhLeDL40noHK5Lvk52
30
+ phzVHIrDjCowUMTnGiPZCXEo4KZW76KwYYV6oQ6LzcrYBw5mJ4XpdgQKZgnTnRBP
31
+ f8wtQllq82VF0AXUYeLtTh1f+DW3WW5BO1e2OCu5eOV7dbyaVPaNK/+rHjCN8kM/
32
+ DGZSwUoNADmVkQ==
33
+ -----END CERTIFICATE-----
34
+ date: 2016-11-11 00:00:00.000000000 Z
12
35
  dependencies:
13
36
  - !ruby/object:Gem::Dependency
14
37
  name: palletjack
@@ -16,14 +39,14 @@ dependencies:
16
39
  requirements:
17
40
  - - '='
18
41
  - !ruby/object:Gem::Version
19
- version: 0.1.3
42
+ version: 0.2.0
20
43
  type: :runtime
21
44
  prerelease: false
22
45
  version_requirements: !ruby/object:Gem::Requirement
23
46
  requirements:
24
47
  - - '='
25
48
  - !ruby/object:Gem::Version
26
- version: 0.1.3
49
+ version: 0.2.0
27
50
  - !ruby/object:Gem::Dependency
28
51
  name: dns-zone
29
52
  requirement: !ruby/object:Gem::Requirement
@@ -170,7 +193,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
170
193
  version: '0'
171
194
  requirements: []
172
195
  rubyforge_project:
173
- rubygems_version: 2.4.8
196
+ rubygems_version: 2.0.14
174
197
  signing_key:
175
198
  specification_version: 4
176
199
  summary: Tools for the Pallet Jack Lightweight Configuration Management Database
metadata.gz.sig ADDED
Binary file