I have two LWRPs. The first deals with creating a disk volume, formatting it, and mounting it on a virtual machine, we'll call this resource `cloud_volume`. The second resource (not really important what it does) needs a UUID for the newly formatted volume which is a required attribute, we'll call this resource `foobar`.

The resources `cloud_volume` and `foobar` are used in a recipe something like the following.

```
volumes.each do |mount_point, volume|
  cloud_volume "#{mount_point}" do
    size volume['size']
    label volume['label']
    action [:create, :initialize]
  end
  foobar "#{mount_point}" do
    disk_uuid node[:volumes][mount_point][:uuid]   # This is set by cloud_volume
    action [:do_stuff]
  end
end

```

So, when I do a chef run I get a `Required argument disk_identifier is missing!` exception.

After doing some digging I discovered that recipes are processed in two phases, a compile phase and an execute phase. It looks like the issue is at compile time as that is the point in time that `node[:volumes][mount_point][:uuid]` is not set. 

Unfortunately I can't use the trick that OpsCode has [here](http://web.archive.org/web/20120226074250/http://wiki.opscode.com/display/chef/Evaluate+and+Run+Resources+at+Compile+Time) as notifications are being used in the cloud\_volume LWRP (so it would fall into the anti-pattern shown in the documentation)

So, after all this, my question is, is there any way to get around the requirement that the value of `disk_uuid` be known at compile time?