diff options
21 files changed, 215 insertions, 0 deletions
diff --git a/doc/api_samples/os-keypairs/keypairs-get-resp.json b/doc/api_samples/os-keypairs/keypairs-get-resp.json new file mode 100644 index 000000000..85e8ea894 --- /dev/null +++ b/doc/api_samples/os-keypairs/keypairs-get-resp.json @@ -0,0 +1,11 @@ +{ + "keypairs": [ + { + "keypair": { + "fingerprint": "15:b0:f8:b3:f9:48:63:71:cf:7b:5b:38:6d:44:2d:4a", + "name": "keypair-601a2305-4f25-41ed-89c6-2a966fc8027a", + "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC+Eo/RZRngaGTkFs7I62ZjsIlO79KklKbMXi8F+KITD4bVQHHn+kV+4gRgkgCRbdoDqoGfpaDFs877DYX9n4z6FrAIZ4PES8TNKhatifpn9NdQYWA+IkU8CuvlEKGuFpKRi/k7JLos/gHi2hy7QUwgtRvcefvD/vgQZOVw/mGR9Q== Generated by Nova\n" + } + } + ] +}
\ No newline at end of file diff --git a/doc/api_samples/os-keypairs/keypairs-get-resp.xml b/doc/api_samples/os-keypairs/keypairs-get-resp.xml new file mode 100644 index 000000000..a38e3c525 --- /dev/null +++ b/doc/api_samples/os-keypairs/keypairs-get-resp.xml @@ -0,0 +1,9 @@ +<?xml version='1.0' encoding='UTF-8'?> +<keypairs> + <keypair> + <public_key>ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCWdUoGD7qz9kjbLoY2L0S5CdhUS8RvQ1g62OTgvmWE/bEKDLwaTIFEEpN/0huGk/nxvVZ6VOhv1eSKC3o9dZ2NDk0C4sBsrvJ41uWd1hbq72sDGzVEkJ+925CraioSAbMpRK5Ea7UPWbR8laqrY1TsKtcuxiGJ936bOPIXW12h6Q== Generated by Nova +</public_key> + <name>keypair-a4c7d228-218b-4c4c-9d99-62e7878ebb1b</name> + <fingerprint>62:32:23:67:56:ee:6f:51:4c:03:ce:b8:00:f9:41:ff</fingerprint> + </keypair> +</keypairs>
\ No newline at end of file diff --git a/doc/api_samples/os-keypairs/keypairs-import-post-req.json b/doc/api_samples/os-keypairs/keypairs-import-post-req.json new file mode 100644 index 000000000..660efe6fd --- /dev/null +++ b/doc/api_samples/os-keypairs/keypairs-import-post-req.json @@ -0,0 +1,6 @@ +{ + "keypair": { + "name": "keypair-dab428fe-6186-4a14-b3de-92131f76cd39", + "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw== Generated by Nova" + } +}
\ No newline at end of file diff --git a/doc/api_samples/os-keypairs/keypairs-import-post-req.xml b/doc/api_samples/os-keypairs/keypairs-import-post-req.xml new file mode 100644 index 000000000..98a038c30 --- /dev/null +++ b/doc/api_samples/os-keypairs/keypairs-import-post-req.xml @@ -0,0 +1,4 @@ +<keypair> + <name>keypair-96bbe50e-05e1-4d59-9115-4779a3ebcc2e</name> + <public_key>ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw== Generated by Nova</public_key> +</keypair>
\ No newline at end of file diff --git a/doc/api_samples/os-keypairs/keypairs-import-post-resp.json b/doc/api_samples/os-keypairs/keypairs-import-post-resp.json new file mode 100644 index 000000000..56d0ca00e --- /dev/null +++ b/doc/api_samples/os-keypairs/keypairs-import-post-resp.json @@ -0,0 +1,8 @@ +{ + "keypair": { + "fingerprint": "1e:2c:9b:56:79:4b:45:77:f9:ca:7a:98:2c:b0:d5:3c", + "name": "keypair-dab428fe-6186-4a14-b3de-92131f76cd39", + "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw== Generated by Nova", + "user_id": "fake" + } +}
\ No newline at end of file diff --git a/doc/api_samples/os-keypairs/keypairs-import-post-resp.xml b/doc/api_samples/os-keypairs/keypairs-import-post-resp.xml new file mode 100644 index 000000000..be96abc70 --- /dev/null +++ b/doc/api_samples/os-keypairs/keypairs-import-post-resp.xml @@ -0,0 +1,7 @@ +<?xml version='1.0' encoding='UTF-8'?> +<keypair> + <public_key>ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw== Generated by Nova</public_key> + <user_id>fake</user_id> + <name>keypair-96bbe50e-05e1-4d59-9115-4779a3ebcc2e</name> + <fingerprint>1e:2c:9b:56:79:4b:45:77:f9:ca:7a:98:2c:b0:d5:3c</fingerprint> +</keypair>
\ No newline at end of file diff --git a/doc/api_samples/os-keypairs/keypairs-post-req.json b/doc/api_samples/os-keypairs/keypairs-post-req.json new file mode 100644 index 000000000..3ef7dd1f3 --- /dev/null +++ b/doc/api_samples/os-keypairs/keypairs-post-req.json @@ -0,0 +1,5 @@ +{ + "keypair": { + "name": "keypair-7d7c3650-dabe-4eb0-b904-5c464453c043" + } +}
\ No newline at end of file diff --git a/doc/api_samples/os-keypairs/keypairs-post-req.xml b/doc/api_samples/os-keypairs/keypairs-post-req.xml new file mode 100644 index 000000000..4dc4ce483 --- /dev/null +++ b/doc/api_samples/os-keypairs/keypairs-post-req.xml @@ -0,0 +1,3 @@ +<keypair> + <name>keypair-b03122a0-102b-445b-a128-dba267c7cd2a</name> +</keypair>
\ No newline at end of file diff --git a/doc/api_samples/os-keypairs/keypairs-post-resp.json b/doc/api_samples/os-keypairs/keypairs-post-resp.json new file mode 100644 index 000000000..cba62170b --- /dev/null +++ b/doc/api_samples/os-keypairs/keypairs-post-resp.json @@ -0,0 +1,9 @@ +{ + "keypair": { + "fingerprint": "35:9d:d0:c3:4a:80:d3:d8:86:f1:ca:f7:df:c4:f9:d8", + "name": "keypair-7d7c3650-dabe-4eb0-b904-5c464453c043", + "private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIICXAIBAAKBgQC9mC3WZN9UGLxgPBpP7H5jZMc6pKwOoSgre8yun6REFktn/Kz7\nDUt9jaR1UJyRzHxITfCfAIgSxPdGqB/oF1suMyWgu5i0625vavLB5z5kC8Hq3qZJ\n9zJO1poE1kyD+htiTtPWJ88e12xuH2XB/CZN9OpEiF98hAagiOE0EnOS5QIDAQAB\nAoGAE5XO1mDhORy9COvsg+kYPUhB1GsCYxh+v88wG7HeFDKBY6KUc/Kxo6yoGn5T\nTjRjekyi2KoDZHz4VlIzyZPwFS4I1bf3oCunVoAKzgLdmnTtvRNMC5jFOGc2vUgP\n9bSyRj3S1R4ClVk2g0IDeagko/jc8zzLEYuIK+fbkds79YECQQDt3vcevgegnkga\ntF4NsDmmBPRkcSHCqrANP/7vFcBQN3czxeYYWX3DK07alu6GhH1Y4sHbdm616uU0\nll7xbDzxAkEAzAtN2IyftNygV2EGiaGgqLyo/tD9+Vui2qCQplqe4jvWh/5Sparl\nOjmKo+uAW+hLrLVMnHzRWxbWU8hirH5FNQJATO+ZxCK4etXXAnQmG41NCAqANWB2\nB+2HJbH2NcQ2QHvAHUm741JGn/KI/aBlo7KEjFRDWUVUB5ji64BbUwCsMQJBAIku\nLGcjnBf/oLk+XSPZC2eGd2Ph5G5qYmH0Q2vkTx+wtTn3DV+eNsDfgMtWAJVJ5t61\ngU1QSXyhLPVlKpnnxuUCQC+xvvWjWtsLaFtAsZywJiqLxQzHts8XLGZptYJ5tLWV\nrtmYtBcJCN48RrgQHry/xWYeA4K/AFQpXfNPgprQ96Q=\n-----END RSA PRIVATE KEY-----\n", + "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC9mC3WZN9UGLxgPBpP7H5jZMc6pKwOoSgre8yun6REFktn/Kz7DUt9jaR1UJyRzHxITfCfAIgSxPdGqB/oF1suMyWgu5i0625vavLB5z5kC8Hq3qZJ9zJO1poE1kyD+htiTtPWJ88e12xuH2XB/CZN9OpEiF98hAagiOE0EnOS5Q== Generated by Nova\n", + "user_id": "fake" + } +}
\ No newline at end of file diff --git a/doc/api_samples/os-keypairs/keypairs-post-resp.xml b/doc/api_samples/os-keypairs/keypairs-post-resp.xml new file mode 100644 index 000000000..388ce95bd --- /dev/null +++ b/doc/api_samples/os-keypairs/keypairs-post-resp.xml @@ -0,0 +1,24 @@ +<?xml version='1.0' encoding='UTF-8'?> +<keypair> + <public_key>ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDNa8e/Gfe4572GwEDXlLsCqxsMcuUiF8Fr9RSeW30EuWg8Me5HM/rzqaShmzdHZbN5dvGH15H1yMXTUg8cxcLaOU04IQi/g+BHkGzbxV3gCdODWqjF+5928Ljg6x87e5lxxB6WAoyoGuzghaJXikOihRZSzdityb3DlYuYRfaRMw== Generated by Nova +</public_key> + <private_key>-----BEGIN RSA PRIVATE KEY----- +MIICXgIBAAKBgQDNa8e/Gfe4572GwEDXlLsCqxsMcuUiF8Fr9RSeW30EuWg8Me5H +M/rzqaShmzdHZbN5dvGH15H1yMXTUg8cxcLaOU04IQi/g+BHkGzbxV3gCdODWqjF ++5928Ljg6x87e5lxxB6WAoyoGuzghaJXikOihRZSzdityb3DlYuYRfaRMwIDAQAB +AoGBAL67q4zqHJRIQDcE/W/t/jI9E3FcoRoluod12P4sbolbacgyiE7+ma1yv5T6 +HLqjWKCYay05YKI5GE3dbIDHsuHnnhd1S5tE2SNY85as8zC0QT6N8eFexh5/0Px4 +dVl3tXKj+Oaovb0tCKoiPVUHIZTsihNPwYqFS2kMuHnUwthxAkEA99Bw2FIWbgq9 +gj37qNGP5Vm2pmK9xU0aSyG2NJKH77CrERgmqrBT41a97BdsJbzuIaAwi4RJaDqm +AsTFBw312wJBANQ02vVin5NYD4BAfMyCsoNI7pQBCkq6UeK3VAC9ozCBE5BIDqat +VTx2ijbdlfwGqQVM6g773xuuNebgZJrbrYkCQQDV4YXzfe2z7fsf1MVGMBBkn2h/ +9ErbZa9i1ua+OxWt7qnGaDS/Ls5IMQ5cHN8PNx/Dz9D2KSd+GNg9HXz7mLXvAkEA +0GvZYomrEZy8HMs5x+PWUPug19ztrtew9Wv6JYAcd9dOz7b2LN6xiOEkfx7D4PTp +rTsN6AmZ6CYC6vAZ379DgQJAPMZjO9Z9KZ2t2VFu0YgK9LbQ4upbhew7YUmWA5dV +djCVjJ/0AZgQofvvUDe9FZHtSLt6IN5+jsLAi35Q3iQp9g== +-----END RSA PRIVATE KEY----- +</private_key> + <user_id>fake</user_id> + <name>keypair-b03122a0-102b-445b-a128-dba267c7cd2a</name> + <fingerprint>7f:97:1c:83:27:a3:6b:c5:a6:a2:37:90:4c:be:73:86</fingerprint> +</keypair>
\ No newline at end of file diff --git a/nova/tests/integrated/api_samples/os-keypairs/keypairs-get-resp.json.tpl b/nova/tests/integrated/api_samples/os-keypairs/keypairs-get-resp.json.tpl new file mode 100644 index 000000000..29ba63c00 --- /dev/null +++ b/nova/tests/integrated/api_samples/os-keypairs/keypairs-get-resp.json.tpl @@ -0,0 +1,11 @@ +{ + "keypairs": [ + { + "keypair": { + "fingerprint": "%(fingerprint)s", + "name": "%(keypair_name)s", + "public_key": "%(public_key)s" + } + } + ] +} diff --git a/nova/tests/integrated/api_samples/os-keypairs/keypairs-get-resp.xml.tpl b/nova/tests/integrated/api_samples/os-keypairs/keypairs-get-resp.xml.tpl new file mode 100644 index 000000000..493bfa316 --- /dev/null +++ b/nova/tests/integrated/api_samples/os-keypairs/keypairs-get-resp.xml.tpl @@ -0,0 +1,9 @@ +<?xml version='1.0' encoding='UTF-8'?> +<keypairs> + <keypair> + <public_key>%(public_key)s +</public_key> + <name>%(keypair_name)s</name> + <fingerprint>%(fingerprint)s</fingerprint> + </keypair> +</keypairs> diff --git a/nova/tests/integrated/api_samples/os-keypairs/keypairs-import-post-req.json.tpl b/nova/tests/integrated/api_samples/os-keypairs/keypairs-import-post-req.json.tpl new file mode 100644 index 000000000..2301fa05b --- /dev/null +++ b/nova/tests/integrated/api_samples/os-keypairs/keypairs-import-post-req.json.tpl @@ -0,0 +1,6 @@ +{ + "keypair": { + "name": "%(keypair_name)s", + "public_key": "%(public_key)s" + } +} diff --git a/nova/tests/integrated/api_samples/os-keypairs/keypairs-import-post-req.xml.tpl b/nova/tests/integrated/api_samples/os-keypairs/keypairs-import-post-req.xml.tpl new file mode 100644 index 000000000..0516de303 --- /dev/null +++ b/nova/tests/integrated/api_samples/os-keypairs/keypairs-import-post-req.xml.tpl @@ -0,0 +1,4 @@ +<keypair> + <name>%(keypair_name)s</name> + <public_key>%(public_key)s</public_key> +</keypair> diff --git a/nova/tests/integrated/api_samples/os-keypairs/keypairs-import-post-resp.json.tpl b/nova/tests/integrated/api_samples/os-keypairs/keypairs-import-post-resp.json.tpl new file mode 100644 index 000000000..ca7192d5d --- /dev/null +++ b/nova/tests/integrated/api_samples/os-keypairs/keypairs-import-post-resp.json.tpl @@ -0,0 +1,8 @@ +{ + "keypair": { + "fingerprint": "%(fingerprint)s", + "name": "%(keypair_name)s", + "public_key": "%(public_key)s", + "user_id": "fake" + } +} diff --git a/nova/tests/integrated/api_samples/os-keypairs/keypairs-import-post-resp.xml.tpl b/nova/tests/integrated/api_samples/os-keypairs/keypairs-import-post-resp.xml.tpl new file mode 100644 index 000000000..ed2543c10 --- /dev/null +++ b/nova/tests/integrated/api_samples/os-keypairs/keypairs-import-post-resp.xml.tpl @@ -0,0 +1,7 @@ +<?xml version='1.0' encoding='UTF-8'?> +<keypair> + <public_key>%(public_key)s</public_key> + <user_id>fake</user_id> + <name>%(keypair_name)s</name> + <fingerprint>%(fingerprint)s</fingerprint> +</keypair> diff --git a/nova/tests/integrated/api_samples/os-keypairs/keypairs-post-req.json.tpl b/nova/tests/integrated/api_samples/os-keypairs/keypairs-post-req.json.tpl new file mode 100644 index 000000000..68e2f0348 --- /dev/null +++ b/nova/tests/integrated/api_samples/os-keypairs/keypairs-post-req.json.tpl @@ -0,0 +1,5 @@ +{ + "keypair": { + "name": "%(keypair_name)s" + } +} diff --git a/nova/tests/integrated/api_samples/os-keypairs/keypairs-post-req.xml.tpl b/nova/tests/integrated/api_samples/os-keypairs/keypairs-post-req.xml.tpl new file mode 100644 index 000000000..e14935d31 --- /dev/null +++ b/nova/tests/integrated/api_samples/os-keypairs/keypairs-post-req.xml.tpl @@ -0,0 +1,3 @@ +<keypair> + <name>%(keypair_name)s</name> +</keypair> diff --git a/nova/tests/integrated/api_samples/os-keypairs/keypairs-post-resp.json.tpl b/nova/tests/integrated/api_samples/os-keypairs/keypairs-post-resp.json.tpl new file mode 100644 index 000000000..aace6f5cc --- /dev/null +++ b/nova/tests/integrated/api_samples/os-keypairs/keypairs-post-resp.json.tpl @@ -0,0 +1,9 @@ +{ + "keypair": { + "fingerprint": "%(fingerprint)s", + "name": "%(keypair_name)s", + "private_key": "%(private_key)s", + "public_key": "%(public_key)s", + "user_id": "fake" + } +} diff --git a/nova/tests/integrated/api_samples/os-keypairs/keypairs-post-resp.xml.tpl b/nova/tests/integrated/api_samples/os-keypairs/keypairs-post-resp.xml.tpl new file mode 100644 index 000000000..4f041e0c9 --- /dev/null +++ b/nova/tests/integrated/api_samples/os-keypairs/keypairs-post-resp.xml.tpl @@ -0,0 +1,9 @@ +<?xml version='1.0' encoding='UTF-8'?> +<keypair> + <public_key>%(public_key)s +</public_key> + <private_key>%(private_key)s</private_key> + <user_id>fake</user_id> + <name>%(keypair_name)s</name> + <fingerprint>%(fingerprint)s</fingerprint> +</keypair> diff --git a/nova/tests/integrated/test_api_samples.py b/nova/tests/integrated/test_api_samples.py index 487048c92..a1304c55a 100644 --- a/nova/tests/integrated/test_api_samples.py +++ b/nova/tests/integrated/test_api_samples.py @@ -210,6 +210,16 @@ class ApiSampleTestBase(integrated_helpers._IntegratedTestBase): '-[0-9a-f]{4}-[0-9a-f]{12})', 'uuid': '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}' '-[0-9a-f]{4}-[0-9a-f]{12}', + 'private_key': '-----BEGIN RSA PRIVATE KEY-----' + '[a-zA-Z0-9\n/+=]*' + '-----END RSA PRIVATE KEY-----', + 'public_key': 'ssh-rsa[ a-zA-Z0-9/+=]*' + 'Generated by Nova', + 'fingerprint': '([0-9a-f]{2}:){15}[0-9a-f]{2}', +# '[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:' +# '[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:' +# '[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:' +# '[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}', 'host': self._get_host(), 'glance_host': self._get_glance_host(), 'compute_host': self.compute.host, @@ -859,3 +869,51 @@ class FloatingIpsJsonTest(ApiSampleTestBase): class FloatingIpsXmlTest(FloatingIpsJsonTest): ctype = 'xml' + + +class KeyPairsSampleJsonTest(ApiSampleTestBase): + extension_name = "nova.api.openstack.compute.contrib.keypairs.Keypairs" + + def test_keypairs_post(self, public_key=None): + """Get api sample of key pairs post request""" + key_name = 'keypair-' + str(uuid.uuid4()) + response = self._do_post('os-keypairs', 'keypairs-post-req', + {'keypair_name': key_name}) + subs = self._get_regexes() + subs['keypair_name'] = '(%s)' % key_name + self.assertEqual(response.status, 200) + self._verify_response('keypairs-post-resp', subs, response) + # NOTE(maurosr): return the key_name is necessary cause the + # verification returns the label of the last compared information in + # the response, not necessarily the key name. + return key_name + + def test_keypairs_import_key_post(self): + """Get api sample of key pairs post to import user's key""" + key_name = 'keypair-' + str(uuid.uuid4()) + subs = { + 'keypair_name': key_name, + 'public_key': "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGg" + "B4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0l" + "RE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv" + "9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYc" + "pSxsIbECHw== Generated by Nova" + } + response = self._do_post('os-keypairs', 'keypairs-import-post-req', + subs) + subs = self._get_regexes() + subs['keypair_name'] = '(%s)' % key_name + self.assertEqual(response.status, 200) + self._verify_response('keypairs-import-post-resp', subs, response) + + def test_keypairs_get(self): + """Get api sample of key pairs get request""" + key_name = self.test_keypairs_post() + response = self._do_get('os-keypairs') + subs = self._get_regexes() + subs['keypair_name'] = '(%s)' % key_name + return self._verify_response('keypairs-get-resp', subs, response) + + +class KeyPairsSampleXmlTest(KeyPairsSampleJsonTest): + ctype = 'xml' |