)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7135,"name":"Liang Chen","email":"liangchen.linux@gmail.com","username":"Liang"},"change_message_id":"b00e5249b9b985ad0265bded34a30772f21451be","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Ignore nova limits set to \u0027-1\u0027"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In case nova server has quotas turned of, e.g. when it uses"},{"line_number":10,"context_line":"NoopQuotaDriver, nova-api returns \u0027-1\u0027 for corresponding resources which"},{"line_number":11,"context_line":"obviously means \u0027INFINITY\u0027. In this case we should not check resource"},{"line_number":12,"context_line":"template for any limits and should pass resource creation as-is."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAXH%2F%2FPkg%3D","line":9,"updated":"2014-04-23 03:42:57.000000000","message":"s/turned of/turned off/","commit_id":"26c38765b876f48bd40e8b699680adf5d84aaf80"}],"heat/engine/resources/server.py":[{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"e6f627b54161ac15492769443bd56639ab847b7a","unresolved":false,"context_lines":[{"line_number":931,"context_line":"        # verify that the number of metadata entries is not greater"},{"line_number":932,"context_line":"        # than the maximum number allowed in the provider\u0027s absolute"},{"line_number":933,"context_line":"        # limits"},{"line_number":934,"context_line":"        if metadata is not None and limits[\u0027maxServerMeta\u0027] !\u003d -1:"},{"line_number":935,"context_line":"            if len(metadata) \u003e limits[\u0027maxServerMeta\u0027]:"},{"line_number":936,"context_line":"                msg \u003d _(\u0027Instance metadata must not contain greater than %s \u0027"},{"line_number":937,"context_line":"                        \u0027entries.  This is the maximum number allowed by your \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FbYk%3D","line":934,"updated":"2014-04-21 21:29:58.000000000","message":"Ditto below.","commit_id":"151d41c67659f2bc5911700406a10800e842673b"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"e6f627b54161ac15492769443bd56639ab847b7a","unresolved":false,"context_lines":[{"line_number":940,"context_line":""},{"line_number":941,"context_line":"        # verify the number of personality files and the size of each"},{"line_number":942,"context_line":"        # personality file against the provider\u0027s absolute limits"},{"line_number":943,"context_line":"        if personality is not None:"},{"line_number":944,"context_line":"            if limits[\u0027maxPersonality\u0027] !\u003d -1:"},{"line_number":945,"context_line":"                if len(personality) \u003e limits[\u0027maxPersonality\u0027]:"},{"line_number":946,"context_line":"                    msg \u003d _(\"The personality property may not contain \""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FbYs%3D","line":943,"updated":"2014-04-21 21:29:58.000000000","message":"Assigning a variable whose name describes what a maxPersonality limit of !\u003d -1 means would improve readability:\n\n unlimited_personality \u003d limits[\u0027maxPersonality\u0027] !\u003d -1\n if len(personality) \u003e limits[\u0027maxPersonality\u0027] and not unlimited_personality:\n     ...\n\nIt would also help with the long line problem.","commit_id":"151d41c67659f2bc5911700406a10800e842673b"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"002848d44b743d4097110c6b191a20bfaccd4b4e","unresolved":false,"context_lines":[{"line_number":940,"context_line":""},{"line_number":941,"context_line":"        # verify the number of personality files and the size of each"},{"line_number":942,"context_line":"        # personality file against the provider\u0027s absolute limits"},{"line_number":943,"context_line":"        if personality is not None:"},{"line_number":944,"context_line":"            if limits[\u0027maxPersonality\u0027] !\u003d -1:"},{"line_number":945,"context_line":"                if len(personality) \u003e limits[\u0027maxPersonality\u0027]:"},{"line_number":946,"context_line":"                    msg \u003d _(\"The personality property may not contain \""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FUpE%3D","line":943,"in_reply_to":"AAAAXH%2F%2FUt4%3D","updated":"2014-04-22 14:18:23.000000000","message":"Please disregard my previous comment.  I thought you were the author of this patch.  I guess I would prefer a helper method on second thought.","commit_id":"151d41c67659f2bc5911700406a10800e842673b"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"fa15b3b7987b99c2b4fe923f9edfbf8c53f5e7f1","unresolved":false,"context_lines":[{"line_number":940,"context_line":""},{"line_number":941,"context_line":"        # verify the number of personality files and the size of each"},{"line_number":942,"context_line":"        # personality file against the provider\u0027s absolute limits"},{"line_number":943,"context_line":"        if personality is not None:"},{"line_number":944,"context_line":"            if limits[\u0027maxPersonality\u0027] !\u003d -1:"},{"line_number":945,"context_line":"                if len(personality) \u003e limits[\u0027maxPersonality\u0027]:"},{"line_number":946,"context_line":"                    msg \u003d _(\"The personality property may not contain \""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FUt4%3D","line":943,"in_reply_to":"AAAAXH%2F%2FbUQ%3D","updated":"2014-04-22 14:08:52.000000000","message":"I disagree that it would create additional code duplication, but if you have a helper method in mind, please do that instead.","commit_id":"151d41c67659f2bc5911700406a10800e842673b"},{"author":{"_account_id":8787,"name":"Dmitry Borodaenko","email":"angdraug@gmail.com","username":"angdraug"},"change_message_id":"6577b340d2ff8ed072647195c7b54e4fc2c1dd40","unresolved":false,"context_lines":[{"line_number":940,"context_line":""},{"line_number":941,"context_line":"        # verify the number of personality files and the size of each"},{"line_number":942,"context_line":"        # personality file against the provider\u0027s absolute limits"},{"line_number":943,"context_line":"        if personality is not None:"},{"line_number":944,"context_line":"            if limits[\u0027maxPersonality\u0027] !\u003d -1:"},{"line_number":945,"context_line":"                if len(personality) \u003e limits[\u0027maxPersonality\u0027]:"},{"line_number":946,"context_line":"                    msg \u003d _(\"The personality property may not contain \""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FbUQ%3D","line":943,"in_reply_to":"AAAAXH%2F%2FbYs%3D","updated":"2014-04-21 21:37:08.000000000","message":"Adding a variable like that would aggravate what already is a bit of code duplication. If you want to go that far in clarifying the purpose of the code, we\u0027d be better of extracting the whole check into a helper method and calling that in all three places.","commit_id":"151d41c67659f2bc5911700406a10800e842673b"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"e6f627b54161ac15492769443bd56639ab847b7a","unresolved":false,"context_lines":[{"line_number":942,"context_line":"        # personality file against the provider\u0027s absolute limits"},{"line_number":943,"context_line":"        if personality is not None:"},{"line_number":944,"context_line":"            if limits[\u0027maxPersonality\u0027] !\u003d -1:"},{"line_number":945,"context_line":"                if len(personality) \u003e limits[\u0027maxPersonality\u0027]:"},{"line_number":946,"context_line":"                    msg \u003d _(\"The personality property may not contain \""},{"line_number":947,"context_line":"                            \"greater than %s entries.\") % \\"},{"line_number":948,"context_line":"                        limits[\u0027maxPersonality\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FbW8%3D","line":945,"updated":"2014-04-21 21:29:58.000000000","message":"Lines 944 and 945 should be combined, as above.","commit_id":"151d41c67659f2bc5911700406a10800e842673b"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"e6f627b54161ac15492769443bd56639ab847b7a","unresolved":false,"context_lines":[{"line_number":949,"context_line":"                    raise exception.StackValidationFailed(message\u003dmsg)"},{"line_number":950,"context_line":""},{"line_number":951,"context_line":"            for path, contents in personality.items():"},{"line_number":952,"context_line":"                if len(bytes(contents)) \u003e limits[\u0027maxPersonalitySize\u0027] and \\"},{"line_number":953,"context_line":"                        limits[\u0027maxPersonalitySize\u0027] !\u003d -1:"},{"line_number":954,"context_line":"                    msg \u003d (_(\"The contents of personality file \\\"%(path)s\\\" \""},{"line_number":955,"context_line":"                             \"is larger than the maximum allowed personality \""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FbYo%3D","line":952,"updated":"2014-04-21 21:29:58.000000000","message":"Ditto above.","commit_id":"151d41c67659f2bc5911700406a10800e842673b"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"ee06b897640d20e99bb45c2ae13610f4c0d89dc2","unresolved":false,"context_lines":[{"line_number":858,"context_line":"        \u0027\u0027\u0027"},{"line_number":859,"context_line":"        Check a count against a maximum, unless maximum is -1"},{"line_number":860,"context_line":"        \u0027\u0027\u0027"},{"line_number":861,"context_line":"        if maximum !\u003d -1 and count \u003e maximum:"},{"line_number":862,"context_line":"            raise exception.StackValidationFailed(message\u003dmsg)"},{"line_number":863,"context_line":""},{"line_number":864,"context_line":"    def validate(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXH%2F%2FRMA%3D","line":861,"updated":"2014-04-22 21:26:46.000000000","message":"Assigning a variable whose name describes what a max of !\u003d -1 means would improve readability:\n\n unlimited \u003d maximum \u003d\u003d -1\n if count \u003e maximum and not unlimited:\n     ....","commit_id":"26c38765b876f48bd40e8b699680adf5d84aaf80"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"c60c275e1b9638b91e1d63cc96a861bd0028e680","unresolved":false,"context_lines":[{"line_number":858,"context_line":"        \u0027\u0027\u0027"},{"line_number":859,"context_line":"        Check a count against a maximum, unless maximum is -1"},{"line_number":860,"context_line":"        \u0027\u0027\u0027"},{"line_number":861,"context_line":"        if maximum !\u003d -1 and count \u003e maximum:"},{"line_number":862,"context_line":"            raise exception.StackValidationFailed(message\u003dmsg)"},{"line_number":863,"context_line":""},{"line_number":864,"context_line":"    def validate(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXH%2F%2FLss%3D","line":861,"in_reply_to":"AAAAXH%2F%2FRKk%3D","updated":"2014-04-23 13:57:22.000000000","message":"I don\u0027t see the comment.  Are you referring to the docstring?  That doesn\u0027t describe what -1 means.","commit_id":"26c38765b876f48bd40e8b699680adf5d84aaf80"},{"author":{"_account_id":8787,"name":"Dmitry Borodaenko","email":"angdraug@gmail.com","username":"angdraug"},"change_message_id":"629e1f11db64cef9c61cb2bbb85b9828de92d9fb","unresolved":false,"context_lines":[{"line_number":858,"context_line":"        \u0027\u0027\u0027"},{"line_number":859,"context_line":"        Check a count against a maximum, unless maximum is -1"},{"line_number":860,"context_line":"        \u0027\u0027\u0027"},{"line_number":861,"context_line":"        if maximum !\u003d -1 and count \u003e maximum:"},{"line_number":862,"context_line":"            raise exception.StackValidationFailed(message\u003dmsg)"},{"line_number":863,"context_line":""},{"line_number":864,"context_line":"    def validate(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXH%2F%2FRKk%3D","line":861,"in_reply_to":"AAAAXH%2F%2FRMA%3D","updated":"2014-04-22 21:31:58.000000000","message":"It\u0027s not worth the extra line of code that would add, special meaning of -1 is already explained in the comment right next to this line.","commit_id":"26c38765b876f48bd40e8b699680adf5d84aaf80"},{"author":{"_account_id":7256,"name":"Randall Burt","email":"randall.burt@rackspace.com","username":"randall-burt"},"change_message_id":"ca973b292567c57c7b300e7bc595e95b6f028a7f","unresolved":false,"context_lines":[{"line_number":848,"context_line":"        if new_metadata is None:"},{"line_number":849,"context_line":"            self.metadata \u003d self.parsed_template(\u0027Metadata\u0027)"},{"line_number":850,"context_line":""},{"line_number":851,"context_line":"    @classmethod"},{"line_number":852,"context_line":"    def _check_maximum(cls, count, maximum, msg):"},{"line_number":853,"context_line":"        \u0027\u0027\u0027"},{"line_number":854,"context_line":"        Check a count against a maximum, unless maximum is -1 which"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_0c0e56e5","line":851,"updated":"2014-05-05 22:36:22.000000000","message":"why is this a class-level method? Especially when its referenced to self everywhere?","commit_id":"ab01738c187027eac0106f31d3169c6b716a670f"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"81a370d706c810495b2cbada53665b634a1b44cb","unresolved":false,"context_lines":[{"line_number":848,"context_line":"        if new_metadata is None:"},{"line_number":849,"context_line":"            self.metadata \u003d self.parsed_template(\u0027Metadata\u0027)"},{"line_number":850,"context_line":""},{"line_number":851,"context_line":"    @classmethod"},{"line_number":852,"context_line":"    def _check_maximum(cls, count, maximum, msg):"},{"line_number":853,"context_line":"        \u0027\u0027\u0027"},{"line_number":854,"context_line":"        Check a count against a maximum, unless maximum is -1 which"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_2c395a41","line":851,"in_reply_to":"9ad9bd40_0c0e56e5","updated":"2014-05-05 22:45:18.000000000","message":"Good point, this should really be a staticmethod.","commit_id":"ab01738c187027eac0106f31d3169c6b716a670f"},{"author":{"_account_id":8787,"name":"Dmitry Borodaenko","email":"angdraug@gmail.com","username":"angdraug"},"change_message_id":"2bf58c15142069c2f91455e31f03772c576419c0","unresolved":false,"context_lines":[{"line_number":848,"context_line":"        if new_metadata is None:"},{"line_number":849,"context_line":"            self.metadata \u003d self.parsed_template(\u0027Metadata\u0027)"},{"line_number":850,"context_line":""},{"line_number":851,"context_line":"    @classmethod"},{"line_number":852,"context_line":"    def _check_maximum(cls, count, maximum, msg):"},{"line_number":853,"context_line":"        \u0027\u0027\u0027"},{"line_number":854,"context_line":"        Check a count against a maximum, unless maximum is -1 which"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_270df537","line":851,"in_reply_to":"9ad9bd40_2c395a41","updated":"2014-05-05 23:31:37.000000000","message":"Done","commit_id":"ab01738c187027eac0106f31d3169c6b716a670f"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"acd9ab3cad3391c913ccc7b3346ee2c7fc5b5325","unresolved":false,"context_lines":[{"line_number":851,"context_line":"    @classmethod"},{"line_number":852,"context_line":"    def _check_maximum(cls, count, maximum, msg):"},{"line_number":853,"context_line":"        \u0027\u0027\u0027"},{"line_number":854,"context_line":"        Check a count against a maximum, unless maximum is -1 which"},{"line_number":855,"context_line":"        indicates that there is no limit"},{"line_number":856,"context_line":"        \u0027\u0027\u0027"},{"line_number":857,"context_line":"        if maximum !\u003d -1 and count \u003e maximum:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_8415e4e6","line":854,"updated":"2014-05-05 19:10:46.000000000","message":"I still think this is sub-optimal.  The quality of docstrings in Heat vary, so it\u0027s easy to overlook them when reading code.\n\nI\u0027d suggest:\n\n unlimited \u003d maximum \u003d\u003d -1\n if count \u003e maximum and not unlimited:\n     ...","commit_id":"ab01738c187027eac0106f31d3169c6b716a670f"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"81a370d706c810495b2cbada53665b634a1b44cb","unresolved":false,"context_lines":[{"line_number":851,"context_line":"    @classmethod"},{"line_number":852,"context_line":"    def _check_maximum(cls, count, maximum, msg):"},{"line_number":853,"context_line":"        \u0027\u0027\u0027"},{"line_number":854,"context_line":"        Check a count against a maximum, unless maximum is -1 which"},{"line_number":855,"context_line":"        indicates that there is no limit"},{"line_number":856,"context_line":"        \u0027\u0027\u0027"},{"line_number":857,"context_line":"        if maximum !\u003d -1 and count \u003e maximum:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_6c1fe208","line":854,"in_reply_to":"9ad9bd40_2c45da16","updated":"2014-05-05 22:45:18.000000000","message":"Since we are bikeshedding, why even make a special case of -1?\n\n  if maximum \u003e\u003d 0 and count \u003e maximum:\n\nOr for Python trainspotters, this also works:\n\n  if count \u003e maximum \u003e\u003d 0:\n\n(but don\u0027t do that).","commit_id":"ab01738c187027eac0106f31d3169c6b716a670f"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"992bcda35b8e20de46783857b2072918074e9dda","unresolved":false,"context_lines":[{"line_number":851,"context_line":"    @classmethod"},{"line_number":852,"context_line":"    def _check_maximum(cls, count, maximum, msg):"},{"line_number":853,"context_line":"        \u0027\u0027\u0027"},{"line_number":854,"context_line":"        Check a count against a maximum, unless maximum is -1 which"},{"line_number":855,"context_line":"        indicates that there is no limit"},{"line_number":856,"context_line":"        \u0027\u0027\u0027"},{"line_number":857,"context_line":"        if maximum !\u003d -1 and count \u003e maximum:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_8c18a61f","line":854,"in_reply_to":"9ad9bd40_644700bd","updated":"2014-05-05 22:41:52.000000000","message":"I tend to agree with Andrew. The docstring works fine, and matches the actual way we can observe this to work in Nova. (I looked around and couldn\u0027t find that -1 was actually documented this way unfortunately).","commit_id":"ab01738c187027eac0106f31d3169c6b716a670f"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"301e7fc3370550ed005b96fbff86909a7660dd6a","unresolved":false,"context_lines":[{"line_number":851,"context_line":"    @classmethod"},{"line_number":852,"context_line":"    def _check_maximum(cls, count, maximum, msg):"},{"line_number":853,"context_line":"        \u0027\u0027\u0027"},{"line_number":854,"context_line":"        Check a count against a maximum, unless maximum is -1 which"},{"line_number":855,"context_line":"        indicates that there is no limit"},{"line_number":856,"context_line":"        \u0027\u0027\u0027"},{"line_number":857,"context_line":"        if maximum !\u003d -1 and count \u003e maximum:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_2c45da16","line":854,"in_reply_to":"9ad9bd40_644700bd","updated":"2014-05-05 22:32:50.000000000","message":"this seems fine to me","commit_id":"ab01738c187027eac0106f31d3169c6b716a670f"},{"author":{"_account_id":8797,"name":"Andrew Woodward","email":"xarses@gmail.com","username":"xarses"},"change_message_id":"f611b743a8790e41dd842ced3c70bc61ae4cf6b1","unresolved":false,"context_lines":[{"line_number":851,"context_line":"    @classmethod"},{"line_number":852,"context_line":"    def _check_maximum(cls, count, maximum, msg):"},{"line_number":853,"context_line":"        \u0027\u0027\u0027"},{"line_number":854,"context_line":"        Check a count against a maximum, unless maximum is -1 which"},{"line_number":855,"context_line":"        indicates that there is no limit"},{"line_number":856,"context_line":"        \u0027\u0027\u0027"},{"line_number":857,"context_line":"        if maximum !\u003d -1 and count \u003e maximum:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_644700bd","line":854,"in_reply_to":"9ad9bd40_8415e4e6","updated":"2014-05-05 19:26:24.000000000","message":"@Jason, no that is worse to read, and still needs a comment describing what is going on here. I\u0027m not sure about you, but the first thing that happens after I cant read something is to review comments around it to see whats supposed to be going on.","commit_id":"ab01738c187027eac0106f31d3169c6b716a670f"},{"author":{"_account_id":8787,"name":"Dmitry Borodaenko","email":"angdraug@gmail.com","username":"angdraug"},"change_message_id":"2bf58c15142069c2f91455e31f03772c576419c0","unresolved":false,"context_lines":[{"line_number":851,"context_line":"    @classmethod"},{"line_number":852,"context_line":"    def _check_maximum(cls, count, maximum, msg):"},{"line_number":853,"context_line":"        \u0027\u0027\u0027"},{"line_number":854,"context_line":"        Check a count against a maximum, unless maximum is -1 which"},{"line_number":855,"context_line":"        indicates that there is no limit"},{"line_number":856,"context_line":"        \u0027\u0027\u0027"},{"line_number":857,"context_line":"        if maximum !\u003d -1 and count \u003e maximum:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_07347148","line":854,"in_reply_to":"9ad9bd40_8c18a61f","updated":"2014-05-05 23:31:37.000000000","message":"-1 as a special value is used consistently throughout nova/quota.py in Nova, expanding the semantics of this check to grab any other negative value would introduce an inconsistency that will eventually trip someone up. So I\u0027d rather not deviate from what Nova is doing with this value.\n\nI also find a \u003d b \u003d\u003d c and c \u003e m \u003e\u003d 0 constructs counter-productive. I may be biased but I think the if condition in its current form is as readable as it can get.","commit_id":"ab01738c187027eac0106f31d3169c6b716a670f"},{"author":{"_account_id":7256,"name":"Randall Burt","email":"randall.burt@rackspace.com","username":"randall-burt"},"change_message_id":"e81f26db3773f7c0828ed64ae88ac691cbb768ce","unresolved":false,"context_lines":[{"line_number":849,"context_line":"            self.metadata \u003d self.parsed_template(\u0027Metadata\u0027)"},{"line_number":850,"context_line":""},{"line_number":851,"context_line":"    @staticmethod"},{"line_number":852,"context_line":"    def _check_maximum(count, maximum, msg):"},{"line_number":853,"context_line":"        \u0027\u0027\u0027"},{"line_number":854,"context_line":"        Check a count against a maximum, unless maximum is -1 which indicates"},{"line_number":855,"context_line":"        that there is no limit"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad9bd40_c260b7a7","line":852,"updated":"2014-05-05 23:58:58.000000000","message":"Having this static and prefixed with an _ also seems odd, but this is a minor nit.","commit_id":"ea5285fd5080e5fec20a8763ef98e6ffa9c7dea1"},{"author":{"_account_id":7256,"name":"Randall Burt","email":"randall.burt@rackspace.com","username":"randall-burt"},"change_message_id":"e81f26db3773f7c0828ed64ae88ac691cbb768ce","unresolved":false,"context_lines":[{"line_number":938,"context_line":"            msg \u003d _(\u0027Instance metadata must not contain greater than %s \u0027"},{"line_number":939,"context_line":"                    \u0027entries.  This is the maximum number allowed by your \u0027"},{"line_number":940,"context_line":"                    \u0027service provider\u0027) % limits[\u0027maxServerMeta\u0027]"},{"line_number":941,"context_line":"            self._check_maximum(len(metadata),"},{"line_number":942,"context_line":"                                limits[\u0027maxServerMeta\u0027], msg)"},{"line_number":943,"context_line":""},{"line_number":944,"context_line":"        # verify the number of personality files and the size of each"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad9bd40_e265bbb5","line":941,"updated":"2014-05-05 23:58:58.000000000","message":"Weather this is static or class level, seems wrong to reference the function in the context of self.","commit_id":"ea5285fd5080e5fec20a8763ef98e6ffa9c7dea1"},{"author":{"_account_id":8787,"name":"Dmitry Borodaenko","email":"angdraug@gmail.com","username":"angdraug"},"change_message_id":"d1d4cda85dd003eafe495ff85e409bb5fb6fba8c","unresolved":false,"context_lines":[{"line_number":938,"context_line":"            msg \u003d _(\u0027Instance metadata must not contain greater than %s \u0027"},{"line_number":939,"context_line":"                    \u0027entries.  This is the maximum number allowed by your \u0027"},{"line_number":940,"context_line":"                    \u0027service provider\u0027) % limits[\u0027maxServerMeta\u0027]"},{"line_number":941,"context_line":"            self._check_maximum(len(metadata),"},{"line_number":942,"context_line":"                                limits[\u0027maxServerMeta\u0027], msg)"},{"line_number":943,"context_line":""},{"line_number":944,"context_line":"        # verify the number of personality files and the size of each"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad9bd40_627b6b28","line":941,"in_reply_to":"9ad9bd40_e265bbb5","updated":"2014-05-06 00:22:04.000000000","message":"It\u0027s consistent with the way static and class methods are used elsewhere in this file, and, unlike explicitly specifying class name, is resilient against class renames.","commit_id":"ea5285fd5080e5fec20a8763ef98e6ffa9c7dea1"}],"heat/tests/test_server.py":[{"author":{"_account_id":6577,"name":"Sergey Kraynev","email":"sergejyit@gmail.com","username":"skraynev"},"change_message_id":"f3548a79da204382a82b50b2709e826ff2e4358b","unresolved":false,"context_lines":[{"line_number":713,"context_line":""},{"line_number":714,"context_line":"    def test_check_maximum(self):"},{"line_number":715,"context_line":"        msg \u003d \u0027test_check_maximum\u0027"},{"line_number":716,"context_line":"        servers.Server._check_maximum(1, 1, msg)"},{"line_number":717,"context_line":"        servers.Server._check_maximum(1000, -1, msg)"},{"line_number":718,"context_line":"        error \u003d self.assertRaises(exception.StackValidationFailed,"},{"line_number":719,"context_line":"                                  servers.Server._check_maximum,"}],"source_content_type":"text/x-python","patch_set":5,"id":"bad4c104_b12b7f2f","line":716,"updated":"2014-04-30 11:34:28.000000000","message":"I just recommend you to use in first and second cases:\n\nself.assertIsNone","commit_id":"ca714ff48f483d5c48d278c88e8066e898bbe489"},{"author":{"_account_id":7256,"name":"Randall Burt","email":"randall.burt@rackspace.com","username":"randall-burt"},"change_message_id":"ca973b292567c57c7b300e7bc595e95b6f028a7f","unresolved":false,"context_lines":[{"line_number":712,"context_line":""},{"line_number":713,"context_line":"    def test_check_maximum(self):"},{"line_number":714,"context_line":"        msg \u003d \u0027test_check_maximum\u0027"},{"line_number":715,"context_line":"        self.assertIsNone(servers.Server._check_maximum(1, 1, msg))"},{"line_number":716,"context_line":"        self.assertIsNone(servers.Server._check_maximum(1000, -1, msg))"},{"line_number":717,"context_line":"        error \u003d self.assertRaises(exception.StackValidationFailed,"},{"line_number":718,"context_line":"                                  servers.Server._check_maximum,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_2c2a3a2c","line":715,"updated":"2014-05-05 22:36:22.000000000","message":"IMO, this is not a sufficient justification for creating a class-level method.","commit_id":"ab01738c187027eac0106f31d3169c6b716a670f"}]}
