Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Evaluation Error: Unknown function: 'has_key' in install.pp #26

Open
slauger opened this issue Jun 20, 2023 · 1 comment · May be fixed by #27
Open

Evaluation Error: Unknown function: 'has_key' in install.pp #26

slauger opened this issue Jun 20, 2023 · 1 comment · May be fixed by #27

Comments

@slauger
Copy link

slauger commented Jun 20, 2023

This module does no longer work with the current version of puppetlabs-stdlib.

In this MR the has_key function was removed.

puppetlabs/puppetlabs-stdlib#1319

Is this repository still managed? Would you accept a pull request? Or maybe this module can be transfered to voxpupuli team?

@slauger
Copy link
Author

slauger commented Jun 20, 2023

Quick and dirty fix for this: add a file lib/puppet/parser/functions/has_key.rb with the following content.

# frozen_string_literal: true

#
# has_key.rb
#
module Puppet::Parser::Functions
  newfunction(:has_key, type: :rvalue, doc: <<-'DOC') do |args|
    @summary
      **Deprecated:** Determine if a hash has a certain key value.
    @return
      Boolean value
    @example Example Usage:
      $my_hash = {'key_one' => 'value_one'}
      if has_key($my_hash, 'key_two') {
        notice('we will not reach here')
      }
      if has_key($my_hash, 'key_one') {
        notice('this will be printed')
      }
    > **Note:** **Deprecated** since Puppet 4.0.0, this can now be achieved in the Puppet
    language with the following equivalent expression:
    $my_hash = {'key_one' => 'value_one'}
    if 'key_one' in $my_hash {
      notice('this will be printed')
    }
    DOC

    unless args.length == 2
      raise Puppet::ParseError, "has_key(): wrong number of arguments (#{args.length}; must be 2)"
    end
    unless args[0].is_a?(Hash)
      raise Puppet::ParseError, "has_key(): expects the first argument to be a hash, got #{args[0].inspect} which is of type #{args[0].class}"
    end
    args[0].key?(args[1])
  end
end

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant