chef-utils 16.10.17 → 17.10.19

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +201 -201
  3. data/Rakefile +15 -15
  4. data/chef-utils.gemspec +50 -46
  5. data/lib/chef-utils/dist.rb +151 -98
  6. data/lib/chef-utils/dsl/architecture.rb +150 -150
  7. data/lib/chef-utils/dsl/cloud.rb +155 -144
  8. data/lib/chef-utils/dsl/default_paths.rb +60 -60
  9. data/lib/chef-utils/dsl/introspection.rb +134 -123
  10. data/lib/chef-utils/dsl/os.rb +58 -58
  11. data/lib/chef-utils/dsl/path_sanity.rb +39 -39
  12. data/lib/chef-utils/dsl/platform.rb +387 -372
  13. data/lib/chef-utils/dsl/platform_family.rb +355 -344
  14. data/lib/chef-utils/dsl/platform_version.rb +41 -41
  15. data/lib/chef-utils/dsl/service.rb +112 -112
  16. data/lib/chef-utils/dsl/train_helpers.rb +87 -87
  17. data/lib/chef-utils/dsl/virtualization.rb +272 -250
  18. data/lib/chef-utils/dsl/which.rb +123 -123
  19. data/lib/chef-utils/dsl/windows.rb +86 -86
  20. data/lib/chef-utils/internal.rb +114 -114
  21. data/lib/chef-utils/mash.rb +263 -240
  22. data/lib/chef-utils/parallel_map.rb +131 -0
  23. data/lib/chef-utils/version.rb +20 -20
  24. data/lib/chef-utils/version_string.rb +160 -160
  25. data/lib/chef-utils.rb +53 -53
  26. data/spec/spec_helper.rb +100 -100
  27. data/spec/unit/dsl/architecture_spec.rb +151 -151
  28. data/spec/unit/dsl/cloud_spec.rb +93 -89
  29. data/spec/unit/dsl/dsl_spec.rb +34 -34
  30. data/spec/unit/dsl/introspection_spec.rb +201 -189
  31. data/spec/unit/dsl/os_spec.rb +175 -175
  32. data/spec/unit/dsl/path_sanity_spec.rb +86 -86
  33. data/spec/unit/dsl/platform_family_spec.rb +235 -223
  34. data/spec/unit/dsl/platform_spec.rb +252 -238
  35. data/spec/unit/dsl/service_spec.rb +117 -117
  36. data/spec/unit/dsl/virtualization_spec.rb +75 -75
  37. data/spec/unit/dsl/which_spec.rb +171 -171
  38. data/spec/unit/dsl/windows_spec.rb +84 -84
  39. data/spec/unit/mash_spec.rb +51 -51
  40. data/spec/unit/parallel_map_spec.rb +156 -0
  41. metadata +26 -10
@@ -1,98 +1,151 @@
1
- # frozen_string_literal: true
2
- module ChefUtils
3
- # This class is not fully implemented, depending on it is not recommended!
4
- module Dist
5
- class Apply
6
- # The chef-apply product name
7
- PRODUCT = "Chef Infra Apply"
8
-
9
- # The chef-apply binary
10
- EXEC = "chef-apply"
11
- end
12
-
13
- class Automate
14
- # name of the automate product
15
- PRODUCT = "Chef Automate"
16
- end
17
-
18
- class Infra
19
- # When referencing a product directly, like Chef (Now Chef Infra)
20
- PRODUCT = "Chef Infra Client"
21
-
22
- # A short designation for the product, used in Windows event logs
23
- # and some nomenclature.
24
- SHORT = "chef"
25
-
26
- # The client's alias (chef-client)
27
- CLIENT = "chef-client"
28
-
29
- # The chef executable, as in `chef gem install` or `chef generate cookbook`
30
- EXEC = "chef"
31
-
32
- # The chef-shell executable
33
- SHELL = "chef-shell"
34
-
35
- # Configuration related constants
36
- # The chef-shell configuration file
37
- SHELL_CONF = "chef_shell.rb"
38
-
39
- # The user's configuration directory
40
- USER_CONF_DIR = ".chef"
41
-
42
- # The suffix for Chef's /etc/chef, /var/chef and C:\\Chef directories
43
- # "chef" => /etc/cinc, /var/cinc, C:\\cinc
44
- DIR_SUFFIX = "chef"
45
- end
46
-
47
- class Org
48
- # product Website address
49
- WEBSITE = "https://chef.io"
50
-
51
- # The downloads site
52
- DOWNLOADS_URL = "downloads.chef.io"
53
-
54
- # The legacy conf folder: C:/opscode/chef. Specifically the "opscode" part
55
- # DIR_SUFFIX is appended to it in code where relevant
56
- LEGACY_CONF_DIR = "opscode"
57
-
58
- # Enable forcing Chef EULA
59
- ENFORCE_LICENSE = true
60
-
61
- # product patents page
62
- PATENTS = "https://www.chef.io/patents"
63
-
64
- # knife documentation page
65
- KNIFE_DOCS = "https://docs.chef.io/workstation/knife/"
66
- end
67
-
68
- class Server
69
- # The name of the server product
70
- PRODUCT = "Chef Infra Server"
71
-
72
- # The server's configuration directory
73
- CONF_DIR = "/etc/chef-server"
74
-
75
- # The servers's alias (chef-server)
76
- SERVER = "chef-server"
77
-
78
- # The server's configuration utility
79
- SERVER_CTL = "chef-server-ctl"
80
- end
81
-
82
- class Solo
83
- # Chef-Solo's product name
84
- PRODUCT = "Chef Infra Solo"
85
-
86
- # The chef-solo executable (legacy local mode)
87
- EXEC = "chef-solo"
88
- end
89
-
90
- class Zero
91
- # chef-zero executable
92
- PRODUCT = "Chef Infra Zero"
93
-
94
- # The chef-zero executable (local mode)
95
- EXEC = "chef-zero"
96
- end
97
- end
98
- end
1
+ # frozen_string_literal: true
2
+ module ChefUtils
3
+ # This class is not fully implemented, depending on it is not recommended!
4
+ module Dist
5
+ class Apply
6
+ # The chef-apply product name
7
+ PRODUCT = "Chef Infra Apply"
8
+
9
+ # The chef-apply binary
10
+ EXEC = "chef-apply"
11
+ end
12
+
13
+ class Automate
14
+ # name of the automate product
15
+ PRODUCT = "Chef Automate"
16
+ end
17
+
18
+ class Cli
19
+ # the chef-cli product name
20
+ PRODUCT = "Chef CLI"
21
+
22
+ # the chef-cli gem
23
+ GEM = "chef-cli"
24
+ end
25
+
26
+ class Habitat
27
+ # name of the Habitat product
28
+ PRODUCT = "Chef Habitat"
29
+
30
+ # A short designation for the product
31
+ SHORT = "habitat"
32
+
33
+ # The hab cli binary
34
+ EXEC = "hab"
35
+ end
36
+
37
+ class Infra
38
+ # When referencing a product directly, like Chef (Now Chef Infra)
39
+ PRODUCT = "Chef Infra Client"
40
+
41
+ # A short designation for the product, used in Windows event logs
42
+ # and some nomenclature.
43
+ SHORT = "chef"
44
+
45
+ # The client's alias (chef-client)
46
+ CLIENT = "chef-client"
47
+
48
+ # The chef executable, as in `chef gem install` or `chef generate cookbook`
49
+ EXEC = "chef"
50
+
51
+ # The chef-shell executable
52
+ SHELL = "chef-shell"
53
+
54
+ # Configuration related constants
55
+ # The chef-shell configuration file
56
+ SHELL_CONF = "chef_shell.rb"
57
+
58
+ # The user's configuration directory
59
+ USER_CONF_DIR = ".chef"
60
+
61
+ # The suffix for Chef's /etc/chef, /var/chef and C:\\Chef directories
62
+ # "chef" => /etc/cinc, /var/cinc, C:\\cinc
63
+ DIR_SUFFIX = "chef"
64
+
65
+ # The client's gem
66
+ GEM = "chef"
67
+ end
68
+
69
+ class Inspec
70
+ # The InSpec product name
71
+ PRODUCT = "Chef InSpec"
72
+
73
+ # The inspec binary
74
+ EXEC = "inspec"
75
+ end
76
+
77
+ class Org
78
+ # product Website address
79
+ WEBSITE = "https://chef.io"
80
+
81
+ # The downloads site
82
+ DOWNLOADS_URL = "chef.io/downloads"
83
+
84
+ # The legacy conf folder: C:/opscode/chef. Specifically the "opscode" part
85
+ # DIR_SUFFIX is appended to it in code where relevant
86
+ LEGACY_CONF_DIR = "opscode"
87
+
88
+ # Enable forcing Chef EULA
89
+ ENFORCE_LICENSE = true
90
+
91
+ # product patents page
92
+ PATENTS = "https://www.chef.io/patents"
93
+
94
+ # knife documentation page
95
+ KNIFE_DOCS = "https://docs.chef.io/workstation/knife/"
96
+
97
+ # the name of the overall infra product
98
+ PRODUCT = "Chef Infra"
99
+
100
+ # Omnitruck URL
101
+ OMNITRUCK_URL = "https://omnitruck.chef.io/install.sh"
102
+ end
103
+
104
+ class Server
105
+ # The name of the server product
106
+ PRODUCT = "Chef Infra Server"
107
+
108
+ # The server's configuration directory
109
+ CONF_DIR = "/etc/chef-server"
110
+
111
+ # The servers's alias (chef-server)
112
+ SERVER = "chef-server"
113
+
114
+ # The server's configuration utility
115
+ SERVER_CTL = "chef-server-ctl"
116
+
117
+ # OS user for server
118
+ SYSTEM_USER = "opscode"
119
+
120
+ # The server`s docs URL
121
+ SERVER_DOCS = "https://docs.chef.io/server/"
122
+ end
123
+
124
+ class Solo
125
+ # Chef-Solo's product name
126
+ PRODUCT = "Chef Infra Solo"
127
+
128
+ # The chef-solo executable (legacy local mode)
129
+ EXEC = "chef-solo"
130
+ end
131
+
132
+ class Workstation
133
+ # The full marketing name of the product
134
+ PRODUCT = "Chef Workstation"
135
+
136
+ # The suffix for Chef Workstation's /opt/chef-workstation or C:\\opscode\chef-workstation
137
+ DIR_SUFFIX = "chef-workstation"
138
+
139
+ # Workstation banner/help text
140
+ DOCS = "https://docs.chef.io/workstation/"
141
+ end
142
+
143
+ class Zero
144
+ # chef-zero executable
145
+ PRODUCT = "Chef Infra Zero"
146
+
147
+ # The chef-zero executable (local mode)
148
+ EXEC = "chef-zero"
149
+ end
150
+ end
151
+ end
@@ -1,150 +1,150 @@
1
- # frozen_string_literal: true
2
- #
3
- # Copyright:: Copyright (c) Chef Software Inc.
4
- # License:: Apache License, Version 2.0
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
-
19
- require_relative "../internal"
20
-
21
- module ChefUtils
22
- module DSL
23
- module Architecture
24
- include Internal
25
-
26
- # Determine if the current architecture is 64-bit.
27
- #
28
- # @since 15.5
29
- #
30
- # @return [Boolean]
31
- #
32
- def _64_bit?(node = __getnode)
33
- %w{amd64 x86_64 ppc64 ppc64le s390x ia64 sparc64 aarch64 arch64 arm64 sun4v sun4u}
34
- .include?(node["kernel"]["machine"])
35
- end
36
-
37
- # Determine if the current architecture is 32-bit.
38
- #
39
- # @since 15.5
40
- #
41
- # @return [Boolean]
42
- #
43
- def _32_bit?(node = __getnode)
44
- !_64_bit?(node)
45
- end
46
-
47
- # Determine if the current architecture is i386.
48
- #
49
- # @since 15.5
50
- #
51
- # @return [Boolean]
52
- #
53
- def i386?(node = __getnode)
54
- _32_bit?(node) && intel?(node)
55
- end
56
-
57
- # Determine if the current architecture is Intel.
58
- #
59
- # @since 15.5
60
- #
61
- # @return [Boolean]
62
- #
63
- def intel?(node = __getnode)
64
- %w{i86pc i386 x86_64 amd64 i686}.include?(node["kernel"]["machine"])
65
- end
66
-
67
- # Determine if the current architecture is SPARC.
68
- #
69
- # @since 15.5
70
- #
71
- # @return [Boolean]
72
- #
73
- def sparc?(node = __getnode)
74
- %w{sun4u sun4v}.include?(node["kernel"]["machine"])
75
- end
76
-
77
- # Determine if the current architecture is PowerPC 64bit Big Endian.
78
- #
79
- # @since 15.5
80
- #
81
- # @return [Boolean]
82
- #
83
- def ppc64?(node = __getnode)
84
- %w{ppc64}.include?(node["kernel"]["machine"])
85
- end
86
-
87
- # Determine if the current architecture is PowerPC 64bit Little Endian.
88
- #
89
- # @since 15.5
90
- #
91
- # @return [Boolean]
92
- #
93
- def ppc64le?(node = __getnode)
94
- %w{ppc64le}.include?(node["kernel"]["machine"])
95
- end
96
-
97
- # Determine if the current architecture is PowerPC.
98
- #
99
- # @since 15.5
100
- #
101
- # @return [Boolean]
102
- #
103
- def powerpc?(node = __getnode)
104
- %w{powerpc}.include?(node["kernel"]["machine"])
105
- end
106
-
107
- # Determine if the current architecture is arm
108
- #
109
- # @since 15.10
110
- #
111
- # @return [Boolean]
112
- #
113
- def arm?(node = __getnode)
114
- %w{armv6l armv7l armhf aarch64 arm64 arch64}.include?(node["kernel"]["machine"])
115
- end
116
-
117
- # Determine if the current architecture is 32-bit ARM hard float.
118
- #
119
- # @since 15.5
120
- #
121
- # @return [Boolean]
122
- #
123
- def armhf?(node = __getnode)
124
- %w{armv6l armv7l armhf}.include?(node["kernel"]["machine"])
125
- end
126
-
127
- # Determine if the current architecture is s390x.
128
- #
129
- # @since 15.5
130
- #
131
- # @return [Boolean]
132
- #
133
- def s390x?(node = __getnode)
134
- %w{s390x}.include?(node["kernel"]["machine"])
135
- end
136
-
137
- # Determine if the current architecture is s390.
138
- #
139
- # @since 15.5
140
- #
141
- # @return [Boolean]
142
- #
143
- def s390?(node = __getnode)
144
- %w{s390}.include?(node["kernel"]["machine"])
145
- end
146
-
147
- extend self
148
- end
149
- end
150
- end
1
+ # frozen_string_literal: true
2
+ #
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require_relative "../internal"
20
+
21
+ module ChefUtils
22
+ module DSL
23
+ module Architecture
24
+ include Internal
25
+
26
+ # Determine if the current architecture is 64-bit.
27
+ #
28
+ # @since 15.5
29
+ #
30
+ # @return [Boolean]
31
+ #
32
+ def _64_bit?(node = __getnode)
33
+ %w{amd64 x86_64 ppc64 ppc64le s390x ia64 sparc64 aarch64 arch64 arm64 sun4v sun4u}
34
+ .include?(node["kernel"]["machine"])
35
+ end
36
+
37
+ # Determine if the current architecture is 32-bit.
38
+ #
39
+ # @since 15.5
40
+ #
41
+ # @return [Boolean]
42
+ #
43
+ def _32_bit?(node = __getnode)
44
+ !_64_bit?(node)
45
+ end
46
+
47
+ # Determine if the current architecture is i386.
48
+ #
49
+ # @since 15.5
50
+ #
51
+ # @return [Boolean]
52
+ #
53
+ def i386?(node = __getnode)
54
+ _32_bit?(node) && intel?(node)
55
+ end
56
+
57
+ # Determine if the current architecture is Intel.
58
+ #
59
+ # @since 15.5
60
+ #
61
+ # @return [Boolean]
62
+ #
63
+ def intel?(node = __getnode)
64
+ %w{i86pc i386 x86_64 amd64 i686}.include?(node["kernel"]["machine"])
65
+ end
66
+
67
+ # Determine if the current architecture is SPARC.
68
+ #
69
+ # @since 15.5
70
+ #
71
+ # @return [Boolean]
72
+ #
73
+ def sparc?(node = __getnode)
74
+ %w{sun4u sun4v}.include?(node["kernel"]["machine"])
75
+ end
76
+
77
+ # Determine if the current architecture is PowerPC 64bit Big Endian.
78
+ #
79
+ # @since 15.5
80
+ #
81
+ # @return [Boolean]
82
+ #
83
+ def ppc64?(node = __getnode)
84
+ %w{ppc64}.include?(node["kernel"]["machine"])
85
+ end
86
+
87
+ # Determine if the current architecture is PowerPC 64bit Little Endian.
88
+ #
89
+ # @since 15.5
90
+ #
91
+ # @return [Boolean]
92
+ #
93
+ def ppc64le?(node = __getnode)
94
+ %w{ppc64le}.include?(node["kernel"]["machine"])
95
+ end
96
+
97
+ # Determine if the current architecture is PowerPC.
98
+ #
99
+ # @since 15.5
100
+ #
101
+ # @return [Boolean]
102
+ #
103
+ def powerpc?(node = __getnode)
104
+ %w{powerpc}.include?(node["kernel"]["machine"])
105
+ end
106
+
107
+ # Determine if the current architecture is arm
108
+ #
109
+ # @since 15.10
110
+ #
111
+ # @return [Boolean]
112
+ #
113
+ def arm?(node = __getnode)
114
+ %w{armv6l armv7l armhf aarch64 arm64 arch64}.include?(node["kernel"]["machine"])
115
+ end
116
+
117
+ # Determine if the current architecture is 32-bit ARM hard float.
118
+ #
119
+ # @since 15.5
120
+ #
121
+ # @return [Boolean]
122
+ #
123
+ def armhf?(node = __getnode)
124
+ %w{armv6l armv7l armhf}.include?(node["kernel"]["machine"])
125
+ end
126
+
127
+ # Determine if the current architecture is s390x.
128
+ #
129
+ # @since 15.5
130
+ #
131
+ # @return [Boolean]
132
+ #
133
+ def s390x?(node = __getnode)
134
+ %w{s390x}.include?(node["kernel"]["machine"])
135
+ end
136
+
137
+ # Determine if the current architecture is s390.
138
+ #
139
+ # @since 15.5
140
+ #
141
+ # @return [Boolean]
142
+ #
143
+ def s390?(node = __getnode)
144
+ %w{s390}.include?(node["kernel"]["machine"])
145
+ end
146
+
147
+ extend self
148
+ end
149
+ end
150
+ end