beaker-hostgenerator 0.7.4 → 0.8.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 +8 -8
- data/CHANGELOG.md +4 -1
- data/HISTORY.md +40 -2
- data/README.md +2 -1
- data/lib/beaker-hostgenerator/generator.rb +3 -2
- data/lib/beaker-hostgenerator/parser.rb +10 -10
- data/lib/beaker-hostgenerator/version.rb +1 -1
- data/spec/beaker-hostgenerator/parser_spec.rb +6 -7
- data/test/fixtures/per-host-settings/with-global-settings.yaml +2 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YmEzODIwYWViMGE3YWQyNWZkNWRmZjNlMzdmMTA4MTVhZTVkNzY3Zg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZjNjY2JmOTU1ZDY4M2U2ZDE2MTE4OTlhNzIyMGI0ZWM3ZmJhNGJhZg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NTAxOGZiM2ZjOGYwYTNjOGVlMzcxYWUyODliOTNlMTg1ZDU3ZTAwMWFlNTk1
|
10
|
+
NTg1YjhhYzY5MWNmYjdhODZjMTlmOTczYzU2ODk1NTNkODhjNjdhMzhhYmY0
|
11
|
+
ZmQ1YzI4MDA2MGEyNzAxOGQ1MTU1MjAzNzdhNGM2MDYxMmQ5NGE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NmU0ZDk4YmE1OTBkMTYyZmEzZGFhOTI2ZDcyYzVkMmJkYThmZTNlZDE5MGNh
|
14
|
+
OWJhOWM1YmE3YTgwNjNiODY4OGUyYzIwNDY0YjU5Yzg0YWVlZWMzYjg3Nzg0
|
15
|
+
OWY4N2Q1MDAwOGYwYjcyOWVmNTg0MmNiYzFkMWRjOTJmZmNhNTY=
|
data/CHANGELOG.md
CHANGED
@@ -5,7 +5,10 @@ This project makes a strong effort to adhere to [Semantic
|
|
5
5
|
Versioning](http://semver.org).
|
6
6
|
|
7
7
|
## [Unreleased][unreleased]
|
8
|
-
|
8
|
+
|
9
|
+
## [0.8.0] - 2016-10-4
|
10
|
+
- Improved whitespace support in global and host settings. Spaces are no longer
|
11
|
+
removed, so input must be quoted, escaped, or URL-encoded appropriately.
|
9
12
|
|
10
13
|
## [0.7.4] - 2016-9-26
|
11
14
|
- Add platforms:
|
data/HISTORY.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# default - History
|
2
2
|
## Tags
|
3
|
-
* [LATEST -
|
3
|
+
* [LATEST - 4 Oct, 2016 (291854ec)](#LATEST)
|
4
|
+
* [0.7.4 - 26 Sep, 2016 (1e102ccd)](#0.7.4)
|
4
5
|
* [0.7.3 - 11 Aug, 2016 (87c75523)](#0.7.3)
|
5
6
|
* [0.7.2 - 13 Jul, 2016 (cee53bcc)](#0.7.2)
|
6
7
|
* [0.7.1 - 29 Jun, 2016 (be332325)](#0.7.1)
|
@@ -17,7 +18,44 @@
|
|
17
18
|
* [0.0.1 - 7 Oct, 2015 (d99251e6)](#0.0.1)
|
18
19
|
|
19
20
|
## Details
|
20
|
-
### <a name = "LATEST">LATEST -
|
21
|
+
### <a name = "LATEST">LATEST - 4 Oct, 2016 (291854ec)
|
22
|
+
|
23
|
+
* (GEM) update beaker-hostgenerator version to 0.8.0 (291854ec)
|
24
|
+
|
25
|
+
* Merge pull request #58 from puppetlabs/maint (82d9fc2a)
|
26
|
+
|
27
|
+
|
28
|
+
```
|
29
|
+
Merge pull request #58 from puppetlabs/maint
|
30
|
+
|
31
|
+
(MAINT) Prepare for 0.8.0 release
|
32
|
+
```
|
33
|
+
* (MAINT) Prepare for 0.8.0 release (a6346c24)
|
34
|
+
|
35
|
+
* Merge pull request #57 from puppetlabs/bk934/support-whitespace (93abe32c)
|
36
|
+
|
37
|
+
|
38
|
+
```
|
39
|
+
Merge pull request #57 from puppetlabs/bk934/support-whitespace
|
40
|
+
|
41
|
+
(BKR-934) Allow for whitespace in settings
|
42
|
+
```
|
43
|
+
* (BKR-934) Allow for whitespace in settings (487f3f65)
|
44
|
+
|
45
|
+
|
46
|
+
```
|
47
|
+
(BKR-934) Allow for whitespace in settings
|
48
|
+
|
49
|
+
Previously all whitespace was automatically removed from all input. This
|
50
|
+
commit removes that behavior, allowing for values with whitespace in
|
51
|
+
them to be properly generated.
|
52
|
+
|
53
|
+
This change means users are responsible for properly quoting, escaping,
|
54
|
+
or URL-encoding the whitespace as necessary.
|
55
|
+
```
|
56
|
+
### <a name = "0.7.4">0.7.4 - 26 Sep, 2016 (1e102ccd)
|
57
|
+
|
58
|
+
* (HISTORY) update beaker-hostgenerator history for gem release 0.7.4 (1e102ccd)
|
21
59
|
|
22
60
|
* (GEM) update beaker-hostgenerator version to 0.7.4 (09c62ae1)
|
23
61
|
|
data/README.md
CHANGED
@@ -227,11 +227,12 @@ It may be necessary to URL-encode the input in order for it to properly be used
|
|
227
227
|
in certain contexts, such as Jenkins.
|
228
228
|
|
229
229
|
In most cases it will only be necessary to escape the characters that support
|
230
|
-
arbitrary settings, which means the following
|
230
|
+
arbitrary settings, which means the following four characters:
|
231
231
|
|
232
232
|
- `{` is `%7B`
|
233
233
|
- `,` is `%2C`
|
234
234
|
- `}` is `%7D`
|
235
|
+
- ` ` is `%20`
|
235
236
|
|
236
237
|
For a full URL encoding reference see: http://www.w3schools.com/tags/ref_urlencode.asp
|
237
238
|
|
@@ -20,7 +20,7 @@ module BeakerHostGenerator
|
|
20
20
|
# @returns [Hash] A complete Ruby map as defining the HOSTS and CONFIG
|
21
21
|
# sections as required by Beaker.
|
22
22
|
def generate(layout, options)
|
23
|
-
layout =
|
23
|
+
layout = prepare(layout)
|
24
24
|
tokens = tokenize_layout(layout)
|
25
25
|
config = {}.deep_merge(BASE_CONFIG)
|
26
26
|
nodeid = Hash.new(1)
|
@@ -29,7 +29,8 @@ module BeakerHostGenerator
|
|
29
29
|
|
30
30
|
# Merge in global configuration settings
|
31
31
|
if options[:global_config]
|
32
|
-
|
32
|
+
decoded = prepare(options[:global_config])
|
33
|
+
global_config = settings_string_to_map(decoded)
|
33
34
|
config['CONFIG'].deep_merge!(global_config)
|
34
35
|
end
|
35
36
|
|
@@ -11,9 +11,9 @@ module BeakerHostGenerator
|
|
11
11
|
# further by other functions in this module.
|
12
12
|
#
|
13
13
|
# For example, given the raw user input string that defines the host layout,
|
14
|
-
# you would first prepare it for tokenization via `
|
15
|
-
#
|
16
|
-
#
|
14
|
+
# you would first prepare it for tokenization via `prepare`, then split it
|
15
|
+
# into tokens via `tokenize_layout`, and then for each token you would call
|
16
|
+
# `is_ostype_token?` and/or `parse_node_info_token`.
|
17
17
|
module Parser
|
18
18
|
|
19
19
|
# Parses a single node definition into the following components:
|
@@ -69,13 +69,13 @@ module BeakerHostGenerator
|
|
69
69
|
|
70
70
|
# Prepares the host input string for tokenization, such as URL-decoding.
|
71
71
|
#
|
72
|
-
# @param
|
73
|
-
#
|
74
|
-
#
|
72
|
+
# @param spec [String] Raw user input; well-formatted string specification
|
73
|
+
# of the hosts to generate.
|
74
|
+
# For example `"aix53-POWERfa%7Bhypervisor=aix%7D"`.
|
75
75
|
# @returns [String] Input string with transformations necessary for
|
76
76
|
# tokenization.
|
77
|
-
def
|
78
|
-
URI.decode(
|
77
|
+
def prepare(spec)
|
78
|
+
URI.decode(spec)
|
79
79
|
end
|
80
80
|
|
81
81
|
# Breaks apart the host input string into chunks suitable for processing
|
@@ -198,7 +198,8 @@ module BeakerHostGenerator
|
|
198
198
|
# configuration.
|
199
199
|
#
|
200
200
|
# The string is expected to be of the form "{key1=value1,key2=value2,...}".
|
201
|
-
#
|
201
|
+
# Whitespace is expected to be properly quoted as it will not be treated
|
202
|
+
# any different than non-whitespace characters.
|
202
203
|
#
|
203
204
|
# Throws an exception of the string is malformed in any way.
|
204
205
|
#
|
@@ -211,7 +212,6 @@ module BeakerHostGenerator
|
|
211
212
|
settings_pairs =
|
212
213
|
host_settings.
|
213
214
|
delete('{}').
|
214
|
-
gsub(' ', '').
|
215
215
|
split(',').
|
216
216
|
map { |keyvalue| keyvalue.split('=') }
|
217
217
|
|
@@ -4,9 +4,9 @@ module BeakerHostGenerator
|
|
4
4
|
describe Parser do
|
5
5
|
include BeakerHostGenerator::Parser
|
6
6
|
|
7
|
-
describe '
|
7
|
+
describe 'prepare' do
|
8
8
|
it 'Supports URL-encoded input' do
|
9
|
-
expect(
|
9
|
+
expect( prepare('centos6-64m%7Bfoo=bar-baz,this=that%7D-32a') ).
|
10
10
|
to eq('centos6-64m{foo=bar-baz,this=that}-32a')
|
11
11
|
end
|
12
12
|
end
|
@@ -113,17 +113,16 @@ module BeakerHostGenerator
|
|
113
113
|
end
|
114
114
|
|
115
115
|
context 'When using arbitrary host settings' do
|
116
|
-
it 'Supports arbitrary whitespace' do
|
117
|
-
expect( parse_node_info_token("64{
|
116
|
+
it 'Supports arbitrary whitespace in values' do
|
117
|
+
expect( parse_node_info_token("64{k1=value 1,k2=v2,k3= v3 }") ).
|
118
118
|
to eq({
|
119
119
|
"roles" => "",
|
120
120
|
"arbitrary_roles" => [],
|
121
121
|
"bits" => "64",
|
122
122
|
"host_settings" => {
|
123
|
-
"k1" => "
|
123
|
+
"k1" => "value 1",
|
124
124
|
"k2" => "v2",
|
125
|
-
"k3" => "v3"
|
126
|
-
"k4" => "v4"
|
125
|
+
"k3" => " v3 "
|
127
126
|
}
|
128
127
|
})
|
129
128
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
---
|
2
|
-
arguments_string: "--global-config {masterless=true,number=1234} redhat7-64c{type=o-negative}"
|
2
|
+
arguments_string: "--global-config {masterless=true,number=1234,key=url%20encoded%20%20white%20space} redhat7-64c{type=o-negative}"
|
3
3
|
environment_variables: {}
|
4
4
|
expected_hash:
|
5
5
|
HOSTS:
|
@@ -20,5 +20,6 @@ expected_hash:
|
|
20
20
|
consoleport: 443
|
21
21
|
masterless: true
|
22
22
|
number: 1234
|
23
|
+
key: url encoded white space
|
23
24
|
pooling_api: http://vmpooler.delivery.puppetlabs.net/
|
24
25
|
expected_exception:
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beaker-hostgenerator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Branan Purvine-Riley
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-
|
13
|
+
date: 2016-10-04 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rspec
|