27 from __future__
import with_statement
31 from ec2.base.action
import Action, CLMException
32 from ec2.base.test
import TestCase
33 from ec2.error
import InvalidKeyPair, MissingParameter
39 self.cluster_manager.key.user.gen.return_value =
'key data'
40 self.cluster_manager.key.user.get.return_value = {
41 'fingerprint':
'fingerprint data',
46 'Action':
'CreateKeyPair',
47 'KeyName':
'test key pair',
48 }, self.cluster_manager).
execute()
50 self.assertMultiLineEqual(
52 """<?xml version="1.0" encoding="UTF-8"?>
53 <CreateKeyPairResponse xmlns="http://ec2.amazonaws.com/doc/2012-04-01/">
54 <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>
55 <keyName>test key pair</keyName>
56 <keyFingerprint>fingerprint data</keyFingerprint>
57 <keyMaterial>key data</keyMaterial>
58 </CreateKeyPairResponse>
63 with self.assertRaises(MissingParameter):
65 'Action':
'CreateKeyPair',
66 }, self.cluster_manager).
execute()
68 self.cluster_manager.key.user.gen.return_value =
None
71 self.cluster_manager.key.user.gen.side_effect = \
72 CLMException(
'ssh_key_already_exist',
'key.user.gen')
73 with self.assertRaises(InvalidKeyPair.Duplicate):
75 'Action':
'CreateKeyPair',
76 'KeyName':
'test key pair',
77 }, self.cluster_manager).
execute()
80 self.cluster_manager.key.user.delete.return_value =
None
84 'Action':
'DeleteKeyPair',
85 'KeyName':
'test key pair',
86 }, self.cluster_manager).
execute()
88 self.assertMultiLineEqual(
90 """<?xml version="1.0" encoding="UTF-8"?>
91 <DeleteKeyPairResponse xmlns="http://ec2.amazonaws.com/doc/2012-04-01/">
92 <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>
94 </DeleteKeyPairResponse>
99 with self.assertRaises(MissingParameter):
101 'Action':
'DeleteKeyPair',
102 }, self.cluster_manager).
execute()
105 self.cluster_manager.key.user.list.return_value = [
106 {
'name':
'key01',
'fingerprint':
'fp01'},
107 {
'name':
'key02',
'fingerprint':
'fp02'},
112 'Action':
'DescribeKeyPairs',
113 }, self.cluster_manager).
execute()
115 self.assertMultiLineEqual(
117 """<?xml version="1.0" encoding="UTF-8"?>
118 <DescribeKeyPairsResponse xmlns="http://ec2.amazonaws.com/doc/2012-04-01/">
119 <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>
122 <keyName>key01</keyName>
123 <keyFingerprint>fp01</keyFingerprint>
126 <keyName>key02</keyName>
127 <keyFingerprint>fp02</keyFingerprint>
130 </DescribeKeyPairsResponse>
135 self.cluster_manager.key.user.add.return_value =
None
136 self.cluster_manager.key.user.get.return_value = {
137 'fingerprint':
'test fingerprint',
142 'Action':
'ImportKeyPair',
143 'KeyName':
'test key name',
144 'PublicKeyMaterial':
'test key material',
145 }, self.cluster_manager).
execute()
147 self.cluster_manager.key.user.add.assert_called_once_with({
148 'name':
'test key name',
149 'key':
'test key material'
152 self.assertMultiLineEqual(
154 """<?xml version="1.0" encoding="UTF-8"?>
155 <ImportKeyPairResponse xmlns="http://ec2.amazonaws.com/doc/2012-04-01/">
156 <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>
157 <keyName>test key name</keyName>
158 <keyFingerprint>test fingerprint</keyFingerprint>
159 </ImportKeyPairResponse>
164 with self.assertRaises(MissingParameter):
166 'Action':
'ImportKeyPair',
167 }, self.cluster_manager).
execute()
169 with self.assertRaises(MissingParameter):
171 'Action':
'ImportKeyPair',
172 'KeyName':
'test key name'
173 }, self.cluster_manager).
execute()
175 with self.assertRaises(MissingParameter):
177 'Action':
'ImportKeyPair',
178 'PublicKeyMaterial':
'test key material',
179 }, self.cluster_manager).
execute()