Add support for 2.92 : keypair import mandatory
Now, when creating a keypair, the 'public_key' parameter is now mandatory. Depends-On: https://review.opendev.org/c/openstack/nova/+/849133 Implements: blueprint keypair-generation-removal Change-Id: I03570d0a49b73021de91dc50b65b1bbf5d4b878b
This commit is contained in:
parent
ee9b277c5f
commit
2b5d989990
@ -25,4 +25,4 @@ API_MIN_VERSION = api_versions.APIVersion("2.1")
|
|||||||
# when client supported the max version, and bumped sequentially, otherwise
|
# when client supported the max version, and bumped sequentially, otherwise
|
||||||
# the client may break due to server side new version may include some
|
# the client may break due to server side new version may include some
|
||||||
# backward incompatible change.
|
# backward incompatible change.
|
||||||
API_MAX_VERSION = api_versions.APIVersion("2.91")
|
API_MAX_VERSION = api_versions.APIVersion("2.92")
|
||||||
|
@ -1228,8 +1228,13 @@ class FakeSessionClient(base_client.SessionClient):
|
|||||||
|
|
||||||
def post_os_keypairs(self, body, **kw):
|
def post_os_keypairs(self, body, **kw):
|
||||||
assert list(body) == ['keypair']
|
assert list(body) == ['keypair']
|
||||||
|
if self.api_version >= api_versions.APIVersion("2.92"):
|
||||||
|
# In 2.92, public_key becomes mandatory
|
||||||
|
required = ['name', 'public_key']
|
||||||
|
else:
|
||||||
|
required = ['name']
|
||||||
fakes.assert_has_keys(body['keypair'],
|
fakes.assert_has_keys(body['keypair'],
|
||||||
required=['name'])
|
required=required)
|
||||||
r = {'keypair': self.get_os_keypairs()[2]['keypairs'][0]['keypair']}
|
r = {'keypair': self.get_os_keypairs()[2]['keypairs'][0]['keypair']}
|
||||||
return (202, {}, r)
|
return (202, {}, r)
|
||||||
|
|
||||||
|
@ -127,3 +127,28 @@ class KeypairsV35TestCase(KeypairsTest):
|
|||||||
% self.keypair_prefix)
|
% self.keypair_prefix)
|
||||||
for kp in kps:
|
for kp in kps:
|
||||||
self.assertIsInstance(kp, keypairs.Keypair)
|
self.assertIsInstance(kp, keypairs.Keypair)
|
||||||
|
|
||||||
|
|
||||||
|
class KeypairsV92TestCase(KeypairsTest):
|
||||||
|
def setUp(self):
|
||||||
|
super(KeypairsV92TestCase, self).setUp()
|
||||||
|
self.cs.api_version = api_versions.APIVersion("2.92")
|
||||||
|
|
||||||
|
def test_create_keypair(self):
|
||||||
|
name = "foo"
|
||||||
|
key_type = "some_type"
|
||||||
|
public_key = "fake-public-key"
|
||||||
|
kp = self.cs.keypairs.create(name, public_key=public_key,
|
||||||
|
key_type=key_type)
|
||||||
|
self.assert_request_id(kp, fakes.FAKE_REQUEST_ID_LIST)
|
||||||
|
self.assert_called('POST', '/%s' % self.keypair_prefix,
|
||||||
|
body={'keypair': {'name': name,
|
||||||
|
'public_key': public_key,
|
||||||
|
'type': key_type}})
|
||||||
|
self.assertIsInstance(kp, keypairs.Keypair)
|
||||||
|
|
||||||
|
def test_create_keypair_without_pubkey(self):
|
||||||
|
name = "foo"
|
||||||
|
key_type = "some_type"
|
||||||
|
self.assertRaises(TypeError,
|
||||||
|
self.cs.keypairs.create, name, key_type=key_type)
|
||||||
|
@ -114,7 +114,7 @@ class KeypairManager(base.ManagerWithFind):
|
|||||||
body['keypair']['public_key'] = public_key
|
body['keypair']['public_key'] = public_key
|
||||||
return self._create('/%s' % self.keypair_prefix, body, 'keypair')
|
return self._create('/%s' % self.keypair_prefix, body, 'keypair')
|
||||||
|
|
||||||
@api_versions.wraps("2.10")
|
@api_versions.wraps("2.10", "2.91")
|
||||||
def create(self, name, public_key=None, key_type="ssh", user_id=None):
|
def create(self, name, public_key=None, key_type="ssh", user_id=None):
|
||||||
"""
|
"""
|
||||||
Create a keypair
|
Create a keypair
|
||||||
@ -132,6 +132,23 @@ class KeypairManager(base.ManagerWithFind):
|
|||||||
body['keypair']['user_id'] = user_id
|
body['keypair']['user_id'] = user_id
|
||||||
return self._create('/%s' % self.keypair_prefix, body, 'keypair')
|
return self._create('/%s' % self.keypair_prefix, body, 'keypair')
|
||||||
|
|
||||||
|
@api_versions.wraps("2.92")
|
||||||
|
def create(self, name, public_key, key_type="ssh", user_id=None):
|
||||||
|
"""
|
||||||
|
Create a keypair
|
||||||
|
|
||||||
|
:param name: name for the keypair to create
|
||||||
|
:param public_key: existing public key to import
|
||||||
|
:param key_type: keypair type to create
|
||||||
|
:param user_id: user to add.
|
||||||
|
"""
|
||||||
|
body = {'keypair': {'name': name,
|
||||||
|
'type': key_type,
|
||||||
|
'public_key': public_key}}
|
||||||
|
if user_id:
|
||||||
|
body['keypair']['user_id'] = user_id
|
||||||
|
return self._create('/%s' % self.keypair_prefix, body, 'keypair')
|
||||||
|
|
||||||
@api_versions.wraps("2.0", "2.9")
|
@api_versions.wraps("2.0", "2.9")
|
||||||
def delete(self, key):
|
def delete(self, key):
|
||||||
"""
|
"""
|
||||||
|
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Support has been added for `microversion 2.92`_. This microversion only
|
||||||
|
accepts to import a public key and no longer to generate one, hence now the
|
||||||
|
public_key parameter be mandatory.
|
||||||
|
|
||||||
|
.. _microversion 2.92: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#microversion-2-92
|
Loading…
Reference in New Issue
Block a user