Would they get the attributes similar to what you have below?
Yah, everything that 'flavor' has at the moment, plus I think we need to add some measure of CPU. I don't know if we need to specify more details than "# of CPU units" or "# of cores". Intel vs AMD, speed, etc, might be more than we can attack for now.
This would also be a place to specify the number of network interfaces available, perhaps, or other special requirements of the virtual hardware you might need.
These would specify the different profiles available, in terms of min/ max capabilities for each profile.
For a cloud provider with completely flexible instances, it might have 1 profile something akin to
memory: 0GB-64GB, default=2gb disk: 0GB-1TB, default=200gb cpu: 1-8, default=2
For something like EC2, min==max, and it'd have a profile per instance type.
Upon instantiating an instance from an image, you'd select, and optionally parameterize a hardware profile for the instance. EC2, no parameterization/customization is possible. For RIMU etc, you could feed it what you want.
We may also need a flag indicating mutability of the hardware post- launch, in case a provider allows adding CPU/disk/RAM on-the-fly.
Yes, the profile becomes more an attribute of the instance as opposed to a parent (which is how I tended to think about it).
-- bk