I'm trying to thing of a back-compat method, which exploits the fact
that we now have flat unions (something we didn't have when
migrate-set-capabilities was first added). Maybe something like:
{ 'type': 'MigrationCapabilityBase',
'data': { 'capability': 'MigrationCapability' } }
{ 'type': 'MigrationCapabilityBool',
'data': { 'state': 'bool' } }
{ 'type': 'Migration CapabilityInt',
'data': { 'value': 'int' } }
{ 'union': 'MigrationCapabilityStatus',
'base': 'MigrationCapabilityBase',
'discriminator': 'capability',
'data': {
'xbzrle': 'MigrationCapabilityBool',
'auto-converge': 'MigrationCapabilityBool',
...
'mc-delay': 'MigrationCapabilityInt'
} }
along with a tweak to query-migrate-capabilities for full back-compat:
# @query-migrate-capabilities
# @extended: #optional defaults to false; set to true to see non-boolean
capabilities (since 2.1)
{ 'command: 'query-migrate-capabilities',
'data': { '*extended': 'bool' },
'returns': ['MigrationCapabilityStatus'] }