27 from __future__
import with_statement
29 from ec2.base.action
import Action
30 from ec2.error
import AuthFailure, UndefinedError
31 from ec2.base.test
import TestCase
37 self.cluster_manager.elasticip.user.request.return_value = {
41 action = Action({
'Action':
'AllocateAddress'}, self.cluster_manager)
42 response = action.execute()
44 self.assertMultiLineEqual(
46 """<?xml version="1.0" encoding="UTF-8"?>
47 <AllocateAddressResponse xmlns="http://ec2.amazonaws.com/doc/2012-03-01/">
48 <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>
49 <publicIp>1.1.0.1</publicIp>
50 <domain>standard</domain>
51 </AllocateAddressResponse>
56 self.cluster_manager.elasticip.user.assign.return_value =
None
57 self.cluster_manager.elasticip.user.list.return_value = [
58 {
'ip_id': 1,
'vm_id': 1,
'ip':
'1.1.0.1'},
59 {
'ip_id': 2,
'vm_id':
None,
'ip':
'1.1.0.2'},
63 'Action':
'AssociateAddress',
65 'PublicIp':
'1.1.0.2',
66 }, self.cluster_manager)
67 response = action.execute()
69 self.assertMultiLineEqual(
71 """<?xml version="1.0" encoding="UTF-8"?>
72 <AssociateAddressResponse xmlns="http://ec2.amazonaws.com/doc/2012-03-01/">
73 <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>
75 </AssociateAddressResponse>
79 with self.assertRaises(AuthFailure):
81 'Action':
'AssociateAddress',
84 }, self.cluster_manager)
85 response = action.execute()
88 self.cluster_manager.elasticip.user.list.return_value = [
89 {
'vm_id': 1,
'ip':
'192.168.0.1'},
90 {
'vm_id':
None,
'ip':
'192.168.0.2'},
93 action = Action({
'Action':
'DescribeAddresses'}, self.cluster_manager)
94 response = action.execute()
96 self.assertMultiLineEqual(
98 """<?xml version="1.0" encoding="UTF-8"?>
99 <DescribeAddressesResponse xmlns="http://ec2.amazonaws.com/doc/2012-03-01/">
100 <requestId>a13c7c2e-4106-459d-a728-9d38bcbab9bf</requestId>
103 <publicIp>192.168.0.1</publicIp>
104 <domain>standard</domain>
105 <instanceId>1</instanceId>
108 <publicIp>192.168.0.2</publicIp>
109 <domain>standard</domain>
110 <instanceId>None</instanceId>
113 </DescribeAddressesResponse>
118 self.cluster_manager.elasticip.user.unassign.return_value =
None
119 self.cluster_manager.elasticip.user.list.return_value = [
120 {
'ip_id': 1,
'vm_id': 1,
'ip':
'1.1.0.1'},
121 {
'ip_id': 2,
'vm_id':
None,
'ip':
'1.1.0.2'},
125 'Action':
'DisassociateAddress',
126 'PublicIp':
'1.1.0.1'
127 }, self.cluster_manager)
128 response = action.execute()
130 self.assertMultiLineEqual(
132 """<?xml version="1.0" encoding="UTF-8"?>
133 <DisassociateAddressResponse xmlns="http://ec2.amazonaws.com/doc/2012-03-01/">
134 <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>
135 <return>true</return>
136 </DisassociateAddressResponse>
140 with self.assertRaises(UndefinedError):
142 'Action':
'DisassociateAddress',
143 'PublicIp':
'1.1.0.2'
144 }, self.cluster_manager).
execute()
146 with self.assertRaises(UndefinedError):
148 'Action':
'DisassociateAddress',
149 'PublicIp':
'1.1.0.3'
150 }, self.cluster_manager).
execute()
153 self.cluster_manager.elasticip.user.list.return_value = [
154 {
'ip_id': 1,
'vm_id': 1,
'ip':
'1.1.0.1'},
155 {
'ip_id': 2,
'vm_id':
None,
'ip':
'1.1.0.2'},
157 self.cluster_manager.elasticip.user.release.return_value = {
163 'Action':
'ReleaseAddress',
164 'PublicIp':
'1.1.0.1'
165 }, self.cluster_manager).
execute()
167 self.assertMultiLineEqual(
169 """<?xml version="1.0" encoding="UTF-8"?>
170 <ReleaseAddressResponse xmlns="http://ec2.amazonaws.com/doc/2012-03-01/">
171 <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>
172 <return>true</return>
173 </ReleaseAddressResponse>
177 with self.assertRaises(AuthFailure):
179 'Action':
'ReleaseAddress',
180 'PublicIp':
'1.1.0.3'
181 }, self.cluster_manager).
execute()