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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/exe/create_domain +25 -23
- data/exe/create_ipv4_interface +17 -14
- data/exe/create_system +18 -14
- data/exe/dump_pallet +23 -9
- data/exe/palletjack2knot +126 -96
- data/exe/palletjack2pxelinux +26 -22
- data/exe/palletjack2unbound +3 -1
- metadata +29 -6
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2437860b1eb4b4f167a5dff5af46472a057aa9b5
|
4
|
+
data.tar.gz: 2be532d8a2c4560506a9bb39a8ad8fa79d8a1126
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
33
|
-
|
34
|
-
|
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
|
-
|
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
|
data/exe/create_ipv4_interface
CHANGED
@@ -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
|
-
|
33
|
+
def output
|
34
|
+
# Create Physical NIC object
|
35
35
|
|
36
|
-
|
36
|
+
pallet_dir 'phy_nic', :mac
|
37
|
+
pallet_box 'phy_nic', :mac, 'identity' do
|
38
|
+
{ net:{ layer2:{ name:'' } } }
|
39
|
+
end
|
37
40
|
|
38
|
-
|
39
|
-
pallet_box 'phy_nic', :mac, 'identity' do
|
40
|
-
{ net:{ layer2:{ name:'' } } }
|
41
|
-
end
|
41
|
+
# Create IPv4 Interface object
|
42
42
|
|
43
|
-
|
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
|
-
|
46
|
-
|
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
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
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
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
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
|
-
|
43
|
-
|
41
|
+
# Generate and store forward zone data for a Pallet Jack domain
|
42
|
+
# object.
|
44
43
|
|
45
|
-
|
46
|
-
|
47
|
-
serial = Time.now.utc.to_i
|
44
|
+
def process_forward_zone(domain)
|
45
|
+
absolute_domain_name = "#{domain['net.dns.domain']}."
|
48
46
|
|
49
|
-
|
50
|
-
conf_file << git_header('palletjack2knot')
|
47
|
+
zone = DNS::Zone.new
|
51
48
|
|
52
|
-
|
53
|
-
|
49
|
+
zone.origin = absolute_domain_name
|
50
|
+
zone.ttl = domain['net.dns.ttl']
|
54
51
|
|
55
|
-
|
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
|
-
|
58
|
-
|
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
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
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
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
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
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
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
|
83
|
-
|
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 =
|
86
|
-
cname.domainname =
|
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
|
-
|
92
|
-
|
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
|
-
|
122
|
-
|
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
|
-
|
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
|
-
|
124
|
+
reverse_zone = DNS::Zone.new
|
129
125
|
|
130
|
-
|
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
|
-
|
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
|
-
|
136
|
-
absolute_reverse_zone_name = ip_net.to_arpa
|
132
|
+
reverse_zone.ttl = domain['net.dns.ttl']
|
137
133
|
|
138
|
-
|
139
|
-
|
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
|
-
|
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
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
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
|
-
|
149
|
-
|
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
|
-
|
163
|
-
|
164
|
-
|
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
|
-
|
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
|
data/exe/palletjack2pxelinux
CHANGED
@@ -142,15 +142,14 @@ LABEL MainMenu
|
|
142
142
|
"
|
143
143
|
end
|
144
144
|
end
|
145
|
-
end
|
146
145
|
|
147
|
-
|
148
|
-
|
149
|
-
|
146
|
+
def output
|
147
|
+
config_dir :output, 'config'
|
148
|
+
config_dir :output, 'pxelinux.cfg'
|
150
149
|
|
151
|
-
|
152
|
-
|
153
|
-
|
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
|
-
|
162
|
-
|
160
|
+
jack.each(kind:'os') do |os|
|
161
|
+
next unless config=os['host.pxelinux.config']
|
163
162
|
|
164
|
-
|
163
|
+
label=config.gsub(/-/, ' ')
|
165
164
|
|
166
|
-
|
165
|
+
pxemenu_for_operating_system(os)
|
167
166
|
|
168
|
-
|
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
|
-
|
176
|
+
# Generate pxe default menu links for each system
|
178
177
|
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
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
|
-
|
186
|
-
|
187
|
-
|
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
|
data/exe/palletjack2unbound
CHANGED
@@ -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',
|
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.
|
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
|
-
|
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.
|
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.
|
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.
|
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
|