Bmc firmware update

Same comment as above.  This might be related to the issue where puppet will automagically unwrap a single element array.  You could just do a simple munge on the parameter to return an array if it's just a single item.
If you can make bmc_firmware as a property instead of a param, I think you can do something like newproperty(:bmc_firmware, :array_matching=>all) to ensure it will always be an array, but that might cause other issues with that being a property now that you could test.