)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"e3368f6af425a9e70b948207e3231cb8fea95fd8","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch migrate the network basic ops scenario tests"},{"line_number":10,"context_line":"from official client to tempest clients."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Make some client methods more generic."},{"line_number":13,"context_line":"Enhance create DeletableResource module in services/network for resources using"},{"line_number":14,"context_line":"the tempest clients"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"baada198_f52052b3","line":12,"updated":"2014-08-06 21:37:16.000000000","message":"This is not needed here, or?","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"6e4c62d4bba1bb581a010ee6390e0aa0348435da","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch migrate the network basic ops scenario tests"},{"line_number":10,"context_line":"from official client to tempest clients."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Make some client methods more generic."},{"line_number":13,"context_line":"Enhance create DeletableResource module in services/network for resources using"},{"line_number":14,"context_line":"the tempest clients"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"baada198_41bbf673","line":12,"in_reply_to":"baada198_f52052b3","updated":"2014-08-07 07:52:07.000000000","message":"it is, see comment on json client","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"e3368f6af425a9e70b948207e3231cb8fea95fd8","unresolved":false,"context_lines":[{"line_number":10,"context_line":"from official client to tempest clients."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Make some client methods more generic."},{"line_number":13,"context_line":"Enhance create DeletableResource module in services/network for resources using"},{"line_number":14,"context_line":"the tempest clients"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Partially-implements: bp:tempest-client-scenarios"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"baada198_d53a6ee5","line":13,"updated":"2014-08-06 21:37:16.000000000","message":"Could you explain here that the module is copied temporarily and the original shall be removed once migration is complete?","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"6e4c62d4bba1bb581a010ee6390e0aa0348435da","unresolved":false,"context_lines":[{"line_number":10,"context_line":"from official client to tempest clients."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Make some client methods more generic."},{"line_number":13,"context_line":"Enhance create DeletableResource module in services/network for resources using"},{"line_number":14,"context_line":"the tempest clients"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Partially-implements: bp:tempest-client-scenarios"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"baada198_4194d6e6","line":13,"in_reply_to":"baada198_d53a6ee5","updated":"2014-08-07 07:52:07.000000000","message":"will do","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"}],"tempest/scenario/manager.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"e3368f6af425a9e70b948207e3231cb8fea95fd8","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        cls.servers_client \u003d cls.manager.servers_client"},{"line_number":88,"context_line":"        cls.volumes_client \u003d cls.manager.volumes_client"},{"line_number":89,"context_line":"        cls.interface_client \u003d cls.manager.interfaces_client"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        cls.network_client \u003d cls.manager.network_client"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_e740a908","line":90,"updated":"2014-08-06 21:37:16.000000000","message":"Redundant line.","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"6e4c62d4bba1bb581a010ee6390e0aa0348435da","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        cls.servers_client \u003d cls.manager.servers_client"},{"line_number":88,"context_line":"        cls.volumes_client \u003d cls.manager.volumes_client"},{"line_number":89,"context_line":"        cls.interface_client \u003d cls.manager.interfaces_client"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        cls.network_client \u003d cls.manager.network_client"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_61b2ba97","line":90,"in_reply_to":"baada198_e740a908","updated":"2014-08-07 07:52:07.000000000","message":"will remove","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"e3368f6af425a9e70b948207e3231cb8fea95fd8","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        # not at the end of the class"},{"line_number":123,"context_line":"        self.addCleanup(self._wait_for_cleanups)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def delete_wrapper(self, delete_thing, *args, **kwargs):"},{"line_number":126,"context_line":"        \"\"\"Ignores NotFound exceptions for delete operations."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        @param delete_thing: delete method of a resource"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_6711f9f7","line":125,"updated":"2014-08-06 21:37:16.000000000","message":"Perhaps I should have implemented this as\n\ndef delete_wrapper(self, delete_nullary):\n...\ntry:\n    delete_nullary()\n\nAnd then one should do:\n\nself.delete_wrapper(lambda: my_delete_method(p1, p2, ..))","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"6e4c62d4bba1bb581a010ee6390e0aa0348435da","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        # not at the end of the class"},{"line_number":123,"context_line":"        self.addCleanup(self._wait_for_cleanups)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def delete_wrapper(self, delete_thing, *args, **kwargs):"},{"line_number":126,"context_line":"        \"\"\"Ignores NotFound exceptions for delete operations."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        @param delete_thing: delete method of a resource"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_1bbfadcb","line":125,"in_reply_to":"baada198_6711f9f7","updated":"2014-08-07 07:52:07.000000000","message":"wanna do this in your patch, or should I do it here?","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"e3368f6af425a9e70b948207e3231cb8fea95fd8","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        \"\"\"Ignores NotFound exceptions for delete operations."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        @param delete_thing: delete method of a resource"},{"line_number":129,"context_line":"        @param thing_id: id of the resource to be deleted"},{"line_number":130,"context_line":"        \"\"\""},{"line_number":131,"context_line":"        try:"},{"line_number":132,"context_line":"            # Tempest clients return dicts, so there is no common delete"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_674c9940","line":129,"updated":"2014-08-06 21:37:16.000000000","message":"As you changed the method signature, please update the docstring.","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"6e4c62d4bba1bb581a010ee6390e0aa0348435da","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        \"\"\"Ignores NotFound exceptions for delete operations."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        @param delete_thing: delete method of a resource"},{"line_number":129,"context_line":"        @param thing_id: id of the resource to be deleted"},{"line_number":130,"context_line":"        \"\"\""},{"line_number":131,"context_line":"        try:"},{"line_number":132,"context_line":"            # Tempest clients return dicts, so there is no common delete"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_7ba7c9bc","line":129,"in_reply_to":"baada198_674c9940","updated":"2014-08-07 07:52:07.000000000","message":"You are right. However, if you change the method, then it\u0027s kinda moot point :)","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"e3368f6af425a9e70b948207e3231cb8fea95fd8","unresolved":false,"context_lines":[{"line_number":390,"context_line":"            LOG.debug(\u0027Console output for %s\u0027, server[\u0027id\u0027])"},{"line_number":391,"context_line":"            LOG.debug(self.servers_client.get_console_output(server[\u0027id\u0027]))"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"    def _create_network(self, tenant_id, namestart\u003d\u0027network-smoke-\u0027):"},{"line_number":394,"context_line":"        name \u003d data_utils.rand_name(namestart)"},{"line_number":395,"context_line":"        _, result \u003d self.network_client.create_network(name\u003dname,"},{"line_number":396,"context_line":"                                                       tenant_id\u003dtenant_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_4f26d1cc","line":393,"updated":"2014-08-06 21:37:16.000000000","message":"Moving this function and all the others below from NetworkScenario to Scenario seems an unrelated change.\nI know you\u0027d like to restructure the scenario util functions, but I don\u0027t think this work belongs to this bp.\nI\u0027d rather focus on the migration alone here.","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"6e4c62d4bba1bb581a010ee6390e0aa0348435da","unresolved":false,"context_lines":[{"line_number":390,"context_line":"            LOG.debug(\u0027Console output for %s\u0027, server[\u0027id\u0027])"},{"line_number":391,"context_line":"            LOG.debug(self.servers_client.get_console_output(server[\u0027id\u0027]))"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"    def _create_network(self, tenant_id, namestart\u003d\u0027network-smoke-\u0027):"},{"line_number":394,"context_line":"        name \u003d data_utils.rand_name(namestart)"},{"line_number":395,"context_line":"        _, result \u003d self.network_client.create_network(name\u003dname,"},{"line_number":396,"context_line":"                                                       tenant_id\u003dtenant_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_bb908150","line":393,"in_reply_to":"baada198_4f26d1cc","updated":"2014-08-07 07:52:07.000000000","message":"network_basic_ops (and secgroup, and lbaas later) needs all of these methods. why is it unrelated?","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"6f88d74c541de383f68cf3aeab1a35e90039644c","unresolved":false,"context_lines":[{"line_number":390,"context_line":"            LOG.debug(\u0027Console output for %s\u0027, server[\u0027id\u0027])"},{"line_number":391,"context_line":"            LOG.debug(self.servers_client.get_console_output(server[\u0027id\u0027]))"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"    def _create_network(self, tenant_id, namestart\u003d\u0027network-smoke-\u0027):"},{"line_number":394,"context_line":"        name \u003d data_utils.rand_name(namestart)"},{"line_number":395,"context_line":"        _, result \u003d self.network_client.create_network(name\u003dname,"},{"line_number":396,"context_line":"                                                       tenant_id\u003dtenant_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_831625f0","line":393,"in_reply_to":"baada198_bb908150","updated":"2014-08-25 22:50:05.000000000","message":"They used to belong to NetworkScenarioTest, instead of going into NeutronScenarioTest they are now in ScenarioTest (one level up).","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"e3368f6af425a9e70b948207e3231cb8fea95fd8","unresolved":false,"context_lines":[{"line_number":803,"context_line":"            return resource_list[resource_type]"},{"line_number":804,"context_line":"        return temp"},{"line_number":805,"context_line":""},{"line_number":806,"context_line":"    def admin_list_networks(self, *args, **kwargs):"},{"line_number":807,"context_line":"        return self._admin_lister(\u0027networks\u0027)(*args, **kwargs)"},{"line_number":808,"context_line":""},{"line_number":809,"context_line":"    def admin_list_subnets(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_07acbd35","line":806,"updated":"2014-08-06 21:37:16.000000000","message":"While I understand the reason behind the rename, I think it adds here unnecessary churn to an already complex / large change. Same for L809, L812, L815","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"6e4c62d4bba1bb581a010ee6390e0aa0348435da","unresolved":false,"context_lines":[{"line_number":803,"context_line":"            return resource_list[resource_type]"},{"line_number":804,"context_line":"        return temp"},{"line_number":805,"context_line":""},{"line_number":806,"context_line":"    def admin_list_networks(self, *args, **kwargs):"},{"line_number":807,"context_line":"        return self._admin_lister(\u0027networks\u0027)(*args, **kwargs)"},{"line_number":808,"context_line":""},{"line_number":809,"context_line":"    def admin_list_subnets(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_a66308dd","line":806,"in_reply_to":"baada198_07acbd35","updated":"2014-08-07 07:52:07.000000000","message":"The functionality has changed, so the name has to change. I think that neglecting to do this is just asking for trouble down the line","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"6f88d74c541de383f68cf3aeab1a35e90039644c","unresolved":false,"context_lines":[{"line_number":803,"context_line":"            return resource_list[resource_type]"},{"line_number":804,"context_line":"        return temp"},{"line_number":805,"context_line":""},{"line_number":806,"context_line":"    def admin_list_networks(self, *args, **kwargs):"},{"line_number":807,"context_line":"        return self._admin_lister(\u0027networks\u0027)(*args, **kwargs)"},{"line_number":808,"context_line":""},{"line_number":809,"context_line":"    def admin_list_subnets(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_63c74965","line":806,"in_reply_to":"baada198_a66308dd","updated":"2014-08-25 22:50:05.000000000","message":"How did it change? It\u0027s listing resources with an admin account as it did before.","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"e3368f6af425a9e70b948207e3231cb8fea95fd8","unresolved":false,"context_lines":[{"line_number":1061,"context_line":"            LOG.debug(\"Waiting for %s to get to %s status. \""},{"line_number":1062,"context_line":"                      \"Currently in %s status\","},{"line_number":1063,"context_line":"                      thing, log_status, new_status)"},{"line_number":1064,"context_line":""},{"line_number":1065,"context_line":"        if not tempest.test.call_until_true("},{"line_number":1066,"context_line":"                check_status,"},{"line_number":1067,"context_line":"                CONF.compute.build_timeout,"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_ba05e911","line":1064,"updated":"2014-08-06 21:37:16.000000000","message":"Line added by mistake?","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"6e4c62d4bba1bb581a010ee6390e0aa0348435da","unresolved":false,"context_lines":[{"line_number":1061,"context_line":"            LOG.debug(\"Waiting for %s to get to %s status. \""},{"line_number":1062,"context_line":"                      \"Currently in %s status\","},{"line_number":1063,"context_line":"                      thing, log_status, new_status)"},{"line_number":1064,"context_line":""},{"line_number":1065,"context_line":"        if not tempest.test.call_until_true("},{"line_number":1066,"context_line":"                check_status,"},{"line_number":1067,"context_line":"                CONF.compute.build_timeout,"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_e65d0018","line":1064,"in_reply_to":"baada198_ba05e911","updated":"2014-08-07 07:52:07.000000000","message":"yeah","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"e3368f6af425a9e70b948207e3231cb8fea95fd8","unresolved":false,"context_lines":[{"line_number":1063,"context_line":"                      thing, log_status, new_status)"},{"line_number":1064,"context_line":""},{"line_number":1065,"context_line":"        if not tempest.test.call_until_true("},{"line_number":1066,"context_line":"                check_status,"},{"line_number":1067,"context_line":"                CONF.compute.build_timeout,"},{"line_number":1068,"context_line":"                CONF.compute.build_interval):"},{"line_number":1069,"context_line":"            message \u003d (\"Timed out waiting for thing %s \""}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_fa0e8132","line":1066,"updated":"2014-08-06 21:37:16.000000000","message":"Spaces added by mistake?","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"6e4c62d4bba1bb581a010ee6390e0aa0348435da","unresolved":false,"context_lines":[{"line_number":1063,"context_line":"                      thing, log_status, new_status)"},{"line_number":1064,"context_line":""},{"line_number":1065,"context_line":"        if not tempest.test.call_until_true("},{"line_number":1066,"context_line":"                check_status,"},{"line_number":1067,"context_line":"                CONF.compute.build_timeout,"},{"line_number":1068,"context_line":"                CONF.compute.build_interval):"},{"line_number":1069,"context_line":"            message \u003d (\"Timed out waiting for thing %s \""}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_06591429","line":1066,"in_reply_to":"baada198_fa0e8132","updated":"2014-08-07 07:52:07.000000000","message":"yeah","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"5d5415ed0e7f557c5410410ed89bee1adaba54cf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"1abeadc6_721924d0","updated":"2014-08-29 17:24:33.000000000","message":"(nit) It would make review easier if you maintained the same order of methods in the two network scenario test classes.","commit_id":"45a553f3b1f565ecea2ef40273c269afe0141481"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"a2cd42982b238ee9a218be5f7692734041a602ff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"fa98f980_ca5832fd","in_reply_to":"1abeadc6_721924d0","updated":"2014-09-01 11:56:36.000000000","message":"Done","commit_id":"45a553f3b1f565ecea2ef40273c269afe0141481"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"5d5415ed0e7f557c5410410ed89bee1adaba54cf","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        \"\"\"Ignores NotFound exceptions for delete operations."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        @param delete_thing: delete method of a resource"},{"line_number":130,"context_line":"        \"\"\""},{"line_number":131,"context_line":"        try:"},{"line_number":132,"context_line":"            # Tempest clients return dicts, so there is no common delete"},{"line_number":133,"context_line":"            # method available. Using a callable instead"}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_771916d0","line":130,"updated":"2014-08-29 17:24:33.000000000","message":"docstring is incomplete now (nit)","commit_id":"45a553f3b1f565ecea2ef40273c269afe0141481"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"a2cd42982b238ee9a218be5f7692734041a602ff","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        \"\"\"Ignores NotFound exceptions for delete operations."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        @param delete_thing: delete method of a resource"},{"line_number":130,"context_line":"        \"\"\""},{"line_number":131,"context_line":"        try:"},{"line_number":132,"context_line":"            # Tempest clients return dicts, so there is no common delete"},{"line_number":133,"context_line":"            # method available. Using a callable instead"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa98f980_4a9fe25f","line":130,"in_reply_to":"1abeadc6_771916d0","updated":"2014-09-01 11:56:36.000000000","message":"Done","commit_id":"45a553f3b1f565ecea2ef40273c269afe0141481"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"5d5415ed0e7f557c5410410ed89bee1adaba54cf","unresolved":false,"context_lines":[{"line_number":263,"context_line":"        _, volume \u003d self.volumes_client.get_volume(volume[\u0027id\u0027])"},{"line_number":264,"context_line":"        return volume"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    def _create_loginable_secgroup_rule(self, secgroup_id\u003dNone):"},{"line_number":267,"context_line":"        _client \u003d self.security_groups_client"},{"line_number":268,"context_line":"        if secgroup_id is None:"},{"line_number":269,"context_line":"            _, sgs \u003d _client.list_security_groups()"}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_f7d286cf","line":266,"updated":"2014-08-29 17:24:33.000000000","message":"I suppose the rename is to allow overriding. I\u0027m not sure I see the need for this, but not a big deal anyways.","commit_id":"45a553f3b1f565ecea2ef40273c269afe0141481"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"5d5415ed0e7f557c5410410ed89bee1adaba54cf","unresolved":false,"context_lines":[{"line_number":301,"context_line":"            rules.append(sg_rule)"},{"line_number":302,"context_line":"        return rules"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    def _create_security_group(self):"},{"line_number":305,"context_line":"        # Create security group"},{"line_number":306,"context_line":"        sg_name \u003d data_utils.rand_name(self.__class__.__name__)"},{"line_number":307,"context_line":"        sg_desc \u003d sg_name + \" description\""}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_37d87eee","line":304,"updated":"2014-08-29 17:24:33.000000000","message":"Ditto L266","commit_id":"45a553f3b1f565ecea2ef40273c269afe0141481"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"b64f587b7e5407869b44eb40263ed45118e4c3fd","unresolved":false,"context_lines":[{"line_number":418,"context_line":"        return snapshot_image"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"class NeutronScenarioTest(ScenarioTest):"},{"line_number":422,"context_line":"    \"\"\""},{"line_number":423,"context_line":"    This Class enforces using Neutron instead of novanetwork and provides"},{"line_number":424,"context_line":"    relevant helper methods."}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_6b48692d","line":421,"updated":"2014-08-29 02:48:07.000000000","message":"I don\u0027t understand the reason why you use the code name \u0027Neutron\u0027 to this class.\nThe other classes are not code name such as Baremetal, Orchestration etc.\nSo, if you don\u0027t have a strong opinion, I think we shouldn\u0027t use the code name here.\n\nI think \u0027NetworkScenarioTest\u0027 is the best name to this class.\nBut the name \u0027NetworkScenarioTest\u0027 is already used in this module.\n\nSo how about renaming \u0027NetworkScenarioTest(OfficialClientTest)\u0027 to \u0027NetworkOfficialClientTest(OfficialClientTest)\u0027\nor something?","commit_id":"45a553f3b1f565ecea2ef40273c269afe0141481"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"5d5415ed0e7f557c5410410ed89bee1adaba54cf","unresolved":false,"context_lines":[{"line_number":418,"context_line":"        return snapshot_image"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"class NeutronScenarioTest(ScenarioTest):"},{"line_number":422,"context_line":"    \"\"\""},{"line_number":423,"context_line":"    This Class enforces using Neutron instead of novanetwork and provides"},{"line_number":424,"context_line":"    relevant helper methods."}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_7742f6ab","line":421,"in_reply_to":"1abeadc6_5a28d1e1","updated":"2014-08-29 17:24:33.000000000","message":"I think the reason for creating a new class is that we are doing migrations one test at the time, and changing NetworkScenarioTest would affect multiple tests at once.\nI\u0027m not saying it would be a bad thing, it\u0027s just not consistent with the other migrations.\nI agree that whatever the solution, it would be better to keep the NetworkScenarioTest name.","commit_id":"45a553f3b1f565ecea2ef40273c269afe0141481"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"96ace554b2a24d30c9a012dec5bc47cda65a97b1","unresolved":false,"context_lines":[{"line_number":418,"context_line":"        return snapshot_image"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"class NeutronScenarioTest(ScenarioTest):"},{"line_number":422,"context_line":"    \"\"\""},{"line_number":423,"context_line":"    This Class enforces using Neutron instead of novanetwork and provides"},{"line_number":424,"context_line":"    relevant helper methods."}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_5a28d1e1","line":421,"in_reply_to":"1abeadc6_6b48692d","updated":"2014-08-29 04:50:31.000000000","message":"Or how about modifying NetworkScenarioTest class not creating NeutronScenarioTest class?","commit_id":"45a553f3b1f565ecea2ef40273c269afe0141481"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"a2cd42982b238ee9a218be5f7692734041a602ff","unresolved":false,"context_lines":[{"line_number":418,"context_line":"        return snapshot_image"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"class NeutronScenarioTest(ScenarioTest):"},{"line_number":422,"context_line":"    \"\"\""},{"line_number":423,"context_line":"    This Class enforces using Neutron instead of novanetwork and provides"},{"line_number":424,"context_line":"    relevant helper methods."}],"source_content_type":"text/x-python","patch_set":11,"id":"fa98f980_cab032e0","line":421,"in_reply_to":"1abeadc6_6b48692d","updated":"2014-09-01 11:56:36.000000000","message":"the reason for the rename is that non migrated tests still use NetworkScenarioTest. the options are to either choose a temp name for the new class, or change the name of the old class by touching all non-related modules.\nin IRC we agreed to keep the temp name and make sure it\u0027s changed once old class is no longer used","commit_id":"45a553f3b1f565ecea2ef40273c269afe0141481"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"5d5415ed0e7f557c5410410ed89bee1adaba54cf","unresolved":false,"context_lines":[{"line_number":420,"context_line":""},{"line_number":421,"context_line":"class NeutronScenarioTest(ScenarioTest):"},{"line_number":422,"context_line":"    \"\"\""},{"line_number":423,"context_line":"    This Class enforces using Neutron instead of novanetwork and provides"},{"line_number":424,"context_line":"    relevant helper methods."},{"line_number":425,"context_line":"    If need be, methods should override novanetwork methods from ancestor"},{"line_number":426,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_b2365c01","line":423,"updated":"2014-08-29 17:24:33.000000000","message":"(nit) I would leave the original docstring first, and rephrase a bit. e.g.\n\nBase class for network scenario tests.\n\nThis class provide helpers for network scenario tests, using the neutron API. Helpers from ancestor which use the nova network API are overridden with the neutron API.","commit_id":"45a553f3b1f565ecea2ef40273c269afe0141481"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"a2cd42982b238ee9a218be5f7692734041a602ff","unresolved":false,"context_lines":[{"line_number":420,"context_line":""},{"line_number":421,"context_line":"class NeutronScenarioTest(ScenarioTest):"},{"line_number":422,"context_line":"    \"\"\""},{"line_number":423,"context_line":"    This Class enforces using Neutron instead of novanetwork and provides"},{"line_number":424,"context_line":"    relevant helper methods."},{"line_number":425,"context_line":"    If need be, methods should override novanetwork methods from ancestor"},{"line_number":426,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa98f980_6aef46b1","line":423,"in_reply_to":"1abeadc6_b2365c01","updated":"2014-09-01 11:56:36.000000000","message":"Done","commit_id":"45a553f3b1f565ecea2ef40273c269afe0141481"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"5d5415ed0e7f557c5410410ed89bee1adaba54cf","unresolved":false,"context_lines":[{"line_number":699,"context_line":"            try:"},{"line_number":700,"context_line":"                source.ping_host(dest)"},{"line_number":701,"context_line":"            except exceptions.SSHExecCommandFailed:"},{"line_number":702,"context_line":"                LOG.exception(\u0027Failed to ping host via ssh connection\u0027)"},{"line_number":703,"context_line":"                return not should_succeed"},{"line_number":704,"context_line":"            return should_succeed"},{"line_number":705,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_128b90c3","line":702,"updated":"2014-08-29 17:24:33.000000000","message":"rebase issue? LOG.warn is used now.","commit_id":"45a553f3b1f565ecea2ef40273c269afe0141481"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"a2cd42982b238ee9a218be5f7692734041a602ff","unresolved":false,"context_lines":[{"line_number":699,"context_line":"            try:"},{"line_number":700,"context_line":"                source.ping_host(dest)"},{"line_number":701,"context_line":"            except exceptions.SSHExecCommandFailed:"},{"line_number":702,"context_line":"                LOG.exception(\u0027Failed to ping host via ssh connection\u0027)"},{"line_number":703,"context_line":"                return not should_succeed"},{"line_number":704,"context_line":"            return should_succeed"},{"line_number":705,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa98f980_ea3a5635","line":702,"in_reply_to":"1abeadc6_128b90c3","updated":"2014-09-01 11:56:36.000000000","message":"Done","commit_id":"45a553f3b1f565ecea2ef40273c269afe0141481"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"5d5415ed0e7f557c5410410ed89bee1adaba54cf","unresolved":false,"context_lines":[{"line_number":1895,"context_line":"        # The target login is assumed to have been configured for"},{"line_number":1896,"context_line":"        # key-based authentication by cloud-init."},{"line_number":1897,"context_line":"        try:"},{"line_number":1898,"context_line":"            for net_name, ip_addresses in server[\u0027networks\u0027].iteritems():"},{"line_number":1899,"context_line":"                for ip_address in ip_addresses:"},{"line_number":1900,"context_line":"                    self._check_vm_connectivity(ip_address,"},{"line_number":1901,"context_line":"                                                username,"}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_178b82c3","line":1898,"updated":"2014-08-29 17:24:33.000000000","message":"Rebase issue?","commit_id":"45a553f3b1f565ecea2ef40273c269afe0141481"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"a2cd42982b238ee9a218be5f7692734041a602ff","unresolved":false,"context_lines":[{"line_number":1895,"context_line":"        # The target login is assumed to have been configured for"},{"line_number":1896,"context_line":"        # key-based authentication by cloud-init."},{"line_number":1897,"context_line":"        try:"},{"line_number":1898,"context_line":"            for net_name, ip_addresses in server[\u0027networks\u0027].iteritems():"},{"line_number":1899,"context_line":"                for ip_address in ip_addresses:"},{"line_number":1900,"context_line":"                    self._check_vm_connectivity(ip_address,"},{"line_number":1901,"context_line":"                                                username,"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa98f980_6a74a6fd","line":1898,"in_reply_to":"1abeadc6_178b82c3","updated":"2014-09-01 11:56:36.000000000","message":"Done","commit_id":"45a553f3b1f565ecea2ef40273c269afe0141481"}],"tempest/scenario/test_network_basic_ops.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"5d5415ed0e7f557c5410410ed89bee1adaba54cf","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            if not test.is_extension_enabled(ext, \u0027network\u0027):"},{"line_number":97,"context_line":"                msg \u003d \"%s extension not enabled.\" % ext"},{"line_number":98,"context_line":"                raise cls.skipException(msg)"},{"line_number":99,"context_line":"        cls.check_preconditions()"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def setUp(self):"},{"line_number":102,"context_line":"        super(TestNetworkBasicOps, self).setUp()"}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_c3a94291","side":"PARENT","line":99,"updated":"2014-08-29 17:24:33.000000000","message":"Moving this up to ancestor it\u0027s unrelated, but ok...","commit_id":"c981803ac7a363565bf7e3a9e254662b168ca41e"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"5d5415ed0e7f557c5410410ed89bee1adaba54cf","unresolved":false,"context_lines":[{"line_number":149,"context_line":"            \u0027security_groups\u0027: security_groups,"},{"line_number":150,"context_line":"        }"},{"line_number":151,"context_line":"        server \u003d self.create_server(name\u003dname, create_kwargs\u003dcreate_kwargs)"},{"line_number":152,"context_line":"        self.servers.append(server)"},{"line_number":153,"context_line":"        return server"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def _get_server_key(self, server):"}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_fefa51bb","line":152,"updated":"2014-08-29 17:24:33.000000000","message":"Why this?","commit_id":"45a553f3b1f565ecea2ef40273c269afe0141481"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"a2cd42982b238ee9a218be5f7692734041a602ff","unresolved":false,"context_lines":[{"line_number":149,"context_line":"            \u0027security_groups\u0027: security_groups,"},{"line_number":150,"context_line":"        }"},{"line_number":151,"context_line":"        server \u003d self.create_server(name\u003dname, create_kwargs\u003dcreate_kwargs)"},{"line_number":152,"context_line":"        self.servers.append(server)"},{"line_number":153,"context_line":"        return server"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def _get_server_key(self, server):"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa98f980_1d10c64d","line":152,"in_reply_to":"1abeadc6_fefa51bb","updated":"2014-09-01 11:56:36.000000000","message":"the method creating the resource should also add it to the test collection.\nPreviously, the collection was using the objects as dict key so it got handled higher. this is no longer the case.","commit_id":"45a553f3b1f565ecea2ef40273c269afe0141481"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"5d5415ed0e7f557c5410410ed89bee1adaba54cf","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                    servers_for_debug\u003dself.servers)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def _create_and_associate_floating_ips(self, server):"},{"line_number":168,"context_line":"        public_network_id \u003d CONF.network.public_network_id"},{"line_number":169,"context_line":"        floating_ip \u003d self._create_floating_ip(server, public_network_id)"},{"line_number":170,"context_line":"        self.floating_ip_tuple \u003d Floating_IP_tuple(floating_ip, server)"},{"line_number":171,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_fe21714d","line":168,"updated":"2014-08-29 17:24:33.000000000","message":"This could work on multiple servers before, it works on a single server now. Why the change?","commit_id":"45a553f3b1f565ecea2ef40273c269afe0141481"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"a2cd42982b238ee9a218be5f7692734041a602ff","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                    servers_for_debug\u003dself.servers)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def _create_and_associate_floating_ips(self, server):"},{"line_number":168,"context_line":"        public_network_id \u003d CONF.network.public_network_id"},{"line_number":169,"context_line":"        floating_ip \u003d self._create_floating_ip(server, public_network_id)"},{"line_number":170,"context_line":"        self.floating_ip_tuple \u003d Floating_IP_tuple(floating_ip, server)"},{"line_number":171,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa98f980_9d04b616","line":168,"in_reply_to":"1abeadc6_fe21714d","updated":"2014-09-01 11:56:36.000000000","message":"That was an error in the test design. In this test there\u0027s no need for working on multiple servers.\nSince I\u0027m changing server handling, I see no reason to keep this error any longer","commit_id":"45a553f3b1f565ecea2ef40273c269afe0141481"}],"tempest/services/network/json/network_client.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"e3368f6af425a9e70b948207e3231cb8fea95fd8","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        \"\"\""},{"line_number":109,"context_line":"        return self._update_router(router_id, set_enable_snat\u003dTrue, **kwargs)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def add_router_interface(self, router_id, **kwargs):"},{"line_number":112,"context_line":"        uri \u003d \u0027%s/routers/%s/add_router_interface\u0027 % (self.uri_prefix,"},{"line_number":113,"context_line":"              router_id)"},{"line_number":114,"context_line":"        update_body \u003d json.dumps(kwargs)"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_cf0bc17a","line":111,"updated":"2014-08-06 21:37:16.000000000","message":"Unless I missed something, all changes in this file seem to be totally unrelated to this patch-set, and should not be in here.","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"6e4c62d4bba1bb581a010ee6390e0aa0348435da","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        \"\"\""},{"line_number":109,"context_line":"        return self._update_router(router_id, set_enable_snat\u003dTrue, **kwargs)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def add_router_interface(self, router_id, **kwargs):"},{"line_number":112,"context_line":"        uri \u003d \u0027%s/routers/%s/add_router_interface\u0027 % (self.uri_prefix,"},{"line_number":113,"context_line":"              router_id)"},{"line_number":114,"context_line":"        update_body \u003d json.dumps(kwargs)"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_a1f4d2d0","line":111,"in_reply_to":"baada198_cf0bc17a","updated":"2014-08-07 07:52:07.000000000","message":"the network scenario call for add_router_interface. instead of limiting them to one of the 2 (too) specific methods, I\u0027m changing the client method for better functionality\n\nInstead of \"dumbbing down\" the scenario, I\u0027d prefer to enhance the client. I think this is exactly in scope for this patch, but I\u0027m happy to discuss this","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"}],"tempest/services/network/resources.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"e3368f6af425a9e70b948207e3231cb8fea95fd8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"baada198_156ea6fe","updated":"2014-08-06 21:37:16.000000000","message":"So this is copied and modified because the other network scenario tests still needs the original version that uses the official client, correct?\n\nOnce migration is done, the original file can be deleted.","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"6e4c62d4bba1bb581a010ee6390e0aa0348435da","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"baada198_01a1fe39","in_reply_to":"baada198_156ea6fe","updated":"2014-08-07 07:52:07.000000000","message":"yes. will amend commit msg","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"e3368f6af425a9e70b948207e3231cb8fea95fd8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 Hewlett-Packard Development Company, L.P."},{"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"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":6,"context_line":"#    a copy of the License at"},{"line_number":7,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_b5b25a94","line":4,"updated":"2014-08-06 21:37:16.000000000","message":"Removed spaces before \"Licensed\"","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"6e4c62d4bba1bb581a010ee6390e0aa0348435da","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 Hewlett-Packard Development Company, L.P."},{"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"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":6,"context_line":"#    a copy of the License at"},{"line_number":7,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_6169daf7","line":4,"in_reply_to":"baada198_b5b25a94","updated":"2014-08-07 07:52:07.000000000","message":"auto reformat error","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"e3368f6af425a9e70b948207e3231cb8fea95fd8","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        raise NotImplemented()"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def __hash__(self):"},{"line_number":49,"context_line":"        return hash(self.id)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"class DeletableServer(DeletableResource):"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_fa59215d","line":49,"updated":"2014-08-06 21:37:16.000000000","message":"Could you comment on the reason for this change - it\u0027s id(self) in the original file.","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"6e4c62d4bba1bb581a010ee6390e0aa0348435da","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        raise NotImplemented()"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def __hash__(self):"},{"line_number":49,"context_line":"        return hash(self.id)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"class DeletableServer(DeletableResource):"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_81434e6a","line":49,"in_reply_to":"baada198_fa59215d","updated":"2014-08-07 07:52:07.000000000","message":"figured it\u0027s better this way, as it is actually relating to the object uuid\nmight be out of scope though.","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"e3368f6af425a9e70b948207e3231cb8fea95fd8","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        return hash(self.id)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"class DeletableServer(DeletableResource):"},{"line_number":53,"context_line":"    pass"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_f563f2db","line":52,"updated":"2014-08-06 21:37:16.000000000","message":"I\u0027m not sure about this. \nYou can access dict values as attributes, but what\u0027s the benefit of that apart changing a bit less of code?\nThere is another bp about making tempest more like a library, and wrapping around the results of rest_client could be a part of that.","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"6f88d74c541de383f68cf3aeab1a35e90039644c","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        return hash(self.id)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"class DeletableServer(DeletableResource):"},{"line_number":53,"context_line":"    pass"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_c393bd4d","line":52,"in_reply_to":"baada198_e1ec0af7","updated":"2014-08-25 22:50:05.000000000","message":"So the code of the test should be changed, this is what the migration is about. Moving server to not being a dict is out of scope here I think.","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"6e4c62d4bba1bb581a010ee6390e0aa0348435da","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        return hash(self.id)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"class DeletableServer(DeletableResource):"},{"line_number":53,"context_line":"    pass"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_e1ec0af7","line":52,"in_reply_to":"baada198_f563f2db","updated":"2014-08-07 07:52:07.000000000","message":"network basic ops uses \"server\" as key for dict. can\u0027t be done if server is a dict.\nit needs to have __hash__ method.\nA future change as part of the bp you\u0027ve mentioned would create a new module for nova resources and move the server there","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"e3368f6af425a9e70b948207e3231cb8fea95fd8","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class DeletableRouter(DeletableResource):"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    def set_gateway(self, network_id):"},{"line_number":85,"context_line":"        return self.update(external_gateway_info\u003ddict(network_id\u003dnetwork_id))"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def unset_gateway(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_55f3be6c","line":84,"updated":"2014-08-06 21:37:16.000000000","message":"Why the rename add to set?","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"6e4c62d4bba1bb581a010ee6390e0aa0348435da","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class DeletableRouter(DeletableResource):"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    def set_gateway(self, network_id):"},{"line_number":85,"context_line":"        return self.update(external_gateway_info\u003ddict(network_id\u003dnetwork_id))"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def unset_gateway(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_016e5e2c","line":84,"in_reply_to":"baada198_55f3be6c","updated":"2014-08-07 07:52:07.000000000","message":"since it\u0027s a whole new module, I figured a proper name could be pushed without affecting unrelated patches. If you are strongly against it, I\u0027d remove it","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"e3368f6af425a9e70b948207e3231cb8fea95fd8","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    def set_gateway(self, network_id):"},{"line_number":85,"context_line":"        return self.update(external_gateway_info\u003ddict(network_id\u003dnetwork_id))"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def unset_gateway(self):"},{"line_number":88,"context_line":"        return self.update(external_gateway_info\u003ddict())"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def update(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_f584d2b3","line":87,"updated":"2014-08-06 21:37:16.000000000","message":"Why the rename remove to unset?","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"6e4c62d4bba1bb581a010ee6390e0aa0348435da","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    def set_gateway(self, network_id):"},{"line_number":85,"context_line":"        return self.update(external_gateway_info\u003ddict(network_id\u003dnetwork_id))"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def unset_gateway(self):"},{"line_number":88,"context_line":"        return self.update(external_gateway_info\u003ddict())"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def update(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_81d0aec9","line":87,"in_reply_to":"baada198_f584d2b3","updated":"2014-08-07 07:52:07.000000000","message":"same here","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"5d5415ed0e7f557c5410410ed89bee1adaba54cf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"1abeadc6_b231fca3","updated":"2014-08-29 17:24:33.000000000","message":"\"Rebase\" issue - this now uses Abc.","commit_id":"45a553f3b1f565ecea2ef40273c269afe0141481"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"a2cd42982b238ee9a218be5f7692734041a602ff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"fa98f980_77f2c69b","in_reply_to":"1abeadc6_b231fca3","updated":"2014-09-01 11:56:36.000000000","message":"Done","commit_id":"45a553f3b1f565ecea2ef40273c269afe0141481"}],"tempest/services/network/xml/network_client.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"e3368f6af425a9e70b948207e3231cb8fea95fd8","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        body \u003d _root_tag_fetcher_and_xml_to_json_parse(body)"},{"line_number":135,"context_line":"        return resp, body"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def add_router_interface(self, router_id, **kwargs):"},{"line_number":138,"context_line":"        uri \u003d \u0027%s/routers/%s/add_router_interface\u0027 % (self.uri_prefix,"},{"line_number":139,"context_line":"              router_id)"},{"line_number":140,"context_line":"        kw \u003d \u0027subnet_id\u0027 if \u0027subnet_id\u0027 in kwargs else \u0027port_id\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_af7f6dde","line":137,"updated":"2014-08-06 21:37:16.000000000","message":"Unless I missed something, all changes in this file seem to be totally unrelated to this patch-set, and should not be in here.","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"6e4c62d4bba1bb581a010ee6390e0aa0348435da","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        body \u003d _root_tag_fetcher_and_xml_to_json_parse(body)"},{"line_number":135,"context_line":"        return resp, body"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def add_router_interface(self, router_id, **kwargs):"},{"line_number":138,"context_line":"        uri \u003d \u0027%s/routers/%s/add_router_interface\u0027 % (self.uri_prefix,"},{"line_number":139,"context_line":"              router_id)"},{"line_number":140,"context_line":"        kw \u003d \u0027subnet_id\u0027 if \u0027subnet_id\u0027 in kwargs else \u0027port_id\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_01dc9ee0","line":137,"in_reply_to":"baada198_af7f6dde","updated":"2014-08-07 07:52:07.000000000","message":"see json file","commit_id":"343ee241329c5211fcebd8e9ab717b69eea09a34"}]}
