来自木偶提供者的访问类型参数

时间:2017-10-16 11:38:12

标签: puppet

我正在尝试创建一个perforce自定义类型 devtrack 但是我陷入了预取阶段。在那里我试图使用我的实例类方法来找到正确的提供者

def self.prefetch(resources)
    instances.each do |prov|
        if resource = resources[prov.name]
            resource.provider = prov
        end
    end
end

在实例类方法中,我尝试使用命令

查找当前主机上的所有客户端
  

p4 workspaces -u

使用以下代码

def self.get_list_of_workspaces_on_host(host)       
    ws_strs = p4(['workspaces', '-u', <USERNAME>]).split("\n")
    ws_strs.select { |str| str.include?(host) }.map{ |ws| ws.split[1] }
end

def self.get_workspace_properties(ws)
    md = /^(\w*)_.*_(main|\d{2})_managed$/.match(ws)
    ws_props = {}
    ws_props[:ensure]    = :present
    ...
    ws_props
end

def self.instances
    host = `hostname`.strip
    get_list_of_workspaces_on_host(host).collect do |ws|
        ws_props = get_workspace_properties(ws)
        new(ws_props)
    end
end

并且p4命令定义为

has_command(:p4, "/usr/bin/p4") do
    environment :P4PORT => <PERFORCE SERVER>, :P4USER => <USERNAME>
end

我遇到的问题是,要使任何p4命令工作,我需要访问服务器,这在类型

中指定
devtrack { '36': source  => '<PERFORCE SERVER>'}

但如何从预取中访问此值?问题在于预取是一种类方法,因此无法访问 @properties_hash 资源哈希。有办法解决这个问题吗?我设计这个完全错了吗?

0 个答案:

没有答案