Назад | Перейти на главную страницу

Как может метод munge настраиваемого типа Puppet получить доступ ко всему параметру массива?

Это свойство представляет собой массив, порядок которого не имеет значения. Это действительно набор, но у Puppet нет наборов AFAICT. Итак, я пытаюсь использовать munge чтобы отсортировать значения:

newproperty(:things, :array_matching => :all) do  
  munge do |value|
    value.sort
  end
end

Это не удается, потому что munge применяется к каждому значению в массиве, а не ко всему. Есть ли способ заставить это работать?

У меня была аналогичная проблема, и я решил ее как это:

newproperty(:things, :array_matching => :all) do  
  def should(values)
    sort(super)
  end
  def should=(values)
    super
    sort!(@should)
  end
  def insync?(is)
    sort(is) == should
  end
end

Если бы я писал новый модуль, я бы использовал API ресурсов, который имеет канонизировать крючок для этой цели.