)]}'
{"requirements.txt":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"6bbaeea1ceeedaf1e3f7e5173473d82e416b795a","unresolved":false,"context_lines":[{"line_number":22,"context_line":"six\u003e\u003d1.4.1"},{"line_number":23,"context_line":"iso8601\u003e\u003d0.1.4"},{"line_number":24,"context_line":"fixtures\u003e\u003d0.3.14"},{"line_number":25,"context_line":"testscenarios"}],"source_content_type":"text/plain","patch_set":1,"id":"AAAATn%2F9fgg%3D","line":25,"updated":"2013-12-11 01:17:29.000000000","message":"This needs to match up with what\u0027s in global requirements:\n\nhttp://git.openstack.org/cgit/openstack/requirements/tree/global-requirements.txt","commit_id":"450f9f54a5a47651d553e9d4001433bae01b4859"}],"tempest/common/utils/test_utils.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"6bbaeea1ceeedaf1e3f7e5173473d82e416b795a","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from tempest import config"},{"line_number":18,"context_line":"from tempest.common.utils.misc import singleton"},{"line_number":19,"context_line":"from tempest.scenario.manager import OfficialClientManager"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import re"},{"line_number":22,"context_line":"import string"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F9fEA%3D","line":19,"updated":"2013-12-11 01:17:29.000000000","message":"We should try to import modules only","commit_id":"450f9f54a5a47651d553e9d4001433bae01b4859"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"6bbaeea1ceeedaf1e3f7e5173473d82e416b795a","unresolved":false,"context_lines":[{"line_number":26,"context_line":"@singleton"},{"line_number":27,"context_line":"class ImageUtils(object):"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    config \u003d config.TempestConfig()"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    default_ssh_user \u003d \u0027root\u0027"},{"line_number":32,"context_line":"    ssh_users \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F9ff0%3D","line":29,"updated":"2013-12-11 01:17:29.000000000","message":"do this in init, doing this in the class definition causes a dep on a config file at import, which we don\u0027t want.","commit_id":"450f9f54a5a47651d553e9d4001433bae01b4859"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"6bbaeea1ceeedaf1e3f7e5173473d82e416b795a","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    default_ssh_user \u003d \u0027root\u0027"},{"line_number":32,"context_line":"    ssh_users \u003d {"},{"line_number":33,"context_line":"        \u0027ubuntu\u0027: \u0027.*[Uu]buntu.*\u0027,"},{"line_number":34,"context_line":"    }"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F9fEE%3D","line":33,"updated":"2013-12-11 01:17:29.000000000","message":"We use cirros images in the gate, so you\u0027ll probably want that here too. Also this should be set in the config file I think.","commit_id":"450f9f54a5a47651d553e9d4001433bae01b4859"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"6bbaeea1ceeedaf1e3f7e5173473d82e416b795a","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        return self._is_windows_image(_image)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def _is_sshable_image(self, image):"},{"line_number":59,"context_line":"        return not self._is_windows_image(image)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def is_sshable_image(self, image_id):"},{"line_number":62,"context_line":"        _image \u003d self.client.images.get(image_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F9fgM%3D","line":59,"updated":"2013-12-11 01:17:29.000000000","message":"are windows images the only ones you can\u0027t ssh into? Although that\u0027s probably a fair assumption","commit_id":"450f9f54a5a47651d553e9d4001433bae01b4859"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"99cb13d490bd92d94abfe8145949249d4ff93685","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            return self.default_ssh_user"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def _is_windows_image(self, image):"},{"line_number":54,"context_line":"        return image.metadata.get(\u0027os_type\u0027) \u003d\u003d \u0027windows\u0027"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def is_windows_image(self, image_id):"},{"line_number":57,"context_line":"        _image \u003d self.client.images.get(image_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F887g%3D","line":54,"updated":"2013-12-18 13:18:56.000000000","message":"Note: Using the os_type  for specifying the os is a documented attribute usage, and some hypervisor driver also using it.","commit_id":"5cb3a8313e87fb2e5c94c20a1f126b245e013207"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"31bfe8c8aeb5e208303a02d49baaa8d2b9299996","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from tempest.common.utils.misc import singleton"},{"line_number":18,"context_line":"from tempest import config"},{"line_number":19,"context_line":"from tempest.scenario import manager"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F8tMc%3D","line":17,"updated":"2013-12-22 08:50:58.000000000","message":"Hacking says \u0027Do not import objects, only modules\u0027.\nSo I think this should be \u0027from tempest.common.utils import misc\u0027.\n\nhttp://docs.openstack.org/developer/hacking/#imports","commit_id":"0c8fcda1fff8d2c8a70a3b6cd5e183ab360c22a1"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"39ee4385c6c62659bde165fede29bdf45cf63410","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from tempest.common.utils.misc import singleton"},{"line_number":18,"context_line":"from tempest import config"},{"line_number":19,"context_line":"from tempest.scenario import manager"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAT3%2F%2Fu2U%3D","line":17,"in_reply_to":"AAAATn%2F8tMc%3D","updated":"2014-01-02 18:41:45.000000000","message":"Thanks good catch, fixed now.","commit_id":"0c8fcda1fff8d2c8a70a3b6cd5e183ab360c22a1"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"5c2f03b29145478a623a15e952685675aea22b26","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    def _is_windows_image(self, image):"},{"line_number":54,"context_line":"        return image.metadata.get(\u0027os_type\u0027) \u003d\u003d \u0027windows\u0027"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def is_windows_image(self, image_id):"},{"line_number":57,"context_line":"        _image \u003d self.client.images.get(image_id)"},{"line_number":58,"context_line":"        return self._is_windows_image(_image)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F8xTk%3D","line":56,"updated":"2013-12-20 14:12:37.000000000","message":"I understand the reason for this but looks like we don\u0027t use it yet?","commit_id":"0c8fcda1fff8d2c8a70a3b6cd5e183ab360c22a1"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"39ee4385c6c62659bde165fede29bdf45cf63410","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    def _is_windows_image(self, image):"},{"line_number":54,"context_line":"        return image.metadata.get(\u0027os_type\u0027) \u003d\u003d \u0027windows\u0027"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def is_windows_image(self, image_id):"},{"line_number":57,"context_line":"        _image \u003d self.client.images.get(image_id)"},{"line_number":58,"context_line":"        return self._is_windows_image(_image)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAT3%2F%2Fu2Y%3D","line":56,"in_reply_to":"AAAATn%2F8xTk%3D","updated":"2014-01-02 18:41:45.000000000","message":"It was used in an earlier version. Removed now.","commit_id":"0c8fcda1fff8d2c8a70a3b6cd5e183ab360c22a1"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"5c2f03b29145478a623a15e952685675aea22b26","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        if not hasattr(self, \u0027_scenario_images\u0027):"},{"line_number":126,"context_line":"            images \u003d self.client.images.list(detailed\u003dFalse)"},{"line_number":127,"context_line":"            self._scenario_images \u003d ["},{"line_number":128,"context_line":"                (self._normalize_name(i.name), dict(image_ref\u003di.id))"},{"line_number":129,"context_line":"                for i in images if re.search(self.image_pattern, str(i.name))"},{"line_number":130,"context_line":"            ]"},{"line_number":131,"context_line":"            # Remove duplicates (if any)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F8xSQ%3D","line":128,"updated":"2013-12-20 14:12:37.000000000","message":"I\u0027m not sure why do we need to normalize the image names?","commit_id":"0c8fcda1fff8d2c8a70a3b6cd5e183ab360c22a1"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"39ee4385c6c62659bde165fede29bdf45cf63410","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        if not hasattr(self, \u0027_scenario_images\u0027):"},{"line_number":126,"context_line":"            images \u003d self.client.images.list(detailed\u003dFalse)"},{"line_number":127,"context_line":"            self._scenario_images \u003d ["},{"line_number":128,"context_line":"                (self._normalize_name(i.name), dict(image_ref\u003di.id))"},{"line_number":129,"context_line":"                for i in images if re.search(self.image_pattern, str(i.name))"},{"line_number":130,"context_line":"            ]"},{"line_number":131,"context_line":"            # Remove duplicates (if any)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAT3%2F%2Fu2c%3D","line":128,"in_reply_to":"AAAATn%2F8xSQ%3D","updated":"2014-01-02 18:41:45.000000000","message":"The normalized image name is added to the test name, I want to keep the final test name \"reasonable\".","commit_id":"0c8fcda1fff8d2c8a70a3b6cd5e183ab360c22a1"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"5c2f03b29145478a623a15e952685675aea22b26","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                for i in images if re.search(self.image_pattern, str(i.name))"},{"line_number":130,"context_line":"            ]"},{"line_number":131,"context_line":"            # Remove duplicates (if any)"},{"line_number":132,"context_line":"            unique_images \u003d {name: data for name, data in"},{"line_number":133,"context_line":"                             self._scenario_images}"},{"line_number":134,"context_line":"            self._scenario_images \u003d ["},{"line_number":135,"context_line":"                (k, unique_images.get(k)) for k in unique_images.keys()"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F8xR4%3D","line":132,"updated":"2013-12-20 14:12:37.000000000","message":"if I get this right, the original tuple is [name: id, name: id] so I\u0027d call it id here","commit_id":"0c8fcda1fff8d2c8a70a3b6cd5e183ab360c22a1"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"5c2f03b29145478a623a15e952685675aea22b26","unresolved":false,"context_lines":[{"line_number":132,"context_line":"            unique_images \u003d {name: data for name, data in"},{"line_number":133,"context_line":"                             self._scenario_images}"},{"line_number":134,"context_line":"            self._scenario_images \u003d ["},{"line_number":135,"context_line":"                (k, unique_images.get(k)) for k in unique_images.keys()"},{"line_number":136,"context_line":"            ]"},{"line_number":137,"context_line":"        return self._scenario_images"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F8xRY%3D","line":135,"updated":"2013-12-20 14:12:37.000000000","message":"image name could actually be not unique but still representing different images; I\u0027m not sure we should try to remove duplicates from the regex matches","commit_id":"0c8fcda1fff8d2c8a70a3b6cd5e183ab360c22a1"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"39ee4385c6c62659bde165fede29bdf45cf63410","unresolved":false,"context_lines":[{"line_number":132,"context_line":"            unique_images \u003d {name: data for name, data in"},{"line_number":133,"context_line":"                             self._scenario_images}"},{"line_number":134,"context_line":"            self._scenario_images \u003d ["},{"line_number":135,"context_line":"                (k, unique_images.get(k)) for k in unique_images.keys()"},{"line_number":136,"context_line":"            ]"},{"line_number":137,"context_line":"        return self._scenario_images"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAT3%2F%2Fu2M%3D","line":135,"in_reply_to":"AAAATn%2F8xRY%3D","updated":"2014-01-02 18:41:45.000000000","message":"Right, this is a hack for my test environment I forgot to remove. Fixed now.","commit_id":"0c8fcda1fff8d2c8a70a3b6cd5e183ab360c22a1"}],"tempest/config.py":[{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"99cb13d490bd92d94abfe8145949249d4ff93685","unresolved":false,"context_lines":[{"line_number":649,"context_line":"               default\u003d\u0027^.*[Ww]in.*$\u0027,"},{"line_number":650,"context_line":"               help\u003d\"SSH verification in tests is skipped\""},{"line_number":651,"context_line":"                    \"for matching images\"),"},{"line_number":652,"context_line":"    cfg.StrOpt(\u0027ssh_user_regex\u0027,"},{"line_number":653,"context_line":"               default\u003d\"{\\\"root\\\": \\\"^.*[Cc]irros.*$\\\"}\","},{"line_number":654,"context_line":"               help\u003d\"Dictionary of user mapped to regex \""},{"line_number":655,"context_line":"                    \"to matching image names.\"),"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F889A%3D","line":652,"updated":"2013-12-18 13:18:56.000000000","message":"May be list of (regex-\u003euser) pairs fits better to this option.\n\nThe dict does not specify any order, but the  ssh_user uses the  \u0027# First match wins\u0027 strategy, so something ordered would be better.","commit_id":"5cb3a8313e87fb2e5c94c20a1f126b245e013207"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"3b26fbd79f7dcab3d5410ce1fd0909e402c698cf","unresolved":false,"context_lines":[{"line_number":657,"context_line":"    cfg.StrOpt(\u0027flavor_regex\u0027,"},{"line_number":658,"context_line":"               default\u003d\u0027^m1.(micro|nano|tiny)$\u0027,"},{"line_number":659,"context_line":"               help\u003d\"Matching flavors are used as input\""},{"line_number":660,"context_line":"                    \"scenario for scenario tests\"),"},{"line_number":661,"context_line":"    cfg.StrOpt(\u0027non_ssh_image_regex\u0027,"},{"line_number":662,"context_line":"               default\u003d\u0027^.*[Ww]in.*$\u0027,"},{"line_number":663,"context_line":"               help\u003d\"SSH verification in tests is skipped\""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUH%2F%2F12g%3D","line":660,"updated":"2014-01-07 20:29:56.000000000","message":"Here and above, I believe a better wording for the help string would be \"Matching flavors become parameters for scenario tests\".\n\nI think that is easier to understand than the duplicate use of the term \"scenario\".\n\nThoughts?","commit_id":"32b4e880467efbf089a9f7b6a20afd9b86673a46"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"75fd28929daa255c6ac969b7918fec44b83d260c","unresolved":false,"context_lines":[{"line_number":657,"context_line":"    cfg.StrOpt(\u0027flavor_regex\u0027,"},{"line_number":658,"context_line":"               default\u003d\u0027^m1.(micro|nano|tiny)$\u0027,"},{"line_number":659,"context_line":"               help\u003d\"Matching flavors are used as input\""},{"line_number":660,"context_line":"                    \"scenario for scenario tests\"),"},{"line_number":661,"context_line":"    cfg.StrOpt(\u0027non_ssh_image_regex\u0027,"},{"line_number":662,"context_line":"               default\u003d\u0027^.*[Ww]in.*$\u0027,"},{"line_number":663,"context_line":"               help\u003d\"SSH verification in tests is skipped\""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUH%2F%2FxdQ%3D","line":660,"in_reply_to":"AAAAUH%2F%2F12g%3D","updated":"2014-01-08 16:37:02.000000000","message":"Good idea, thanks.","commit_id":"32b4e880467efbf089a9f7b6a20afd9b86673a46"}],"tempest/scenario/test_input_scenario.py":[{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"99cb13d490bd92d94abfe8145949249d4ff93685","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# Note(af) - nose does not honour the load_tests protocol"},{"line_number":28,"context_line":"# however it\u0027s test discovery regex will match anything"},{"line_number":29,"context_line":"# which includes _tests. So nose would require some further"},{"line_number":30,"context_line":"# investigation to be supported with this"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F89Ac%3D","line":27,"updated":"2013-12-18 13:18:56.000000000","message":"AFAIK nose support will dropped.","commit_id":"5cb3a8313e87fb2e5c94c20a1f126b245e013207"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"99cb13d490bd92d94abfe8145949249d4ff93685","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                                image\u003dself.image_ref,"},{"line_number":97,"context_line":"                                flavor\u003dself.flavor_ref,"},{"line_number":98,"context_line":"                                create_kwargs\u003dcreate_kwargs)"},{"line_number":99,"context_line":"        # Note(af) Don\u0027t rely on the resource cleanup at class tearDown"},{"line_number":100,"context_line":"        # As the number of tests could increase significantly if there are"},{"line_number":101,"context_line":"        # many images and flavors available"},{"line_number":102,"context_line":"        self.addCleanup(self.delete_server, server\u003dvm)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F89Aw%3D","line":99,"updated":"2013-12-18 13:18:56.000000000","message":"Note -\u003e NOTE,  the name should match with your IRC nick or to the name used in your e-mail address.","commit_id":"5cb3a8313e87fb2e5c94c20a1f126b245e013207"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"c342dc076fe7378512df82d694b7960c315d20b6","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# Note(andreaf) - nose does not honour the load_tests protocol"},{"line_number":28,"context_line":"# however it\u0027s test discovery regex will match anything"},{"line_number":29,"context_line":"# which includes _tests. So nose would require some further"},{"line_number":30,"context_line":"# investigation to be supported with this"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F81%2Fk%3D","line":27,"updated":"2013-12-19 16:37:43.000000000","message":"\u0027Note\u0027 -\u003e \u0027NOTE\u0027","commit_id":"a066f2653ed9e770e3fa93351d7579fa80dfac87"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"31bfe8c8aeb5e208303a02d49baaa8d2b9299996","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import testscenarios"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from tempest.common.utils.data_utils import rand_name"},{"line_number":20,"context_line":"from tempest.common.utils import test_utils"},{"line_number":21,"context_line":"from tempest.openstack.common import log as logging"},{"line_number":22,"context_line":"from tempest.scenario import manager"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F8tMo%3D","line":19,"updated":"2013-12-22 08:50:58.000000000","message":"Hacking says \u0027Do not import objects, only modules\u0027.\nSo this should be \u0027from tempest.common.utils import data_utils\u0027.\n\nhttp://docs.openstack.org/developer/hacking/#imports","commit_id":"0c8fcda1fff8d2c8a70a3b6cd5e183ab360c22a1"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"39ee4385c6c62659bde165fede29bdf45cf63410","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import testscenarios"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from tempest.common.utils.data_utils import rand_name"},{"line_number":20,"context_line":"from tempest.common.utils import test_utils"},{"line_number":21,"context_line":"from tempest.openstack.common import log as logging"},{"line_number":22,"context_line":"from tempest.scenario import manager"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAT3%2F%2Fu14%3D","line":19,"in_reply_to":"AAAATn%2F8tMo%3D","updated":"2014-01-02 18:41:45.000000000","message":"Thanks, fixed it.","commit_id":"0c8fcda1fff8d2c8a70a3b6cd5e183ab360c22a1"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"31bfe8c8aeb5e208303a02d49baaa8d2b9299996","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from tempest.common.utils import test_utils"},{"line_number":21,"context_line":"from tempest.openstack.common import log as logging"},{"line_number":22,"context_line":"from tempest.scenario import manager"},{"line_number":23,"context_line":"from tempest.test import services"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F8tMg%3D","line":23,"updated":"2013-12-22 08:50:58.000000000","message":"ditto","commit_id":"0c8fcda1fff8d2c8a70a3b6cd5e183ab360c22a1"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"39ee4385c6c62659bde165fede29bdf45cf63410","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from tempest.common.utils import test_utils"},{"line_number":21,"context_line":"from tempest.openstack.common import log as logging"},{"line_number":22,"context_line":"from tempest.scenario import manager"},{"line_number":23,"context_line":"from tempest.test import services"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAT3%2F%2Fu1w%3D","line":23,"in_reply_to":"AAAATn%2F8tMg%3D","updated":"2014-01-02 18:41:45.000000000","message":"Thanks, fixed it.","commit_id":"0c8fcda1fff8d2c8a70a3b6cd5e183ab360c22a1"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"3b26fbd79f7dcab3d5410ce1fd0909e402c698cf","unresolved":false,"context_lines":[{"line_number":100,"context_line":"                                create_kwargs\u003dcreate_kwargs)"},{"line_number":101,"context_line":"        # NOTE(andreaf) Don\u0027t rely on the resource cleanup at class tearDown"},{"line_number":102,"context_line":"        # As the number of tests could increase significantly if there are"},{"line_number":103,"context_line":"        # many images and flavors available"},{"line_number":104,"context_line":"        self.addCleanup(self.delete_server, server\u003dvm)"},{"line_number":105,"context_line":"        if self.run_ssh:"},{"line_number":106,"context_line":"            # Attach a floating IP"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUH%2F%2F12I%3D","line":103,"updated":"2014-01-07 20:29:56.000000000","message":"What about just changing the base method of OfficialClientTest.create_server() to call self.addCleanup() instead of the current call to self.set_resouirce():\n\nhttps://github.com/openstack/tempest/blob/master/tempest/scenario/manager.py#L470\n\nThen we can both simplify the base test class as well as not needing to do your custom cleanup below on line 104?","commit_id":"32b4e880467efbf089a9f7b6a20afd9b86673a46"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"75fd28929daa255c6ac969b7918fec44b83d260c","unresolved":false,"context_lines":[{"line_number":100,"context_line":"                                create_kwargs\u003dcreate_kwargs)"},{"line_number":101,"context_line":"        # NOTE(andreaf) Don\u0027t rely on the resource cleanup at class tearDown"},{"line_number":102,"context_line":"        # As the number of tests could increase significantly if there are"},{"line_number":103,"context_line":"        # many images and flavors available"},{"line_number":104,"context_line":"        self.addCleanup(self.delete_server, server\u003dvm)"},{"line_number":105,"context_line":"        if self.run_ssh:"},{"line_number":106,"context_line":"            # Attach a floating IP"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUH%2F%2FxdU%3D","line":103,"in_reply_to":"AAAAUH%2F%2F12I%3D","updated":"2014-01-08 16:37:02.000000000","message":"Totally agree. \nIt\u0027s in progress here: https://review.openstack.org/#/c/62101/","commit_id":"32b4e880467efbf089a9f7b6a20afd9b86673a46"}]}
