2014-01-21 48 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