Error message says it all. You're naming a resource using a hash. Supposed to be string.
Try it this way:
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] }
Notice the 'file1' and 'file2'. Those are the resource names that need to be strings and must be unique. Data is passed in as a parameter.
Not sure if youre array/hash usage works or not. Didn't test and I don't pass data around that way very often.
And do yourself a favor and put your define in it's own file, not in the middle of a class. Will save you headaches later (like the one I have trying to make sense of 400+ line classes with all sorts of fun in them accumulated over the last 2 years).
Edit: grammar