Revision b773795c

b/kamaki/clients/__init__.py
320 320
class Client(object):
321 321

  
322 322
    MAX_THREADS = 7
323
    DATE_FORMATS = [
324
        '%a %b %d %H:%M:%S %Y',
325
        '%A, %d-%b-%y %H:%M:%S GMT',
326
        '%a, %d %b %Y %H:%M:%S GMT']
323
    DATE_FORMATS = ['%a %b %d %H:%M:%S %Y', ]
327 324
    LOG_TOKEN = False
328
    LOG_DATA = False
325
    LOG_DATA = True
329 326
    CONNECTION_RETRY_LIMIT = 0
330 327

  
331 328
    def __init__(self, base_url, token):
b/kamaki/clients/livetest/cyclades.py
160 160

  
161 161
    def _has_status(self, servid, status):
162 162
        r = self.client.get_server_details(servid)
163
        #print 'MY STATUS IS ', r['status']
163
        #print 'MY ', servid, ' STATUS IS ', r['status']
164 164
        return r['status'] == status
165 165

  
166 166
    def _wait_for_status(self, servid, status):
167 167
        (wait_bar, wait_cb) = self._safe_progress_bar(
168 168
            'Server %s in %s' % (servid, status))
169
        self.client.wait_server(servid, status, wait_cb=wait_cb)
169
        self.client.wait_server(servid, status, wait_cb=wait_cb, delay=5)
170 170
        self._safe_progress_bar_finish(wait_bar)
171 171

  
172 172
    def test_parallel_creation(self):
......
174 174
        Do not use this in regular livetest
175 175
        """
176 176
        from kamaki.clients import SilentEvent
177
        c1 = SilentEvent(
178
            self._create_server,
179
            self.servname1,
180
            self.flavorid,
181
            self.img)
182
        c2 = SilentEvent(
183
            self._create_server,
184
            self.servname2,
185
            self.flavorid,
186
            self.img)
187
        c3 = SilentEvent(
188
            self._create_server,
189
            self.servname1,
190
            self.flavorid,
191
            self.img)
192
        c4 = SilentEvent(
193
            self._create_server,
194
            self.servname2,
195
            self.flavorid,
196
            self.img)
197
        c5 = SilentEvent(
198
            self._create_server,
199
            self.servname1,
200
            self.flavorid,
201
            self.img)
202
        c6 = SilentEvent(
203
            self._create_server,
204
            self.servname2,
205
            self.flavorid,
206
            self.img)
207
        c7 = SilentEvent(
208
            self._create_server,
209
            self.servname1,
210
            self.flavorid,
211
            self.img)
212
        c8 = SilentEvent(
213
            self._create_server,
214
            self.servname2,
215
            self.flavorid,
216
            self.img)
217
        c1.start()
218
        c2.start()
219
        c3.start()
220
        c4.start()
221
        c5.start()
222
        c6.start()
223
        c7.start()
224
        c8.start()
177
        c = []
178
        for i in range(8):
179
            sname = '%s_%s' % (self.servname1, i)
180
            c.append(SilentEvent(
181
                self._create_server, sname, self.flavorid, self.img))
182
        for i in range(8):
183
            c[i].start()
225 184

  
226 185
    def test_create_server(self):
227 186
        """Test create_server"""
228 187
        self.server1 = self._create_server(
229
            self.servname1,
230
            self.flavorid,
231
            self.img)
188
            self.servname1, self.flavorid, self.img)
232 189
        self._wait_for_status(self.server1['id'], 'BUILD')
233 190
        self._test_0010_create_server()
234 191

  
......
241 198
    def test_list_servers(self):
242 199
        """Test list servers"""
243 200
        self.server1 = self._create_server(
244
            self.servname1,
245
            self.flavorid,
246
            self.img)
201
            self.servname1, self.flavorid, self.img)
247 202
        self.server2 = self._create_server(
248
            self.servname2,
249
            self.flavorid,
250
            self.img)
203
            self.servname2, self.flavorid, self.img)
251 204
        self._test_0020_list_servers()
252 205

  
253 206
    def _test_0020_list_servers(self):
......
256 209

  
257 210
        """detailed and simple are same size"""
258 211
        self.assertEqual(len(dservers), len(servers))
259
        for i in range(len(servers)):
260
            for field in (
261
                    'created',
262
                    'flavor',
263
                    'hostId',
264
                    'image',
265
                    'progress',
266
                    'status',
267
                    'updated'):
268
                self.assertFalse(field in servers[i])
269
                self.assertTrue(field in dservers[i])
212
        fields = set([
213
            'created', 'flavor', 'hostId', 'image', 'progress', 'status',
214
            'updated'])
215
        for i, srv in enumerate(servers):
216
            self.assertTrue(fields.isdisjoint(srv))
217
            self.assertTrue(fields.issubset(dservers[i]))
270 218

  
271 219
        """detailed and simple contain same names"""
272 220
        names = sorted(map(lambda x: x["name"], servers))
......
282 230
    def test_get_server_details(self):
283 231
        """Test get_server_details"""
284 232
        self.server1 = self._create_server(
285
            self.servname1,
286
            self.flavorid,
287
            self.img)
233
            self.servname1, self.flavorid, self.img)
288 234
        self._wait_for_status(self.server1['id'], 'BUILD')
289 235
        self._test_0040_get_server_details()
290 236

  
......
298 244
    def test_update_server_name(self):
299 245
        """Test update_server_name"""
300 246
        self.server1 = self._create_server(
301
            self.servname1,
302
            self.flavorid,
303
            self.img)
247
            self.servname1, self.flavorid, self.img)
304 248
        self._test_0050_update_server_name()
305 249

  
306 250
    def _test_0050_update_server_name(self):
307 251
        new_name = self.servname1 + '_new_name'
308 252
        self.client.update_server_name(self.server1['id'], new_name)
309 253
        r = self.client.get_server_details(
310
            self.server1['id'],
311
            success=(200, 400))
254
            self.server1['id'], success=(200, 400))
312 255
        self.assertEqual(r['name'], new_name)
313 256
        changed = self.servers.pop(self.servname1)
314 257
        changed['name'] = new_name
......
317 260
    def test_reboot_server(self):
318 261
        """Test reboot server"""
319 262
        self.server1 = self._create_server(
320
            self.servname1,
321
            self.flavorid,
322
            self.img)
263
            self.servname1, self.flavorid, self.img)
323 264
        self._wait_for_status(self.server1['id'], 'BUILD')
324 265
        self.server2 = self._create_server(
325
            self.servname2,
326
            self.flavorid + 1,
327
            self.img)
266
            self.servname2, self.flavorid + 2, self.img)
328 267
        self._wait_for_status(self.server2['id'], 'BUILD')
329 268
        self._test_0060_reboot_server()
330 269
        self._wait_for_status(self.server1['id'], 'REBOOT')
......
345 284
        self.server1 = self._create_server(
346 285
            self.servname1, self.flavorid, self.img)
347 286

  
348
    def test_0065_resize_server(self):
349
        self.client.resize_server(self.servname1, self.flavorid + 1, self.img)
287
    def _test_0065_resize_server(self):
288
        self.client.resize_server(self.servname1, self.flavorid + 2)
350 289
        srv = self.client.get_flavor_details(self.server1['id'])
351
        self.assertEqual(srv['flavor']['id'], self.flavorid + 1)
290
        self.assertEqual(srv['flavor']['id'], self.flavorid + 2)
352 291

  
353 292
    def _test_0070_wait_test_servers_to_reboot(self):
354 293
        """Pseudo-test to wait for VMs to load"""
......
359 298
    def test_create_server_metadata(self):
360 299
        """Test create_server_metadata"""
361 300
        self.server1 = self._create_server(
362
            self.servname1,
363
            self.flavorid,
364
            self.img)
301
            self.servname1, self.flavorid, self.img)
365 302
        self._test_0080_create_server_metadata()
366 303

  
367 304
    def _test_0080_create_server_metadata(self):
368 305
        r1 = self.client.create_server_metadata(
369
            self.server1['id'],
370
            'mymeta',
371
            'mymeta val')
306
            self.server1['id'], 'mymeta', 'mymeta val')
372 307
        self.assertTrue('mymeta' in r1)
373 308
        r2 = self.client.get_server_metadata(self.server1['id'], 'mymeta')
374 309
        self.assert_dicts_are_equal(r1, r2)
......
376 311
    def test_get_server_metadata(self):
377 312
        """Test get server_metadata"""
378 313
        self.server1 = self._create_server(
379
            self.servname1,
380
            self.flavorid,
381
            self.img)
314
            self.servname1, self.flavorid, self.img)
382 315
        self._test_0090_get_server_metadata()
383 316

  
384 317
    def _test_0090_get_server_metadata(self):
......
390 323
    def test_update_server_metadata(self):
391 324
        """Test update_server_metadata"""
392 325
        self.server1 = self._create_server(
393
            self.servname1,
394
            self.flavorid,
395
            self.img)
326
            self.servname1, self.flavorid, self.img)
396 327
        self._test_0100_update_server_metadata()
397 328

  
398 329
    def _test_0100_update_server_metadata(self):
......
474 405
    def test_shutdown_server(self):
475 406
        """Test shutdown_server"""
476 407
        self.server1 = self._create_server(
477
            self.servname1,
478
            self.flavorid,
479
            self.img)
408
            self.servname1, self.flavorid, self.img)
480 409
        self._wait_for_status(self.server1['id'], 'BUILD')
481 410
        self._test_0170_shutdown_server()
482 411

  
......
489 418
    def test_start_server(self):
490 419
        """Test start_server"""
491 420
        self.server1 = self._create_server(
492
            self.servname1,
493
            self.flavorid,
494
            self.img)
421
            self.servname1, self.flavorid, self.img)
495 422
        self._wait_for_status(self.server1['id'], 'BUILD')
496 423
        self.client.shutdown_server(self.server1['id'])
497 424
        self._wait_for_status(self.server1['id'], 'ACTIVE')
......
506 433
    def test_get_server_console(self):
507 434
        """Test get_server_console"""
508 435
        self.server2 = self._create_server(
509
            self.servname2,
510
            self.flavorid,
511
            self.img)
436
            self.servname2, self.flavorid, self.img)
512 437
        self._wait_for_status(self.server2['id'], 'BUILD')
513 438
        self._test_0190_get_server_console()
514 439

  
......
522 447
    def test_get_firewall_profile(self):
523 448
        """Test get_firewall_profile"""
524 449
        self.server1 = self._create_server(
525
            self.servname1,
526
            self.flavorid,
527
            self.img)
450
            self.servname1, self.flavorid, self.img)
528 451
        self._test_0200_get_firewall_profile()
529 452

  
530 453
    def _test_0200_get_firewall_profile(self):
......
535 458
    def test_set_firewall_profile(self):
536 459
        """Test set_firewall_profile"""
537 460
        self.server1 = self._create_server(
538
            self.servname1,
539
            self.flavorid,
540
            self.img)
461
            self.servname1, self.flavorid, self.img)
541 462
        self._test_0210_set_firewall_profile()
542 463

  
543 464
    def _test_0210_set_firewall_profile(self):
......
573 494

  
574 495
    def test_get_server_stats(self):
575 496
        self.server1 = self._create_server(
576
            self.servname1,
577
            self.flavorid,
578
            self.img)
497
            self.servname1, self.flavorid, self.img)
579 498
        self._test_0220_get_server_stats()
580 499

  
581 500
    def _test_0220_get_server_stats(self):
......
625 544
    def test_connect_server(self):
626 545
        """Test connect_server"""
627 546
        self.server1 = self._create_server(
628
            self.servname1,
629
            self.flavorid,
630
            self.img)
547
            self.servname1, self.flavorid, self.img)
631 548
        self.network1 = self._create_network(self.netname1)
632 549
        self._wait_for_status(self.server1['id'], 'BUILD')
633 550
        self._wait_for_network(self.network1['id'], 'ACTIVE')
......
635 552

  
636 553
    def _test_0250_connect_server(self):
637 554
        self.client.connect_server(self.server1['id'], self.network1['id'])
638
        self.assertTrue(self._wait_for_nic(
639
            self.network1['id'],
640
            self.server1['id']))
555
        self.assertTrue(
556
            self._wait_for_nic(self.network1['id'], self.server1['id']))
641 557

  
642 558
    def test_disconnect_server(self):
643 559
        """Test disconnect_server"""
......
647 563
    def _test_0250_disconnect_server(self):
648 564
        self.client.disconnect_server(self.server1['id'], self.network1['id'])
649 565
        self.assertTrue(self._wait_for_nic(
650
            self.network1['id'],
651
            self.server1['id'],
652
            in_creation=False))
566
            self.network1['id'], self.server1['id'], in_creation=False))
653 567

  
654 568
    def _test_0260_wait_for_second_network(self):
655 569
        self.network2 = self._create_network(self.netname2)
......
658 572
    def test_list_server_nics(self):
659 573
        """Test list_server_nics"""
660 574
        self.server1 = self._create_server(
661
            self.servname1,
662
            self.flavorid,
663
            self.img)
575
            self.servname1, self.flavorid, self.img)
664 576
        self.network2 = self._create_network(self.netname2)
665 577
        self._wait_for_status(self.server1['id'], 'BUILD')
666 578
        self._wait_for_network(self.network2['id'], 'ACTIVE')
......
670 582
        r = self.client.list_server_nics(self.server1['id'])
671 583
        len0 = len(r)
672 584
        self.client.connect_server(self.server1['id'], self.network2['id'])
673
        self.assertTrue(self._wait_for_nic(
674
            self.network2['id'],
675
            self.server1['id']))
585
        self.assertTrue(
586
            self._wait_for_nic(self.network2['id'], self.server1['id']))
676 587
        r = self.client.list_server_nics(self.server1['id'])
677 588
        self.assertTrue(len(r) > len0)
678 589

  
......
704 615
    def test_list_network_nics(self):
705 616
        """Test list_server_nics"""
706 617
        self.server1 = self._create_server(
707
            self.servname1,
708
            self.flavorid,
709
            self.img)
618
            self.servname1, self.flavorid, self.img)
710 619
        self.network1 = self._create_network(self.netname1)
711 620
        self.network2 = self._create_network(self.netname2)
712 621
        self._wait_for_status(self.server1['id'], 'BUILD')
......
719 628
        self._test_0293_list_network_nics()
720 629

  
721 630
    def _test_0293_list_network_nics(self):
722
        netid1 = self.network1['id']
723
        netid2 = self.network2['id']
631
        netid1, netid2 = self.network1['id'], self.network2['id']
724 632
        r = self.client.list_network_nics(netid1)
725 633
        expected = ['nic-%s-1' % self.server1['id']]
726 634
        self.assertEqual(r, expected)
b/kamaki/clients/livetest/pithos.py
1111 1111
    def _test_0130_object_post(self):
1112 1112
        self.client.container = self.c2
1113 1113
        obj = 'test2'
1114

  
1114 1115
        """create a filesystem file"""
1115 1116
        self.files.append(NamedTemporaryFile())
1116 1117
        newf = self.files[-1]
......
1118 1119
            'ello!\n',
1119 1120
            'This is a test line\n',
1120 1121
            'inside a test file\n'])
1122

  
1121 1123
        """create a file on container"""
1122 1124
        r = self.client.object_put(
1123 1125
            obj,
......
1182 1184

  
1183 1185
        """Check if_etag_(not)match"""
1184 1186
        etag = r['etag']
1185
        """
1186 1187
        r = self.client.object_post(
1187 1188
            obj,
1188 1189
            update=True,
1189 1190
            public=True,
1190 1191
            if_etag_not_match=etag,
1191 1192
            success=(412, 202, 204))
1192
        self.assertEqual(r.status_code, 412)
1193
        """
1193
        #self.assertEqual(r.status_code, 412)
1194 1194

  
1195 1195
        r = self.client.object_post(
1196 1196
            obj,
b/kamaki/clients/pithos/rest_api.py
157 157

  
158 158
        self._assert_account()
159 159

  
160
        self.set_param('update', iff=update)
160
        self.set_param('update', '', iff=update)
161 161

  
162 162
        if groups:
163 163
            for group, usernames in groups.items():
......
354 354
        """
355 355
        self._assert_container()
356 356

  
357
        self.set_param('update', iff=update)
357
        self.set_param('update', '', iff=update)
358 358
        self.set_param('format', format, iff=format)
359 359

  
360 360
        self.set_header('X-Container-Policy-Quota', quota)
......
769 769
        self.set_header('Content-Type', content_type)
770 770
        self.set_header('Content-Encoding', content_encoding)
771 771
        self.set_header('Content-Disposition', content_disposition)
772
        if permissions:
773
            perms = ''
774
            for perm_type, perm_list in permissions.items():
775
                if not perms:
776
                    perms = ''  # Remove permissions
777
                if perm_list:
778
                    perms += ';' if perms else ''
779
                    perms += '%s=%s' % (perm_type, ','.join(perm_list))
780
            self.set_header('X-Object-Sharing', perms)
772
        perms = ';'.join(
773
            ['%s=%s' % (k, ','.join(v)) for k, v in permissions.items() if (
774
                v)]) if (permissions) else ''
775
        self.set_header('X-Object-Sharing', perms, iff=permissions)
781 776
        self.set_header('X-Object-Public', public, public is not None)
782 777
        if metadata:
783 778
            for key, val in metadata.items():
......
864 859
        self._assert_container()
865 860

  
866 861
        self.set_param('format', format, iff=format)
867
        self.set_param('update', iff=update)
862
        self.set_param('update', '', iff=update)
868 863

  
869 864
        self.set_header('If-Match', if_etag_match)
870 865
        self.set_header('If-None-Match', if_etag_not_match)
871 866
        self.set_header(
872
            'Content-Length',
873
            content_length,
874
            iff=not transfer_encoding)
867
            'Content-Length', content_length, iff=not transfer_encoding)
875 868
        self.set_header('Content-Type', content_type)
876 869
        self.set_header('Content-Range', content_range)
877 870
        self.set_header('Transfer-Encoding', transfer_encoding)
......
882 875
        self.set_header('X-Source-Version', source_version)
883 876
        self.set_header('X-Object-Bytes', object_bytes)
884 877
        self.set_header('X-Object-Manifest', manifest)
885
        if permissions:
886
            perms = ''
887
            for perm_type, perm_list in permissions.items():
888
                if not perms:
889
                    perms = ''  # Remove permissions
890
                if perm_list:
891
                    perms += ';' if perms else ''
892
                    perms += '%s=%s' % (perm_type, ','.join(perm_list))
893
            self.set_header('X-Object-Sharing', perms)
878
        perms = ';'.join(
879
            ['%s=%s' % (k, ','.join(v)) for k, v in permissions.items() if (
880
                v)]) if (permissions) else ''
881
        self.set_header('X-Object-Sharing', perms, iff=permissions)
894 882
        self.set_header('X-Object-Public', public, public is not None)
895 883
        for key, val in metadata.items():
896 884
            self.set_header('X-Object-Meta-' + key, val)

Also available in: Unified diff