root / snf-cyclades-app / synnefo / api / tests / networks.py @ b9364b15
History | View | Annotate | Download (15 kB)
1 | 5b8a9240 | Christos Stavrakakis | # Copyright 2012-2013 GRNET S.A. All rights reserved.
|
---|---|---|---|
2 | 5b8a9240 | Christos Stavrakakis | #
|
3 | 5b8a9240 | Christos Stavrakakis | # Redistribution and use in source and binary forms, with or
|
4 | 5b8a9240 | Christos Stavrakakis | # without modification, are permitted provided that the following
|
5 | 5b8a9240 | Christos Stavrakakis | # conditions are met:
|
6 | 5b8a9240 | Christos Stavrakakis | #
|
7 | 5b8a9240 | Christos Stavrakakis | # 1. Redistributions of source code must retain the above
|
8 | 5b8a9240 | Christos Stavrakakis | # copyright notice, this list of conditions and the following
|
9 | 5b8a9240 | Christos Stavrakakis | # disclaimer.
|
10 | 5b8a9240 | Christos Stavrakakis | #
|
11 | 5b8a9240 | Christos Stavrakakis | # 2. Redistributions in binary form must reproduce the above
|
12 | 5b8a9240 | Christos Stavrakakis | # copyright notice, this list of conditions and the following
|
13 | 5b8a9240 | Christos Stavrakakis | # disclaimer in the documentation and/or other materials
|
14 | 5b8a9240 | Christos Stavrakakis | # provided with the distribution.
|
15 | 5b8a9240 | Christos Stavrakakis | #
|
16 | 5b8a9240 | Christos Stavrakakis | # THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
|
17 | 5b8a9240 | Christos Stavrakakis | # OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
18 | 5b8a9240 | Christos Stavrakakis | # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
19 | 5b8a9240 | Christos Stavrakakis | # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
|
20 | 5b8a9240 | Christos Stavrakakis | # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
21 | 5b8a9240 | Christos Stavrakakis | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
22 | 5b8a9240 | Christos Stavrakakis | # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
23 | 5b8a9240 | Christos Stavrakakis | # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
24 | 5b8a9240 | Christos Stavrakakis | # AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
25 | 5b8a9240 | Christos Stavrakakis | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
26 | 5b8a9240 | Christos Stavrakakis | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
27 | 5b8a9240 | Christos Stavrakakis | # POSSIBILITY OF SUCH DAMAGE.
|
28 | 5b8a9240 | Christos Stavrakakis | #
|
29 | 5b8a9240 | Christos Stavrakakis | # The views and conclusions contained in the software and
|
30 | 5b8a9240 | Christos Stavrakakis | # documentation are those of the authors and should not be
|
31 | 5b8a9240 | Christos Stavrakakis | # interpreted as representing official policies, either expressed
|
32 | 5b8a9240 | Christos Stavrakakis | # or implied, of GRNET S.A.
|
33 | 5b8a9240 | Christos Stavrakakis | |
34 | 5b8a9240 | Christos Stavrakakis | from snf_django.utils.testing import (BaseAPITest, override_settings) |
35 | 0baa1e3d | Buildbot | from django.utils import simplejson as json |
36 | 7d2fdab9 | Georgios D. Tsoukalas | from synnefo.cyclades_settings import cyclades_services |
37 | 7d2fdab9 | Georgios D. Tsoukalas | from synnefo.lib.services import get_service_path |
38 | 7d2fdab9 | Georgios D. Tsoukalas | from synnefo.lib import join_urls |
39 | 0baa1e3d | Buildbot | import synnefo.db.models_factory as dbmf |
40 | 5b8a9240 | Christos Stavrakakis | from synnefo.db.models import Network |
41 | 5b8a9240 | Christos Stavrakakis | from django.conf import settings |
42 | 7d2fdab9 | Georgios D. Tsoukalas | |
43 | 0baa1e3d | Buildbot | COMPUTE_URL = get_service_path(cyclades_services, 'compute',
|
44 | 5b8a9240 | Christos Stavrakakis | version='v2.0')
|
45 | 0baa1e3d | Buildbot | NETWORKS_URL = join_urls(COMPUTE_URL, "networks/")
|
46 | 2cd55da6 | Christos Stavrakakis | |
47 | 7d2fdab9 | Georgios D. Tsoukalas | |
48 | 0baa1e3d | Buildbot | class NetworkTest(BaseAPITest): |
49 | 0baa1e3d | Buildbot | def test_list_networks(self): |
50 | 0baa1e3d | Buildbot | response = self.get(NETWORKS_URL)
|
51 | 0baa1e3d | Buildbot | self.assertSuccess(response)
|
52 | 0baa1e3d | Buildbot | networks = json.loads(response.content) |
53 | 0baa1e3d | Buildbot | self.assertEqual(networks, {"networks": []}) |
54 | 039e3e61 | Christos Stavrakakis | |
55 | 5b8a9240 | Christos Stavrakakis | def test_invalid_create(self): |
56 | 5b8a9240 | Christos Stavrakakis | """Test invalid flavor"""
|
57 | 5b8a9240 | Christos Stavrakakis | request = {'network': {}}
|
58 | 5b8a9240 | Christos Stavrakakis | response = self.post(NETWORKS_URL, "user1", params=json.dumps(request)) |
59 | 5b8a9240 | Christos Stavrakakis | self.assertBadRequest(response)
|
60 | 5b8a9240 | Christos Stavrakakis | request = {'network': {"type": "foo"}} |
61 | 5b8a9240 | Christos Stavrakakis | response = self.post(NETWORKS_URL, "user1", params=json.dumps(request)) |
62 | 5b8a9240 | Christos Stavrakakis | self.assertBadRequest(response)
|
63 | 5b8a9240 | Christos Stavrakakis | request = {'network': {"type": "MAC_FILTERED"}} |
64 | 5b8a9240 | Christos Stavrakakis | with override_settings(settings,
|
65 | 5b8a9240 | Christos Stavrakakis | API_ENABLED_NETWORK_FLAVORS=["CUSTOM"]):
|
66 | 5b8a9240 | Christos Stavrakakis | response = self.post(NETWORKS_URL, "user1", |
67 | 5b8a9240 | Christos Stavrakakis | params=json.dumps(request)) |
68 | 5b8a9240 | Christos Stavrakakis | self.assertEqual(response.status_code, 403) |
69 | 5b8a9240 | Christos Stavrakakis | self.assertEqual(len(Network.objects.filter(userid='user1')), 0) |
70 | 5b8a9240 | Christos Stavrakakis | |
71 | 5b8a9240 | Christos Stavrakakis | def test_create(self): |
72 | 039e3e61 | Christos Stavrakakis | request = { |
73 | 0baa1e3d | Buildbot | "network": {
|
74 | 0baa1e3d | Buildbot | "name": "sample_network", |
75 | 0baa1e3d | Buildbot | "type": "MAC_FILTERED" |
76 | 5b8a9240 | Christos Stavrakakis | } |
77 | 4e1133ab | Christos Stavrakakis | } |
78 | 0baa1e3d | Buildbot | response = self.post(NETWORKS_URL, params=json.dumps(request))
|
79 | 0baa1e3d | Buildbot | code = response.status_code |
80 | 5b8a9240 | Christos Stavrakakis | self.assertEqual(code, 503) # No MAC prefix pool |
81 | 5b8a9240 | Christos Stavrakakis | dbmf.MacPrefixPoolTableFactory() |
82 | 5b8a9240 | Christos Stavrakakis | response = self.post(NETWORKS_URL, params=json.dumps(request))
|
83 | 5b8a9240 | Christos Stavrakakis | code = response.status_code |
84 | 5b8a9240 | Christos Stavrakakis | self.assertEqual(code, 201) |
85 | 5b8a9240 | Christos Stavrakakis | res = json.loads(response.content) |
86 | 5b8a9240 | Christos Stavrakakis | self.assertEqual(res["network"]["name"], "sample_network") |
87 | 5b8a9240 | Christos Stavrakakis | |
88 | 5b8a9240 | Christos Stavrakakis | # TEST QUOTAS!!!
|
89 | 5b8a9240 | Christos Stavrakakis | name, args, kwargs =\ |
90 | 5b8a9240 | Christos Stavrakakis | self.mocked_quotaholder.issue_one_commission.mock_calls[0] |
91 | 5b8a9240 | Christos Stavrakakis | commission_resources = args[3]
|
92 | 5b8a9240 | Christos Stavrakakis | self.assertEqual(commission_resources, {"cyclades.network.private": 1}) |
93 | 5b8a9240 | Christos Stavrakakis | name, args, kwargs =\ |
94 | 5b8a9240 | Christos Stavrakakis | self.mocked_quotaholder.resolve_commissions.mock_calls[0] |
95 | 5b8a9240 | Christos Stavrakakis | serial = Network.objects.get().serial.serial |
96 | 5b8a9240 | Christos Stavrakakis | accepted_serials = args[1]
|
97 | 5b8a9240 | Christos Stavrakakis | rejected_serials = args[2]
|
98 | 5b8a9240 | Christos Stavrakakis | self.assertEqual(accepted_serials, [serial])
|
99 | 5b8a9240 | Christos Stavrakakis | self.assertEqual(rejected_serials, [])
|
100 | 5b8a9240 | Christos Stavrakakis | |
101 | 5b8a9240 | Christos Stavrakakis | # test no name
|
102 | 5b8a9240 | Christos Stavrakakis | request["network"].pop("name") |
103 | 5b8a9240 | Christos Stavrakakis | response = self.post(NETWORKS_URL, params=json.dumps(request))
|
104 | 5b8a9240 | Christos Stavrakakis | code = response.status_code |
105 | 0baa1e3d | Buildbot | self.assertEqual(code, 201) |
106 | 5b8a9240 | Christos Stavrakakis | res = json.loads(response.content) |
107 | 5b8a9240 | Christos Stavrakakis | self.assertEqual(res["network"]["name"], "") |
108 | 039e3e61 | Christos Stavrakakis | |
109 | 0baa1e3d | Buildbot | def test_get_unfound_network(self): |
110 | 0baa1e3d | Buildbot | url = join_urls(NETWORKS_URL, "123")
|
111 | 0baa1e3d | Buildbot | response = self.get(url)
|
112 | 0baa1e3d | Buildbot | self.assertItemNotFound(response)
|
113 | 039e3e61 | Christos Stavrakakis | |
114 | 0baa1e3d | Buildbot | def test_get_network(self): |
115 | 5b8a9240 | Christos Stavrakakis | test_net = dbmf.NetworkFactory() |
116 | 0baa1e3d | Buildbot | url = join_urls(NETWORKS_URL, str(test_net.id))
|
117 | 0baa1e3d | Buildbot | response = self.get(url, user=test_net.userid)
|
118 | 0baa1e3d | Buildbot | # validate response
|
119 | 0baa1e3d | Buildbot | res = json.loads(response.content) |
120 | 0baa1e3d | Buildbot | net = res['network']
|
121 | 0baa1e3d | Buildbot | keys = net.keys() |
122 | 0baa1e3d | Buildbot | must_send = set(["status", "subnets", "name", "admin_state_up", |
123 | 0baa1e3d | Buildbot | "tenant_id", "id"]) |
124 | 0baa1e3d | Buildbot | self.assertEqual(set(keys).issuperset(must_send), True) |
125 | 0baa1e3d | Buildbot | self.assertEqual(response.status_code, 200) |
126 | 0baa1e3d | Buildbot | |
127 | 0baa1e3d | Buildbot | def test_get_deleted_network(self): |
128 | 5b8a9240 | Christos Stavrakakis | test_net = dbmf.NetworkFactory(flavor="CUSTOM")
|
129 | 0baa1e3d | Buildbot | url = join_urls(NETWORKS_URL, str(test_net.id))
|
130 | 0baa1e3d | Buildbot | self.delete(url, user=test_net.userid)
|
131 | 0baa1e3d | Buildbot | response = self.get(url, user=test_net.userid)
|
132 | 5b8a9240 | Christos Stavrakakis | self.assertEqual(response.status_code, 200) |
133 | 039e3e61 | Christos Stavrakakis | |
134 | 0baa1e3d | Buildbot | def test_delete_unfound_network(self): |
135 | 0baa1e3d | Buildbot | url = join_urls(NETWORKS_URL, "123")
|
136 | 0baa1e3d | Buildbot | response = self.delete(url)
|
137 | 0baa1e3d | Buildbot | self.assertItemNotFound(response)
|
138 | 039e3e61 | Christos Stavrakakis | |
139 | 0baa1e3d | Buildbot | def test_delete_network(self): |
140 | 4911365b | Christos Stavrakakis | test_net = dbmf.NetworkFactory(flavor="CUSTOM")
|
141 | 5b8a9240 | Christos Stavrakakis | dbmf.IPv4SubnetFactory(network=test_net) |
142 | 0baa1e3d | Buildbot | url = join_urls(NETWORKS_URL, str(test_net.id))
|
143 | 0baa1e3d | Buildbot | response = self.delete(url, user=test_net.userid)
|
144 | 0baa1e3d | Buildbot | self.assertEqual(response.status_code, 204) |
145 | 5b8a9240 | Christos Stavrakakis | # But not the public network!!
|
146 | 5b8a9240 | Christos Stavrakakis | test_net.public = True
|
147 | 5b8a9240 | Christos Stavrakakis | test_net.save() |
148 | 5b8a9240 | Christos Stavrakakis | response = self.delete(url, user=test_net.userid)
|
149 | 5b8a9240 | Christos Stavrakakis | self.assertFault(response, 403, 'forbidden') |
150 | d368ec0c | Christos Stavrakakis | |
151 | 0baa1e3d | Buildbot | def test_delete_network_in_use(self): |
152 | 5b8a9240 | Christos Stavrakakis | test_net = dbmf.NetworkFactory() |
153 | 5b8a9240 | Christos Stavrakakis | dbmf.NetworkInterfaceFactory(network=test_net) |
154 | 5b8a9240 | Christos Stavrakakis | url = join_urls(NETWORKS_URL, str(test_net.id))
|
155 | 5b8a9240 | Christos Stavrakakis | response = self.delete(url, user=test_net.userid)
|
156 | 5b8a9240 | Christos Stavrakakis | self.assertEqual(response.status_code, 409) |
157 | 5b8a9240 | Christos Stavrakakis | |
158 | 5b8a9240 | Christos Stavrakakis | def test_delete_network_with_floating_ips(self): |
159 | 5b8a9240 | Christos Stavrakakis | test_net = dbmf.NetworkFactory() |
160 | 5b8a9240 | Christos Stavrakakis | dbmf.IPv4AddressFactory(network=test_net, floating_ip=True, nic=None) |
161 | 0baa1e3d | Buildbot | url = join_urls(NETWORKS_URL, str(test_net.id))
|
162 | 0baa1e3d | Buildbot | response = self.delete(url, user=test_net.userid)
|
163 | 0baa1e3d | Buildbot | self.assertEqual(response.status_code, 409) |
164 | 9ae613af | Christos Stavrakakis | |
165 | 0baa1e3d | Buildbot | def test_put_unfound_network(self): |
166 | 0baa1e3d | Buildbot | url = join_urls(NETWORKS_URL, "123")
|
167 | 0baa1e3d | Buildbot | response = self.delete(url)
|
168 | 0baa1e3d | Buildbot | self.assertItemNotFound(response)
|
169 | 9ae613af | Christos Stavrakakis | |
170 | 0baa1e3d | Buildbot | def test_put_network_wrong_data(self): |
171 | 5b8a9240 | Christos Stavrakakis | test_net = dbmf.NetworkFactory() |
172 | 0baa1e3d | Buildbot | url = join_urls(NETWORKS_URL, str(test_net.id))
|
173 | 9ae613af | Christos Stavrakakis | request = { |
174 | 0baa1e3d | Buildbot | "network": {
|
175 | 0baa1e3d | Buildbot | "wrong_field": "new_name"} |
176 | 9ae613af | Christos Stavrakakis | } |
177 | 0baa1e3d | Buildbot | response = self.put(url, params=json.dumps(request),
|
178 | 0baa1e3d | Buildbot | user=test_net.userid) |
179 | a3accf03 | Georgios D. Tsoukalas | self.assertEqual(response.status_code, 400) |
180 | 16437e4d | Kostas Papadimitriou | |
181 | 0baa1e3d | Buildbot | def test_put_no_data(self): |
182 | 5b8a9240 | Christos Stavrakakis | test_net = dbmf.NetworkFactory() |
183 | 0baa1e3d | Buildbot | url = join_urls(NETWORKS_URL, str(test_net.id))
|
184 | 0baa1e3d | Buildbot | response = self.put(url, params="", user=test_net.userid) |
185 | 0baa1e3d | Buildbot | self.assertEqual(response.status_code, 400) |
186 | 5b8a9240 | Christos Stavrakakis | |
187 | 5b8a9240 | Christos Stavrakakis | def test_rename_network(self): |
188 | 5b8a9240 | Christos Stavrakakis | test_net = dbmf.NetworkFactory(name="foo")
|
189 | 5b8a9240 | Christos Stavrakakis | url = join_urls(NETWORKS_URL, str(test_net.id))
|
190 | 5b8a9240 | Christos Stavrakakis | request = {'network': {'name': "new_name"}} |
191 | 5b8a9240 | Christos Stavrakakis | response = self.put(url, test_net.userid, json.dumps(request), 'json') |
192 | 5b8a9240 | Christos Stavrakakis | self.assertEqual(response.status_code, 200) |
193 | 5b8a9240 | Christos Stavrakakis | self.assertEqual(Network.objects.get(id=test_net.id).name, "new_name") |
194 | 5b8a9240 | Christos Stavrakakis | # test if server deleted
|
195 | 5b8a9240 | Christos Stavrakakis | test_net.deleted = True
|
196 | 5b8a9240 | Christos Stavrakakis | test_net.save() |
197 | 5b8a9240 | Christos Stavrakakis | response = self.put(url, test_net.userid, json.dumps(request), 'json') |
198 | 5b8a9240 | Christos Stavrakakis | self.assertBadRequest(response)
|
199 | 5b8a9240 | Christos Stavrakakis | test_net.deleted = False
|
200 | 5b8a9240 | Christos Stavrakakis | test_net.public = True
|
201 | 5b8a9240 | Christos Stavrakakis | test_net.save() |
202 | 5b8a9240 | Christos Stavrakakis | response = self.put(url, test_net.userid, json.dumps(request), 'json') |
203 | 5b8a9240 | Christos Stavrakakis | self.assertFault(response, 403, 'forbidden') |
204 | 5b8a9240 | Christos Stavrakakis | |
205 | 5b8a9240 | Christos Stavrakakis | def test_method_not_allowed(self, *args): |
206 | 5b8a9240 | Christos Stavrakakis | # /networks/ allows only POST, GET
|
207 | 5b8a9240 | Christos Stavrakakis | response = self.put(NETWORKS_URL, '', '') |
208 | 5b8a9240 | Christos Stavrakakis | self.assertMethodNotAllowed(response)
|
209 | 5b8a9240 | Christos Stavrakakis | response = self.delete(NETWORKS_URL)
|
210 | 5b8a9240 | Christos Stavrakakis | self.assertMethodNotAllowed(response)
|
211 | 5b8a9240 | Christos Stavrakakis | |
212 | 5b8a9240 | Christos Stavrakakis | # /networks/<srvid>/ allows only GET, PUT, DELETE
|
213 | 5b8a9240 | Christos Stavrakakis | url = join_urls(NETWORKS_URL, "42")
|
214 | 5b8a9240 | Christos Stavrakakis | response = self.post(url)
|
215 | 5b8a9240 | Christos Stavrakakis | self.assertMethodNotAllowed(response)
|
216 | 5b8a9240 | Christos Stavrakakis | |
217 | 5b8a9240 | Christos Stavrakakis | |
218 | 5b8a9240 | Christos Stavrakakis | #class NetworkNICsAPITest(BaseAPITest):
|
219 | 5b8a9240 | Christos Stavrakakis | # def test_get_network_building_nics(self, mrapi):
|
220 | 5b8a9240 | Christos Stavrakakis | # net = dbmf.NetworkFactory()
|
221 | 5b8a9240 | Christos Stavrakakis | # machine = dbmf.VirtualMachineFactory(userid=net.userid)
|
222 | 5b8a9240 | Christos Stavrakakis | # dbmf.NetworkInterfaceFactory(network=net, machine=machine,
|
223 | 5b8a9240 | Christos Stavrakakis | # state="BUILDING")
|
224 | 5b8a9240 | Christos Stavrakakis | # response = self.myget('networks/%d' % net.id, net.userid)
|
225 | 5b8a9240 | Christos Stavrakakis | # self.assertSuccess(response)
|
226 | 5b8a9240 | Christos Stavrakakis | # api_net = json.loads(response.content)["network"]
|
227 | 5b8a9240 | Christos Stavrakakis | # self.assertEqual(len(api_net["attachments"]), 0)
|
228 | 5b8a9240 | Christos Stavrakakis | #
|
229 | 5b8a9240 | Christos Stavrakakis | #
|
230 | 5b8a9240 | Christos Stavrakakis | # def test_add_nic(self, mrapi):
|
231 | 5b8a9240 | Christos Stavrakakis | # user = 'userr'
|
232 | 5b8a9240 | Christos Stavrakakis | # vm = dbmf.VirtualMachineFactory(name='yo', userid=user)
|
233 | 5b8a9240 | Christos Stavrakakis | # net = dbmf.NetworkFactory(state='ACTIVE', userid=user)
|
234 | 5b8a9240 | Christos Stavrakakis | # mrapi().ModifyInstance.return_value = 1
|
235 | 5b8a9240 | Christos Stavrakakis | # request = {'add': {'serverRef': vm.id}}
|
236 | 5b8a9240 | Christos Stavrakakis | # response = self.mypost('networks/%d/action' % net.id,
|
237 | 5b8a9240 | Christos Stavrakakis | # net.userid, json.dumps(request), 'json')
|
238 | 5b8a9240 | Christos Stavrakakis | # self.assertEqual(response.status_code, 202)
|
239 | 5b8a9240 | Christos Stavrakakis | #
|
240 | 5b8a9240 | Christos Stavrakakis | # def test_add_nic_to_deleted_network(self, mrapi):
|
241 | 5b8a9240 | Christos Stavrakakis | # user = 'userr'
|
242 | 5b8a9240 | Christos Stavrakakis | # vm = dbmf.VirtualMachineFactory(name='yo', userid=user,
|
243 | 5b8a9240 | Christos Stavrakakis | # operstate="ACTIVE")
|
244 | 5b8a9240 | Christos Stavrakakis | # net = dbmf.NetworkFactory(state='ACTIVE', userid=user,
|
245 | 5b8a9240 | Christos Stavrakakis | # deleted=True)
|
246 | 5b8a9240 | Christos Stavrakakis | # request = {'add': {'serverRef': vm.id}}
|
247 | 5b8a9240 | Christos Stavrakakis | # response = self.mypost('networks/%d/action' % net.id,
|
248 | 5b8a9240 | Christos Stavrakakis | # net.userid, json.dumps(request), 'json')
|
249 | 5b8a9240 | Christos Stavrakakis | # self.assertBadRequest(response)
|
250 | 5b8a9240 | Christos Stavrakakis | # self.assertFalse(mrapi.called)
|
251 | 5b8a9240 | Christos Stavrakakis | #
|
252 | 5b8a9240 | Christos Stavrakakis | # def test_add_nic_to_public_network(self, mrapi):
|
253 | 5b8a9240 | Christos Stavrakakis | # user = 'userr'
|
254 | 5b8a9240 | Christos Stavrakakis | # vm = dbmf.VirtualMachineFactory(name='yo', userid=user)
|
255 | 5b8a9240 | Christos Stavrakakis | # net = dbmf.NetworkFactory(state='ACTIVE', userid=user, public=True)
|
256 | 5b8a9240 | Christos Stavrakakis | # request = {'add': {'serverRef': vm.id}}
|
257 | 5b8a9240 | Christos Stavrakakis | # response = self.mypost('networks/%d/action' % net.id,
|
258 | 5b8a9240 | Christos Stavrakakis | # net.userid, json.dumps(request), 'json')
|
259 | 5b8a9240 | Christos Stavrakakis | # self.assertFault(response, 403, 'forbidden')
|
260 | 5b8a9240 | Christos Stavrakakis | # self.assertFalse(mrapi.called)
|
261 | 5b8a9240 | Christos Stavrakakis | #
|
262 | 5b8a9240 | Christos Stavrakakis | # def test_add_nic_malformed_1(self, mrapi):
|
263 | 5b8a9240 | Christos Stavrakakis | # user = 'userr'
|
264 | 5b8a9240 | Christos Stavrakakis | # vm = dbmf.VirtualMachineFactory(name='yo', userid=user)
|
265 | 5b8a9240 | Christos Stavrakakis | # net = dbmf.NetworkFactory(state='ACTIVE', userid=user)
|
266 | 5b8a9240 | Christos Stavrakakis | # request = {'add': {'serveRef': vm.id}}
|
267 | 5b8a9240 | Christos Stavrakakis | # response = self.mypost('networks/%d/action' % net.id,
|
268 | 5b8a9240 | Christos Stavrakakis | # net.userid, json.dumps(request), 'json')
|
269 | 5b8a9240 | Christos Stavrakakis | # self.assertBadRequest(response)
|
270 | 5b8a9240 | Christos Stavrakakis | # self.assertFalse(mrapi.called)
|
271 | 5b8a9240 | Christos Stavrakakis | #
|
272 | 5b8a9240 | Christos Stavrakakis | # def test_add_nic_malformed_2(self, mrapi):
|
273 | 5b8a9240 | Christos Stavrakakis | # user = 'userr'
|
274 | 5b8a9240 | Christos Stavrakakis | # vm = dbmf.VirtualMachineFactory(name='yo', userid=user)
|
275 | 5b8a9240 | Christos Stavrakakis | # net = dbmf.NetworkFactory(state='ACTIVE', userid=user)
|
276 | 5b8a9240 | Christos Stavrakakis | # request = {'add': {'serveRef': [vm.id, 22]}}
|
277 | 5b8a9240 | Christos Stavrakakis | # response = self.mypost('networks/%d/action' % net.id,
|
278 | 5b8a9240 | Christos Stavrakakis | # net.userid, json.dumps(request), 'json')
|
279 | 5b8a9240 | Christos Stavrakakis | # self.assertBadRequest(response)
|
280 | 5b8a9240 | Christos Stavrakakis | # self.assertFalse(mrapi.called)
|
281 | 5b8a9240 | Christos Stavrakakis | #
|
282 | 5b8a9240 | Christos Stavrakakis | # def test_add_nic_not_active(self, mrapi):
|
283 | 5b8a9240 | Christos Stavrakakis | # """Test connecting VM to non-active network"""
|
284 | 5b8a9240 | Christos Stavrakakis | # user = 'dummy'
|
285 | 5b8a9240 | Christos Stavrakakis | # vm = dbmf.VirtualMachineFactory(name='yo', userid=user)
|
286 | 5b8a9240 | Christos Stavrakakis | # net = dbmf.NetworkFactory(state='PENDING', subnet='10.0.0.0/31',
|
287 | 5b8a9240 | Christos Stavrakakis | # userid=user)
|
288 | 5b8a9240 | Christos Stavrakakis | # request = {'add': {'serverRef': vm.id}}
|
289 | 5b8a9240 | Christos Stavrakakis | # response = self.mypost('networks/%d/action' % net.id,
|
290 | 5b8a9240 | Christos Stavrakakis | # net.userid, json.dumps(request), 'json')
|
291 | 5b8a9240 | Christos Stavrakakis | # # Test that returns BuildInProgress
|
292 | 5b8a9240 | Christos Stavrakakis | # self.assertEqual(response.status_code, 409)
|
293 | 5b8a9240 | Christos Stavrakakis | # self.assertFalse(mrapi.called)
|
294 | 5b8a9240 | Christos Stavrakakis | #
|
295 | 5b8a9240 | Christos Stavrakakis | # def test_add_nic_full_network(self, mrapi):
|
296 | 5b8a9240 | Christos Stavrakakis | # """Test connecting VM to a full network"""
|
297 | 5b8a9240 | Christos Stavrakakis | # user = 'userr'
|
298 | 5b8a9240 | Christos Stavrakakis | # vm = dbmf.VirtualMachineFactory(name='yo', userid=user,
|
299 | 5b8a9240 | Christos Stavrakakis | # operstate="STARTED")
|
300 | 5b8a9240 | Christos Stavrakakis | # net = dbmf.NetworkFactory(state='ACTIVE', subnet='10.0.0.0/30',
|
301 | 5b8a9240 | Christos Stavrakakis | # userid=user, dhcp=True)
|
302 | 5b8a9240 | Christos Stavrakakis | # pool = net.get_pool()
|
303 | 5b8a9240 | Christos Stavrakakis | # while not pool.empty():
|
304 | 5b8a9240 | Christos Stavrakakis | # pool.get()
|
305 | 5b8a9240 | Christos Stavrakakis | # pool.save()
|
306 | 5b8a9240 | Christos Stavrakakis | # pool = net.get_pool()
|
307 | 5b8a9240 | Christos Stavrakakis | # self.assertTrue(pool.empty())
|
308 | 5b8a9240 | Christos Stavrakakis | # request = {'add': {'serverRef': vm.id}}
|
309 | 5b8a9240 | Christos Stavrakakis | # response = self.mypost('networks/%d/action' % net.id,
|
310 | 5b8a9240 | Christos Stavrakakis | # net.userid, json.dumps(request), 'json')
|
311 | 5b8a9240 | Christos Stavrakakis | # # Test that returns OverLimit
|
312 | 5b8a9240 | Christos Stavrakakis | # self.assertEqual(response.status_code, 413)
|
313 | 5b8a9240 | Christos Stavrakakis | # self.assertFalse(mrapi.called)
|
314 | 5b8a9240 | Christos Stavrakakis | #
|
315 | 5b8a9240 | Christos Stavrakakis | # def test_remove_nic(self, mrapi):
|
316 | 5b8a9240 | Christos Stavrakakis | # user = 'userr'
|
317 | 5b8a9240 | Christos Stavrakakis | # vm = dbmf.VirtualMachineFactory(name='yo', userid=user,
|
318 | 5b8a9240 | Christos Stavrakakis | # operstate="ACTIVE")
|
319 | 5b8a9240 | Christos Stavrakakis | # net = dbmf.NetworkFactory(state='ACTIVE', userid=user)
|
320 | 5b8a9240 | Christos Stavrakakis | # nic = dbmf.NetworkInterfaceFactory(machine=vm, network=net)
|
321 | 5b8a9240 | Christos Stavrakakis | # mrapi().ModifyInstance.return_value = 1
|
322 | 5b8a9240 | Christos Stavrakakis | # request = {'remove': {'attachment': "%s" % nic.id}}
|
323 | 5b8a9240 | Christos Stavrakakis | # response = self.mypost('networks/%d/action' % net.id,
|
324 | 5b8a9240 | Christos Stavrakakis | # net.userid, json.dumps(request), 'json')
|
325 | 5b8a9240 | Christos Stavrakakis | # self.assertEqual(response.status_code, 202)
|
326 | 5b8a9240 | Christos Stavrakakis | # vm.task = None
|
327 | 5b8a9240 | Christos Stavrakakis | # vm.task_job_id = None
|
328 | 5b8a9240 | Christos Stavrakakis | # vm.save()
|
329 | 5b8a9240 | Christos Stavrakakis | #
|
330 | 5b8a9240 | Christos Stavrakakis | # def test_remove_nic_malformed(self, mrapi):
|
331 | 5b8a9240 | Christos Stavrakakis | # user = 'userr'
|
332 | 5b8a9240 | Christos Stavrakakis | # vm = dbmf.VirtualMachineFactory(name='yo', userid=user)
|
333 | 5b8a9240 | Christos Stavrakakis | # net = dbmf.NetworkFactory(state='ACTIVE', userid=user)
|
334 | 5b8a9240 | Christos Stavrakakis | # nic = dbmf.NetworkInterfaceFactory(machine=vm, network=net)
|
335 | 5b8a9240 | Christos Stavrakakis | # request = {'remove': {'att234achment': '%s' % nic.id}}
|
336 | 5b8a9240 | Christos Stavrakakis | # response = self.mypost('networks/%d/action' % net.id,
|
337 | 5b8a9240 | Christos Stavrakakis | # net.userid, json.dumps(request), 'json')
|
338 | 5b8a9240 | Christos Stavrakakis | # self.assertBadRequest(response)
|
339 | 5b8a9240 | Christos Stavrakakis | #
|
340 | 5b8a9240 | Christos Stavrakakis | # def test_remove_nic_malformed_2(self, mrapi):
|
341 | 5b8a9240 | Christos Stavrakakis | # user = 'userr'
|
342 | 5b8a9240 | Christos Stavrakakis | # vm = dbmf.VirtualMachineFactory(name='yo', userid=user)
|
343 | 5b8a9240 | Christos Stavrakakis | # net = dbmf.NetworkFactory(state='ACTIVE', userid=user)
|
344 | 5b8a9240 | Christos Stavrakakis | # request = {'remove': {'attachment': 'nic-%s' % vm.id}}
|
345 | 5b8a9240 | Christos Stavrakakis | # response = self.mypost('networks/%d/action' % net.id,
|
346 | 5b8a9240 | Christos Stavrakakis | # net.userid, json.dumps(request), 'json')
|
347 | 5b8a9240 | Christos Stavrakakis | # self.assertBadRequest(response) |