在编写提供程序(用于 Datastax Opscenter 集群资源)时,我需要了解任何当前存在的具有相同 cluster_id 的集群,因此load_current_resource
在提供程序中编写了一个方法。我的问题是在运行时(作为在 Vagrant 实例上运行的 chef-solo)我收到一个错误:
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=
方法的任何想法?