This patch makes a few changes to ClusterSpec and ComputeCache (and fixes a snafu in my previous ComputeCache patch while I'm at it).
It adds a new field in ClusterSpec, byonNodes, which is not set via the recipe properties at all. Instead, it's initialized as an empty map, and can be set later via setByonNodes. This provides a way to store the org.jclouds.byon.Nodes that are needed for CacheNodeStoreModule - since these are going to be programmatically determined anyway, we aren't going to want to set them in the config file in the first place.
Then, in ComputeCache, when we're creating the compute service, we look to see if the provider is "byon" and byonNodes is not empty - if that's the case, we set the modules to include CacheNodeStoreModule using the byonNodes map. I need to do some more testing to be sure that it doesn't get confused by the lack of a YAML file (since YamlNodeStoreModule is still loaded, since it's default for BYON) but I'm fairly certain it works correctly. The result is that the compute service is init'd with a node list that spits out, tada, the Nodes we added to ClusterSpec.
In actual use (well, in my actual use, at least), the compute service in question will need to be invalidated immediately after use, since if you have multiple byon clusters in a single JVM, it'll get confused due to the equals method not looking at the modules, but I may be able to work around that with dummy override properties...I need to look into that more.
So yeah, this isn't a finished patch, but it's a good chunk of the way there.