)]}'
{"nova/network/neutronv2/api.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8ab63affb8c9a14e6590d9f893dbf4990da2eaf0","unresolved":false,"context_lines":[{"line_number":352,"context_line":"        data \u003d neutronv2.get_client(context).list_ports(**search_opts)"},{"line_number":353,"context_line":"        ports \u003d [port[\u0027id\u0027] for port in data.get(\u0027ports\u0027, [])]"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"        requested_networks \u003d kwargs.get(\u0027requested_networks\u0027) or {}"},{"line_number":356,"context_line":"        ports_to_skip \u003d [port_id for nets, fips, port_id in requested_networks]"},{"line_number":357,"context_line":"        ports \u003d set(ports) - set(ports_to_skip)"},{"line_number":358,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAP3%2F%2Fkmg%3D","line":355,"updated":"2013-07-16 13:02:02.000000000","message":"Consider: kwargs.get(\u0027requested_networks\u0027, {})","commit_id":"a141206e9dfd31955b9b31d9e5a7f73bbd8510ca"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"07a77bd5d2aa709502b2f7ced89835037ac8a36f","unresolved":false,"context_lines":[{"line_number":352,"context_line":"        data \u003d neutronv2.get_client(context).list_ports(**search_opts)"},{"line_number":353,"context_line":"        ports \u003d [port[\u0027id\u0027] for port in data.get(\u0027ports\u0027, [])]"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"        requested_networks \u003d kwargs.get(\u0027requested_networks\u0027) or {}"},{"line_number":356,"context_line":"        ports_to_skip \u003d [port_id for nets, fips, port_id in requested_networks]"},{"line_number":357,"context_line":"        ports \u003d set(ports) - set(ports_to_skip)"},{"line_number":358,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAP3%2F%2Fjwc%3D","line":355,"in_reply_to":"AAAAP3%2F%2FkH0%3D","updated":"2013-07-16 15:44:12.000000000","message":"ok, thanks for the explanation","commit_id":"a141206e9dfd31955b9b31d9e5a7f73bbd8510ca"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"69c69c95830d6a472cb96468b22129856bdc7297","unresolved":false,"context_lines":[{"line_number":352,"context_line":"        data \u003d neutronv2.get_client(context).list_ports(**search_opts)"},{"line_number":353,"context_line":"        ports \u003d [port[\u0027id\u0027] for port in data.get(\u0027ports\u0027, [])]"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"        requested_networks \u003d kwargs.get(\u0027requested_networks\u0027) or {}"},{"line_number":356,"context_line":"        ports_to_skip \u003d [port_id for nets, fips, port_id in requested_networks]"},{"line_number":357,"context_line":"        ports \u003d set(ports) - set(ports_to_skip)"},{"line_number":358,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAP3%2F%2FkH0%3D","line":355,"in_reply_to":"AAAAP3%2F%2Fkmg%3D","updated":"2013-07-16 14:44:11.000000000","message":"um...that won\u0027t work I believe. Because kwargs may contain a key-value pair requested_networks\u003dNone","commit_id":"a141206e9dfd31955b9b31d9e5a7f73bbd8510ca"}],"nova/network/rpcapi.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8ab63affb8c9a14e6590d9f893dbf4990da2eaf0","unresolved":false,"context_lines":[{"line_number":190,"context_line":"            topic \u003d None"},{"line_number":191,"context_line":"        return self.call(ctxt, self.make_msg(\u0027deallocate_for_instance\u0027,"},{"line_number":192,"context_line":"                instance_id\u003dinstance_id, project_id\u003dproject_id,"},{"line_number":193,"context_line":"                host\u003dhost, requested_networks\u003drequested_networks),"},{"line_number":194,"context_line":"                topic\u003dtopic)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def add_fixed_ip_to_instance(self, ctxt, instance_id, rxtx_factor,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAP3%2F%2FkmM%3D","line":193,"updated":"2013-07-16 13:02:02.000000000","message":"I think that you need to add the new version in here. Please see line 200 for an example","commit_id":"a141206e9dfd31955b9b31d9e5a7f73bbd8510ca"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"a88551aa676d8f0c45b449333ca30ce9a758fbab","unresolved":false,"context_lines":[{"line_number":190,"context_line":"            topic \u003d None"},{"line_number":191,"context_line":"        return self.call(ctxt, self.make_msg(\u0027deallocate_for_instance\u0027,"},{"line_number":192,"context_line":"                instance_id\u003dinstance_id, project_id\u003dproject_id,"},{"line_number":193,"context_line":"                host\u003dhost, requested_networks\u003drequested_networks),"},{"line_number":194,"context_line":"                topic\u003dtopic)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def add_fixed_ip_to_instance(self, ctxt, instance_id, rxtx_factor,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAP3%2F%2FjXw%3D","line":193,"in_reply_to":"AAAAP3%2F%2Fjwk%3D","updated":"2013-07-16 16:56:43.000000000","message":"I tried your suggested change on devstack. I get this error when I try to delete an instance:\n\nRemoteError: Remote error: UnsupportedRpcVersion Specified RPC version, 1.10\n\nI think that confirms my theory that by specifying the version I ask the worker to honor the version requirement.","commit_id":"a141206e9dfd31955b9b31d9e5a7f73bbd8510ca"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"07a77bd5d2aa709502b2f7ced89835037ac8a36f","unresolved":false,"context_lines":[{"line_number":190,"context_line":"            topic \u003d None"},{"line_number":191,"context_line":"        return self.call(ctxt, self.make_msg(\u0027deallocate_for_instance\u0027,"},{"line_number":192,"context_line":"                instance_id\u003dinstance_id, project_id\u003dproject_id,"},{"line_number":193,"context_line":"                host\u003dhost, requested_networks\u003drequested_networks),"},{"line_number":194,"context_line":"                topic\u003dtopic)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def add_fixed_ip_to_instance(self, ctxt, instance_id, rxtx_factor,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAP3%2F%2Fjwk%3D","line":193,"in_reply_to":"AAAAP3%2F%2FkHU%3D","updated":"2013-07-16 15:44:12.000000000","message":"Can you please look at http://docs.openstack.org/developer/nova/api/nova.openstack.common.rpc.dispatcher.html","commit_id":"a141206e9dfd31955b9b31d9e5a7f73bbd8510ca"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"69c69c95830d6a472cb96468b22129856bdc7297","unresolved":false,"context_lines":[{"line_number":190,"context_line":"            topic \u003d None"},{"line_number":191,"context_line":"        return self.call(ctxt, self.make_msg(\u0027deallocate_for_instance\u0027,"},{"line_number":192,"context_line":"                instance_id\u003dinstance_id, project_id\u003dproject_id,"},{"line_number":193,"context_line":"                host\u003dhost, requested_networks\u003drequested_networks),"},{"line_number":194,"context_line":"                topic\u003dtopic)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def add_fixed_ip_to_instance(self, ctxt, instance_id, rxtx_factor,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAP3%2F%2FkHU%3D","line":193,"in_reply_to":"AAAAP3%2F%2FkmM%3D","updated":"2013-07-16 14:44:11.000000000","message":"I assumed that\u0027s the required minimum version. is it not? My understanding was that the specification of the version would impose a validation check that\u0027s not required IMO as the modification is bw compatible, but I don\u0027t know enough about rpc versioning so I\u0027d appreciate more input.","commit_id":"a141206e9dfd31955b9b31d9e5a7f73bbd8510ca"}],"nova/tests/network/test_rpcapi.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"2efb64e4d8afb2aee5a4300ebc8830aa6caa2de5","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                # actual_args may contain optional args, like the one that"},{"line_number":87,"context_line":"                # have default values; therefore if arg and excepted_arg"},{"line_number":88,"context_line":"                # do not match verify at least that the required ones do"},{"line_number":89,"context_line":"                method_args \u003d arg.get(\u0027args\u0027)"},{"line_number":90,"context_line":"                if isinstance(arg, dict) and isinstance(expected_arg, dict):"},{"line_number":91,"context_line":"                    actual_args \u003d arg.get(\u0027args\u0027)"},{"line_number":92,"context_line":"                    required_args \u003d expected_arg.get(\u0027args\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2FmtM%3D","line":89,"updated":"2013-07-15 22:50:41.000000000","message":"method_args is never used","commit_id":"22affd863ec86cbbca3681507c1705203cd682a0"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"31f8403ee5da4b074ec5767b370eb6f4fe3165a1","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                # actual_args may contain optional args, like the one that"},{"line_number":87,"context_line":"                # have default values; therefore if arg and excepted_arg"},{"line_number":88,"context_line":"                # do not match verify at least that the required ones do"},{"line_number":89,"context_line":"                method_args \u003d arg.get(\u0027args\u0027)"},{"line_number":90,"context_line":"                if isinstance(arg, dict) and isinstance(expected_arg, dict):"},{"line_number":91,"context_line":"                    actual_args \u003d arg.get(\u0027args\u0027)"},{"line_number":92,"context_line":"                    required_args \u003d expected_arg.get(\u0027args\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2Fmns%3D","line":89,"in_reply_to":"AAAAP3%2F%2FmtM%3D","updated":"2013-07-15 23:10:30.000000000","message":"Done","commit_id":"22affd863ec86cbbca3681507c1705203cd682a0"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"2efb64e4d8afb2aee5a4300ebc8830aa6caa2de5","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                # have default values; therefore if arg and excepted_arg"},{"line_number":88,"context_line":"                # do not match verify at least that the required ones do"},{"line_number":89,"context_line":"                method_args \u003d arg.get(\u0027args\u0027)"},{"line_number":90,"context_line":"                if isinstance(arg, dict) and isinstance(expected_arg, dict):"},{"line_number":91,"context_line":"                    actual_args \u003d arg.get(\u0027args\u0027)"},{"line_number":92,"context_line":"                    required_args \u003d expected_arg.get(\u0027args\u0027)"},{"line_number":93,"context_line":"                    if actual_args and required_args:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2FmtA%3D","line":90,"updated":"2013-07-15 22:50:41.000000000","message":"Why not use DictMatches or perhaps IsSubdictOf?","commit_id":"22affd863ec86cbbca3681507c1705203cd682a0"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"31f8403ee5da4b074ec5767b370eb6f4fe3165a1","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                # have default values; therefore if arg and excepted_arg"},{"line_number":88,"context_line":"                # do not match verify at least that the required ones do"},{"line_number":89,"context_line":"                method_args \u003d arg.get(\u0027args\u0027)"},{"line_number":90,"context_line":"                if isinstance(arg, dict) and isinstance(expected_arg, dict):"},{"line_number":91,"context_line":"                    actual_args \u003d arg.get(\u0027args\u0027)"},{"line_number":92,"context_line":"                    required_args \u003d expected_arg.get(\u0027args\u0027)"},{"line_number":93,"context_line":"                    if actual_args and required_args:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2Fmnk%3D","line":90,"in_reply_to":"AAAAP3%2F%2FmtA%3D","updated":"2013-07-15 23:10:30.000000000","message":"That\u0027s pretty nice, thanks for pointing it out!","commit_id":"22affd863ec86cbbca3681507c1705203cd682a0"}]}
