diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-06-27 18:00:27 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-06-27 18:00:27 +0000 |
| commit | 1393541902a13c12e4ef910fc41e20791f05107d (patch) | |
| tree | 53c3e1b08ddd9c17e2148531c1f1a7ea5e5ee58a /nova/api | |
| parent | 8e768dc5500649f12b87c8569d0d646fa4e47ed4 (diff) | |
| parent | a5130faf80d29b1a6ed80d03b2b167a54c209911 (diff) | |
Merge "metadata: cleanup pubkey representation"
Diffstat (limited to 'nova/api')
| -rw-r--r-- | nova/api/metadata/base.py | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/nova/api/metadata/base.py b/nova/api/metadata/base.py index 3f7db817d..1b0ac441b 100644 --- a/nova/api/metadata/base.py +++ b/nova/api/metadata/base.py @@ -136,10 +136,18 @@ class InstanceMetadata(): if self.userdata_b64 is not None: data['user-data'] = self.userdata_b64 - # public-keys should be in meta-data only if user specified one + # public keys are strangely rendered in ec2 metadata service + # meta-data/public-keys/ returns '0=keyname' (with no trailing /) + # and only if there is a public key given. + # '0=keyname' means there is a normally rendered dict at + # meta-data/public-keys/0 + # + # meta-data/public-keys/ : '0=%s' % keyname + # meta-data/public-keys/0/ : 'openssh-key' + # meta-data/public-keys/0/openssh-key : '%s' % publickey if self.instance['key_name']: data['meta-data']['public-keys'] = { - '0': {'_name': self.instance['key_name'], + '0': {'_name': "0=" + self.instance['key_name'], 'openssh-key': self.instance['key_data']}} if False: # TODO(vish): store ancestor ids @@ -241,12 +249,14 @@ def ec2_md_print(data): for key in sorted(data.keys()): if key == '_name': continue - output += key if isinstance(data[key], dict): if '_name' in data[key]: - output += '=' + str(data[key]['_name']) + output += str(data[key]['_name']) else: - output += '/' + output += key + '/' + else: + output += key + output += '\n' return output[:-1] elif isinstance(data, list): |
