puppet 6.22.1-universal-darwin → 6.23.0-universal-darwin
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile.lock +14 -14
- data/ext/osx/puppet.plist +2 -0
- data/lib/puppet/application/agent.rb +12 -5
- data/lib/puppet/application/apply.rb +2 -1
- data/lib/puppet/application/device.rb +2 -1
- data/lib/puppet/application/resource.rb +2 -1
- data/lib/puppet/application/script.rb +2 -1
- data/lib/puppet/configurer/downloader.rb +2 -1
- data/lib/puppet/defaults.rb +5 -3
- data/lib/puppet/file_serving/fileset.rb +14 -2
- data/lib/puppet/functions/all.rb +1 -1
- data/lib/puppet/functions/camelcase.rb +1 -1
- data/lib/puppet/functions/capitalize.rb +2 -2
- data/lib/puppet/functions/downcase.rb +2 -2
- data/lib/puppet/functions/get.rb +5 -5
- data/lib/puppet/functions/group_by.rb +13 -5
- data/lib/puppet/functions/lest.rb +1 -1
- data/lib/puppet/functions/new.rb +100 -100
- data/lib/puppet/functions/partition.rb +4 -4
- data/lib/puppet/functions/require.rb +5 -5
- data/lib/puppet/functions/sort.rb +3 -3
- data/lib/puppet/functions/tree_each.rb +7 -9
- data/lib/puppet/functions/type.rb +4 -4
- data/lib/puppet/functions/upcase.rb +2 -2
- data/lib/puppet/http/resolver/server_list.rb +15 -4
- data/lib/puppet/http/service/compiler.rb +69 -0
- data/lib/puppet/http/service/file_server.rb +2 -1
- data/lib/puppet/indirector/catalog/compiler.rb +1 -0
- data/lib/puppet/indirector/file_metadata/rest.rb +1 -0
- data/lib/puppet/parser/functions/fqdn_rand.rb +14 -6
- data/lib/puppet/pops/types/p_sem_ver_type.rb +8 -2
- data/lib/puppet/pops/types/p_sensitive_type.rb +10 -0
- data/lib/puppet/provider/package/nim.rb +11 -6
- data/lib/puppet/provider/service/systemd.rb +13 -3
- data/lib/puppet/provider/service/windows.rb +38 -0
- data/lib/puppet/provider/user/directoryservice.rb +25 -12
- data/lib/puppet/reference/configuration.rb +1 -1
- data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
- data/lib/puppet/type/file/selcontext.rb +1 -1
- data/lib/puppet/type/file.rb +19 -1
- data/lib/puppet/type/service.rb +18 -38
- data/lib/puppet/type/tidy.rb +21 -2
- data/lib/puppet/type/user.rb +38 -20
- data/lib/puppet/util/selinux.rb +30 -4
- data/lib/puppet/version.rb +1 -1
- data/locales/puppet.pot +109 -101
- data/man/man5/puppet.conf.5 +272 -252
- data/man/man8/puppet-agent.8 +1 -1
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +1 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-module.8 +1 -1
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/ssl/127.0.0.1-key.pem +107 -57
- data/spec/fixtures/ssl/127.0.0.1.pem +52 -31
- data/spec/fixtures/ssl/bad-basic-constraints.pem +57 -35
- data/spec/fixtures/ssl/bad-int-basic-constraints.pem +57 -35
- data/spec/fixtures/ssl/ca.pem +57 -35
- data/spec/fixtures/ssl/crl.pem +28 -18
- data/spec/fixtures/ssl/ec-key.pem +11 -11
- data/spec/fixtures/ssl/ec.pem +33 -24
- data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
- data/spec/fixtures/ssl/encrypted-key.pem +108 -58
- data/spec/fixtures/ssl/intermediate-agent-crl.pem +28 -19
- data/spec/fixtures/ssl/intermediate-agent.pem +57 -36
- data/spec/fixtures/ssl/intermediate-crl.pem +31 -21
- data/spec/fixtures/ssl/intermediate.pem +57 -36
- data/spec/fixtures/ssl/pluto-key.pem +107 -57
- data/spec/fixtures/ssl/pluto.pem +52 -30
- data/spec/fixtures/ssl/request-key.pem +107 -57
- data/spec/fixtures/ssl/request.pem +47 -26
- data/spec/fixtures/ssl/revoked-key.pem +107 -57
- data/spec/fixtures/ssl/revoked.pem +52 -30
- data/spec/fixtures/ssl/signed-key.pem +107 -57
- data/spec/fixtures/ssl/signed.pem +52 -30
- data/spec/fixtures/ssl/tampered-cert.pem +52 -30
- data/spec/fixtures/ssl/tampered-csr.pem +47 -26
- data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +107 -57
- data/spec/fixtures/ssl/unknown-127.0.0.1.pem +50 -29
- data/spec/fixtures/ssl/unknown-ca-key.pem +107 -57
- data/spec/fixtures/ssl/unknown-ca.pem +55 -33
- data/spec/integration/application/resource_spec.rb +30 -0
- data/spec/lib/puppet/test_ca.rb +2 -2
- data/spec/unit/application/agent_spec.rb +7 -2
- data/spec/unit/configurer/downloader_spec.rb +6 -0
- data/spec/unit/configurer_spec.rb +23 -0
- data/spec/unit/file_serving/fileset_spec.rb +60 -0
- data/spec/unit/gettext/config_spec.rb +12 -0
- data/spec/unit/http/service/compiler_spec.rb +123 -0
- data/spec/unit/indirector/catalog/compiler_spec.rb +14 -10
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +15 -1
- data/spec/unit/pops/types/p_sem_ver_type_spec.rb +18 -0
- data/spec/unit/pops/types/p_sensitive_type_spec.rb +18 -0
- data/spec/unit/provider/package/nim_spec.rb +42 -0
- data/spec/unit/provider/service/init_spec.rb +1 -0
- data/spec/unit/provider/service/openwrt_spec.rb +3 -1
- data/spec/unit/provider/service/systemd_spec.rb +42 -8
- data/spec/unit/provider/service/windows_spec.rb +202 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +67 -35
- data/spec/unit/ssl/state_machine_spec.rb +19 -5
- data/spec/unit/transaction/additional_resource_generator_spec.rb +0 -2
- data/spec/unit/transaction_spec.rb +18 -20
- data/spec/unit/type/file/selinux_spec.rb +3 -3
- data/spec/unit/type/service_spec.rb +59 -188
- data/spec/unit/type/tidy_spec.rb +17 -7
- data/spec/unit/type/user_spec.rb +45 -0
- data/spec/unit/util/selinux_spec.rb +87 -16
- data/tasks/generate_cert_fixtures.rake +2 -2
- metadata +4 -2
data/lib/puppet/functions/new.rb
CHANGED
@@ -51,7 +51,7 @@
|
|
51
51
|
# The following sections show the arguments and conversion rules
|
52
52
|
# per data type built into the Puppet Type System.
|
53
53
|
#
|
54
|
-
# ### Conversion to Optional[T] and NotUndef[T]
|
54
|
+
# ### Conversion to `Optional[T]` and `NotUndef[T]`
|
55
55
|
#
|
56
56
|
# Conversion to these data types is the same as a conversion to the type argument `T`.
|
57
57
|
# In the case of `Optional[T]` it is accepted that the argument to convert may be `undef`.
|
@@ -85,13 +85,13 @@
|
|
85
85
|
# * `0` as radix 8.
|
86
86
|
# * All others are decimal.
|
87
87
|
# * Conversion from `String` accepts an optional sign in the string.
|
88
|
-
# * For hexadecimal (radix 16) conversion an optional leading "0x"
|
89
|
-
# * For octal (radix 8) an optional leading "0" is accepted.
|
90
|
-
# * For binary (radix 2) an optional leading "0b" or "0B" is accepted.
|
88
|
+
# * For hexadecimal (radix 16) conversion an optional leading `"0x"`, or `"0X"` is accepted.
|
89
|
+
# * For octal (radix 8) an optional leading `"0"` is accepted.
|
90
|
+
# * For binary (radix 2) an optional leading `"0b"` or `"0B"` is accepted.
|
91
91
|
# * When `radix` is set to `default`, the conversion is based on the leading.
|
92
|
-
# characters in the string. A leading "0" for radix 8, a leading "0x"
|
93
|
-
# radix 16, and leading "0b" or "0B" for binary.
|
94
|
-
# * Conversion from `Boolean` results in 0 for `false` and 1 for `true`.
|
92
|
+
# characters in the string. A leading `"0"` for radix 8, a leading `"0x"`, or `"0X"` for
|
93
|
+
# radix 16, and leading `"0b"` or `"0B"` for binary.
|
94
|
+
# * Conversion from `Boolean` results in `0` for `false` and `1` for `true`.
|
95
95
|
# * Conversion from `Integer`, `Float`, and `Boolean` ignores the radix.
|
96
96
|
# * `Float` value fractions are truncated (no rounding).
|
97
97
|
# * When `abs` is set to `true`, the result will be an absolute integer.
|
@@ -119,9 +119,9 @@
|
|
119
119
|
# ```
|
120
120
|
#
|
121
121
|
# * For an integer, the floating point fraction of `.0` is added to the value.
|
122
|
-
# * A `Boolean` `true` is converted to 1.0
|
122
|
+
# * A `Boolean` `true` is converted to `1.0`, and a `false` to `0.0`.
|
123
123
|
# * In `String` format, integer prefixes for hex and binary are understood (but not octal since
|
124
|
-
# floating point in string format may start with a '0').
|
124
|
+
# floating point in string format may start with a `'0'`).
|
125
125
|
# * When `abs` is set to `true`, the result will be an absolute floating point value.
|
126
126
|
#
|
127
127
|
# ### Conversion to Numeric
|
@@ -139,7 +139,7 @@
|
|
139
139
|
# * If the value has a decimal period, or if given in scientific notation
|
140
140
|
# (e/E), the result is a `Float`, otherwise the value is an `Integer`. The
|
141
141
|
# conversion from `String` always uses a radix based on the prefix of the string.
|
142
|
-
# * Conversion from `Boolean` results in 0 for `false` and 1 for `true`.
|
142
|
+
# * Conversion from `Boolean` results in `0` for `false` and `1` for `true`.
|
143
143
|
# * When `abs` is set to `true`, the result will be an absolute `Float`or `Integer` value.
|
144
144
|
#
|
145
145
|
# @example Converting to Numeric in different ways
|
@@ -225,7 +225,7 @@
|
|
225
225
|
# )
|
226
226
|
# ```
|
227
227
|
#
|
228
|
-
# The directive consists of a percent (
|
228
|
+
# The directive consists of a percent (`%`) character, zero or more flags, optional minimum field width and
|
229
229
|
# a conversion specifier as follows:
|
230
230
|
# ```
|
231
231
|
# %[Flags][Width]Conversion
|
@@ -291,7 +291,7 @@
|
|
291
291
|
# argument is omitted, an array of default formats will be used.
|
292
292
|
#
|
293
293
|
# A third optional timezone argument can be provided. The first argument will then be parsed as if it represents a local time in that
|
294
|
-
# timezone. The timezone can be any timezone that is recognized when using the '%z' or '%Z' formats, or the word 'current'
|
294
|
+
# timezone. The timezone can be any timezone that is recognized when using the `'%z'` or `'%Z'` formats, or the word `'current'`, in which
|
295
295
|
# case the current timezone of the evaluating process will be used. The timezone argument is case insensitive.
|
296
296
|
#
|
297
297
|
# The default timezone, when no argument is provided, or when using the keyword `default`, is 'UTC'.
|
@@ -336,7 +336,7 @@
|
|
336
336
|
# | 0 | Use zeros for padding
|
337
337
|
# | # | Change names to upper-case or change case of am/pm
|
338
338
|
# | ^ | Use uppercase
|
339
|
-
# | : | Use colons for
|
339
|
+
# | : | Use colons for `%z`
|
340
340
|
#
|
341
341
|
# ##### Format directives (names and padding can be altered using flags):
|
342
342
|
#
|
@@ -345,48 +345,48 @@
|
|
345
345
|
# | Format | Meaning |
|
346
346
|
# | ------ | ------- |
|
347
347
|
# | Y | Year with century, zero-padded to at least 4 digits |
|
348
|
-
# | C | year / 100 (rounded down such as 20 in 2009) |
|
349
|
-
# | y | year % 100 (00..99) |
|
350
|
-
# | m | Month of the year, zero-padded (01..12) |
|
351
|
-
# | B | The full month name ("January") |
|
352
|
-
# | b | The abbreviated month name ("Jan") |
|
353
|
-
# | h | Equivalent to
|
354
|
-
# | d | Day of the month, zero-padded (01..31) |
|
355
|
-
# | e | Day of the month, blank-padded (
|
356
|
-
# | j | Day of the year (001..366) |
|
348
|
+
# | C | year / 100 (rounded down such as `20` in `2009`) |
|
349
|
+
# | y | year % 100 (`00..99`) |
|
350
|
+
# | m | Month of the year, zero-padded (`01..12`) |
|
351
|
+
# | B | The full month name (`"January"`) |
|
352
|
+
# | b | The abbreviated month name (`"Jan"`) |
|
353
|
+
# | h | Equivalent to `%b` |
|
354
|
+
# | d | Day of the month, zero-padded (`01..31`) |
|
355
|
+
# | e | Day of the month, blank-padded (`1..31`) |
|
356
|
+
# | j | Day of the year (`001..366`) |
|
357
357
|
#
|
358
358
|
# **Time (Hour, Minute, Second, Subsecond):**
|
359
359
|
#
|
360
360
|
# | Format | Meaning |
|
361
361
|
# | ------ | ------- |
|
362
|
-
# | H | Hour of the day, 24-hour clock, zero-padded (00..23) |
|
363
|
-
# | k | Hour of the day, 24-hour clock, blank-padded (
|
364
|
-
# | I | Hour of the day, 12-hour clock, zero-padded (01..12) |
|
365
|
-
# | l | Hour of the day, 12-hour clock, blank-padded (
|
366
|
-
# | P | Meridian indicator, lowercase ("am" or "pm") |
|
367
|
-
# | p | Meridian indicator, uppercase ("AM" or "PM") |
|
368
|
-
# | M | Minute of the hour (00..59) |
|
369
|
-
# | S | Second of the minute (00..60) |
|
370
|
-
# | L | Millisecond of the second (000..999). Digits under millisecond are truncated to not produce 1000 |
|
362
|
+
# | H | Hour of the day, 24-hour clock, zero-padded (`00..23`) |
|
363
|
+
# | k | Hour of the day, 24-hour clock, blank-padded (`0..23`) |
|
364
|
+
# | I | Hour of the day, 12-hour clock, zero-padded (`01..12`) |
|
365
|
+
# | l | Hour of the day, 12-hour clock, blank-padded (`1..12`) |
|
366
|
+
# | P | Meridian indicator, lowercase (`"am"` or `"pm"`) |
|
367
|
+
# | p | Meridian indicator, uppercase (`"AM"` or `"PM"`) |
|
368
|
+
# | M | Minute of the hour (`00..59`) |
|
369
|
+
# | S | Second of the minute (`00..60`) |
|
370
|
+
# | L | Millisecond of the second (`000..999`). Digits under millisecond are truncated to not produce 1000 |
|
371
371
|
# | N | Fractional seconds digits, default is 9 digits (nanosecond). Digits under a specified width are truncated to avoid carry up |
|
372
372
|
#
|
373
373
|
# **Time (Hour, Minute, Second, Subsecond):**
|
374
374
|
#
|
375
375
|
# | Format | Meaning |
|
376
376
|
# | ------ | ------- |
|
377
|
-
# | z | Time zone as hour and minute offset from UTC (e.g.
|
378
|
-
# | :z | hour and minute offset from UTC with a colon (e.g.
|
379
|
-
# | ::z | hour, minute and second offset from UTC (e.g.
|
377
|
+
# | z | Time zone as hour and minute offset from UTC (e.g. `+0900`) |
|
378
|
+
# | :z | hour and minute offset from UTC with a colon (e.g. `+09:00`) |
|
379
|
+
# | ::z | hour, minute and second offset from UTC (e.g. `+09:00:00`) |
|
380
380
|
# | Z | Abbreviated time zone name or similar information. (OS dependent) |
|
381
381
|
#
|
382
382
|
# **Weekday:**
|
383
383
|
#
|
384
384
|
# | Format | Meaning |
|
385
385
|
# | ------ | ------- |
|
386
|
-
# | A | The full weekday name ("Sunday") |
|
387
|
-
# | a | The abbreviated name ("Sun") |
|
388
|
-
# | u | Day of the week (Monday is 1
|
389
|
-
# | w | Day of the week (Sunday is 0
|
386
|
+
# | A | The full weekday name (`"Sunday"`) |
|
387
|
+
# | a | The abbreviated name (`"Sun"`) |
|
388
|
+
# | u | Day of the week (Monday is `1`, `1..7`) |
|
389
|
+
# | w | Day of the week (Sunday is `0`, `0..6`) |
|
390
390
|
#
|
391
391
|
# **ISO 8601 week-based year and week number:**
|
392
392
|
#
|
@@ -397,8 +397,8 @@
|
|
397
397
|
# | Format | Meaning |
|
398
398
|
# | ------ | ------- |
|
399
399
|
# | G | The week-based year |
|
400
|
-
# | g | The last 2 digits of the week-based year (00..99) |
|
401
|
-
# | V | Week number of the week-based year (01..53) |
|
400
|
+
# | g | The last 2 digits of the week-based year (`00..99`) |
|
401
|
+
# | V | Week number of the week-based year (`01..53`) |
|
402
402
|
#
|
403
403
|
# **Week number:**
|
404
404
|
#
|
@@ -407,8 +407,8 @@
|
|
407
407
|
#
|
408
408
|
# | Format | Meaning |
|
409
409
|
# | ------ | ------- |
|
410
|
-
# | U | Week number of the year. The week starts with Sunday. (00..53) |
|
411
|
-
# | W | Week number of the year. The week starts with Monday. (00..53) |
|
410
|
+
# | U | Week number of the year. The week starts with Sunday. (`00..53`) |
|
411
|
+
# | W | Week number of the year. The week starts with Monday. (`00..53`) |
|
412
412
|
#
|
413
413
|
# **Seconds since the Epoch:**
|
414
414
|
#
|
@@ -419,23 +419,23 @@
|
|
419
419
|
#
|
420
420
|
# | Format | Meaning |
|
421
421
|
# | ------ | ------- |
|
422
|
-
# | n | Newline character (
|
423
|
-
# | t | Tab character (
|
424
|
-
# | % | Literal
|
422
|
+
# | n | Newline character (`\n`) |
|
423
|
+
# | t | Tab character (`\t`) |
|
424
|
+
# | % | Literal `%` character |
|
425
425
|
#
|
426
426
|
# **Combination:**
|
427
427
|
#
|
428
428
|
# | Format | Meaning |
|
429
429
|
# | ------ | ------- |
|
430
|
-
# | c | date and time (
|
431
|
-
# | D | Date (
|
432
|
-
# | F | The ISO 8601 date format (
|
433
|
-
# | v | VMS date (
|
434
|
-
# | x | Same as
|
435
|
-
# | X | Same as
|
436
|
-
# | r | 12-hour time (
|
437
|
-
# | R | 24-hour time (
|
438
|
-
# | T | 24-hour time (
|
430
|
+
# | c | date and time (`%a %b %e %T %Y`) |
|
431
|
+
# | D | Date (`%m/%d/%y`) |
|
432
|
+
# | F | The ISO 8601 date format (`%Y-%m-%d`) |
|
433
|
+
# | v | VMS date (`%e-%^b-%4Y`) |
|
434
|
+
# | x | Same as `%D` |
|
435
|
+
# | X | Same as `%T` |
|
436
|
+
# | r | 12-hour time (`%I:%M:%S %p`) |
|
437
|
+
# | R | 24-hour time (`%H:%M`) |
|
438
|
+
# | T | 24-hour time (`%H:%M:%S`) |
|
439
439
|
#
|
440
440
|
# The default array contains the following patterns:
|
441
441
|
#
|
@@ -489,7 +489,7 @@
|
|
489
489
|
# The mapping from data type to format is referred to as the *format map*. This map
|
490
490
|
# allows different formatting depending on type.
|
491
491
|
#
|
492
|
-
# @example Positive Integers in Hexadecimal prefixed with '0x'
|
492
|
+
# @example Positive Integers in Hexadecimal prefixed with `'0x'`, negative in Decimal
|
493
493
|
#
|
494
494
|
# ```puppet
|
495
495
|
# $format_map = {
|
@@ -578,13 +578,13 @@
|
|
578
578
|
#
|
579
579
|
# | Format | Integer Formats
|
580
580
|
# | ------ | ---------------
|
581
|
-
# | d | Decimal, negative values produces leading
|
582
|
-
# | x X | Hexadecimal in lower or upper case. Uses
|
583
|
-
# | o | Octal. Uses
|
584
|
-
# | b B | Binary with prefix
|
585
|
-
# | c | Numeric value representing a Unicode value, result is a one unicode character string, quoted if alternative flag
|
586
|
-
# | s | Same as d
|
587
|
-
# | p | Same as d
|
581
|
+
# | d | Decimal, negative values produces leading `-`.
|
582
|
+
# | x X | Hexadecimal in lower or upper case. Uses `..f/..F` for negative values unless `+` is also used. A `#` adds prefix `0x/0X`.
|
583
|
+
# | o | Octal. Uses `..0` for negative values unless `+` is also used. A `#` adds prefix `0`.
|
584
|
+
# | b B | Binary with prefix `b` or `B`. Uses `..1/..1` for negative values unless `+` is also used.
|
585
|
+
# | c | Numeric value representing a Unicode value, result is a one unicode character string, quoted if alternative flag `#` is used
|
586
|
+
# | s | Same as `d`, or `d` in quotes if alternative flag `#` is used.
|
587
|
+
# | p | Same as `d`.
|
588
588
|
# | eEfgGaA | Converts integer to float and formats using the floating point rules.
|
589
589
|
#
|
590
590
|
# Defaults to `d`.
|
@@ -594,11 +594,11 @@
|
|
594
594
|
# | Format | Float formats
|
595
595
|
# | ------ | -------------
|
596
596
|
# | f | Floating point in non exponential notation.
|
597
|
-
# | e E | Exponential notation with
|
598
|
-
# | g G | Conditional exponential with
|
599
|
-
# | a A | Hexadecimal exponential form, using
|
600
|
-
# | s | Converted to string using format p
|
601
|
-
# | p | Same as f format with minimum significant number of fractional digits, prec has no effect.
|
597
|
+
# | e E | Exponential notation with `e` or `E`.
|
598
|
+
# | g G | Conditional exponential with `e` or `E` if exponent `< -4` or `>=` the precision.
|
599
|
+
# | a A | Hexadecimal exponential form, using `x`/`X` as prefix and `p`/`P` before exponent.
|
600
|
+
# | s | Converted to string using format `p`, then applying string formatting rule, alternate form `#`` quotes result.
|
601
|
+
# | p | Same as `f` format with minimum significant number of fractional digits, prec has no effect.
|
602
602
|
# | dxXobBc | Converts float to integer and formats using the integer rules.
|
603
603
|
#
|
604
604
|
# Defaults to `p`.
|
@@ -621,12 +621,12 @@
|
|
621
621
|
#
|
622
622
|
# | Format | Boolean Formats
|
623
623
|
# | ---- | -------------------
|
624
|
-
# | t T | String 'true'/'false' or 'True'/'False'
|
625
|
-
# | y Y | String 'yes'/'no'
|
626
|
-
# | dxXobB | Numeric value 0/1 in accordance with the given format which must be valid integer format.
|
627
|
-
# | eEfgGaA | Numeric value 0.0/1.0 in accordance with the given float format and flags.
|
628
|
-
# | s | String 'true' / 'false'
|
629
|
-
# | p | String 'true' / 'false'
|
624
|
+
# | t T | String `'true'/'false'` or `'True'/'False'`, first char if alternate form is used (i.e. `'t'/'f'` or `'T'/'F'`).
|
625
|
+
# | y Y | String `'yes'/'no'`, `'Yes'/'No'`, `'y'/'n'` or `'Y'/'N'` if alternative flag `#` is used.
|
626
|
+
# | dxXobB | Numeric value `0/1` in accordance with the given format which must be valid integer format.
|
627
|
+
# | eEfgGaA | Numeric value `0.0/1.0` in accordance with the given float format and flags.
|
628
|
+
# | s | String `'true'` / `'false'`.
|
629
|
+
# | p | String `'true'` / `'false'`.
|
630
630
|
#
|
631
631
|
# **Regexp to String**
|
632
632
|
#
|
@@ -640,33 +640,33 @@
|
|
640
640
|
# | Format | Undef formats
|
641
641
|
# | ------ | -------------
|
642
642
|
# | s | Empty string, or quoted empty string if alternative flag `#` is used.
|
643
|
-
# | p | String 'undef'
|
644
|
-
# | n | String 'nil'
|
645
|
-
# | dxXobB | String 'NaN'
|
646
|
-
# | eEfgGaA | String 'NaN'
|
647
|
-
# | v | String 'n/a'
|
648
|
-
# | V | String 'N/A'
|
649
|
-
# | u | String 'undef'
|
643
|
+
# | p | String `'undef'`, or quoted `'"undef"'` if alternative flag `#` is used.
|
644
|
+
# | n | String `'nil'`, or `'null'` if alternative flag `#` is used.
|
645
|
+
# | dxXobB | String `'NaN'`.
|
646
|
+
# | eEfgGaA | String `'NaN'`.
|
647
|
+
# | v | String `'n/a'`.
|
648
|
+
# | V | String `'N/A'`.
|
649
|
+
# | u | String `'undef'`, or `'undefined'` if alternative `#` flag is used.
|
650
650
|
#
|
651
651
|
# **Default value to String**
|
652
652
|
#
|
653
653
|
# | Format | Default formats
|
654
654
|
# | ------ | ---------------
|
655
|
-
# | d D | String 'default' or 'Default'
|
656
|
-
# | s | Same as d
|
657
|
-
# | p | Same as d
|
655
|
+
# | d D | String `'default'` or `'Default'`, alternative form `#` causes value to be quoted.
|
656
|
+
# | s | Same as `d`.
|
657
|
+
# | p | Same as `d`.
|
658
658
|
#
|
659
659
|
# **Binary value to String**
|
660
660
|
#
|
661
661
|
# | Format | Default formats
|
662
662
|
# | ------ | ---------------
|
663
663
|
# | s | binary as unquoted UTF-8 characters (errors if byte sequence is invalid UTF-8). Alternate form escapes non ascii bytes.
|
664
|
-
# | p | 'Binary("<base64strict>")'
|
665
|
-
# | b | '<base64>' - base64 string with newlines inserted
|
666
|
-
# | B | '<base64strict>' - base64 strict string (without newlines inserted)
|
667
|
-
# | u | '<base64urlsafe>' - base64 urlsafe string
|
668
|
-
# | t | 'Binary' - outputs the name of the type only
|
669
|
-
# | T | 'BINARY' - output the name of the type in all caps only
|
664
|
+
# | p | `'Binary("<base64strict>")'`
|
665
|
+
# | b | `'<base64>'` - base64 string with newlines inserted
|
666
|
+
# | B | `'<base64strict>'` - base64 strict string (without newlines inserted)
|
667
|
+
# | u | `'<base64urlsafe>'` - base64 urlsafe string
|
668
|
+
# | t | `'Binary'` - outputs the name of the type only
|
669
|
+
# | T | `'BINARY'` - output the name of the type in all caps only
|
670
670
|
#
|
671
671
|
# * The alternate form flag `#` will quote the binary or base64 text output.
|
672
672
|
# * The format `%#s` allows invalid UTF-8 characters and outputs all non ascii bytes
|
@@ -678,8 +678,8 @@
|
|
678
678
|
# | Format | Array/Tuple Formats
|
679
679
|
# | ------ | -------------
|
680
680
|
# | a | Formats with `[ ]` delimiters and `,`, alternate form `#` indents nested arrays/hashes.
|
681
|
-
# | s | Same as a
|
682
|
-
# | p | Same as a
|
681
|
+
# | s | Same as `a`.
|
682
|
+
# | p | Same as `a`.
|
683
683
|
#
|
684
684
|
# See "Flags" `<[({\|` for formatting of delimiters, and "Additional parameters for containers; Array and Hash" for
|
685
685
|
# more information about options.
|
@@ -695,7 +695,7 @@
|
|
695
695
|
# | h | Formats with `{ }` delimiters, `,` element separator and ` => ` inner element separator unless overridden by flags.
|
696
696
|
# | s | Same as h.
|
697
697
|
# | p | Same as h.
|
698
|
-
# | a | Converts the hash to an array of [k,v] tuples and formats it using array rule(s).
|
698
|
+
# | a | Converts the hash to an array of `[k,v]` tuples and formats it using array rule(s).
|
699
699
|
#
|
700
700
|
# See "Flags" `<[({\|` for formatting of delimiters, and "Additional parameters for containers; Array and Hash" for
|
701
701
|
# more information about options.
|
@@ -714,18 +714,18 @@
|
|
714
714
|
# | Flag | Effect
|
715
715
|
# | ------ | ------
|
716
716
|
# | (space) | A space instead of `+` for numeric output (`-` is shown), for containers skips delimiters.
|
717
|
-
# | # | Alternate format; prefix 0x/0x
|
718
|
-
# | + | Show sign
|
717
|
+
# | # | Alternate format; prefix `0x/0x`, `0` (octal) and `0b/0B` for binary, Floats force decimal '.'. For g/G keep trailing `0`.
|
718
|
+
# | + | Show sign `+/-` depending on value's sign, changes `x`, `X`, `o`, `b`, `B` format to not use 2's complement form.
|
719
719
|
# | - | Left justify the value in the given width.
|
720
|
-
# | 0 | Pad with 0 instead of space for widths larger than value.
|
721
|
-
# | <[({\| | Defines an enclosing pair
|
720
|
+
# | 0 | Pad with `0` instead of space for widths larger than value.
|
721
|
+
# | <[({\| | Defines an enclosing pair `<> [] () {} or \| \|` when used with a container type.
|
722
722
|
#
|
723
723
|
# ### Conversion to Boolean
|
724
724
|
#
|
725
725
|
# Accepts a single value as argument:
|
726
726
|
#
|
727
|
-
# * Float 0.0 is `false`, all other float values are `true`
|
728
|
-
# * Integer 0 is `false`, all other integer values are `true`
|
727
|
+
# * Float `0.0` is `false`, all other float values are `true`
|
728
|
+
# * Integer `0` is `false`, all other integer values are `true`
|
729
729
|
# * Strings
|
730
730
|
# * `true` if 'true', 'yes', 'y' (case independent compare)
|
731
731
|
# * `false` if 'false', 'no', 'n' (case independent compare)
|
@@ -840,7 +840,7 @@
|
|
840
840
|
# function SemVer.new(SemVerHash $hash_args)
|
841
841
|
# ```
|
842
842
|
#
|
843
|
-
# @example SemVer and SemVerRange usage
|
843
|
+
# @example `SemVer` and `SemVerRange` usage
|
844
844
|
#
|
845
845
|
# ```puppet
|
846
846
|
# # As a type, SemVer can describe disjunct ranges which versions can be
|
@@ -856,7 +856,7 @@
|
|
856
856
|
# notice(SemVer('3.4.5') =~ $t) # true
|
857
857
|
# ```
|
858
858
|
#
|
859
|
-
# ### Creating a SemVerRange
|
859
|
+
# ### Creating a `SemVerRange`
|
860
860
|
#
|
861
861
|
# A `SemVerRange` object represents a range of `SemVer`. It can be created from
|
862
862
|
# a `String`, or from two `SemVer` instances, where either end can be given as
|
@@ -4,19 +4,19 @@
|
|
4
4
|
# the second containing the rest.
|
5
5
|
Puppet::Functions.create_function(:partition) do
|
6
6
|
# @param collection A collection of things to partition.
|
7
|
-
# @example Partition array of empty strings, results in e.g. [[''], [b, c]]
|
7
|
+
# @example Partition array of empty strings, results in e.g. `[[''], [b, c]]`
|
8
8
|
# ```puppet
|
9
9
|
# ['', b, c].partition |$s| { $s.empty }
|
10
10
|
# ```
|
11
|
-
# @example Partition array of strings using index, results in e.g. [['', 'ab'], ['b']]
|
11
|
+
# @example Partition array of strings using index, results in e.g. `[['', 'ab'], ['b']]`
|
12
12
|
# ```puppet
|
13
13
|
# ['', b, ab].partition |$i, $s| { $i == 2 or $s.empty }
|
14
14
|
# ```
|
15
|
-
# @example Partition hash of strings by key-value pair, results in e.g. [[['b', []]], [['a', [1, 2]]]]
|
15
|
+
# @example Partition hash of strings by key-value pair, results in e.g. `[[['b', []]], [['a', [1, 2]]]]`
|
16
16
|
# ```puppet
|
17
17
|
# { a => [1, 2], b => [] }.partition |$kv| { $kv[1].empty }
|
18
18
|
# ```
|
19
|
-
# @example Partition hash of strings by key and value, results in e.g. [[['b', []]], [['a', [1, 2]]]]
|
19
|
+
# @example Partition hash of strings by key and value, results in e.g. `[[['b', []]], [['a', [1, 2]]]]`
|
20
20
|
# ```puppet
|
21
21
|
# { a => [1, 2], b => [] }.partition |$k, $v| { $v.empty }
|
22
22
|
# ```
|
@@ -4,13 +4,13 @@
|
|
4
4
|
# The relationship metaparameters work well for specifying relationships
|
5
5
|
# between individual resources, but they can be clumsy for specifying
|
6
6
|
# relationships between classes. This function is a superset of the
|
7
|
-
#
|
7
|
+
# `include` function, adding a class relationship so that the requiring
|
8
8
|
# class depends on the required class.
|
9
9
|
#
|
10
|
-
# Warning: using require in place of include can lead to unwanted dependency cycles.
|
10
|
+
# Warning: using `require` in place of `include` can lead to unwanted dependency cycles.
|
11
11
|
#
|
12
|
-
# For instance the following manifest, with
|
13
|
-
# dependence cycle, because notify imposes a before between File[/foo] and Service[foo]
|
12
|
+
# For instance, the following manifest, with `require` instead of `include`, would produce a nasty
|
13
|
+
# dependence cycle, because `notify` imposes a `before` between `File[/foo]` and `Service[foo]`:
|
14
14
|
#
|
15
15
|
# ```puppet
|
16
16
|
# class myservice {
|
@@ -32,7 +32,7 @@
|
|
32
32
|
# resource and relationship expressions.
|
33
33
|
#
|
34
34
|
# - Since 4.0.0 Class and Resource types, absolute names
|
35
|
-
# - Since 4.7.0 Returns an Array[Type[Class]] with references to the required classes
|
35
|
+
# - Since 4.7.0 Returns an `Array[Type[Class]]` with references to the required classes
|
36
36
|
#
|
37
37
|
Puppet::Functions.create_function(:require, Puppet::Functions::InternalFunction) do
|
38
38
|
dispatch :require_impl do
|
@@ -2,9 +2,9 @@
|
|
2
2
|
# Please note: This function is based on Ruby String comparison and as such may not be entirely UTF8 compatible.
|
3
3
|
# To ensure compatibility please use this function with Ruby 2.4.0 or greater - https://bugs.ruby-lang.org/issues/10085.
|
4
4
|
#
|
5
|
-
# This function is compatible with the function sort() in stdlib
|
5
|
+
# This function is compatible with the function `sort()` in `stdlib`.
|
6
6
|
# * Comparison of characters in a string always uses a system locale and may not be what is expected for a particular locale
|
7
|
-
# * Sorting is based on Ruby's
|
7
|
+
# * Sorting is based on Ruby's `<=>` operator unless a lambda is given that performs the comparison.
|
8
8
|
# * comparison of strings is case dependent (use lambda with `compare($a,$b)` to ignore case)
|
9
9
|
# * comparison of mixed data types raises an error (if there is the need to sort mixed data types use a lambda)
|
10
10
|
#
|
@@ -49,7 +49,7 @@
|
|
49
49
|
# }
|
50
50
|
# })
|
51
51
|
# ```
|
52
|
-
# Would notice [2,3,'a','b']
|
52
|
+
# Would notice `[2,3,'a','b']`
|
53
53
|
#
|
54
54
|
# @since 6.0.0 - supporting a lambda to do compare
|
55
55
|
#
|
@@ -6,13 +6,13 @@
|
|
6
6
|
#
|
7
7
|
# 1. An `Array`, `Hash`, `Iterator`, or `Object` that the function will iterate over.
|
8
8
|
# 2. An optional hash with the options:
|
9
|
-
# * `include_containers` => `Optional[Boolean]` # default true - if containers should be given to the lambda
|
10
|
-
# * `include_values` => `Optional[Boolean]` # default true - if non containers should be given to the lambda
|
11
|
-
# * `include_root` => `Optional[Boolean]` # default true - if the root container should be given to the lambda
|
9
|
+
# * `include_containers` => `Optional[Boolean]` # default `true` - if containers should be given to the lambda
|
10
|
+
# * `include_values` => `Optional[Boolean]` # default `true` - if non containers should be given to the lambda
|
11
|
+
# * `include_root` => `Optional[Boolean]` # default `true` - if the root container should be given to the lambda
|
12
12
|
# * `container_type` => `Optional[Type[Variant[Array, Hash, Object]]]` # a type that determines what a container is - can only
|
13
13
|
# be set to a type that matches the default `Variant[Array, Hash, Object]`.
|
14
14
|
# * `order` => `Enum[depth_first, breadth_first]` # default ´depth_first`, the order in which elements are visited
|
15
|
-
# * `include_refs` => Optional[Boolean] # default `false`, if attributes in objects marked as bing of `reference` kind
|
15
|
+
# * `include_refs` => `Optional[Boolean]` # default `false`, if attributes in objects marked as bing of `reference` kind
|
16
16
|
# should be included.
|
17
17
|
# 3. An optional lambda, which the function calls for each element in the first argument. It must
|
18
18
|
# accept one or two arguments; either `$path`, and `$value`, or just `$value`.
|
@@ -46,14 +46,12 @@
|
|
46
46
|
# [1, [2, 3], 4]
|
47
47
|
# ```
|
48
48
|
#
|
49
|
-
#
|
50
|
-
#
|
51
|
-
# If containers are skipped:
|
49
|
+
# If containers are skipped, results in:
|
52
50
|
#
|
53
51
|
# * `depth_first` order `1`, `2`, `3`, `4`
|
54
52
|
# * `breadth_first` order `1`, `4`,`2`, `3`
|
55
53
|
#
|
56
|
-
# If containers and root
|
54
|
+
# If containers and root are included, results in:
|
57
55
|
#
|
58
56
|
# * `depth_first` order `[1, [2, 3], 4]`, `1`, `[2, 3]`, `2`, `3`, `4`
|
59
57
|
# * `breadth_first` order `[1, [2, 3], 4]`, `1`, `[2, 3]`, `4`, `2`, `3`
|
@@ -96,7 +94,7 @@
|
|
96
94
|
#
|
97
95
|
# Any Puppet Type system data type can be used to filter what is
|
98
96
|
# considered to be a container, but it must be a narrower type than one of
|
99
|
-
# the default Array
|
97
|
+
# the default `Array`, `Hash`, `Object` types - for example it is not possible to make a
|
100
98
|
# `String` be a container type.
|
101
99
|
#
|
102
100
|
# @example Only `Array` as container type
|
@@ -35,10 +35,10 @@
|
|
35
35
|
#
|
36
36
|
# Would notice the four values:
|
37
37
|
#
|
38
|
-
# 1.
|
39
|
-
# 2.
|
40
|
-
# 3.
|
41
|
-
# 4.
|
38
|
+
# 1. `Array[Numeric]`
|
39
|
+
# 2. `Array[Numeric, 2, 2]`
|
40
|
+
# 3. `Tuple[Float[3.14], Integer[42,42]]]`
|
41
|
+
# 4. `Tuple[Float[3.14], Integer[42,42]]]`
|
42
42
|
#
|
43
43
|
# @since 4.4.0
|
44
44
|
#
|
@@ -22,14 +22,14 @@
|
|
22
22
|
# 'hello'.upcase()
|
23
23
|
# upcase('hello')
|
24
24
|
# ```
|
25
|
-
# Would both result in "HELLO"
|
25
|
+
# Would both result in `"HELLO"`
|
26
26
|
#
|
27
27
|
# @example Converting an Array to upper case
|
28
28
|
# ```puppet
|
29
29
|
# ['a', 'b'].upcase()
|
30
30
|
# upcase(['a', 'b'])
|
31
31
|
# ```
|
32
|
-
# Would both result in ['A', 'B']
|
32
|
+
# Would both result in `['A', 'B']`
|
33
33
|
#
|
34
34
|
# @example Converting a Hash to upper case
|
35
35
|
# ```puppet
|
@@ -54,7 +54,7 @@ class Puppet::HTTP::Resolver::ServerList < Puppet::HTTP::Resolver
|
|
54
54
|
end
|
55
55
|
|
56
56
|
# Return the first simple service status endpoint we can connect to
|
57
|
-
@server_list_setting.value.
|
57
|
+
@server_list_setting.value.each_with_index do |server, index|
|
58
58
|
host = server[0]
|
59
59
|
port = server[1] || @default_port
|
60
60
|
|
@@ -64,10 +64,21 @@ class Puppet::HTTP::Resolver::ServerList < Puppet::HTTP::Resolver
|
|
64
64
|
@resolved_url = service.url
|
65
65
|
return Puppet::HTTP::Service.create_service(@client, session, name, @resolved_url.host, @resolved_url.port)
|
66
66
|
rescue Puppet::HTTP::ResponseError => detail
|
67
|
-
|
68
|
-
|
67
|
+
if index < @server_list_setting.value.length - 1
|
68
|
+
Puppet.warning(_("Puppet server %{host}:%{port} is unavailable: %{code} %{reason}") %
|
69
|
+
{ host: service.url.host, port: service.url.port, code: detail.response.code, reason: detail.response.reason } +
|
70
|
+
' ' + _("Trying with next server from server_list."))
|
71
|
+
else
|
72
|
+
Puppet.log_exception(detail, _("Puppet server %{host}:%{port} is unavailable: %{code} %{reason}") %
|
73
|
+
{ host: service.url.host, port: service.url.port, code: detail.response.code, reason: detail.response.reason })
|
74
|
+
end
|
69
75
|
rescue Puppet::HTTP::HTTPError => detail
|
70
|
-
|
76
|
+
if index < @server_list_setting.value.length - 1
|
77
|
+
Puppet.warning(_("Unable to connect to server from server_list setting: %{detail}") % {detail: detail} +
|
78
|
+
' ' + _("Trying with next server from server_list."))
|
79
|
+
else
|
80
|
+
Puppet.log_exception(detail, _("Unable to connect to server from server_list setting: %{detail}") % {detail: detail})
|
81
|
+
end
|
71
82
|
end
|
72
83
|
end
|
73
84
|
|
@@ -129,6 +129,75 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
|
|
129
129
|
[response, deserialize(response, Puppet::Resource::Catalog)]
|
130
130
|
end
|
131
131
|
|
132
|
+
#
|
133
|
+
# @api private
|
134
|
+
#
|
135
|
+
# Submit a POST request to request a catalog to the server using v4 endpoint
|
136
|
+
#
|
137
|
+
# @param [String] certname The name of the node for which to compile the catalog.
|
138
|
+
# @param [Hash] persistent A hash containing two required keys, facts and catalog,
|
139
|
+
# which when set to true will cause the facts and reports to be stored in
|
140
|
+
# PuppetDB, or discarded if set to false.
|
141
|
+
# @param [String] environment The name of the environment for which to compile the catalog.
|
142
|
+
# @param [Hash] facts A hash with a required values key, containing a hash of all the
|
143
|
+
# facts for the node. If not provided, Puppet will attempt to fetch facts for the node
|
144
|
+
# from PuppetDB.
|
145
|
+
# @param [Hash] trusted_facts A hash with a required values key containing a hash of
|
146
|
+
# the trusted facts for a node
|
147
|
+
# @param [String] transaction_uuid The id for tracking the catalog compilation and
|
148
|
+
# report submission.
|
149
|
+
# @param [String] job_id The id of the orchestrator job that triggered this run.
|
150
|
+
# @param [Hash] options A hash of options beyond direct input to catalogs. Options:
|
151
|
+
# - prefer_requested_environment Whether to always override a node's classified
|
152
|
+
# environment with the one supplied in the request. If this is true and no environment
|
153
|
+
# is supplied, fall back to the classified environment, or finally, 'production'.
|
154
|
+
# - capture_logs Whether to return the errors and warnings that occurred during
|
155
|
+
# compilation alongside the catalog in the response body.
|
156
|
+
# - log_level The logging level to use during the compile when capture_logs is true.
|
157
|
+
# Options are 'err', 'warning', 'info', and 'debug'.
|
158
|
+
#
|
159
|
+
# @return [Array<Puppet::HTTP::Response, Puppet::Resource::Catalog, Array<String>>] An array
|
160
|
+
# containing the request response, the deserialized catalog returned by
|
161
|
+
# the server and array containing logs (log array will be empty if capture_logs is false)
|
162
|
+
#
|
163
|
+
def post_catalog4(certname, persistence:, environment:, facts: nil, trusted_facts: nil, transaction_uuid: nil, job_id: nil, options: nil)
|
164
|
+
unless persistence.is_a?(Hash) && (missing = [:facts, :catalog] - persistence.keys.map(&:to_sym)).empty?
|
165
|
+
raise ArgumentError.new("The 'persistence' hash is missing the keys: #{missing.join(', ')}")
|
166
|
+
end
|
167
|
+
raise ArgumentError.new("Facts must be a Hash not a #{facts.class}") unless facts.nil? || facts.is_a?(Hash)
|
168
|
+
body = {
|
169
|
+
certname: certname,
|
170
|
+
persistence: persistence,
|
171
|
+
environment: environment,
|
172
|
+
transaction_uuid: transaction_uuid,
|
173
|
+
job_id: job_id,
|
174
|
+
options: options
|
175
|
+
}
|
176
|
+
body[:facts] = { values: facts } unless facts.nil?
|
177
|
+
body[:trusted_facts] = { values: trusted_facts } unless trusted_facts.nil?
|
178
|
+
headers = add_puppet_headers(
|
179
|
+
'Accept' => get_mime_types(Puppet::Resource::Catalog).join(', '),
|
180
|
+
'Content-Type' => 'application/json'
|
181
|
+
)
|
182
|
+
|
183
|
+
url = URI::HTTPS.build(host: @url.host, port: @url.port, path: Puppet::Util.uri_encode("/puppet/v4/catalog"))
|
184
|
+
response = @client.post(
|
185
|
+
url,
|
186
|
+
body.to_json,
|
187
|
+
headers: headers
|
188
|
+
)
|
189
|
+
process_response(response)
|
190
|
+
begin
|
191
|
+
response_body = JSON.parse(response.body)
|
192
|
+
catalog = Puppet::Resource::Catalog.from_data_hash(response_body['catalog'])
|
193
|
+
rescue => err
|
194
|
+
raise Puppet::HTTP::SerializationError.new("Failed to deserialize catalog from puppetserver response: #{err.message}", err)
|
195
|
+
end
|
196
|
+
|
197
|
+
logs = response_body['logs'] || []
|
198
|
+
[response, catalog, logs]
|
199
|
+
end
|
200
|
+
|
132
201
|
#
|
133
202
|
# @api private
|
134
203
|
#
|