Sha256: 2bc0b16f8cd1c6cfd04f08de8b6cff1baa80e0264382e6ec5a83518c6cdd450f

Contents?: true

Size: 1.63 KB

Versions: 12

Compression:

Stored size: 1.63 KB

Contents

require "inspec/resources/zfs_pool"

module Inspec::Resources
  class Zfs < ZfsPool
    # resource's internal name.
    name "zfs"

    # Restrict to only run on the below platforms
    supports platform: "unix"

    desc "Use the zfs InSpec audit resource to test if the named ZFS Pool is present and/or has certain properties."

    example <<~EXAMPLE
      describe zfs("new-pool") do
        it { should exist }
        it { should have_property({ "failmode" => "wait", "capacity" => "0" }) }
      end
    EXAMPLE

    # Resource initialization is done in the parent class i.e. ZfsPool

    # Unique identity for the resource.
    def resource_id
      # @zfs_pool is the zfs pool name assigned during initialization in the parent class i.e. ZfsPool
      @zfs_pool
    end

    # Resource appearance in test reports.
    def to_s
      "zfs #{resource_id}"
    end

    # The below matcher checks if the given properties are valid properties of the zfs pool.
    def has_property?(properties_hash)
      raise Inspec::Exceptions::ResourceSkipped, "Provide a valid key-value pair of the zfs properties." if properties_hash.empty?

      # Transform all the key & values provided by user to string,
      # since hash keys can be symbols or strings & values can be integers or strings.
      # @params is a hash populated in the parent class with the properties(key-value) of the current zfs pool.
      # and the key-value in @params are of string type.
      properties_hash.transform_keys(&:to_s)
      properties_hash.transform_values(&:to_s)

      # check if the given properties is a subset of @params
      properties_hash <= @params
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
inspec-core-6.8.11 lib/inspec/resources/zfs.rb
inspec-core-5.22.58 lib/inspec/resources/zfs.rb
inspec-core-5.22.55 lib/inspec/resources/zfs.rb
inspec-core-6.8.1 lib/inspec/resources/zfs.rb
inspec-core-5.22.40 lib/inspec/resources/zfs.rb
inspec-core-6.6.0 lib/inspec/resources/zfs.rb
inspec-core-5.22.36 lib/inspec/resources/zfs.rb
inspec-core-5.22.29 lib/inspec/resources/zfs.rb
inspec-core-5.22.3 lib/inspec/resources/zfs.rb
inspec-core-5.21.29 lib/inspec/resources/zfs.rb
inspec-core-5.18.14 lib/inspec/resources/zfs.rb
inspec-core-5.17.4 lib/inspec/resources/zfs.rb