)]}'
{"tempest/api/network/admin/test_l3_agent_scheduler.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"b1df31a161d182cbfa3d8877cba864a9e2c351a1","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                cls.network \u003d cls.create_network()"},{"line_number":81,"context_line":"                cls.subnet \u003d cls.create_subnet(cls.network)"},{"line_number":82,"context_line":"                cls.port \u003d cls.create_port(cls.network)"},{"line_number":83,"context_line":"                cls.admin_routers_client.add_router_interface("},{"line_number":84,"context_line":"                    cls.router[\u0027id\u0027], port_id\u003dcls.port[\u0027id\u0027])"},{"line_number":85,"context_line":"                # NOTE: Sometimes we have seen this test fail with dvr in,"},{"line_number":86,"context_line":"                # multinode tests, since the dhcp port is not created before"}],"source_content_type":"text/x-python","patch_set":33,"id":"7af24918_222351be","line":83,"updated":"2016-03-04 15:40:32.000000000","message":"Is it OK that we use admin_routers_client instead of routers_client? As I can see, previously we used cls.client here.","commit_id":"699e5c43d40f5e1e1efa7806d7614986d53f799c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"575f7f01a22687a5cf686657b401236ca6bedb6d","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                cls.network \u003d cls.create_network()"},{"line_number":81,"context_line":"                cls.subnet \u003d cls.create_subnet(cls.network)"},{"line_number":82,"context_line":"                cls.port \u003d cls.create_port(cls.network)"},{"line_number":83,"context_line":"                cls.admin_routers_client.add_router_interface("},{"line_number":84,"context_line":"                    cls.router[\u0027id\u0027], port_id\u003dcls.port[\u0027id\u0027])"},{"line_number":85,"context_line":"                # NOTE: Sometimes we have seen this test fail with dvr in,"},{"line_number":86,"context_line":"                # multinode tests, since the dhcp port is not created before"}],"source_content_type":"text/x-python","patch_set":33,"id":"7af24918_2277aa03","line":83,"in_reply_to":"7af24918_222351be","updated":"2016-03-05 19:33:54.000000000","message":"Thanks for pointing this up.\n\nTo be honest, I cannot remember the reason why I added admin client here. But I feel I found it is necessary during the development, so I am testing it with https://review.openstack.org/#/c/288931/ now.","commit_id":"699e5c43d40f5e1e1efa7806d7614986d53f799c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c7f011b3203da84349ba411cf2e2953e3671a03a","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                cls.network \u003d cls.create_network()"},{"line_number":81,"context_line":"                cls.subnet \u003d cls.create_subnet(cls.network)"},{"line_number":82,"context_line":"                cls.port \u003d cls.create_port(cls.network)"},{"line_number":83,"context_line":"                cls.admin_routers_client.add_router_interface("},{"line_number":84,"context_line":"                    cls.router[\u0027id\u0027], port_id\u003dcls.port[\u0027id\u0027])"},{"line_number":85,"context_line":"                # NOTE: Sometimes we have seen this test fail with dvr in,"},{"line_number":86,"context_line":"                # multinode tests, since the dhcp port is not created before"}],"source_content_type":"text/x-python","patch_set":33,"id":"7af24918_45bac0c1","line":83,"in_reply_to":"7af24918_2277aa03","updated":"2016-03-05 20:54:58.000000000","message":"This admin seems unnecessary, thanks!","commit_id":"699e5c43d40f5e1e1efa7806d7614986d53f799c"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"b1df31a161d182cbfa3d8877cba864a9e2c351a1","unresolved":false,"context_lines":[{"line_number":99,"context_line":"    @classmethod"},{"line_number":100,"context_line":"    def resource_cleanup(cls):"},{"line_number":101,"context_line":"        if cls.is_dvr_router:"},{"line_number":102,"context_line":"            cls.routers_client.remove_router_interface(cls.router[\u0027id\u0027],"},{"line_number":103,"context_line":"                                                       port_id\u003dcls.port[\u0027id\u0027])"},{"line_number":104,"context_line":"        super(L3AgentSchedulerTestJSON, cls).resource_cleanup()"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"7af24918_753355f6","line":102,"updated":"2016-03-04 15:40:32.000000000","message":"I am a little bit confused. In resource_setup we use admin_routers_client. Here we use routers_client. So which client should we use? :)","commit_id":"699e5c43d40f5e1e1efa7806d7614986d53f799c"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ef0ac7e114ab81bc8fb8cb20ac3a9ec00a1ed13d","unresolved":false,"context_lines":[{"line_number":99,"context_line":"    @classmethod"},{"line_number":100,"context_line":"    def resource_cleanup(cls):"},{"line_number":101,"context_line":"        if cls.is_dvr_router:"},{"line_number":102,"context_line":"            cls.routers_client.remove_router_interface(cls.router[\u0027id\u0027],"},{"line_number":103,"context_line":"                                                       port_id\u003dcls.port[\u0027id\u0027])"},{"line_number":104,"context_line":"        super(L3AgentSchedulerTestJSON, cls).resource_cleanup()"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"5aef4532_473b989c","line":102,"range":{"start_line":102,"start_character":16,"end_line":102,"end_character":30},"updated":"2016-03-09 01:04:20.000000000","message":"this also can be cls.admin_routers_client if correcting L83.\n\nNot sure how much difference it makes as it seems like non admin can remove router interface which is being added by admin.","commit_id":"186f1e4363f2b776c619f691b91d2e2848553ebe"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a97dc63f56acf5423360cb7108edca8b21205aa1","unresolved":false,"context_lines":[{"line_number":99,"context_line":"    @classmethod"},{"line_number":100,"context_line":"    def resource_cleanup(cls):"},{"line_number":101,"context_line":"        if cls.is_dvr_router:"},{"line_number":102,"context_line":"            cls.routers_client.remove_router_interface(cls.router[\u0027id\u0027],"},{"line_number":103,"context_line":"                                                       port_id\u003dcls.port[\u0027id\u0027])"},{"line_number":104,"context_line":"        super(L3AgentSchedulerTestJSON, cls).resource_cleanup()"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"5aef4532_c75a0850","line":102,"range":{"start_line":102,"start_character":16,"end_line":102,"end_character":30},"in_reply_to":"5aef4532_473b989c","updated":"2016-03-09 01:16:44.000000000","message":"That is the same as previous code, and I\u0027d like to avoid this kind of change in this patch because this patch is already big.","commit_id":"186f1e4363f2b776c619f691b91d2e2848553ebe"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"3e86c97794d89ada42074ecc0a66ee08aef09fcb","unresolved":false,"context_lines":[{"line_number":99,"context_line":"    @classmethod"},{"line_number":100,"context_line":"    def resource_cleanup(cls):"},{"line_number":101,"context_line":"        if cls.is_dvr_router:"},{"line_number":102,"context_line":"            cls.routers_client.remove_router_interface(cls.router[\u0027id\u0027],"},{"line_number":103,"context_line":"                                                       port_id\u003dcls.port[\u0027id\u0027])"},{"line_number":104,"context_line":"        super(L3AgentSchedulerTestJSON, cls).resource_cleanup()"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"5aef4532_6a5f79e5","line":102,"range":{"start_line":102,"start_character":16,"end_line":102,"end_character":30},"in_reply_to":"5aef4532_c75a0850","updated":"2016-03-09 01:24:03.000000000","message":"Yea, But just wondering this patch change non admin client to admin client in L83. here we are adding interface with admin and removing with non admin","commit_id":"186f1e4363f2b776c619f691b91d2e2848553ebe"}],"tempest/api/network/base.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"c74f5af7a8e6e0cae54fad3bad2f9dc4a3e8fb8f","unresolved":false,"context_lines":[{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    @classmethod"},{"line_number":259,"context_line":"    def delete_router(cls, router):"},{"line_number":260,"context_line":"        body \u003d cls.client.list_router_interfaces(router[\u0027id\u0027])"},{"line_number":261,"context_line":"        interfaces \u003d body[\u0027ports\u0027]"},{"line_number":262,"context_line":"        for i in interfaces:"},{"line_number":263,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":31,"id":"7af24918_80d37d03","line":260,"updated":"2016-03-03 16:47:37.000000000","message":"Should we move \u0027list_router_interfaces\u0027 method to routers client as well?","commit_id":"224bf4ef517721e451d1a4a22c02caeebd9beb09"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"ad5d0163f3eb7541fbcdee782d0a2979e255b870","unresolved":false,"context_lines":[{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    @classmethod"},{"line_number":259,"context_line":"    def delete_router(cls, router):"},{"line_number":260,"context_line":"        body \u003d cls.client.list_router_interfaces(router[\u0027id\u0027])"},{"line_number":261,"context_line":"        interfaces \u003d body[\u0027ports\u0027]"},{"line_number":262,"context_line":"        for i in interfaces:"},{"line_number":263,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":31,"id":"7af24918_c3c901ae","line":260,"in_reply_to":"7af24918_80d37d03","updated":"2016-03-03 20:19:04.000000000","message":"No, we should not because the resource url is not \"/routers\", that is \"/ports\".\n\nMaybe the method name is wrong, but that is out of the scope from this patch.","commit_id":"224bf4ef517721e451d1a4a22c02caeebd9beb09"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ef0ac7e114ab81bc8fb8cb20ac3a9ec00a1ed13d","unresolved":false,"context_lines":[{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    @classmethod"},{"line_number":259,"context_line":"    def delete_router(cls, router):"},{"line_number":260,"context_line":"        body \u003d cls.client.list_router_interfaces(router[\u0027id\u0027])"},{"line_number":261,"context_line":"        interfaces \u003d body[\u0027ports\u0027]"},{"line_number":262,"context_line":"        for i in interfaces:"},{"line_number":263,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":37,"id":"5aef4532_0773504e","line":260,"range":{"start_line":260,"start_character":19,"end_line":260,"end_character":48},"updated":"2016-03-09 01:04:20.000000000","message":"This is with port list not sure we should move it to router client too?","commit_id":"186f1e4363f2b776c619f691b91d2e2848553ebe"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a97dc63f56acf5423360cb7108edca8b21205aa1","unresolved":false,"context_lines":[{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    @classmethod"},{"line_number":259,"context_line":"    def delete_router(cls, router):"},{"line_number":260,"context_line":"        body \u003d cls.client.list_router_interfaces(router[\u0027id\u0027])"},{"line_number":261,"context_line":"        interfaces \u003d body[\u0027ports\u0027]"},{"line_number":262,"context_line":"        for i in interfaces:"},{"line_number":263,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":37,"id":"5aef4532_473558f5","line":260,"range":{"start_line":260,"start_character":19,"end_line":260,"end_character":48},"in_reply_to":"5aef4532_0773504e","updated":"2016-03-09 01:16:44.000000000","message":"No, that is the same as Yaroslav\u0027s comment of PS31.\n\nWe should not because the resource url is not \"/routers\", that is \"/ports\".\n\nMaybe the method name is wrong, but that is out of the scope from this patch.","commit_id":"186f1e4363f2b776c619f691b91d2e2848553ebe"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"3e86c97794d89ada42074ecc0a66ee08aef09fcb","unresolved":false,"context_lines":[{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    @classmethod"},{"line_number":259,"context_line":"    def delete_router(cls, router):"},{"line_number":260,"context_line":"        body \u003d cls.client.list_router_interfaces(router[\u0027id\u0027])"},{"line_number":261,"context_line":"        interfaces \u003d body[\u0027ports\u0027]"},{"line_number":262,"context_line":"        for i in interfaces:"},{"line_number":263,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":37,"id":"5aef4532_ea97098e","line":260,"range":{"start_line":260,"start_character":19,"end_line":260,"end_character":48},"in_reply_to":"5aef4532_473558f5","updated":"2016-03-09 01:24:03.000000000","message":"Yes, we can iterate that later.","commit_id":"186f1e4363f2b776c619f691b91d2e2848553ebe"}],"tempest/api/network/base_routers.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"c74f5af7a8e6e0cae54fad3bad2f9dc4a3e8fb8f","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        self.addCleanup(self._cleanup_router, router)"},{"line_number":34,"context_line":"        return router"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def _delete_router(self, router_id, routers_client\u003dNone):"},{"line_number":37,"context_line":"        client \u003d routers_client or self.routers_client"},{"line_number":38,"context_line":"        client.delete_router(router_id)"},{"line_number":39,"context_line":"        # Asserting that the router is not found in the list"}],"source_content_type":"text/x-python","patch_set":31,"id":"7af24918_071ae77c","line":36,"updated":"2016-03-03 16:47:37.000000000","message":"Do we really need to have \u0027routers_client\u0027 argument? It looks like only this method has such argument. Maybe we can delete it?","commit_id":"224bf4ef517721e451d1a4a22c02caeebd9beb09"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"ad5d0163f3eb7541fbcdee782d0a2979e255b870","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        self.addCleanup(self._cleanup_router, router)"},{"line_number":34,"context_line":"        return router"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def _delete_router(self, router_id, routers_client\u003dNone):"},{"line_number":37,"context_line":"        client \u003d routers_client or self.routers_client"},{"line_number":38,"context_line":"        client.delete_router(router_id)"},{"line_number":39,"context_line":"        # Asserting that the router is not found in the list"}],"source_content_type":"text/x-python","patch_set":31,"id":"7af24918_8361b9ab","line":36,"in_reply_to":"7af24918_071ae77c","updated":"2016-03-03 20:19:04.000000000","message":"yeah, maybe.\nBut that is out of scope from this patch because that is different purpose(just cleanup).","commit_id":"224bf4ef517721e451d1a4a22c02caeebd9beb09"}],"tempest/services/network/json/network_client.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ef0ac7e114ab81bc8fb8cb20ac3a9ec00a1ed13d","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            message \u003d \u0027(%s) %s\u0027 % (caller, message)"},{"line_number":94,"context_line":"        raise exceptions.TimeoutException(message)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def list_router_interfaces(self, uuid):"},{"line_number":97,"context_line":"        uri \u003d \u0027/ports?device_id\u003d%s\u0027 % uuid"},{"line_number":98,"context_line":"        return self.list_resources(uri)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def list_dhcp_agent_hosting_network(self, network_id):"}],"source_content_type":"text/x-python","patch_set":37,"id":"5aef4532_e73bc4cf","line":97,"range":{"start_line":96,"start_character":0,"end_line":97,"end_character":42},"updated":"2016-03-09 01:04:20.000000000","message":"This looks like list port with filtering. show be merged with list_ports. but that is out of scope of this patch.","commit_id":"186f1e4363f2b776c619f691b91d2e2848553ebe"}],"tempest/services/network/json/routers_client.py":[{"author":{"_account_id":16499,"name":"Alex Kang","email":"akang@vmware.com","username":"akang"},"change_message_id":"610ff71d84c1e422b2a89457b23bcbefa4bb064f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"bae84128_3ea8be76","updated":"2016-02-24 02:12:38.000000000","message":"missing static route add and remove methods","commit_id":"d632dc2e7f8e07a4bc996990da30900a49369d34"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"4dd930cad2f8e414af2f8b010d1561fa518b0edc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"bae84128_76488ab3","in_reply_to":"bae84128_3ea8be76","updated":"2016-02-24 14:31:31.000000000","message":"thanks for pointing it out :-)","commit_id":"d632dc2e7f8e07a4bc996990da30900a49369d34"}],"tempest/services/network/resources.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"c2f626f241afbad5a9d8a50247a00a23785ec992","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":32,"context_line":"class DeletableResource(AttributeDict):"},{"line_number":33,"context_line":"    \"\"\"Support deletion of neutron resources (networks, subnets)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    via a delete() method, as is supported by keystone and nova resources."}],"source_content_type":"text/x-python","patch_set":35,"id":"5aef4532_33221c53","line":32,"updated":"2016-03-08 20:19:02.000000000","message":"We really need to kill this already...","commit_id":"2887961e5e4eee04c147f750876ef72d57152cff"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"00e5e2f394a7b05a49a3d3dfd5c8371fa781b319","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":32,"context_line":"class DeletableResource(AttributeDict):"},{"line_number":33,"context_line":"    \"\"\"Support deletion of neutron resources (networks, subnets)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    via a delete() method, as is supported by keystone and nova resources."}],"source_content_type":"text/x-python","patch_set":35,"id":"5aef4532_b3890c29","line":32,"in_reply_to":"5aef4532_33221c53","updated":"2016-03-08 20:22:10.000000000","message":"I can work on it :)","commit_id":"2887961e5e4eee04c147f750876ef72d57152cff"}]}
