)]}'
{"tempest/api/compute/admin/test_flavors.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"697433da95f3f5b010605095560d2aa55bdacf6a","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        self.client.delete_flavor(flavor_id)"},{"line_number":54,"context_line":"        self.client.wait_for_resource_deletion(flavor_id)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def _create_flavor(self, flavor_id):"},{"line_number":57,"context_line":"        # Create a flavor and ensure it is listed"},{"line_number":58,"context_line":"        # This operation requires the user to have \u0027admin\u0027 role"},{"line_number":59,"context_line":"        flavor_name \u003d data_utils.rand_name(self.flavor_name_prefix)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a3c09a3_4b14f64b","line":56,"updated":"2017-01-18 14:24:34.000000000","message":"Could we do some cleanup also here ? It seems not optimal if the tests can either call self._create_flavor(.. and create_flavor(...","commit_id":"193cc325424b2b7aea695fc408afd0e4cd5151bf"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"eebbb6080280a1227fcc3967eaa29b200370cece","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        self.client.delete_flavor(flavor_id)"},{"line_number":54,"context_line":"        self.client.wait_for_resource_deletion(flavor_id)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def _create_flavor_by_id(self, flavor_id):"},{"line_number":57,"context_line":"        # Create a flavor and ensure it is listed"},{"line_number":58,"context_line":"        # This operation requires the user to have \u0027admin\u0027 role"},{"line_number":59,"context_line":"        flavor_name \u003d data_utils.rand_name(self.flavor_name_prefix)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a3905b3_4c095231","line":56,"range":{"start_line":56,"start_character":8,"end_line":56,"end_character":28},"updated":"2017-01-19 07:48:01.000000000","message":"Thanks Jordan, yes to use _create_flavor and create_flavor in one file looks bad. \nAnd because the old _create_flavor is used to test flavor_id with uuid/int/None, \nso I rename it to _create_flavor_by_id, in which we can\u0027t use self.create_flavor because it need flavor_id be None in post body.","commit_id":"d5f548b2fe1e353bf98f0ea285994777fbb1d5a3"},{"author":{"_account_id":23184,"name":"DavidPurcell","email":"d.purcell222@gmail.com","username":"DavidPurcell"},"change_message_id":"f28139c7e628c8d8012a190d304c61e924da1888","unresolved":false,"context_lines":[{"line_number":274,"context_line":"                                    ram\u003dram, vcpus\u003dself.vcpus,"},{"line_number":275,"context_line":"                                    disk\u003dself.disk,"},{"line_number":276,"context_line":"                                    id\u003dnew_flavor_id)"},{"line_number":277,"context_line":"        self.assertEqual(flavor[\u0027name\u0027], flavor_name)"},{"line_number":278,"context_line":"        self.assertEqual(flavor[\u0027vcpus\u0027], self.vcpus)"},{"line_number":279,"context_line":"        self.assertEqual(flavor[\u0027disk\u0027], self.disk)"},{"line_number":280,"context_line":"        self.assertEqual(flavor[\u0027ram\u0027], int(ram))"},{"line_number":281,"context_line":"        self.assertEqual(int(flavor[\u0027id\u0027]), new_flavor_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a3905b3_de3d2cde","line":279,"range":{"start_line":277,"start_character":8,"end_line":279,"end_character":51},"updated":"2017-01-23 19:30:45.000000000","message":"Why are these asserts included?  They are already covered as part of the create_flavor method.","commit_id":"a0f4e138193e8f64e26ee64fbe307a3ed101d06c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"f5569803f82ee9bb1780277ad7c8e42af2036ace","unresolved":false,"context_lines":[{"line_number":274,"context_line":"                                    ram\u003dram, vcpus\u003dself.vcpus,"},{"line_number":275,"context_line":"                                    disk\u003dself.disk,"},{"line_number":276,"context_line":"                                    id\u003dnew_flavor_id)"},{"line_number":277,"context_line":"        self.assertEqual(flavor[\u0027name\u0027], flavor_name)"},{"line_number":278,"context_line":"        self.assertEqual(flavor[\u0027vcpus\u0027], self.vcpus)"},{"line_number":279,"context_line":"        self.assertEqual(flavor[\u0027disk\u0027], self.disk)"},{"line_number":280,"context_line":"        self.assertEqual(flavor[\u0027ram\u0027], int(ram))"},{"line_number":281,"context_line":"        self.assertEqual(int(flavor[\u0027id\u0027]), new_flavor_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a461143_1674a0fb","line":279,"range":{"start_line":277,"start_character":8,"end_line":279,"end_character":51},"in_reply_to":"3a461143_e272aeac","updated":"2017-02-02 07:43:55.000000000","message":"Thanks Jordan, yes it is reasonable to delete them.","commit_id":"a0f4e138193e8f64e26ee64fbe307a3ed101d06c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"9cdd4ef3992600eee21e460ad5af6831926b5839","unresolved":false,"context_lines":[{"line_number":274,"context_line":"                                    ram\u003dram, vcpus\u003dself.vcpus,"},{"line_number":275,"context_line":"                                    disk\u003dself.disk,"},{"line_number":276,"context_line":"                                    id\u003dnew_flavor_id)"},{"line_number":277,"context_line":"        self.assertEqual(flavor[\u0027name\u0027], flavor_name)"},{"line_number":278,"context_line":"        self.assertEqual(flavor[\u0027vcpus\u0027], self.vcpus)"},{"line_number":279,"context_line":"        self.assertEqual(flavor[\u0027disk\u0027], self.disk)"},{"line_number":280,"context_line":"        self.assertEqual(flavor[\u0027ram\u0027], int(ram))"},{"line_number":281,"context_line":"        self.assertEqual(int(flavor[\u0027id\u0027]), new_flavor_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a3905b3_f7004204","line":279,"range":{"start_line":277,"start_character":8,"end_line":279,"end_character":51},"in_reply_to":"5a3905b3_de3d2cde","updated":"2017-01-24 01:15:34.000000000","message":"Thanks David, here compute.base.create_flavor is used and in which no assert is included.","commit_id":"a0f4e138193e8f64e26ee64fbe307a3ed101d06c"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"9c38d12f7a39b7839a2c367de4d9e69b9ae4ffa8","unresolved":false,"context_lines":[{"line_number":274,"context_line":"                                    ram\u003dram, vcpus\u003dself.vcpus,"},{"line_number":275,"context_line":"                                    disk\u003dself.disk,"},{"line_number":276,"context_line":"                                    id\u003dnew_flavor_id)"},{"line_number":277,"context_line":"        self.assertEqual(flavor[\u0027name\u0027], flavor_name)"},{"line_number":278,"context_line":"        self.assertEqual(flavor[\u0027vcpus\u0027], self.vcpus)"},{"line_number":279,"context_line":"        self.assertEqual(flavor[\u0027disk\u0027], self.disk)"},{"line_number":280,"context_line":"        self.assertEqual(flavor[\u0027ram\u0027], int(ram))"},{"line_number":281,"context_line":"        self.assertEqual(int(flavor[\u0027id\u0027]), new_flavor_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a461143_e272aeac","line":279,"range":{"start_line":277,"start_character":8,"end_line":279,"end_character":51},"in_reply_to":"5a3905b3_f7004204","updated":"2017-01-27 10:33:43.000000000","message":"Maybe we can just delete those assertions. These 3 assertions are already made in _create_flavor_by_id(), which is called several times already in other tests. So it\u0027s unlikely that they are going to fail here if they already passed previously in other tests.","commit_id":"a0f4e138193e8f64e26ee64fbe307a3ed101d06c"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"8284a9d0bcafe6754fc031c91a0cd60e1c56cc95","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012 Ot_create_flavor_using_string_ramenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_e9f7248a","line":1,"updated":"2017-02-02 16:55:50.000000000","message":"Oups :)","commit_id":"8d7be41407d6c0fa7fe6cbe10f7c863db3faf7a8"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"559b41c42a12d81e17f5cc2d1387e5f64f7e9681","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012 Ot_create_flavor_using_string_ramenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a430d35_b4c046e2","line":1,"in_reply_to":"3a461143_e9f7248a","updated":"2017-02-03 00:41:31.000000000","message":"Silly me:)","commit_id":"8d7be41407d6c0fa7fe6cbe10f7c863db3faf7a8"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"99bad149e729ccd4950761a347733fe295ccd6ee","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        flavor_name \u003d data_utils.rand_name(self.flavor_name_prefix)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        # Create the flavor"},{"line_number":63,"context_line":"        flavor \u003d self.client.create_flavor(name\u003dflavor_name,"},{"line_number":64,"context_line":"                                           ram\u003dself.ram, vcpus\u003dself.vcpus,"},{"line_number":65,"context_line":"                                           disk\u003dself.disk,"},{"line_number":66,"context_line":"                                           id\u003dflavor_id,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a430d35_2ee60cb0","line":63,"range":{"start_line":63,"start_character":17,"end_line":63,"end_character":43},"updated":"2017-02-08 10:33:16.000000000","message":"As this commit is to use common method, you should use self.create_flavor( here too.","commit_id":"ae0c8f681fcc9cfa7246c8c74e60934017dca35d"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"a472a53c3d505dd23d9abba67fdf575ac3184aae","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        flavor_name \u003d data_utils.rand_name(self.flavor_name_prefix)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        # Create the flavor"},{"line_number":63,"context_line":"        flavor \u003d self.client.create_flavor(name\u003dflavor_name,"},{"line_number":64,"context_line":"                                           ram\u003dself.ram, vcpus\u003dself.vcpus,"},{"line_number":65,"context_line":"                                           disk\u003dself.disk,"},{"line_number":66,"context_line":"                                           id\u003dflavor_id,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a430d35_537cdceb","line":63,"range":{"start_line":63,"start_character":17,"end_line":63,"end_character":43},"in_reply_to":"1a430d35_2ee60cb0","updated":"2017-02-08 11:17:53.000000000","message":"Yes, 100% agree. We have to go down this path, that is, use the helper method everywhere.\n\nBut that can be done in a further change.","commit_id":"ae0c8f681fcc9cfa7246c8c74e60934017dca35d"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"16baa41a4821763f6b66168d5385415ac6191b5d","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        flavor_name \u003d data_utils.rand_name(self.flavor_name_prefix)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        # Create the flavor"},{"line_number":63,"context_line":"        flavor \u003d self.client.create_flavor(name\u003dflavor_name,"},{"line_number":64,"context_line":"                                           ram\u003dself.ram, vcpus\u003dself.vcpus,"},{"line_number":65,"context_line":"                                           disk\u003dself.disk,"},{"line_number":66,"context_line":"                                           id\u003dflavor_id,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a430d35_06bd90d7","line":63,"range":{"start_line":63,"start_character":17,"end_line":63,"end_character":43},"in_reply_to":"1a430d35_537cdceb","updated":"2017-02-09 00:59:50.000000000","message":"here we can\u0027t use base.create_flavor, because in base.create_flavor, if id is None, then a random id will be generated; but _create_flavor_by_id need to put id\u003dNone in request body directly.","commit_id":"ae0c8f681fcc9cfa7246c8c74e60934017dca35d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"99bad149e729ccd4950761a347733fe295ccd6ee","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                                           ephemeral\u003dself.ephemeral,"},{"line_number":68,"context_line":"                                           swap\u003dself.swap,"},{"line_number":69,"context_line":"                                           rxtx_factor\u003dself.rxtx)[\u0027flavor\u0027]"},{"line_number":70,"context_line":"        self.addCleanup(self.flavor_clean_up, flavor[\u0027id\u0027])"},{"line_number":71,"context_line":"        self.assertEqual(flavor[\u0027name\u0027], flavor_name)"},{"line_number":72,"context_line":"        self.assertEqual(flavor[\u0027vcpus\u0027], self.vcpus)"},{"line_number":73,"context_line":"        self.assertEqual(flavor[\u0027disk\u0027], self.disk)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a430d35_6e8bb4c3","line":70,"range":{"start_line":70,"start_character":0,"end_line":70,"end_character":59},"updated":"2017-02-08 10:33:16.000000000","message":"this can be removed as base method take care.","commit_id":"ae0c8f681fcc9cfa7246c8c74e60934017dca35d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"99bad149e729ccd4950761a347733fe295ccd6ee","unresolved":false,"context_lines":[{"line_number":272,"context_line":"        ram \u003d \"1024\""},{"line_number":273,"context_line":"        flavor \u003d self.create_flavor(ram\u003dram, vcpus\u003dself.vcpus,"},{"line_number":274,"context_line":"                                    disk\u003dself.disk,"},{"line_number":275,"context_line":"                                    id\u003dnew_flavor_id)"},{"line_number":276,"context_line":"        self.assertEqual(flavor[\u0027ram\u0027], int(ram))"},{"line_number":277,"context_line":"        self.assertEqual(int(flavor[\u0027id\u0027]), new_flavor_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a430d35_2981a6c3","line":275,"range":{"start_line":275,"start_character":52,"end_line":275,"end_character":53},"updated":"2017-02-08 10:33:16.000000000","message":"there is no harm to keep these explicit checks in this test too and i do not think it give more benefit to remove those.\n\nBut m ok as you guys discussed in previous PS about other same kind of tests checks these attributes.","commit_id":"ae0c8f681fcc9cfa7246c8c74e60934017dca35d"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"a472a53c3d505dd23d9abba67fdf575ac3184aae","unresolved":false,"context_lines":[{"line_number":272,"context_line":"        ram \u003d \"1024\""},{"line_number":273,"context_line":"        flavor \u003d self.create_flavor(ram\u003dram, vcpus\u003dself.vcpus,"},{"line_number":274,"context_line":"                                    disk\u003dself.disk,"},{"line_number":275,"context_line":"                                    id\u003dnew_flavor_id)"},{"line_number":276,"context_line":"        self.assertEqual(flavor[\u0027ram\u0027], int(ram))"},{"line_number":277,"context_line":"        self.assertEqual(int(flavor[\u0027id\u0027]), new_flavor_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a430d35_93e644e6","line":275,"range":{"start_line":275,"start_character":52,"end_line":275,"end_character":53},"in_reply_to":"1a430d35_2981a6c3","updated":"2017-02-08 11:17:53.000000000","message":"No I think it\u0027s better to remove those assertions. It makes the test easier to review, less line of code to understand. The test is called \"...using_string_ram(\" so we should assert only the relevant parts. Especially when the other assertions are already made elsewhere.","commit_id":"ae0c8f681fcc9cfa7246c8c74e60934017dca35d"},{"author":{"_account_id":25085,"name":"Zhongwei He","email":"areialray@gmail.com","username":"zwhe"},"change_message_id":"f98f7759bb9c4d16803174723dcf336cc38275f8","unresolved":false,"context_lines":[{"line_number":241,"context_line":"                                flavor_name_public)"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    @decorators.idempotent_id(\u00273b541a2e-2ac2-4b42-8b8d-ba6e22fcd4da\u0027)"},{"line_number":244,"context_line":"    def test_create_flavor_using_string_ram(self):"},{"line_number":245,"context_line":"        new_flavor_id \u003d data_utils.rand_int_id(start\u003d1000)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        ram \u003d \"1024\""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa31d9ce_df8dce7c","line":244,"range":{"start_line":244,"start_character":3,"end_line":244,"end_character":50},"updated":"2017-02-10 09:10:37.000000000","message":"It seems that this function not only use string ram,but also use int id,maybe u can write another function to test the int id","commit_id":"36eeab046527dcb4fbe41c1981b4b037bbe11d27"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"57de4784867647a7caec73f1fcbcdd208b74247b","unresolved":false,"context_lines":[{"line_number":241,"context_line":"                                flavor_name_public)"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    @decorators.idempotent_id(\u00273b541a2e-2ac2-4b42-8b8d-ba6e22fcd4da\u0027)"},{"line_number":244,"context_line":"    def test_create_flavor_using_string_ram(self):"},{"line_number":245,"context_line":"        new_flavor_id \u003d data_utils.rand_int_id(start\u003d1000)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        ram \u003d \"1024\""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa31d9ce_df1dcebe","line":244,"range":{"start_line":244,"start_character":3,"end_line":244,"end_character":50},"in_reply_to":"fa31d9ce_df8dce7c","updated":"2017-02-10 09:16:40.000000000","message":"Thanks, test_create_flavor_with_int_id tests int id. \nthis test is mainly for string ram, int id is just an additional check.","commit_id":"36eeab046527dcb4fbe41c1981b4b037bbe11d27"}],"tempest/api/compute/base.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"697433da95f3f5b010605095560d2aa55bdacf6a","unresolved":false,"context_lines":[{"line_number":264,"context_line":"            name \u003d data_utils.rand_name(self.__class__.__name__ + \"-flavor\")"},{"line_number":265,"context_line":"        if id is None:"},{"line_number":266,"context_line":"            id \u003d data_utils.rand_int_id(start\u003d1000)"},{"line_number":267,"context_line":"        client \u003d self.os_adm.flavors_client"},{"line_number":268,"context_line":"        flavor \u003d client.create_flavor("},{"line_number":269,"context_line":"            ram\u003dram, vcpus\u003dvcpus, disk\u003ddisk, name\u003dname,"},{"line_number":270,"context_line":"            id\u003did, is_public\u003dis_public, **kwargs)[\u0027flavor\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a3c09a3_8b009e35","line":267,"updated":"2017-01-18 14:24:34.000000000","message":"You are using the \u0027admin\u0027 client here, so this method must be moved in the BaseV2ComputeAdminTest class.","commit_id":"193cc325424b2b7aea695fc408afd0e4cd5151bf"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"eebbb6080280a1227fcc3967eaa29b200370cece","unresolved":false,"context_lines":[{"line_number":454,"context_line":"        cls.availability_zone_admin_client \u003d ("},{"line_number":455,"context_line":"            cls.os_adm.availability_zone_client)"},{"line_number":456,"context_line":""},{"line_number":457,"context_line":"    def create_flavor(self, ram, vcpus, disk, name\u003dNone,"},{"line_number":458,"context_line":"                      id\u003dNone, is_public\u003d\u0027True\u0027, **kwargs):"},{"line_number":459,"context_line":"        if name is None:"},{"line_number":460,"context_line":"            name \u003d data_utils.rand_name(self.__class__.__name__ + \"-flavor\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a3905b3_8ca7ba4e","line":457,"range":{"start_line":457,"start_character":4,"end_line":457,"end_character":21},"updated":"2017-01-19 07:48:01.000000000","message":"Yeah, really, it should be put in BaseV2ComputeAdminTest, thanks","commit_id":"d5f548b2fe1e353bf98f0ea285994777fbb1d5a3"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"326e18e02891f2eace7ee22c52320c4aa446f150","unresolved":false,"context_lines":[{"line_number":460,"context_line":"            name \u003d data_utils.rand_name(self.__class__.__name__ + \"-flavor\")"},{"line_number":461,"context_line":"        if id is None:"},{"line_number":462,"context_line":"            id \u003d data_utils.rand_int_id(start\u003d1000)"},{"line_number":463,"context_line":"        client \u003d self.os_adm.flavors_client"},{"line_number":464,"context_line":"        flavor \u003d client.create_flavor("},{"line_number":465,"context_line":"            ram\u003dram, vcpus\u003dvcpus, disk\u003ddisk, name\u003dname,"},{"line_number":466,"context_line":"            id\u003did, is_public\u003dis_public, **kwargs)[\u0027flavor\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a3905b3_85778d01","line":463,"range":{"start_line":463,"start_character":0,"end_line":463,"end_character":8},"updated":"2017-01-19 08:46:38.000000000","message":"Mybe, you can consider to initialize the admin client under \u0027setup_client\u0027 method, something like: \ncls.flavors_admin_client \u003d cls.os_adm.flavors_client","commit_id":"d5f548b2fe1e353bf98f0ea285994777fbb1d5a3"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"4423ad49465952612f1112de2d26cefae8cb1d99","unresolved":false,"context_lines":[{"line_number":453,"context_line":"        super(BaseV2ComputeAdminTest, cls).setup_clients()"},{"line_number":454,"context_line":"        cls.availability_zone_admin_client \u003d ("},{"line_number":455,"context_line":"            cls.os_adm.availability_zone_client)"},{"line_number":456,"context_line":"        cls.flavors_client \u003d cls.os_adm.flavors_client"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"    def create_flavor(self, ram, vcpus, disk, name\u003dNone,"},{"line_number":459,"context_line":"                      id\u003dNone, is_public\u003d\u0027True\u0027, **kwargs):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a3905b3_5b510662","line":456,"range":{"start_line":456,"start_character":8,"end_line":456,"end_character":54},"updated":"2017-01-19 09:16:22.000000000","message":"Thanks Liron, yes it is better","commit_id":"33cd85f8e25e8cec12d74dada151ab8780e5511a"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"cf379c338b629c0e55669e63dfe5c916996dde13","unresolved":false,"context_lines":[{"line_number":453,"context_line":"        super(BaseV2ComputeAdminTest, cls).setup_clients()"},{"line_number":454,"context_line":"        cls.availability_zone_admin_client \u003d ("},{"line_number":455,"context_line":"            cls.os_adm.availability_zone_client)"},{"line_number":456,"context_line":"        cls.flavors_client \u003d cls.os_adm.flavors_client"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"    def create_flavor(self, ram, vcpus, disk, name\u003dNone,"},{"line_number":459,"context_line":"                      id\u003dNone, is_public\u003d\u0027True\u0027, **kwargs):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a3905b3_c117c4eb","line":456,"range":{"start_line":456,"start_character":8,"end_line":456,"end_character":54},"in_reply_to":"5a3905b3_5b510662","updated":"2017-01-19 10:06:19.000000000","message":"Please rename this client to cls.admin_flavors_client\nsince there is a same client in BaseV2ComputeTest class","commit_id":"33cd85f8e25e8cec12d74dada151ab8780e5511a"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"3f169a9bd51fed89719f5f4c1192001bbf19a208","unresolved":false,"context_lines":[{"line_number":453,"context_line":"        super(BaseV2ComputeAdminTest, cls).setup_clients()"},{"line_number":454,"context_line":"        cls.availability_zone_admin_client \u003d ("},{"line_number":455,"context_line":"            cls.os_adm.availability_zone_client)"},{"line_number":456,"context_line":"        cls.flavors_client \u003d cls.os_adm.flavors_client"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"    def create_flavor(self, ram, vcpus, disk, name\u003dNone,"},{"line_number":459,"context_line":"                      id\u003dNone, is_public\u003d\u0027True\u0027, **kwargs):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a3905b3_25ba266f","line":456,"range":{"start_line":456,"start_character":8,"end_line":456,"end_character":54},"in_reply_to":"5a3905b3_c117c4eb","updated":"2017-01-20 00:35:26.000000000","message":"ah thanks, really, done","commit_id":"33cd85f8e25e8cec12d74dada151ab8780e5511a"},{"author":{"_account_id":24903,"name":"Hongtao Zhang","email":"changhungtao@126.com","username":"ZhangHongtao"},"change_message_id":"38392576e8a0e6f9d41f625d79008d302f5568a0","unresolved":false,"context_lines":[{"line_number":464,"context_line":"        flavor \u003d client.create_flavor("},{"line_number":465,"context_line":"            ram\u003dram, vcpus\u003dvcpus, disk\u003ddisk, name\u003dname,"},{"line_number":466,"context_line":"            id\u003did, is_public\u003dis_public, **kwargs)[\u0027flavor\u0027]"},{"line_number":467,"context_line":"        self.addCleanup(client.wait_for_resource_deletion, flavor[\u0027id\u0027])"},{"line_number":468,"context_line":"        self.addCleanup(client.delete_flavor, flavor[\u0027id\u0027])"},{"line_number":469,"context_line":"        return flavor"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa31d9ce_9f7436d0","line":468,"range":{"start_line":467,"start_character":8,"end_line":468,"end_character":59},"updated":"2017-02-10 09:20:27.000000000","message":"Is addClean needed here,it seems that orther functions in this class don\u0027t have addCleanup,and addCleanup is always put in the testcase code which start with test.","commit_id":"36eeab046527dcb4fbe41c1981b4b037bbe11d27"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"9c9a1354eec3e1692078d6683ca3403c69443c70","unresolved":false,"context_lines":[{"line_number":464,"context_line":"        flavor \u003d client.create_flavor("},{"line_number":465,"context_line":"            ram\u003dram, vcpus\u003dvcpus, disk\u003ddisk, name\u003dname,"},{"line_number":466,"context_line":"            id\u003did, is_public\u003dis_public, **kwargs)[\u0027flavor\u0027]"},{"line_number":467,"context_line":"        self.addCleanup(client.wait_for_resource_deletion, flavor[\u0027id\u0027])"},{"line_number":468,"context_line":"        self.addCleanup(client.delete_flavor, flavor[\u0027id\u0027])"},{"line_number":469,"context_line":"        return flavor"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa31d9ce_a2cb9d71","line":468,"range":{"start_line":467,"start_character":8,"end_line":468,"end_character":59},"in_reply_to":"fa31d9ce_9f7436d0","updated":"2017-02-10 09:34:54.000000000","message":"Thanks, addCleanup is needed here.\nOther function doesn\u0027t have addCleanup because it is class method and can not call instance method addCleanup.","commit_id":"36eeab046527dcb4fbe41c1981b4b037bbe11d27"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"1402bf0197be97c152cb88dbe7efc60e03868189","unresolved":false,"context_lines":[{"line_number":464,"context_line":"        flavor \u003d client.create_flavor("},{"line_number":465,"context_line":"            ram\u003dram, vcpus\u003dvcpus, disk\u003ddisk, name\u003dname,"},{"line_number":466,"context_line":"            id\u003did, is_public\u003dis_public, **kwargs)[\u0027flavor\u0027]"},{"line_number":467,"context_line":"        self.addCleanup(client.wait_for_resource_deletion, flavor[\u0027id\u0027])"},{"line_number":468,"context_line":"        self.addCleanup(client.delete_flavor, flavor[\u0027id\u0027])"},{"line_number":469,"context_line":"        return flavor"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa31d9ce_7395f93e","line":468,"range":{"start_line":467,"start_character":8,"end_line":468,"end_character":59},"in_reply_to":"fa31d9ce_a2cb9d71","updated":"2017-02-10 10:39:58.000000000","message":"Yep, it\u0027s better to let the \"helper\" function schedule the clean up, that is let the \"helper\" function call addCleanup.","commit_id":"36eeab046527dcb4fbe41c1981b4b037bbe11d27"},{"author":{"_account_id":24903,"name":"Hongtao Zhang","email":"changhungtao@126.com","username":"ZhangHongtao"},"change_message_id":"64794ea449fb69545ea8283fd56b910e98b23768","unresolved":false,"context_lines":[{"line_number":464,"context_line":"        flavor \u003d client.create_flavor("},{"line_number":465,"context_line":"            ram\u003dram, vcpus\u003dvcpus, disk\u003ddisk, name\u003dname,"},{"line_number":466,"context_line":"            id\u003did, is_public\u003dis_public, **kwargs)[\u0027flavor\u0027]"},{"line_number":467,"context_line":"        self.addCleanup(client.wait_for_resource_deletion, flavor[\u0027id\u0027])"},{"line_number":468,"context_line":"        self.addCleanup(client.delete_flavor, flavor[\u0027id\u0027])"},{"line_number":469,"context_line":"        return flavor"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa31d9ce_b89f505e","line":468,"range":{"start_line":467,"start_character":8,"end_line":468,"end_character":59},"in_reply_to":"fa31d9ce_a2cb9d71","updated":"2017-02-10 10:11:18.000000000","message":"清理是业务逻辑代码，感觉不应该放到base.py的函数里面，并且create_flavor从名称上看就是一个创建flavor的，不应该包含清理的代码，放在这里，如果别人调用这个函数，容易重复清理，感觉addCleanup应该放到测试case里面吧！","commit_id":"36eeab046527dcb4fbe41c1981b4b037bbe11d27"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"481ef92fc3b1d51093b1e4dcd2927b89485e9092","unresolved":false,"context_lines":[{"line_number":464,"context_line":"        flavor \u003d client.create_flavor("},{"line_number":465,"context_line":"            ram\u003dram, vcpus\u003dvcpus, disk\u003ddisk, name\u003dname,"},{"line_number":466,"context_line":"            id\u003did, is_public\u003dis_public, **kwargs)[\u0027flavor\u0027]"},{"line_number":467,"context_line":"        self.addCleanup(client.wait_for_resource_deletion, flavor[\u0027id\u0027])"},{"line_number":468,"context_line":"        self.addCleanup(client.delete_flavor, flavor[\u0027id\u0027])"},{"line_number":469,"context_line":"        return flavor"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa31d9ce_94821e51","line":468,"range":{"start_line":467,"start_character":8,"end_line":468,"end_character":59},"in_reply_to":"fa31d9ce_b89f505e","updated":"2017-02-13 00:58:57.000000000","message":"usually create function in base will do cleanup, e.g., base.create_volume, it calls cls.volumes.append(volume), \nand then in resource_cleanup, cls.clear_volumes() is called, which will delete the volumes created by base.create_volume.","commit_id":"36eeab046527dcb4fbe41c1981b4b037bbe11d27"}]}
