2014-01-21 32 views
0

我試圖從工頭推送參數到我的木偶類來生成配置文件。使用木偶和工頭生成配置文件

Eeach文件應該是這樣的:

file1 
DB_USERNAME=toto 
DUMP_TYPE=full 
[...] 

file2 
DB_USERNAME=toto 
DUMP_TYPE=full 
[...] 

我定義在工頭的參數是哈希

bacula_client dumpCfg [{"techno"=>"oracle", "DB_USERNAME"=>"toto", "DUMP_TYPE"=>"full", ...}, 
{"techno"=>"mysql", "DB_USERNAME"=>"toto", "DUMP_TYPE"=>"full", ...}] 

的數組,我想知道是否有可能做這樣的事情該調用DUMPDB

class bacula_client (

$isDirector = false, 
$backupCrons = [], 
$isHostConcentrator = false, 
$dumpCfg = [], 

define bacula_client::dumpdb() { 

    $techno  = $name['techno'] 
    $dbusername  = $name['DB_USERNAME'] 
    $dumptype  = $name['DUMP_TYPE'] 

    # call a function that generates the files 
    } 
[.....] 
}#myclass 

bacula_client::dumpdb{$dumpCfg:} 
時產生例如2個不同的配置文件,因爲我得到了「的ressource標題必須是字符串」

謝謝你,

回答

1

錯誤消息說這一切。您正在使用散列命名資源。應該是字符串。

試試這樣說:

define bacula_client::dumpdb ($dumpCfg) { 

    $techno  = $dumpCfg['techno'] 
    $dbusername  = $dumpCfg['DB_USERNAME'] 
    $dumptype  = $dumpCfg['DUMP_TYPE'] 

    # call a function that generates the files 
    } 


bacula_client::dumpdb{'file1': dumpCfg => $dumpCfg[0] } 
bacula_client::dumpdb{'file2': dumpCfg => $dumpCfg[1] } 

注意 '文件1' 和 '文件2'。這些資源名稱必須是字符串,並且必須是唯一的。數據作爲參數傳入。

不知道你是陣列/散列使用的作品與否。沒有測試,我不經常以這種方式傳遞數據。

做一個忙,把你的定義放在它自己的文件中,而不是在課堂上。稍後會幫助你解決頭痛問題(比如我試圖理解400多個線性課程,並在過去的2年中積累了各種各樣的樂趣)。

編輯:語法

+0

的主要問題有,這是我不能在$的Dumpcfg迭代在我的表現與對,比如,因爲我不知道在哈希陣列的數量。我必須使bacula_client :: dumpdb {'file1':dumpCfg => $ dumpCfg [0]} bacula_client :: dumpdb {'file2':dumpCfg => $ dumpCfg [1]} bacula_client :: dumpdb {'file3':dumpCfg => $ dumpCfg [2]}等等。 – Virtuose