0
在編寫提供程序(對於Datastax Opscenter集羣資源)時,我需要知道任何具有相同cluster_id的當前現有集羣,因此在提供程序中編寫了load_current_resource
方法。我的問題是,在運行時(如在一個流浪實例上運行一個廚師獨奏)我收到一個錯誤:未定義的方法`exists ='for in load_current_resource in Chef provider
undefined method `exists=' for Chef::Resource::OpscenterCluster
在@current_resource.exists = false
在下面的方法if response.code != 200
後。
def load_current_resource
@current_resource = Chef::Resource::OpscenterCluster.new(@new_resource.name)
log "#{@new_resource} Opscenter Cluster '#{new_resource.name}'"
@current_resource.name(@new_resource.name)
uri = URI.parse "http://#{node[:opscenter][:ip]}:8888/cluster-configs/#{@current_resource.cluster_id}"
response = Net::HTTP.get_response(uri)
if response.code != 200
@current_resource.exists = false
else
@current_resource.exists = true
end
end
菜譜是opscenter
和資源和供應商都在叫cluster.rb
文件和被引用的屬性肯定是存在的,所以資源類的名稱應至少和屬性至少應該是正確。
任何有關爲什麼我的@current_resource對象沒有exists=
方法的想法?
啊,錯過了在教程。雖然我不確定你的解決方案是作爲代碼提供的。我向我的資源添加了'attr_accessor:exists',這是[@ dougireton的教程](http://dougireton.com/blog/2012/12/31/creating-an-lwrp/)如何在lwrp。 – bschlueter