)]}'
{"tempest/api/baremetal/__init__.py":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"053916cf274db12efe08f51cb5f7e8fa97eba880","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2BhgY%3D","line":1,"updated":"2013-11-25 06:41:46.000000000","message":"AFAIK, we don\u0027t need to have the License in empty files.","commit_id":"a296160ec384a67b300e793709e3e8bbf7073c3e"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"cfc5b56ce57d819a348f4ef31dba6c9e55a5abbb","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2BfY8%3D","line":1,"in_reply_to":"AAAATn%2F%2Bg1w%3D","updated":"2013-11-25 15:09:05.000000000","message":"+1 to afazekas","commit_id":"a296160ec384a67b300e793709e3e8bbf7073c3e"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"a4692ebe5a629a04b816890d8dda04e9bc04fab6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2Bg1w%3D","line":1,"in_reply_to":"AAAATn%2F%2BhCA%3D","updated":"2013-11-25 09:53:45.000000000","message":"An empty file is not a source file.","commit_id":"a296160ec384a67b300e793709e3e8bbf7073c3e"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"88e6d4fa318a22fe99d8530bdc4f5cf4dbe04f85","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2BhCA%3D","line":1,"in_reply_to":"AAAATn%2F%2BhgY%3D","updated":"2013-11-25 09:17:49.000000000","message":"According to the Hacking rules we do: http://docs.openstack.org/developer/hacking/#openstack-licensing\n\n\u003e\u003e All source files should have the following header...","commit_id":"a296160ec384a67b300e793709e3e8bbf7073c3e"}],"tempest/api/baremetal/base.py":[{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"020f8bafa08ea5235f1f20b54f5c351821193a60","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        \"\"\""},{"line_number":73,"context_line":"        Wrapper utility for creating test chassis."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        :param description: A desctiption of the chassis. if not supplied,"},{"line_number":76,"context_line":"            a random value will be generated."},{"line_number":77,"context_line":"        :return: Created chassis."},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fkok%3D","line":75,"updated":"2013-11-01 04:58:43.000000000","message":"typo: s/desctiption/description/","commit_id":"fe57a5b92af06cdd3105fff3eef71e0f031f3b2f"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"ca912a2ea130f8c3763d844e9b14b1b49420f447","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        \"\"\""},{"line_number":73,"context_line":"        Wrapper utility for creating test chassis."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        :param description: A desctiption of the chassis. if not supplied,"},{"line_number":76,"context_line":"            a random value will be generated."},{"line_number":77,"context_line":"        :return: Created chassis."},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FjyQ%3D","line":75,"in_reply_to":"AAAATn%2F%2Fkok%3D","updated":"2013-11-01 11:22:50.000000000","message":"Done","commit_id":"fe57a5b92af06cdd3105fff3eef71e0f031f3b2f"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"020f8bafa08ea5235f1f20b54f5c351821193a60","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        Deletes a port having the specified UUID."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        :param uuid: The unique identifier of the port."},{"line_number":159,"context_line":"        :return: Server responce."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        \"\"\""},{"line_number":162,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FkoM%3D","line":159,"updated":"2013-11-01 04:58:43.000000000","message":"I guess s/responce/response/","commit_id":"fe57a5b92af06cdd3105fff3eef71e0f031f3b2f"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"ca912a2ea130f8c3763d844e9b14b1b49420f447","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        Deletes a port having the specified UUID."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        :param uuid: The unique identifier of the port."},{"line_number":159,"context_line":"        :return: Server responce."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        \"\"\""},{"line_number":162,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FjyE%3D","line":159,"in_reply_to":"AAAATn%2F%2FkoM%3D","updated":"2013-11-01 11:22:50.000000000","message":"Thanks. This is one of the words I always spell wrong :)\n\nDone.","commit_id":"fe57a5b92af06cdd3105fff3eef71e0f031f3b2f"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"b6169b0c54e07199c3235efacd693916194da2d8","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        mgr \u003d clients.Manager()"},{"line_number":52,"context_line":"        cls.client \u003d mgr.baremetal_client"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        cls.created_objects \u003d {\u0027chassis\u0027: set([]),"},{"line_number":55,"context_line":"                               \u0027port\u0027: set([]),"},{"line_number":56,"context_line":"                               \u0027node\u0027: set([])}"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2Bs4k%3D","line":54,"updated":"2013-11-21 11:49:57.000000000","message":"[] not needed for empty set creating in l54-56","commit_id":"77e54c5ec47c80669412851353a5cf13ab9b9931"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"1b78df55eeaa9f943062bab0f56eedda4f773924","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        mgr \u003d clients.Manager()"},{"line_number":52,"context_line":"        cls.client \u003d mgr.baremetal_client"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        cls.created_objects \u003d {\u0027chassis\u0027: set([]),"},{"line_number":55,"context_line":"                               \u0027port\u0027: set([]),"},{"line_number":56,"context_line":"                               \u0027node\u0027: set([])}"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2Bsp4%3D","line":54,"in_reply_to":"AAAATn%2F%2Bs4k%3D","updated":"2013-11-21 14:42:14.000000000","message":"Done","commit_id":"77e54c5ec47c80669412851353a5cf13ab9b9931"},{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"0ba7acead14801f61f268dfeb3aa99b316fbd308","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        description \u003d description or data_utils.rand_name(\u0027test-chassis-\u0027)"},{"line_number":81,"context_line":"        resp, body \u003d cls.client.create_chassis(description\u003ddescription)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        return {\u0027chassis\u0027: body, \u0027responce\u0027: resp}"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    @classmethod"},{"line_number":86,"context_line":"    @creates(\u0027node\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2BaIo%3D","line":83,"updated":"2013-11-26 12:31:50.000000000","message":"responce -\u003e response","commit_id":"a296160ec384a67b300e793709e3e8bbf7073c3e"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"c93dffc605ba87b333e72840fff8adf6fa7dc22d","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        description \u003d description or data_utils.rand_name(\u0027test-chassis-\u0027)"},{"line_number":81,"context_line":"        resp, body \u003d cls.client.create_chassis(description\u003ddescription)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        return {\u0027chassis\u0027: body, \u0027responce\u0027: resp}"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    @classmethod"},{"line_number":86,"context_line":"    @creates(\u0027node\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2BOjU%3D","line":83,"in_reply_to":"AAAATn%2F%2BaIo%3D","updated":"2013-11-28 16:43:28.000000000","message":"Done","commit_id":"a296160ec384a67b300e793709e3e8bbf7073c3e"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"8cbe04d671d45d531acf0e8e9dc52ccb2445db68","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    def tearDownClass(cls):"},{"line_number":60,"context_line":"        \"\"\"Ensure that all created objects get destroyed.\"\"\""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        super(BaseBaremetalTest, cls).tearDownClass()"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        for resource, uuids in cls.created_objects.iteritems():"},{"line_number":65,"context_line":"            delete_method \u003d getattr(cls.client, \u0027delete_%s\u0027 % resource)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F9tSc%3D","line":62,"updated":"2013-12-06 21:48:18.000000000","message":"The super for tearDown has to go last.","commit_id":"fbbacf155b1e52b0883ee03735ed76871e41b345"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"a0170a639066565132e07d25e9261c80b3927fcb","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    def tearDownClass(cls):"},{"line_number":60,"context_line":"        \"\"\"Ensure that all created objects get destroyed.\"\"\""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        super(BaseBaremetalTest, cls).tearDownClass()"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        for resource, uuids in cls.created_objects.iteritems():"},{"line_number":65,"context_line":"            delete_method \u003d getattr(cls.client, \u0027delete_%s\u0027 % resource)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAT3%2F%2F5XM%3D","line":62,"updated":"2013-12-27 16:23:30.000000000","message":"This needs to go at the end.","commit_id":"1790718ac1bb21a88bb34be00d903e058411e5b0"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"94904ecc189b01440e7bc45244af5d2239fd077b","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    def tearDownClass(cls):"},{"line_number":60,"context_line":"        \"\"\"Ensure that all created objects get destroyed.\"\"\""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        super(BaseBaremetalTest, cls).tearDownClass()"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        for resource, uuids in cls.created_objects.iteritems():"},{"line_number":65,"context_line":"            delete_method \u003d getattr(cls.client, \u0027delete_%s\u0027 % resource)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAT3%2F%2F1gA%3D","line":62,"in_reply_to":"AAAAT3%2F%2F5XM%3D","updated":"2013-12-30 13:18:56.000000000","message":"Done.","commit_id":"1790718ac1bb21a88bb34be00d903e058411e5b0"}],"tempest/api/baremetal/test_chassis.py":[{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"b6169b0c54e07199c3235efacd693916194da2d8","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":35,"context_line":"    def test_create_chassis_unicode_description(self):"},{"line_number":36,"context_line":"        descr \u003d u\u0027В Україні ♡ OpenStack!\u0027"},{"line_number":37,"context_line":"        ch \u003d self.create_chassis(description\u003ddescr)[\u0027chassis\u0027]"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        self.assertEqual(ch[\u0027description\u0027], descr)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2Bs2A%3D","line":36,"updated":"2013-11-21 11:49:57.000000000","message":"This string can cause questions from folks.\nI prefer something like\n\nu\u0027\\u0412 \\u0423\\u043a\\u0440\\u0430\\u0457\\u043d\\u0456 \\u2661 OpenStack!\u0027","commit_id":"77e54c5ec47c80669412851353a5cf13ab9b9931"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"1b78df55eeaa9f943062bab0f56eedda4f773924","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":35,"context_line":"    def test_create_chassis_unicode_description(self):"},{"line_number":36,"context_line":"        descr \u003d u\u0027В Україні ♡ OpenStack!\u0027"},{"line_number":37,"context_line":"        ch \u003d self.create_chassis(description\u003ddescr)[\u0027chassis\u0027]"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        self.assertEqual(ch[\u0027description\u0027], descr)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BsGU%3D","line":36,"in_reply_to":"AAAATn%2F%2Bs2A%3D","updated":"2013-11-21 14:42:14.000000000","message":"I think the string you proposed is even less readable :)\n\nI will add a comment with the translation. That should make the things clear for everyone.","commit_id":"77e54c5ec47c80669412851353a5cf13ab9b9931"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"b6169b0c54e07199c3235efacd693916194da2d8","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    @test.attr(type\u003d\"smoke\")"},{"line_number":52,"context_line":"    def test_list_chassis(self):"},{"line_number":53,"context_line":"        created_ids \u003d []"},{"line_number":54,"context_line":"        for i in range(0, random.randrange(2, 10)):"},{"line_number":55,"context_line":"            created_ids.append(self.create_chassis()[\u0027chassis\u0027][\u0027uuid\u0027])"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        resp, body \u003d self.client.list_chassis()"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2Bsy4%3D","line":54,"updated":"2013-11-21 11:49:57.000000000","message":"I dont think that random amount is good for tests.","commit_id":"77e54c5ec47c80669412851353a5cf13ab9b9931"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"1b78df55eeaa9f943062bab0f56eedda4f773924","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    @test.attr(type\u003d\"smoke\")"},{"line_number":52,"context_line":"    def test_list_chassis(self):"},{"line_number":53,"context_line":"        created_ids \u003d []"},{"line_number":54,"context_line":"        for i in range(0, random.randrange(2, 10)):"},{"line_number":55,"context_line":"            created_ids.append(self.create_chassis()[\u0027chassis\u0027][\u0027uuid\u0027])"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        resp, body \u003d self.client.list_chassis()"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BsGE%3D","line":54,"in_reply_to":"AAAATn%2F%2Bsy4%3D","updated":"2013-11-21 14:42:14.000000000","message":"Agree. I will change this kind of behaviour for all tests.","commit_id":"77e54c5ec47c80669412851353a5cf13ab9b9931"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"053916cf274db12efe08f51cb5f7e8fa97eba880","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    def test_create_chassis_unicode_description(self):"},{"line_number":34,"context_line":"        # Use a unicode string for testing:"},{"line_number":35,"context_line":"        # \u0027We ♡ OpenStack in Ukraine\u0027"},{"line_number":36,"context_line":"        descr \u003d u\u0027В Україні ♡ OpenStack!\u0027"},{"line_number":37,"context_line":"        ch \u003d self.create_chassis(description\u003ddescr)[\u0027chassis\u0027]"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        self.assertEqual(ch[\u0027description\u0027], descr)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2Bhew%3D","line":36,"updated":"2013-11-25 06:41:46.000000000","message":"IIUC, in the Icehouse summit negative test session, we discussed that tests passing non-ascii string as API parameter should be negative tests, and the server should return a BadRequest respose.\nhttp://lists.openstack.org/pipermail/openstack-dev/2013-November/018898.html\n\nIs this behavior suitable or not for ironic?","commit_id":"a296160ec384a67b300e793709e3e8bbf7073c3e"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"88e6d4fa318a22fe99d8530bdc4f5cf4dbe04f85","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    def test_create_chassis_unicode_description(self):"},{"line_number":34,"context_line":"        # Use a unicode string for testing:"},{"line_number":35,"context_line":"        # \u0027We ♡ OpenStack in Ukraine\u0027"},{"line_number":36,"context_line":"        descr \u003d u\u0027В Україні ♡ OpenStack!\u0027"},{"line_number":37,"context_line":"        ch \u003d self.create_chassis(description\u003ddescr)[\u0027chassis\u0027]"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        self.assertEqual(ch[\u0027description\u0027], descr)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2BhCU%3D","line":36,"in_reply_to":"AAAATn%2F%2Bhew%3D","updated":"2013-11-25 09:17:49.000000000","message":"Ironic supports unicode descriptions for the objects (currently only chassis have this attribute) so there\u0027s no reason for a negative test.","commit_id":"a296160ec384a67b300e793709e3e8bbf7073c3e"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"053916cf274db12efe08f51cb5f7e8fa97eba880","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    @test.attr(type\u003d\"smoke\")"},{"line_number":52,"context_line":"    def test_list_chassis(self):"},{"line_number":53,"context_line":"        created_ids \u003d [self.create_chassis()[\u0027chassis\u0027][\u0027uuid\u0027]"},{"line_number":54,"context_line":"                       for i in range(0, 5)]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        resp, body \u003d self.client.list_chassis()"},{"line_number":57,"context_line":"        loaded_ids \u003d [ch[\u0027uuid\u0027] for ch in body[\u0027chassis\u0027]]"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2Bhc8%3D","line":54,"updated":"2013-11-25 06:41:46.000000000","message":"Just a question.\nWhere does this number \u00275\u0027 come from?","commit_id":"a296160ec384a67b300e793709e3e8bbf7073c3e"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"88e6d4fa318a22fe99d8530bdc4f5cf4dbe04f85","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    @test.attr(type\u003d\"smoke\")"},{"line_number":52,"context_line":"    def test_list_chassis(self):"},{"line_number":53,"context_line":"        created_ids \u003d [self.create_chassis()[\u0027chassis\u0027][\u0027uuid\u0027]"},{"line_number":54,"context_line":"                       for i in range(0, 5)]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        resp, body \u003d self.client.list_chassis()"},{"line_number":57,"context_line":"        loaded_ids \u003d [ch[\u0027uuid\u0027] for ch in body[\u0027chassis\u0027]]"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2BhBg%3D","line":54,"in_reply_to":"AAAATn%2F%2Bhc8%3D","updated":"2013-11-25 09:17:49.000000000","message":"We need to create several objects. 5 was chosen by a fair dice roll :)\n\nI would appreciate any ideas about doing this in a deferent way.","commit_id":"a296160ec384a67b300e793709e3e8bbf7073c3e"}],"tempest/api/baremetal/test_nodes.py":[{"author":{"_account_id":8641,"name":"DennyZhang","email":"filebat.mark@gmail.com","username":"dennyzhang"},"change_message_id":"36e81e6b7be04ffc2c29b001c0a48b9a10de7cc4","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":27,"context_line":"    def test_create_node(self):"},{"line_number":28,"context_line":"        params \u003d {\u0027cpu_arch\u0027: \u0027x86_64\u0027,"},{"line_number":29,"context_line":"                  \u0027cpu_num\u0027: \u002712\u0027,"},{"line_number":30,"context_line":"                  \u0027storage\u0027: \u002710240\u0027,"},{"line_number":31,"context_line":"                  \u0027memory\u0027: \u00271024\u0027}"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fktg%3D","line":29,"updated":"2013-11-01 04:24:32.000000000","message":"Can we use a smaller flavor of cpu and storage for this test?","commit_id":"fe57a5b92af06cdd3105fff3eef71e0f031f3b2f"},{"author":{"_account_id":8641,"name":"DennyZhang","email":"filebat.mark@gmail.com","username":"dennyzhang"},"change_message_id":"84a4dc32a0da57db13528e2cac4a37406cd146c5","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":27,"context_line":"    def test_create_node(self):"},{"line_number":28,"context_line":"        params \u003d {\u0027cpu_arch\u0027: \u0027x86_64\u0027,"},{"line_number":29,"context_line":"                  \u0027cpu_num\u0027: \u002712\u0027,"},{"line_number":30,"context_line":"                  \u0027storage\u0027: \u002710240\u0027,"},{"line_number":31,"context_line":"                  \u0027memory\u0027: \u00271024\u0027}"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fjks%3D","line":29,"in_reply_to":"AAAATn%2F%2Fjyg%3D","updated":"2013-11-01 12:35:39.000000000","message":"Even so, would it be better that we set a reasonable number, to prevent confusion?","commit_id":"fe57a5b92af06cdd3105fff3eef71e0f031f3b2f"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"ca912a2ea130f8c3763d844e9b14b1b49420f447","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":27,"context_line":"    def test_create_node(self):"},{"line_number":28,"context_line":"        params \u003d {\u0027cpu_arch\u0027: \u0027x86_64\u0027,"},{"line_number":29,"context_line":"                  \u0027cpu_num\u0027: \u002712\u0027,"},{"line_number":30,"context_line":"                  \u0027storage\u0027: \u002710240\u0027,"},{"line_number":31,"context_line":"                  \u0027memory\u0027: \u00271024\u0027}"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fjyg%3D","line":29,"in_reply_to":"AAAATn%2F%2Fktg%3D","updated":"2013-11-01 11:22:50.000000000","message":"Since these tests only test the BM API the numbers in specifications of the nodes do not really mean that specified amount of resources will be used.\n\nWhat I mean is that the API tests just check whether the API can accept both big and small numbers or not. They do _not_ start provisioning nodes.","commit_id":"fe57a5b92af06cdd3105fff3eef71e0f031f3b2f"},{"author":{"_account_id":8641,"name":"DennyZhang","email":"filebat.mark@gmail.com","username":"dennyzhang"},"change_message_id":"36e81e6b7be04ffc2c29b001c0a48b9a10de7cc4","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        node \u003d self.create_node(**params)[\u0027node\u0027]"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        for key in params:"},{"line_number":36,"context_line":"            self.assertEqual(node[\u0027properties\u0027][key], params[key])"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":39,"context_line":"    def test_delete_node(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fkq8%3D","line":36,"updated":"2013-11-01 04:24:32.000000000","message":"Who will do the cleanup, after this creation?\n\nThe same question apply to many other functions in this patch.","commit_id":"fe57a5b92af06cdd3105fff3eef71e0f031f3b2f"},{"author":{"_account_id":8641,"name":"DennyZhang","email":"filebat.mark@gmail.com","username":"dennyzhang"},"change_message_id":"84a4dc32a0da57db13528e2cac4a37406cd146c5","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        node \u003d self.create_node(**params)[\u0027node\u0027]"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        for key in params:"},{"line_number":36,"context_line":"            self.assertEqual(node[\u0027properties\u0027][key], params[key])"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":39,"context_line":"    def test_delete_node(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fjkk%3D","line":36,"in_reply_to":"AAAATn%2F%2Fjy0%3D","updated":"2013-11-01 12:35:39.000000000","message":"Done","commit_id":"fe57a5b92af06cdd3105fff3eef71e0f031f3b2f"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"ca912a2ea130f8c3763d844e9b14b1b49420f447","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        node \u003d self.create_node(**params)[\u0027node\u0027]"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        for key in params:"},{"line_number":36,"context_line":"            self.assertEqual(node[\u0027properties\u0027][key], params[key])"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":39,"context_line":"    def test_delete_node(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fjy0%3D","line":36,"in_reply_to":"AAAATn%2F%2Fkq8%3D","updated":"2013-11-01 11:22:50.000000000","message":"All created resources are deleted in tearDownClass() in the base test case for BM API.","commit_id":"fe57a5b92af06cdd3105fff3eef71e0f031f3b2f"},{"author":{"_account_id":8641,"name":"DennyZhang","email":"filebat.mark@gmail.com","username":"dennyzhang"},"change_message_id":"36e81e6b7be04ffc2c29b001c0a48b9a10de7cc4","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":62,"context_line":"    def test_list_nodes(self):"},{"line_number":63,"context_line":"        uuids \u003d []"},{"line_number":64,"context_line":"        for i in range(0, random.randrange(2, 10)):"},{"line_number":65,"context_line":"            uuids.append(self.create_node()[\u0027node\u0027][\u0027uuid\u0027])"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        resp, body \u003d self.client.list_nodes()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FktQ%3D","line":64,"updated":"2013-11-01 04:24:32.000000000","message":"randrange(2, 5)?","commit_id":"fe57a5b92af06cdd3105fff3eef71e0f031f3b2f"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"ca912a2ea130f8c3763d844e9b14b1b49420f447","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":62,"context_line":"    def test_list_nodes(self):"},{"line_number":63,"context_line":"        uuids \u003d []"},{"line_number":64,"context_line":"        for i in range(0, random.randrange(2, 10)):"},{"line_number":65,"context_line":"            uuids.append(self.create_node()[\u0027node\u0027][\u0027uuid\u0027])"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        resp, body \u003d self.client.list_nodes()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fjyw%3D","line":64,"in_reply_to":"AAAATn%2F%2FktQ%3D","updated":"2013-11-01 11:22:50.000000000","message":"You\u0027re right, that should be enough.","commit_id":"fe57a5b92af06cdd3105fff3eef71e0f031f3b2f"},{"author":{"_account_id":8641,"name":"DennyZhang","email":"filebat.mark@gmail.com","username":"dennyzhang"},"change_message_id":"36e81e6b7be04ffc2c29b001c0a48b9a10de7cc4","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        new_props \u003d {\u0027cpu_arch\u0027: random.choice([\u0027x86\u0027, \u0027x86_64\u0027]),"},{"line_number":78,"context_line":"                     \u0027cpu_num\u0027: str(random.randrange(1, 12)),"},{"line_number":79,"context_line":"                     \u0027storage\u0027: str(random.randrange(10, 10000)),"},{"line_number":80,"context_line":"                     \u0027memory\u0027: str(random.randrange(128, 12300))}"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        self.client.update_node(node_id, properties\u003dnew_props)"},{"line_number":83,"context_line":"        resp, node \u003d self.client.show_node(node_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fks4%3D","line":80,"updated":"2013-11-01 04:24:32.000000000","message":"To more modest for the resource?\nrange(10, 10000) --\u003e range(10, 5000)\nrange(128, 12300) --\u003e range(128, 2300)","commit_id":"fe57a5b92af06cdd3105fff3eef71e0f031f3b2f"},{"author":{"_account_id":8641,"name":"DennyZhang","email":"filebat.mark@gmail.com","username":"dennyzhang"},"change_message_id":"84a4dc32a0da57db13528e2cac4a37406cd146c5","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        new_props \u003d {\u0027cpu_arch\u0027: random.choice([\u0027x86\u0027, \u0027x86_64\u0027]),"},{"line_number":78,"context_line":"                     \u0027cpu_num\u0027: str(random.randrange(1, 12)),"},{"line_number":79,"context_line":"                     \u0027storage\u0027: str(random.randrange(10, 10000)),"},{"line_number":80,"context_line":"                     \u0027memory\u0027: str(random.randrange(128, 12300))}"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        self.client.update_node(node_id, properties\u003dnew_props)"},{"line_number":83,"context_line":"        resp, node \u003d self.client.show_node(node_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fjkg%3D","line":80,"in_reply_to":"AAAATn%2F%2FjyY%3D","updated":"2013-11-01 12:35:39.000000000","message":"Please also see my comment in L29. :-)","commit_id":"fe57a5b92af06cdd3105fff3eef71e0f031f3b2f"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"ca912a2ea130f8c3763d844e9b14b1b49420f447","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        new_props \u003d {\u0027cpu_arch\u0027: random.choice([\u0027x86\u0027, \u0027x86_64\u0027]),"},{"line_number":78,"context_line":"                     \u0027cpu_num\u0027: str(random.randrange(1, 12)),"},{"line_number":79,"context_line":"                     \u0027storage\u0027: str(random.randrange(10, 10000)),"},{"line_number":80,"context_line":"                     \u0027memory\u0027: str(random.randrange(128, 12300))}"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        self.client.update_node(node_id, properties\u003dnew_props)"},{"line_number":83,"context_line":"        resp, node \u003d self.client.show_node(node_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FjyY%3D","line":80,"in_reply_to":"AAAATn%2F%2Fks4%3D","updated":"2013-11-01 11:22:50.000000000","message":"I left the comment under L29 on the same issue.","commit_id":"fe57a5b92af06cdd3105fff3eef71e0f031f3b2f"}],"tempest/api/baremetal/test_ports.py":[{"author":{"_account_id":8641,"name":"DennyZhang","email":"filebat.mark@gmail.com","username":"dennyzhang"},"change_message_id":"36e81e6b7be04ffc2c29b001c0a48b9a10de7cc4","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from tempest.api.baremetal import base"},{"line_number":19,"context_line":"from tempest.common.utils import data_utils"},{"line_number":20,"context_line":"from tempest import exceptions as exc"},{"line_number":21,"context_line":"from tempest import test"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FksA%3D","line":20,"updated":"2013-11-01 04:24:32.000000000","message":"Define an alias of exc decrease the coding readability.\n\nBesides, others similar modules of tempest don\u0027t do this.","commit_id":"fe57a5b92af06cdd3105fff3eef71e0f031f3b2f"},{"author":{"_account_id":8641,"name":"DennyZhang","email":"filebat.mark@gmail.com","username":"dennyzhang"},"change_message_id":"84a4dc32a0da57db13528e2cac4a37406cd146c5","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from tempest.api.baremetal import base"},{"line_number":19,"context_line":"from tempest.common.utils import data_utils"},{"line_number":20,"context_line":"from tempest import exceptions as exc"},{"line_number":21,"context_line":"from tempest import test"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FjlA%3D","line":20,"in_reply_to":"AAAATn%2F%2Fjxg%3D","updated":"2013-11-01 12:35:39.000000000","message":"How about grep \"from tempest import exceptions\" in tempest/api directory?","commit_id":"fe57a5b92af06cdd3105fff3eef71e0f031f3b2f"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"ca912a2ea130f8c3763d844e9b14b1b49420f447","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from tempest.api.baremetal import base"},{"line_number":19,"context_line":"from tempest.common.utils import data_utils"},{"line_number":20,"context_line":"from tempest import exceptions as exc"},{"line_number":21,"context_line":"from tempest import test"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fjxg%3D","line":20,"in_reply_to":"AAAATn%2F%2FksA%3D","updated":"2013-11-01 11:22:50.000000000","message":"I think this is a common alias for exception modules. It also helps me to write shorter and more readable assertions bellow.","commit_id":"fe57a5b92af06cdd3105fff3eef71e0f031f3b2f"},{"author":{"_account_id":8641,"name":"DennyZhang","email":"filebat.mark@gmail.com","username":"dennyzhang"},"change_message_id":"36e81e6b7be04ffc2c29b001c0a48b9a10de7cc4","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":46,"context_line":"    def test_create_port_wrong_node_id(self):"},{"line_number":47,"context_line":"        node_id \u003d str(uuid.uuid4())"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        self.assertRaises(exc.BadRequest, self.create_port, node_id\u003dnode_id)"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FkrY%3D","line":47,"updated":"2013-11-01 04:24:32.000000000","message":"How we gurantee uuid.uuid4() is an invalid node id?","commit_id":"fe57a5b92af06cdd3105fff3eef71e0f031f3b2f"},{"author":{"_account_id":8641,"name":"DennyZhang","email":"filebat.mark@gmail.com","username":"dennyzhang"},"change_message_id":"68b760d0743c09f98674db13a833c5330592bac1","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":46,"context_line":"    def test_create_port_wrong_node_id(self):"},{"line_number":47,"context_line":"        node_id \u003d str(uuid.uuid4())"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        self.assertRaises(exc.BadRequest, self.create_port, node_id\u003dnode_id)"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FkkA%3D","line":47,"in_reply_to":"AAAATn%2F%2FkrY%3D","updated":"2013-11-01 05:06:05.000000000","message":"Done","commit_id":"fe57a5b92af06cdd3105fff3eef71e0f031f3b2f"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"053916cf274db12efe08f51cb5f7e8fa97eba880","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":45,"context_line":"    def test_create_port_wrong_node_id(self):"},{"line_number":46,"context_line":"        node_id \u003d str(uuid.uuid4())"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        self.assertRaises(exc.BadRequest, self.create_port, node_id\u003dnode_id)"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2BhcU%3D","line":46,"updated":"2013-11-25 06:41:46.000000000","message":"We can use data_utils.rand_uuid() here if you want.","commit_id":"a296160ec384a67b300e793709e3e8bbf7073c3e"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"88e6d4fa318a22fe99d8530bdc4f5cf4dbe04f85","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":45,"context_line":"    def test_create_port_wrong_node_id(self):"},{"line_number":46,"context_line":"        node_id \u003d str(uuid.uuid4())"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        self.assertRaises(exc.BadRequest, self.create_port, node_id\u003dnode_id)"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2BhBw%3D","line":46,"in_reply_to":"AAAATn%2F%2BhcU%3D","updated":"2013-11-25 09:17:49.000000000","message":"Nice catch. Will use it.","commit_id":"a296160ec384a67b300e793709e3e8bbf7073c3e"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"a0170a639066565132e07d25e9261c80b3927fcb","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        self.assertEqual(port[\u0027address\u0027], address)"},{"line_number":38,"context_line":"        self.assertEqual(port[\u0027node_uuid\u0027], node_id)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":41,"context_line":"    def test_create_port_invalid_mac(self):"},{"line_number":42,"context_line":"        node_id \u003d self.node[\u0027uuid\u0027]"},{"line_number":43,"context_line":"        address \u003d \u0027not an uuid\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAT3%2F%2F5Wg%3D","line":40,"updated":"2013-12-27 16:23:30.000000000","message":"See review comment about negative tests.","commit_id":"1790718ac1bb21a88bb34be00d903e058411e5b0"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"94904ecc189b01440e7bc45244af5d2239fd077b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        self.assertEqual(port[\u0027address\u0027], address)"},{"line_number":38,"context_line":"        self.assertEqual(port[\u0027node_uuid\u0027], node_id)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":41,"context_line":"    def test_create_port_invalid_mac(self):"},{"line_number":42,"context_line":"        node_id \u003d self.node[\u0027uuid\u0027]"},{"line_number":43,"context_line":"        address \u003d \u0027not an uuid\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAT3%2F%2F1gM%3D","line":40,"in_reply_to":"AAAAT3%2F%2F5Wg%3D","updated":"2013-12-30 13:18:56.000000000","message":"Done","commit_id":"1790718ac1bb21a88bb34be00d903e058411e5b0"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"a0170a639066565132e07d25e9261c80b3927fcb","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        self.assertRaises(exc.BadRequest,"},{"line_number":46,"context_line":"                          self.create_port, node_id\u003dnode_id, address\u003daddress)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":49,"context_line":"    def test_create_port_wrong_node_id(self):"},{"line_number":50,"context_line":"        node_id \u003d str(data_utils.rand_uuid())"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAT3%2F%2F5WU%3D","line":48,"updated":"2013-12-27 16:23:30.000000000","message":"See review comment about negative tests.","commit_id":"1790718ac1bb21a88bb34be00d903e058411e5b0"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"94904ecc189b01440e7bc45244af5d2239fd077b","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        self.assertRaises(exc.BadRequest,"},{"line_number":46,"context_line":"                          self.create_port, node_id\u003dnode_id, address\u003daddress)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":49,"context_line":"    def test_create_port_wrong_node_id(self):"},{"line_number":50,"context_line":"        node_id \u003d str(data_utils.rand_uuid())"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAT3%2F%2F1gE%3D","line":48,"in_reply_to":"AAAAT3%2F%2F5WU%3D","updated":"2013-12-30 13:18:56.000000000","message":"Done","commit_id":"1790718ac1bb21a88bb34be00d903e058411e5b0"}],"tempest/common/utils/data_utils.py":[{"author":{"_account_id":8641,"name":"DennyZhang","email":"filebat.mark@gmail.com","username":"dennyzhang"},"change_message_id":"36e81e6b7be04ffc2c29b001c0a48b9a10de7cc4","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"def rand_mac_address():"},{"line_number":35,"context_line":"    return \u0027:\u0027.join([r\"%02x\" % random.randint(0x00, 0xff)"},{"line_number":36,"context_line":"                     for i in range(6)])"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FksI%3D","line":35,"updated":"2013-11-01 04:24:32.000000000","message":"This may generate invalid mac address.\n\nTry this:\nmac \u003d [ 0x00, 0x24, 0x81,\n    random.randint(0x00, 0x7f),\n    random.randint(0x00, 0xff),\n    random.randint(0x00, 0xff) ]\n\nhttp://stackoverflow.com/questions/8484877/mac-address-generator-in-python","commit_id":"fe57a5b92af06cdd3105fff3eef71e0f031f3b2f"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"ca912a2ea130f8c3763d844e9b14b1b49420f447","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"def rand_mac_address():"},{"line_number":35,"context_line":"    return \u0027:\u0027.join([r\"%02x\" % random.randint(0x00, 0xff)"},{"line_number":36,"context_line":"                     for i in range(6)])"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FjwQ%3D","line":35,"in_reply_to":"AAAATn%2F%2FkmE%3D","updated":"2013-11-01 11:22:50.000000000","message":"Indeed. Thank you for spotting this.\n\nI took random mac address generator from nova.","commit_id":"fe57a5b92af06cdd3105fff3eef71e0f031f3b2f"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"020f8bafa08ea5235f1f20b54f5c351821193a60","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"def rand_mac_address():"},{"line_number":35,"context_line":"    return \u0027:\u0027.join([r\"%02x\" % random.randint(0x00, 0xff)"},{"line_number":36,"context_line":"                     for i in range(6)])"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FkmE%3D","line":35,"in_reply_to":"AAAATn%2F%2FksI%3D","updated":"2013-11-01 04:58:43.000000000","message":"Yeah, and nova already has a similar mac address generation implementation, take a look at nova.utils.generate_mac_address.","commit_id":"fe57a5b92af06cdd3105fff3eef71e0f031f3b2f"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"b6169b0c54e07199c3235efacd693916194da2d8","unresolved":false,"context_lines":[{"line_number":43,"context_line":"           random.randint(0x00, 0xff),"},{"line_number":44,"context_line":"           random.randint(0x00, 0xff),"},{"line_number":45,"context_line":"           random.randint(0x00, 0xff)]"},{"line_number":46,"context_line":"    return \u0027:\u0027.join(map(lambda x: \"%02x\" % x, mac))"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"def build_url(host, port, api_version\u003dNone, path\u003dNone,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BsuU%3D","line":46,"updated":"2013-11-21 11:49:57.000000000","message":"I think list comprehension will be better here instead of map() usage.","commit_id":"77e54c5ec47c80669412851353a5cf13ab9b9931"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"1b78df55eeaa9f943062bab0f56eedda4f773924","unresolved":false,"context_lines":[{"line_number":43,"context_line":"           random.randint(0x00, 0xff),"},{"line_number":44,"context_line":"           random.randint(0x00, 0xff),"},{"line_number":45,"context_line":"           random.randint(0x00, 0xff)]"},{"line_number":46,"context_line":"    return \u0027:\u0027.join(map(lambda x: \"%02x\" % x, mac))"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"def build_url(host, port, api_version\u003dNone, path\u003dNone,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BsF8%3D","line":46,"in_reply_to":"AAAATn%2F%2BsuU%3D","updated":"2013-11-21 14:42:14.000000000","message":"Agree. Done.","commit_id":"77e54c5ec47c80669412851353a5cf13ab9b9931"}],"tempest/services/baremetal/__init__.py":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"053916cf274db12efe08f51cb5f7e8fa97eba880","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2Bhb8%3D","line":1,"updated":"2013-11-25 06:41:46.000000000","message":"Same here as I pointed out.","commit_id":"a296160ec384a67b300e793709e3e8bbf7073c3e"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"88e6d4fa318a22fe99d8530bdc4f5cf4dbe04f85","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2BhBU%3D","line":1,"in_reply_to":"AAAATn%2F%2Bhb8%3D","updated":"2013-11-25 09:17:49.000000000","message":"I replied on the previous comment.","commit_id":"a296160ec384a67b300e793709e3e8bbf7073c3e"}],"tempest/services/baremetal/base.py":[{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"020f8bafa08ea5235f1f20b54f5c351821193a60","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        :param resource: The name of the REST resource, e.g., \u0027nodes\u0027."},{"line_number":111,"context_line":"        :return: A tuple with the server response and deserialized JSON list of"},{"line_number":112,"context_line":"                 of objects"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        \"\"\""},{"line_number":115,"context_line":"        uri \u003d self._get_uri(resource, permanent\u003dpermanent)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fklk%3D","line":112,"updated":"2013-11-01 04:58:43.000000000","message":"typo: of of objects","commit_id":"fe57a5b92af06cdd3105fff3eef71e0f031f3b2f"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"ca912a2ea130f8c3763d844e9b14b1b49420f447","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        :param resource: The name of the REST resource, e.g., \u0027nodes\u0027."},{"line_number":111,"context_line":"        :return: A tuple with the server response and deserialized JSON list of"},{"line_number":112,"context_line":"                 of objects"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        \"\"\""},{"line_number":115,"context_line":"        uri \u003d self._get_uri(resource, permanent\u003dpermanent)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FjxQ%3D","line":112,"in_reply_to":"AAAATn%2F%2Fklk%3D","updated":"2013-11-01 11:22:50.000000000","message":"Done","commit_id":"fe57a5b92af06cdd3105fff3eef71e0f031f3b2f"}],"tempest/services/baremetal/v1/__init__.py":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"053916cf274db12efe08f51cb5f7e8fa97eba880","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2Bhb0%3D","line":1,"updated":"2013-11-25 06:41:46.000000000","message":"Same as I pointed out.","commit_id":"a296160ec384a67b300e793709e3e8bbf7073c3e"}]}
