palletjack-tools 0.1.3 → 0.2.0

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.
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