)]}'
{"ironic/api/controllers/base.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a7ba454d6b84ee410eddd0a225bf3846357da570","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        :param headers: webob headers"},{"line_number":81,"context_line":"        :returns: a tupe of (major, minor) version numbers"},{"line_number":82,"context_line":"        :raises: webob.HTTPNotAcceptable"},{"line_number":83,"context_line":"        \"\"\""},{"line_number":84,"context_line":"        try:"},{"line_number":85,"context_line":"            # default to the minimum supported version,  but don\u0027t actually"},{"line_number":86,"context_line":"            # import v1.__init__ here because that would be circular..."}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_68a0ca9f","line":83,"updated":"2015-02-24 09:13:53.000000000","message":"I would prefer this to return (1, V1.MAX_VER) actually. And is we already depend on V1 versions here, it makes sense to bring MAX_VER to this module and avoid circular imports.","commit_id":"0c9726c53f162d629d59d5ced2dbdf3f06beb52d"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"0ce014a12f8979fd0ac9f73824d95b1782ad45ba","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        :param headers: webob headers"},{"line_number":81,"context_line":"        :returns: a tupe of (major, minor) version numbers"},{"line_number":82,"context_line":"        :raises: webob.HTTPNotAcceptable"},{"line_number":83,"context_line":"        \"\"\""},{"line_number":84,"context_line":"        try:"},{"line_number":85,"context_line":"            # default to the minimum supported version,  but don\u0027t actually"},{"line_number":86,"context_line":"            # import v1.__init__ here because that would be circular..."}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_148a03bf","line":83,"in_reply_to":"ba7be1f8_68a0ca9f","updated":"2015-02-24 11:28:31.000000000","message":"Thanks Dmitry - new version will address this concner","commit_id":"0c9726c53f162d629d59d5ced2dbdf3f06beb52d"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"faac21ae5b8bd1b02d7c909a3710d3c2f4159461","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    # v1.3: Add node.driver_internal_info"},{"line_number":32,"context_line":"    # v1.4: Add MANAGEABLE state"},{"line_number":33,"context_line":"    # v1.5: Add logical node names"},{"line_number":34,"context_line":"    MAX_VERSION \u003d \u00271.5\u0027"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class APIBase(wtypes.Base):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_e99caa11","line":34,"updated":"2015-02-24 17:01:44.000000000","message":"I don\u0027t like this. We shouldn\u0027t be putting V1 stuff in base.py. Besides making it messy for people to know where to update this (every api-related change will update the microversion, will people know where to look), it just doesn\u0027t belong here.","commit_id":"2d96363538339aa70bf77d1fc198eef2c9943f15"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9d7cac0e1d9e27040df581061db5eaccf7d0759d","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    # v1.3: Add node.driver_internal_info"},{"line_number":32,"context_line":"    # v1.4: Add MANAGEABLE state"},{"line_number":33,"context_line":"    # v1.5: Add logical node names"},{"line_number":34,"context_line":"    MAX_VERSION \u003d \u00271.5\u0027"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class APIBase(wtypes.Base):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_4c1f8f08","line":34,"updated":"2015-02-24 13:52:05.000000000","message":"Well, at least now we honestly admit that we\u0027re assuming V1 version in base.py :)","commit_id":"2d96363538339aa70bf77d1fc198eef2c9943f15"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"1693100e254078b22e7aa72e694644b90dca69ef","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        \"\"\""},{"line_number":97,"context_line":"        try:"},{"line_number":98,"context_line":"            # Default to the minimum supported version, if not specified"},{"line_number":99,"context_line":"            version_str \u003d headers.get(Version.string, V1.MIN_VERSION)"},{"line_number":100,"context_line":"            version \u003d tuple(int(i) for i in version_str.split(\u0027.\u0027))"},{"line_number":101,"context_line":"        except ValueError:"},{"line_number":102,"context_line":"            if version_str.lower() \u003d\u003d \u0027latest\u0027:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_5f400c34","line":99,"updated":"2015-02-24 15:08:27.000000000","message":"nit: may be take this out of try block.","commit_id":"2d96363538339aa70bf77d1fc198eef2c9943f15"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9d7cac0e1d9e27040df581061db5eaccf7d0759d","unresolved":false,"context_lines":[{"line_number":100,"context_line":"            version \u003d tuple(int(i) for i in version_str.split(\u0027.\u0027))"},{"line_number":101,"context_line":"        except ValueError:"},{"line_number":102,"context_line":"            if version_str.lower() \u003d\u003d \u0027latest\u0027:"},{"line_number":103,"context_line":"                version \u003d tuple(int(i) for i in V1.MAX_VERSION.split(\u0027.\u0027))"},{"line_number":104,"context_line":"            else:"},{"line_number":105,"context_line":"                version \u003d ()"},{"line_number":106,"context_line":"        if len(version) !\u003d 2:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_cc0c5ff0","line":103,"updated":"2015-02-24 13:52:05.000000000","message":"nit:\n\n version \u003d tuple(V1.MAX_VERSION.split(\u0027.\u0027))","commit_id":"2d96363538339aa70bf77d1fc198eef2c9943f15"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"1693100e254078b22e7aa72e694644b90dca69ef","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        return False"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"MIN_V1_VER \u003d Version({Version.string: V1.MIN_VERSION})"},{"line_number":123,"context_line":"MAX_V1_VER \u003d Version({Version.string: V1.MAX_VERSION})"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_ffa380fd","line":122,"updated":"2015-02-24 15:08:27.000000000","message":"nit: Why is this down below in the file ? Shouldn\u0027t this be moved above ?","commit_id":"2d96363538339aa70bf77d1fc198eef2c9943f15"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"d42b7044599ce70eda5980d5ca16dbcea031f7c2","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        try:"},{"line_number":91,"context_line":"            version \u003d tuple(int(i) for i in version_str.split(\u0027.\u0027))"},{"line_number":92,"context_line":"        except ValueError:"},{"line_number":93,"context_line":"            if version_str.lower() \u003d\u003d \u0027latest\u0027:"},{"line_number":94,"context_line":"                version \u003d tuple(int(i) for i in max_supp_ver.split(\u0027.\u0027))"},{"line_number":95,"context_line":"            else:"},{"line_number":96,"context_line":"                version \u003d ()"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_54a8d88c","line":93,"updated":"2015-02-24 23:41:37.000000000","message":"nit: Seems fine, but would have thought to check before try.","commit_id":"3601e30c597ad9c68e4e840bea88405cb0e7b74b"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"5c3e2440c0b83955f45942c4514d935406f7aa81","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        try:"},{"line_number":91,"context_line":"            version \u003d tuple(int(i) for i in version_str.split(\u0027.\u0027))"},{"line_number":92,"context_line":"        except ValueError:"},{"line_number":93,"context_line":"            if version_str.lower() \u003d\u003d \u0027latest\u0027:"},{"line_number":94,"context_line":"                version \u003d tuple(int(i) for i in max_supp_ver.split(\u0027.\u0027))"},{"line_number":95,"context_line":"            else:"},{"line_number":96,"context_line":"                version \u003d ()"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_977092dd","line":93,"in_reply_to":"ba7be1f8_54a8d88c","updated":"2015-02-25 00:34:53.000000000","message":"I\u0027ll make the change, because logically it does make sense to check beforehand.  It\u0027s also given me the chance to simplify the surrounding code.","commit_id":"3601e30c597ad9c68e4e840bea88405cb0e7b74b"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ec916a11cfe758a3182b607a783f7df42b5d3770","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    max_string \u003d \u0027X-OpenStack-Ironic-API-Maximum-Version\u0027"},{"line_number":63,"context_line":"    \"\"\"HTTP response header\"\"\""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def __init__(self, headers, min_supp_ver\u003dNone, max_supp_ver\u003dNone):"},{"line_number":66,"context_line":"        \"\"\"Create an API Version object from the supplied headers."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        :param headers: webob headers"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba7be1f8_fd5fef0c","line":65,"updated":"2015-02-25 01:17:31.000000000","message":"nit: I probably would have just called them min_ver \u0026 max_ver. The docstring should provide more info. But this is fine ;)\n\nNon nit: I don\u0027t think we should allow min/max to be None. Or if we do, they need to be handled. Cuz it looks like an exception will be raised if either one of them (with value None) is used.","commit_id":"19edb15b108bf51f998af883e8c5116fc9b7df16"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"2080e51629cde904605ba0f8102cc154b3829ad7","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    max_string \u003d \u0027X-OpenStack-Ironic-API-Maximum-Version\u0027"},{"line_number":63,"context_line":"    \"\"\"HTTP response header\"\"\""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def __init__(self, headers, min_supp_ver\u003dNone, max_supp_ver\u003dNone):"},{"line_number":66,"context_line":"        \"\"\"Create an API Version object from the supplied headers."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        :param headers: webob headers"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba7be1f8_1791e5f0","line":65,"in_reply_to":"ba7be1f8_dd5ceb4d","updated":"2015-02-25 15:28:45.000000000","message":"I acknowledge that I was tired when I looked at this last night, but I wanted to +2 for you before I left for the day. I can understand why you thought it was \u0027getting silly\u0027 since you disagreed. (Assuming it was this particular comment that you thought was silly.)\n\nI\u0027ll be more careful and not review when I\u0027m tired. However, I did take a look to see how I misunderstood the code. It turns out I didn\u0027t.\n\nHere\u0027s a test that shows what happens with this revision of code:\n    def test_parse_rloo(self):\n        version \u003d cbase.Version({cbase.Version.string: \u0027latest\u0027})\n\nHere\u0027s the output I get when running that test.\n\nTraceback (most recent call last):\n  File \"ironic/tests/api/test_base.py\", line 93, in test_parse_rloo\n    version \u003d cbase.Version({cbase.Version.string: \u0027latest\u0027})\n  File \"ironic/api/controllers/base.py\", line 74, in __init__\n    min_supp_ver, max_supp_ver)\n  File \"ironic/api/controllers/base.py\", line 97, in parse_headers\n    version \u003d tuple(int(i) for i in parse_str.split(\u0027.\u0027))\nAttributeError: \u0027NoneType\u0027 object has no attribute \u0027split\u0027","commit_id":"19edb15b108bf51f998af883e8c5116fc9b7df16"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"0b41cc66c8139ca4e07af9dd9319981ded5a09e8","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    max_string \u003d \u0027X-OpenStack-Ironic-API-Maximum-Version\u0027"},{"line_number":63,"context_line":"    \"\"\"HTTP response header\"\"\""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def __init__(self, headers, min_supp_ver\u003dNone, max_supp_ver\u003dNone):"},{"line_number":66,"context_line":"        \"\"\"Create an API Version object from the supplied headers."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        :param headers: webob headers"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba7be1f8_dd5ceb4d","line":65,"in_reply_to":"ba7be1f8_fd5fef0c","updated":"2015-02-25 02:06:07.000000000","message":"Well, I disagree :)\n\nWe use the None version of the constructor in building the MIN_VER and MAX_VER \"constant\" versions in v1/__init__.py and there\u0027s no issue.\n\nBut, I\u0027ll change it, because the churn on this patch is getting silly for such a small change.","commit_id":"19edb15b108bf51f998af883e8c5116fc9b7df16"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ec916a11cfe758a3182b607a783f7df42b5d3770","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        :raises: webob.HTTPNotAcceptable"},{"line_number":72,"context_line":"        \"\"\""},{"line_number":73,"context_line":"        self.major, self.minor \u003d Version.parse_headers(headers,"},{"line_number":74,"context_line":"                                    min_supp_ver, max_supp_ver)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def __repr__(self):"},{"line_number":77,"context_line":"        return \u0027%s.%s\u0027 % (self.major, self.minor)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba7be1f8_9d5b53f5","line":74,"updated":"2015-02-25 01:17:31.000000000","message":"Wondering why you removed the () around self.major, self.minor.","commit_id":"19edb15b108bf51f998af883e8c5116fc9b7df16"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"0b41cc66c8139ca4e07af9dd9319981ded5a09e8","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        :raises: webob.HTTPNotAcceptable"},{"line_number":72,"context_line":"        \"\"\""},{"line_number":73,"context_line":"        self.major, self.minor \u003d Version.parse_headers(headers,"},{"line_number":74,"context_line":"                                    min_supp_ver, max_supp_ver)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def __repr__(self):"},{"line_number":77,"context_line":"        return \u0027%s.%s\u0027 % (self.major, self.minor)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba7be1f8_5d38fbee","line":74,"in_reply_to":"ba7be1f8_9d5b53f5","updated":"2015-02-25 02:06:07.000000000","message":"They are not required, and I did it for pep8 line length reasons\n\nBut I will put them back, as that\u0027s no longer an issue due to the renaming of the params.","commit_id":"19edb15b108bf51f998af883e8c5116fc9b7df16"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ec916a11cfe758a3182b607a783f7df42b5d3770","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        :param headers: webob headers"},{"line_number":84,"context_line":"        :param min_supp_ver: the version to use if specified not in headers"},{"line_number":85,"context_line":"        :param max_supp_ver: the version to use if latest is requested"},{"line_number":86,"context_line":"        :returns: a tupe of (major, minor) version numbers"},{"line_number":87,"context_line":"        :raises: webob.HTTPNotAcceptable"},{"line_number":88,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"ba7be1f8_1db92315","line":85,"updated":"2015-02-25 01:17:31.000000000","message":"hmm, /me thinks. It might be more appropriate for these to be named \u0027default_ver\u0027 and \u0027max_ver\u0027 (or \u0027latest_ver\u0027) respectively. Because they don\u0027t necessarily have to be the min/max versions since we aren\u0027t using them as clamps on the requested version.\n\nUnless we think we will want to use them as min/max","commit_id":"19edb15b108bf51f998af883e8c5116fc9b7df16"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"0b41cc66c8139ca4e07af9dd9319981ded5a09e8","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        :param headers: webob headers"},{"line_number":84,"context_line":"        :param min_supp_ver: the version to use if specified not in headers"},{"line_number":85,"context_line":"        :param max_supp_ver: the version to use if latest is requested"},{"line_number":86,"context_line":"        :returns: a tupe of (major, minor) version numbers"},{"line_number":87,"context_line":"        :raises: webob.HTTPNotAcceptable"},{"line_number":88,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"ba7be1f8_1da5a346","line":85,"in_reply_to":"ba7be1f8_1db92315","updated":"2015-02-25 02:06:07.000000000","message":"Done","commit_id":"19edb15b108bf51f998af883e8c5116fc9b7df16"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ec916a11cfe758a3182b607a783f7df42b5d3770","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        try:"},{"line_number":97,"context_line":"            version \u003d tuple(int(i) for i in parse_str.split(\u0027.\u0027))"},{"line_number":98,"context_line":"        except ValueError:"},{"line_number":99,"context_line":"            version \u003d ()"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        if len(version) !\u003d 2:"},{"line_number":102,"context_line":"            raise exc.HTTPNotAcceptable(_("}],"source_content_type":"text/x-python","patch_set":7,"id":"ba7be1f8_5dbd5bb6","line":99,"updated":"2015-02-25 01:17:31.000000000","message":"Sigh. This isn\u0027t right. If this is returned, it\u0027ll barf in the calling code. Seems like it should raise an HTTPNotAcceptable exception like below. (I know, outside the scope of this patch but I just noticed it. I\u0027ll fix it in a followup.)","commit_id":"19edb15b108bf51f998af883e8c5116fc9b7df16"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"0b41cc66c8139ca4e07af9dd9319981ded5a09e8","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        try:"},{"line_number":97,"context_line":"            version \u003d tuple(int(i) for i in parse_str.split(\u0027.\u0027))"},{"line_number":98,"context_line":"        except ValueError:"},{"line_number":99,"context_line":"            version \u003d ()"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        if len(version) !\u003d 2:"},{"line_number":102,"context_line":"            raise exc.HTTPNotAcceptable(_("}],"source_content_type":"text/x-python","patch_set":7,"id":"ba7be1f8_9db9937b","line":99,"in_reply_to":"ba7be1f8_5dbd5bb6","updated":"2015-02-25 02:06:07.000000000","message":"Ruby: It will raise that exception because the length of the empty tuple isn\u0027t 2 (see guard below), so there\u0027s no need for your follow-on patch (unless I\u0027ve missed something)","commit_id":"19edb15b108bf51f998af883e8c5116fc9b7df16"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"2080e51629cde904605ba0f8102cc154b3829ad7","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        try:"},{"line_number":97,"context_line":"            version \u003d tuple(int(i) for i in parse_str.split(\u0027.\u0027))"},{"line_number":98,"context_line":"        except ValueError:"},{"line_number":99,"context_line":"            version \u003d ()"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        if len(version) !\u003d 2:"},{"line_number":102,"context_line":"            raise exc.HTTPNotAcceptable(_("}],"source_content_type":"text/x-python","patch_set":7,"id":"ba7be1f8_7206af1e","line":99,"in_reply_to":"ba7be1f8_9db9937b","updated":"2015-02-25 15:28:45.000000000","message":"Yup, sorry about that. I was wrong. The code is correct.","commit_id":"19edb15b108bf51f998af883e8c5116fc9b7df16"}],"ironic/api/controllers/v1/__init__.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9d7cac0e1d9e27040df581061db5eaccf7d0759d","unresolved":false,"context_lines":[{"line_number":51,"context_line":"# bc973889: Add sync and async support for passthru methods"},{"line_number":52,"context_line":"# e03f443b: Vendor endpoints to support different HTTP methods"},{"line_number":53,"context_line":"# e69e5309: Make vendor methods discoverable via the Ironic API"},{"line_number":54,"context_line":"# edf532db: Add logic to store the config drive passed by Nova"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class MediaType(base.APIBase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_8cfee7ac","line":54,"updated":"2015-02-24 13:52:05.000000000","message":"Do we need these comments to be copied as well?","commit_id":"2d96363538339aa70bf77d1fc198eef2c9943f15"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"faac21ae5b8bd1b02d7c909a3710d3c2f4159461","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    @pecan.expose()"},{"line_number":168,"context_line":"    def _route(self, args):"},{"line_number":169,"context_line":"        v \u003d base.Version(pecan.request.headers)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        # Always set the min and max headers"},{"line_number":172,"context_line":"        # FIXME: these are not being sent if _check_version raises an exception"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_e433efa8","line":169,"updated":"2015-02-24 17:01:44.000000000","message":"why not change base.Version() so that we can pass it whatever it needs from V1. Eg move the base.V1 class here, and pass it as a parameter. Or just pass it min/max since that is what it seems to want?","commit_id":"2d96363538339aa70bf77d1fc198eef2c9943f15"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"d42b7044599ce70eda5980d5ca16dbcea031f7c2","unresolved":false,"context_lines":[{"line_number":63,"context_line":"MAX_VERSION \u003d \u00271.5\u0027"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"MIN_VER \u003d base.Version({base.Version.string: MIN_VERSION})"},{"line_number":67,"context_line":"MAX_VER \u003d base.Version({base.Version.string: MAX_VERSION})"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_34060487","line":66,"updated":"2015-02-24 23:41:37.000000000","message":"Maybe a comment on what is the difference between *_VER and *_VERSION as I am unsure why both are needed.","commit_id":"3601e30c597ad9c68e4e840bea88405cb0e7b74b"}]}
