keypair api
This commit is contained in:
parent
811ba10e51
commit
d25c627add
@ -1,6 +1,7 @@
|
||||
from novaclient import client
|
||||
from novaclient.v1_1 import flavors
|
||||
from novaclient.v1_1 import images
|
||||
from novaclient.v1_1 import keypairs
|
||||
from novaclient.v1_1 import servers
|
||||
from novaclient.v1_1 import zones
|
||||
|
||||
@ -27,6 +28,9 @@ class Client(object):
|
||||
self.flavors = flavors.FlavorManager(self)
|
||||
self.images = images.ImageManager(self)
|
||||
self.servers = servers.ServerManager(self)
|
||||
|
||||
# extensions
|
||||
self.keypairs = keypairs.KeypairManager(self)
|
||||
self.zones = zones.ZoneManager(self)
|
||||
|
||||
self.client = client.HTTPClient(username,
|
||||
|
63
novaclient/v1_1/keypairs.py
Normal file
63
novaclient/v1_1/keypairs.py
Normal file
@ -0,0 +1,63 @@
|
||||
# Copyright 2011 OpenStack LLC.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
"""
|
||||
Keypair interface (1.1 extension).
|
||||
"""
|
||||
|
||||
from novaclient import base
|
||||
|
||||
|
||||
class Keypair(base.Resource):
|
||||
"""
|
||||
A keypair is a ssh key that can be injected into a server on launch.
|
||||
"""
|
||||
|
||||
def __repr__(self):
|
||||
return "<Keypair: %s>" % self.uuid
|
||||
|
||||
@property
|
||||
def uuid(self):
|
||||
return self.key_name
|
||||
|
||||
def delete(self):
|
||||
self.manager.delete(self)
|
||||
|
||||
|
||||
class KeypairManager(base.ManagerWithFind):
|
||||
resource_class = Keypair
|
||||
|
||||
def create(self, key_name):
|
||||
"""
|
||||
Create a keypair
|
||||
|
||||
:param key_name: name for the keypair to create
|
||||
"""
|
||||
body = {'keypair': {'key_name': key_name}}
|
||||
return self._create('/extras/keypairs', body, 'keypair')
|
||||
|
||||
def delete(self, key):
|
||||
"""
|
||||
Delete a keypair
|
||||
|
||||
:param key: The :class:`Keypair` (or its ID) to delete.
|
||||
"""
|
||||
self._delete('/extras/keypairs/%s' % (base.getid(key)))
|
||||
|
||||
def list(self):
|
||||
"""
|
||||
Get a list of keypairs.
|
||||
"""
|
||||
return self._list('/extras/keypairs', 'keypairs')
|
@ -373,3 +373,21 @@ class FakeHTTPClient(base_client.HTTPClient):
|
||||
|
||||
def delete_zones_1(self, **kw):
|
||||
return (202, None)
|
||||
|
||||
#
|
||||
# Keypairs
|
||||
#
|
||||
def get_extras_keypairs(self, *kw):
|
||||
return (200, {"keypairs": [
|
||||
{'fingerprint': 'FAKE_KEYPAIR', 'key_name': 'test'}
|
||||
]})
|
||||
|
||||
def delete_extras_keypairs_test(self, **kw):
|
||||
return (202, None)
|
||||
|
||||
def post_extras_keypairs(self, body, **kw):
|
||||
assert body.keys() == ['keypair']
|
||||
fakes.assert_has_keys(body['keypair'],
|
||||
required=['key_name'])
|
||||
r = {'keypair': self.get_extras_keypairs()[1]['keypairs'][0]}
|
||||
return (202, r)
|
||||
|
29
tests/v1_1/test_keypairs.py
Normal file
29
tests/v1_1/test_keypairs.py
Normal file
@ -0,0 +1,29 @@
|
||||
from novaclient import exceptions
|
||||
from novaclient.v1_1 import keypairs
|
||||
from tests.v1_1 import fakes
|
||||
from tests import utils
|
||||
|
||||
|
||||
cs = fakes.FakeClient()
|
||||
|
||||
|
||||
class KeypairsTest(utils.TestCase):
|
||||
def test_list_keypairs(self):
|
||||
kps = cs.keypairs.list()
|
||||
cs.assert_called('GET', '/extras/keypairs')
|
||||
[self.assertTrue(isinstance(kp, keypairs.Keypair)) for kp in kps]
|
||||
|
||||
def test_delete_keypair(self):
|
||||
kp = cs.keypairs.list()[0]
|
||||
kp.delete()
|
||||
cs.assert_called('DELETE', '/extras/keypairs/test')
|
||||
cs.keypairs.delete('test')
|
||||
cs.assert_called('DELETE', '/extras/keypairs/test')
|
||||
cs.keypairs.delete(kp)
|
||||
cs.assert_called('DELETE', '/extras/keypairs/test')
|
||||
|
||||
def test_create_keypair(self):
|
||||
kp = cs.keypairs.create("foo")
|
||||
cs.assert_called('POST', '/extras/keypairs')
|
||||
self.assertTrue(isinstance(kp, keypairs.Keypair))
|
||||
|
Loading…
x
Reference in New Issue
Block a user