I should have asked this earlier:
Are you using VIO with NSXv or DVS?
Metadataservice works with NSXv and that delivers the key-pair insertion service.
For DVS based networking you need to use config drive.OpenStack Docs: Store metadata on a configuration drive