)]}'
{"quantum/api/api_common.py":[{"author":{"_account_id":1456,"name":"Aaron Lee","email":"aaron.lee@rackspace.com","username":"aaron-lee"},"change_message_id":"72b67d5d5c475d3ff079a0b8bede078189a84b80","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    fault_body_function_dict \u003d {"},{"line_number":59,"context_line":"        \u00271.0\u0027: faults.fault_body_function_v10,"},{"line_number":60,"context_line":"        \u00271.1\u0027: faults.fault_body_function_v11"},{"line_number":61,"context_line":"    }"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    # the first element of the iterable is expected to be the controller"},{"line_number":64,"context_line":"    controller \u003d controller_dict[version][0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F9PM%3D","line":61,"updated":"2012-01-17 19:55:56.000000000","message":"This should be a method in faults. this would make the call on 70 something like:\n\nfault_body_function \u003d faults.fault_function(version)","commit_id":"597636886b4da72d383ce0d4e5530ddf8c7da8f6"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":58,"context_line":"    fault_body_function_dict \u003d {"},{"line_number":59,"context_line":"        \u00271.0\u0027: faults.fault_body_function_v10,"},{"line_number":60,"context_line":"        \u00271.1\u0027: faults.fault_body_function_v11"},{"line_number":61,"context_line":"    }"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    # the first element of the iterable is expected to be the controller"},{"line_number":64,"context_line":"    controller \u003d controller_dict[version][0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F9KQ%3D","line":61,"in_reply_to":"AAAAD3%2F%2F9PM%3D","updated":"2012-01-17 22:08:29.000000000","message":"correct, it will be better","commit_id":"597636886b4da72d383ce0d4e5530ddf8c7da8f6"},{"author":{"_account_id":1456,"name":"Aaron Lee","email":"aaron.lee@rackspace.com","username":"aaron-lee"},"change_message_id":"72b67d5d5c475d3ff079a0b8bede078189a84b80","unresolved":false,"context_lines":[{"line_number":112,"context_line":"            except Exception as e:"},{"line_number":113,"context_line":"                if errors is not None and type(e) in errors:"},{"line_number":114,"context_line":"                    # Version-specific behaviour"},{"line_number":115,"context_line":"                    quantum_error_class \u003d quantum_error_dict[version]"},{"line_number":116,"context_line":"                    raise quantum_error_class(e)"},{"line_number":117,"context_line":"                # otherwise just re-raise"},{"line_number":118,"context_line":"                raise"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F9PI%3D","line":115,"updated":"2012-01-17 19:55:56.000000000","message":"Same as before:\n\nraise faults.quantum_error(version)","commit_id":"597636886b4da72d383ce0d4e5530ddf8c7da8f6"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":112,"context_line":"            except Exception as e:"},{"line_number":113,"context_line":"                if errors is not None and type(e) in errors:"},{"line_number":114,"context_line":"                    # Version-specific behaviour"},{"line_number":115,"context_line":"                    quantum_error_class \u003d quantum_error_dict[version]"},{"line_number":116,"context_line":"                    raise quantum_error_class(e)"},{"line_number":117,"context_line":"                # otherwise just re-raise"},{"line_number":118,"context_line":"                raise"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F9KM%3D","line":115,"in_reply_to":"AAAAD3%2F%2F9PI%3D","updated":"2012-01-17 22:08:29.000000000","message":"Done","commit_id":"597636886b4da72d383ce0d4e5530ddf8c7da8f6"},{"author":{"_account_id":1456,"name":"Aaron Lee","email":"aaron.lee@rackspace.com","username":"aaron-lee"},"change_message_id":"72b67d5d5c475d3ff079a0b8bede078189a84b80","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    # and the third element the xml namespace"},{"line_number":61,"context_line":"    xmlns \u003d controller_dict[version][2]"},{"line_number":62,"context_line":"    # and also the function for building the fault body"},{"line_number":63,"context_line":"    fault_body_function \u003d faults.get_fault_function(version)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    headers_serializer \u003d HeaderSerializer()"},{"line_number":66,"context_line":"    xml_serializer \u003d wsgi.XMLDictSerializer(metadata, xmlns)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAD3%2F%2F8kk%3D","line":63,"updated":"2012-01-19 16:22:24.000000000","message":"Minor nit to pick(not really worth changing) get_ and set_ are java-ese. methods should be named for the action the thing they return.","commit_id":"9b6fe4b052f3873042f9e3da855fd17379b0f95d"}],"quantum/api/faults.py":[{"author":{"_account_id":1456,"name":"Aaron Lee","email":"aaron.lee@rackspace.com","username":"aaron-lee"},"change_message_id":"72b67d5d5c475d3ff079a0b8bede078189a84b80","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"class Quantum11HTTPError(webob.exc.HTTPClientError):"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    _fault_dict \u003d {"},{"line_number":121,"context_line":"            exceptions.NetworkNotFound: {"},{"line_number":122,"context_line":"                \u0027code\u0027: webob.exc.HTTPNotFound.code,"},{"line_number":123,"context_line":"                \u0027title\u0027: webob.exc.HTTPNotFound.title,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F9Oo%3D","line":120,"updated":"2012-01-17 19:55:56.000000000","message":"This dict matches the 1.0 dict almost exactly. Would it be possible to use the same dict instead of two? This would cut down on possible bugs with a new exception case getting added to one and not the other. It would also simplify the testing. We could eventually clean up the tests to check the lookup, and then test that the dict gets used properly, instead of having to test each individual case.","commit_id":"597636886b4da72d383ce0d4e5530ddf8c7da8f6"},{"author":{"_account_id":1456,"name":"Aaron Lee","email":"aaron.lee@rackspace.com","username":"aaron-lee"},"change_message_id":"72b67d5d5c475d3ff079a0b8bede078189a84b80","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"class Quantum11HTTPError(webob.exc.HTTPClientError):"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    _fault_dict \u003d {"},{"line_number":121,"context_line":"            exceptions.NetworkNotFound: {"},{"line_number":122,"context_line":"                \u0027code\u0027: webob.exc.HTTPNotFound.code,"},{"line_number":123,"context_line":"                \u0027title\u0027: webob.exc.HTTPNotFound.title,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F8%2BE%3D","line":120,"in_reply_to":"AAAAD3%2F%2F9KI%3D","updated":"2012-01-18 17:16:05.000000000","message":"I\u0027m sorry, I didn\u0027t realize they were different responses.","commit_id":"597636886b4da72d383ce0d4e5530ddf8c7da8f6"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"class Quantum11HTTPError(webob.exc.HTTPClientError):"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    _fault_dict \u003d {"},{"line_number":121,"context_line":"            exceptions.NetworkNotFound: {"},{"line_number":122,"context_line":"                \u0027code\u0027: webob.exc.HTTPNotFound.code,"},{"line_number":123,"context_line":"                \u0027title\u0027: webob.exc.HTTPNotFound.title,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F9KI%3D","line":120,"in_reply_to":"AAAAD3%2F%2F9Oo%3D","updated":"2012-01-17 22:08:29.000000000","message":"I am already looking at solutions for avoiding code duplications. What troubles me is that the same Quantum error type canmap to HTTP Error X in API V1 and then HTTP Error Y in API V1.1","commit_id":"597636886b4da72d383ce0d4e5530ddf8c7da8f6"},{"author":{"_account_id":1456,"name":"Aaron Lee","email":"aaron.lee@rackspace.com","username":"aaron-lee"},"change_message_id":"72b67d5d5c475d3ff079a0b8bede078189a84b80","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    return fault_data, None"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"def get_fault_function(version):"},{"line_number":75,"context_line":"        # dict mapping API version to functions for building the"},{"line_number":76,"context_line":"    # fault response body"},{"line_number":77,"context_line":"    fault_body_function_dict \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAD3%2F%2F8kg%3D","line":74,"updated":"2012-01-19 16:22:24.000000000","message":"Sweet!","commit_id":"9b6fe4b052f3873042f9e3da855fd17379b0f95d"}],"quantum/api/networks.py":[{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":82,"context_line":"        return self._item(request, tenant_id, id,"},{"line_number":83,"context_line":"                          net_details\u003dTrue, port_details\u003dFalse)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    @common.APIFaultWrapper()"},{"line_number":86,"context_line":"    def detail(self, request, **kwargs):"},{"line_number":87,"context_line":"        tenant_id \u003d kwargs.get(\u0027tenant_id\u0027)"},{"line_number":88,"context_line":"        network_id \u003d kwargs.get(\u0027id\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEH%2F%2F%2FI0%3D","line":85,"updated":"2012-01-24 07:22:52.000000000","message":"should this be include the NetworkNotFound?\n@common.APIFaultWrapper([exception.NetworkNotFound,])","commit_id":"9b6fe4b052f3873042f9e3da855fd17379b0f95d"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":82,"context_line":"        return self._item(request, tenant_id, id,"},{"line_number":83,"context_line":"                          net_details\u003dTrue, port_details\u003dFalse)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    @common.APIFaultWrapper()"},{"line_number":86,"context_line":"    def detail(self, request, **kwargs):"},{"line_number":87,"context_line":"        tenant_id \u003d kwargs.get(\u0027tenant_id\u0027)"},{"line_number":88,"context_line":"        network_id \u003d kwargs.get(\u0027id\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEH%2F%2F%2FBs%3D","line":85,"in_reply_to":"AAAAEH%2F%2F%2FI0%3D","updated":"2012-01-24 15:13:44.000000000","message":"Not 100% sure, as the detail action can be used also when retrieving a detailed list of networks. \nI will see if I can add the decorator to the _item method.","commit_id":"9b6fe4b052f3873042f9e3da855fd17379b0f95d"}],"quantum/tests/unit/test_api.py":[{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":98,"context_line":"        super(APITestV11, self).setUp(\u0027quantum.api.APIRouterV11\u0027,"},{"line_number":99,"context_line":"             {test_api.NETS: nets.ControllerV11._serialization_metadata,"},{"line_number":100,"context_line":"              test_api.PORTS: ports.ControllerV11._serialization_metadata,"},{"line_number":101,"context_line":"              test_api.ATTS: atts.ControllerV11._serialization_metadata})"},{"line_number":102,"context_line":"        self._network_not_found_code \u003d 404"},{"line_number":103,"context_line":"        self._network_in_use_code \u003d 409"},{"line_number":104,"context_line":"        self._port_not_found_code \u003d 404"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEH%2F%2F%2FIw%3D","line":101,"updated":"2012-01-24 07:22:52.000000000","message":"Instead of using literals here such as 404/409/etc. would it make send to point to webob.exc.HTTPNotFound.code, or may be define these in testlib_api which imports webob.exc?","commit_id":"9b6fe4b052f3873042f9e3da855fd17379b0f95d"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":98,"context_line":"        super(APITestV11, self).setUp(\u0027quantum.api.APIRouterV11\u0027,"},{"line_number":99,"context_line":"             {test_api.NETS: nets.ControllerV11._serialization_metadata,"},{"line_number":100,"context_line":"              test_api.PORTS: ports.ControllerV11._serialization_metadata,"},{"line_number":101,"context_line":"              test_api.ATTS: atts.ControllerV11._serialization_metadata})"},{"line_number":102,"context_line":"        self._network_not_found_code \u003d 404"},{"line_number":103,"context_line":"        self._network_in_use_code \u003d 409"},{"line_number":104,"context_line":"        self._port_not_found_code \u003d 404"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEH%2F%2F%2B6k%3D","line":101,"in_reply_to":"AAAAEH%2F%2F%2FIw%3D","updated":"2012-01-24 18:17:53.000000000","message":"agreed.  using literals for our quantum specific exceptions above seems acceptable, given that I don\u0027t think we have them defined anywhere in an importable form.","commit_id":"9b6fe4b052f3873042f9e3da855fd17379b0f95d"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":98,"context_line":"        super(APITestV11, self).setUp(\u0027quantum.api.APIRouterV11\u0027,"},{"line_number":99,"context_line":"             {test_api.NETS: nets.ControllerV11._serialization_metadata,"},{"line_number":100,"context_line":"              test_api.PORTS: ports.ControllerV11._serialization_metadata,"},{"line_number":101,"context_line":"              test_api.ATTS: atts.ControllerV11._serialization_metadata})"},{"line_number":102,"context_line":"        self._network_not_found_code \u003d 404"},{"line_number":103,"context_line":"        self._network_in_use_code \u003d 409"},{"line_number":104,"context_line":"        self._port_not_found_code \u003d 404"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEH%2F%2F%2FBw%3D","line":101,"in_reply_to":"AAAAEH%2F%2F%2FIw%3D","updated":"2012-01-24 15:13:44.000000000","message":"good point","commit_id":"9b6fe4b052f3873042f9e3da855fd17379b0f95d"}],"quantum/wsgi.py":[{"author":{"_account_id":1456,"name":"Aaron Lee","email":"aaron.lee@rackspace.com","username":"aaron-lee"},"change_message_id":"72b67d5d5c475d3ff079a0b8bede078189a84b80","unresolved":false,"context_lines":[{"line_number":703,"context_line":""},{"line_number":704,"context_line":"    def __init__(self, controller,"},{"line_number":705,"context_line":"                 deserializer\u003dNone, serializer\u003dNone,"},{"line_number":706,"context_line":"                 fault_body_function\u003dNone):"},{"line_number":707,"context_line":"        \"\"\""},{"line_number":708,"context_line":"        :param controller: object that implement methods created by routes lib"},{"line_number":709,"context_line":"        :param deserializer: object that can serialize the output of a"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F9Pk%3D","line":706,"updated":"2012-01-17 19:55:56.000000000","message":"Since wsgi.Resource is only called in one location(from api_common.py), why are these optional arguments?","commit_id":"597636886b4da72d383ce0d4e5530ddf8c7da8f6"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":703,"context_line":""},{"line_number":704,"context_line":"    def __init__(self, controller,"},{"line_number":705,"context_line":"                 deserializer\u003dNone, serializer\u003dNone,"},{"line_number":706,"context_line":"                 fault_body_function\u003dNone):"},{"line_number":707,"context_line":"        \"\"\""},{"line_number":708,"context_line":"        :param controller: object that implement methods created by routes lib"},{"line_number":709,"context_line":"        :param deserializer: object that can serialize the output of a"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F9KE%3D","line":706,"in_reply_to":"AAAAD3%2F%2F9Pk%3D","updated":"2012-01-17 22:08:29.000000000","message":"Done","commit_id":"597636886b4da72d383ce0d4e5530ddf8c7da8f6"}]}
