diff options
Diffstat (limited to 'chef-utils/lib/chef-utils/dsl/architecture.rb')
-rw-r--r-- | chef-utils/lib/chef-utils/dsl/architecture.rb | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/chef-utils/lib/chef-utils/dsl/architecture.rb b/chef-utils/lib/chef-utils/dsl/architecture.rb new file mode 100644 index 0000000000..e1ac4a099a --- /dev/null +++ b/chef-utils/lib/chef-utils/dsl/architecture.rb @@ -0,0 +1,150 @@ +# frozen_string_literal: true +# +# Copyright:: Copyright (c) Chef Software Inc. +# License:: Apache License, Version 2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +require_relative "../internal" + +module ChefUtils + module DSL + module Architecture + include Internal + + # Determine if the current architecture is 64-bit. + # + # @since 15.5 + # + # @return [Boolean] + # + def _64_bit?(node = __getnode) + %w{amd64 x86_64 ppc64 ppc64le s390x ia64 sparc64 aarch64 arch64 arm64 sun4v sun4u} + .include?(node["kernel"]["machine"]) + end + + # Determine if the current architecture is 32-bit. + # + # @since 15.5 + # + # @return [Boolean] + # + def _32_bit?(node = __getnode) + !_64_bit?(node) + end + + # Determine if the current architecture is i386. + # + # @since 15.5 + # + # @return [Boolean] + # + def i386?(node = __getnode) + _32_bit?(node) && intel?(node) + end + + # Determine if the current architecture is Intel. + # + # @since 15.5 + # + # @return [Boolean] + # + def intel?(node = __getnode) + %w{i86pc i386 x86_64 amd64 i686}.include?(node["kernel"]["machine"]) + end + + # Determine if the current architecture is SPARC. + # + # @since 15.5 + # + # @return [Boolean] + # + def sparc?(node = __getnode) + %w{sun4u sun4v}.include?(node["kernel"]["machine"]) + end + + # Determine if the current architecture is PowerPC 64bit Big Endian. + # + # @since 15.5 + # + # @return [Boolean] + # + def ppc64?(node = __getnode) + %w{ppc64}.include?(node["kernel"]["machine"]) + end + + # Determine if the current architecture is PowerPC 64bit Little Endian. + # + # @since 15.5 + # + # @return [Boolean] + # + def ppc64le?(node = __getnode) + %w{ppc64le}.include?(node["kernel"]["machine"]) + end + + # Determine if the current architecture is PowerPC. + # + # @since 15.5 + # + # @return [Boolean] + # + def powerpc?(node = __getnode) + %w{powerpc}.include?(node["kernel"]["machine"]) + end + + # Determine if the current architecture is arm + # + # @since 15.10 + # + # @return [Boolean] + # + def arm?(node = __getnode) + %w{armv6l armv7l armhf aarch64 arm64 arch64}.include?(node["kernel"]["machine"]) + end + + # Determine if the current architecture is 32-bit ARM hard float. + # + # @since 15.5 + # + # @return [Boolean] + # + def armhf?(node = __getnode) + %w{armv6l armv7l armhf}.include?(node["kernel"]["machine"]) + end + + # Determine if the current architecture is s390x. + # + # @since 15.5 + # + # @return [Boolean] + # + def s390x?(node = __getnode) + %w{s390x}.include?(node["kernel"]["machine"]) + end + + # Determine if the current architecture is s390. + # + # @since 15.5 + # + # @return [Boolean] + # + def s390?(node = __getnode) + %w{s390}.include?(node["kernel"]["machine"]) + end + + extend self + end + end +end |