Ошибка оценки: Неизвестная функция: «тест::сумма»

#ruby #plugins #puppet #cicd

Вопрос:

Я пытаюсь добавить новую функцию в старый кукольный модуль и добавил функцию со следующей командой.

 pdk new function --type=v4 sum
 

это добавляет файл lib/puppet/functions/test/sum.rb

 # frozen_string_literal: true

# https://github.com/puppetlabs/puppet-specifications/blob/master/language/func-api.md#the-4x-api
Puppet::Functions.create_function(:"test::sum") do
  dispatch :sum do
    param 'Numeric', :a
    return_type 'Numeric'
  end
  # the function below is called by puppet and and must match
  # the name of the puppet function above. You can set your
  # required parameters below and puppet will enforce these
  # so change x to suit your needs although only one parameter is required
  # as defined in the dispatch method.
  def sum(x)
    x * 2
  end

  # you can define other helper methods in this code block as well
end
 

Я также вижу эту функцию pdk console при запуске functions команды.

но когда я пытаюсь вызвать функцию следующим образом

 test::sum(5) # Evaluation Error: Unknown function: 'test::sum'
test::sum.call(5) # Evaluation Error: Unknown function: 'test::sum'
Deferred(test::sum, [5]).call # Evaluation Error: Unknown function: 'test::sum'
 

Почему это не работает? Я делаю что-то не так?

Примечание: Я совсем новичок в марионетке.

Комментарии:

1. :"test::sum" это тяжело для глаз, и я не уверен, делает ли это то, что вы хотите. Я бы "test::sum".to_sym сам использовал.

2. С учетом сказанного я не уверен, поддерживает ли Puppet префиксы пространства имен для функций.

3. Трудный путь-это то, что рекомендуется в официальных документах. Я уверен, что puppet поддерживает пространство имен, потому что в модуле есть отложенная функция, которая работает нормально.

4. С какой версией марионетки вы это используете? И можете ли вы представить более полный пример того, как вы пытаетесь вызвать функцию?

5. @JohnBollinger похоже, что и синтаксис, и пространство имен-это то, как функции описываются в документах . Примечание: Я абсолютно ничего не знаю о Puppet, так что это все, что я могу реально сделать