Using a yaml smart class parameter with create_resources

(sorry for the repost…had to remove my domain name from my post)…

I've got a smart class parameter called "instances" of type yaml. It looks
like this for a specific host:

- port: 5487
device: "nfs02:/vol/pg007"

Here are my classes:

class postgres::server($instances) {
create_resources('postgres::server_instance', $instances)

class postgres::server_instance($instance) {
$port = $instance['port']
$device = $instance['device']
notify{ $port:}
notify{ $device:}

When running on the agent, I get:

Error: Could not retrieve catalog from remote server: Error 400 on SERVER:
can't convert nil into Hash at
/etc/puppet/modules/postgres/manifests/server.pp:23 on

As a check, I tried notify{$instances:} and that spits out a string version
of the above yaml that looks like: devicenfs02/vol/pg007port5487. So it
gets passed, but create_resources doesn't like what it sees I suppose. Do
I need to convert the smart class value to a hash first?

Puppet master and foreman details:

CentOS 6.4
Foreman 1.2.2
Puppet 3.1.1
PuppetDB 1.5.2

The client/agent has puppet 3.3.1 and ruby 1.9.3.