)]}'
{"nova/tests/test_SolidFireSanISCSIDriver.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b8f9b8642dd15cc462881a973e03279a59d52146","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2010 United States Government as represented by the"},{"line_number":4,"context_line":"# Administrator of the National Aeronautics and Space Administration."},{"line_number":5,"context_line":"# All Rights Reserved."},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAADX%2F%2F%2F%2FU%3D","line":4,"updated":"2012-01-05 18:08:55.000000000","message":"Copy/paste thing... please use:\n\nCopyright 2012 OpenStack, LLC","commit_id":"3ca6b513675c740cb6269b1729bc2dda61256b96"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b8f9b8642dd15cc462881a973e03279a59d52146","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        super(SolidFireVolumeTestCase, self).setUp()"},{"line_number":30,"context_line":"        self.executes \u003d []"},{"line_number":31,"context_line":"        self.account_not_found \u003d False"},{"line_number":32,"context_line":"        #SFID._issue_api_request \u003d self.fake_issue_api_request"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def tearDown(self):"},{"line_number":35,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAADX%2F%2F%2F%2FY%3D","line":32,"updated":"2012-01-05 18:08:55.000000000","message":"I think the above is leftover debugging stuff? If so, please remove.","commit_id":"3ca6b513675c740cb6269b1729bc2dda61256b96"}],"nova/volume/san.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"29ee13c26624bec866960c8840981bcf7d115174","unresolved":false,"context_lines":[{"line_number":597,"context_line":"        each call takes a set of paramaters (dict)"},{"line_number":598,"context_line":"        and returns results in a dict as well."},{"line_number":599,"context_line":"        \"\"\""},{"line_number":600,"context_line":"        import base64"},{"line_number":601,"context_line":"        import httplib"},{"line_number":602,"context_line":"        import json"},{"line_number":603,"context_line":"        import uuid"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAADH%2F%2F%2F58%3D","line":600,"updated":"2011-12-28 19:12:24.000000000","message":"Can you move these imports up to the top of the file? We typically only import like this when there are specific third-party modules to be imported.","commit_id":"92439a263c2c2eaee8eee3db1648ee70cd3a2255"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"29ee13c26624bec866960c8840981bcf7d115174","unresolved":false,"context_lines":[{"line_number":626,"context_line":"        login_key \u003d \u0027\u0027"},{"line_number":627,"context_line":"        if cluster_password is not None:"},{"line_number":628,"context_line":"            auth_key \u003d base64.encodestring(\u0027%s:%s\u0027 % (cluster_admin,"},{"line_number":629,"context_line":"                                           cluster_password))[:-1]"},{"line_number":630,"context_line":"            header[\u0027Authorization\u0027] \u003d \u0027Basic %s\u0027 % auth_key"},{"line_number":631,"context_line":""},{"line_number":632,"context_line":"        LOG.debug(\"Payload for SolidFire API call: %s\" % payload)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAADH%2F%2F%2F5U%3D","line":629,"updated":"2011-12-28 19:12:24.000000000","message":"Why are you stripping off this last character?","commit_id":"92439a263c2c2eaee8eee3db1648ee70cd3a2255"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"29ee13c26624bec866960c8840981bcf7d115174","unresolved":false,"context_lines":[{"line_number":629,"context_line":"                                           cluster_password))[:-1]"},{"line_number":630,"context_line":"            header[\u0027Authorization\u0027] \u003d \u0027Basic %s\u0027 % auth_key"},{"line_number":631,"context_line":""},{"line_number":632,"context_line":"        LOG.debug(\"Payload for SolidFire API call: %s\" % payload)"},{"line_number":633,"context_line":"        connection \u003d httplib.HTTPSConnection(host, port)"},{"line_number":634,"context_line":"        connection.request(\u0027POST\u0027, \u0027/json-rpc/1.0\u0027, payload, header)"},{"line_number":635,"context_line":"        response \u003d connection.getresponse()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAADH%2F%2F%2F5Q%3D","line":632,"updated":"2011-12-28 19:12:24.000000000","message":"It would be best if you could wrap all of your log lines in _( ) so they can be properly translated.","commit_id":"92439a263c2c2eaee8eee3db1648ee70cd3a2255"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b8f9b8642dd15cc462881a973e03279a59d52146","unresolved":false,"context_lines":[{"line_number":644,"context_line":"class SolidFireSanISCSIDriver(SanISCSIDriver):"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"    def _issue_api_request(self, method_name, params):"},{"line_number":647,"context_line":"        \"\"\" This is the main method used to make calls"},{"line_number":648,"context_line":"        to the SolidFire API.  Every command to the"},{"line_number":649,"context_line":"        device goes through here."},{"line_number":650,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAADX%2F%2F%2F%2FM%3D","line":647,"updated":"2012-01-05 18:08:55.000000000","message":"Please remove extra space between \"\"\" and This","commit_id":"3ca6b513675c740cb6269b1729bc2dda61256b96"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b8f9b8642dd15cc462881a973e03279a59d52146","unresolved":false,"context_lines":[{"line_number":654,"context_line":"        \"\"\""},{"line_number":655,"context_line":""},{"line_number":656,"context_line":"        host \u003d FLAGS.san_ip"},{"line_number":657,"context_line":"        port \u003d 443"},{"line_number":658,"context_line":""},{"line_number":659,"context_line":"        # (john-griffith) Probably don\u0027t need this, but the idea is"},{"line_number":660,"context_line":"        # we provide a request_id so we can coorelate"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAADX%2F%2F%2F%2B4%3D","line":657,"updated":"2012-01-05 18:08:55.000000000","message":"Not a huge deal, but might be good to have this be configurable?","commit_id":"3ca6b513675c740cb6269b1729bc2dda61256b96"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b8f9b8642dd15cc462881a973e03279a59d52146","unresolved":false,"context_lines":[{"line_number":657,"context_line":"        port \u003d 443"},{"line_number":658,"context_line":""},{"line_number":659,"context_line":"        # (john-griffith) Probably don\u0027t need this, but the idea is"},{"line_number":660,"context_line":"        # we provide a request_id so we can coorelate"},{"line_number":661,"context_line":"        # responses with requests"},{"line_number":662,"context_line":"        request_id \u003d int(uuid.uuid4())  # just generate a random number"},{"line_number":663,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAADX%2F%2F%2F%2FQ%3D","line":660,"updated":"2012-01-05 18:08:55.000000000","message":"s/coorelate/correlate :)","commit_id":"3ca6b513675c740cb6269b1729bc2dda61256b96"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b8f9b8642dd15cc462881a973e03279a59d52146","unresolved":false,"context_lines":[{"line_number":672,"context_line":""},{"line_number":673,"context_line":"        payload \u003d json.dumps(command, ensure_ascii\u003dFalse)"},{"line_number":674,"context_line":"        payload.encode(\u0027utf-8\u0027)"},{"line_number":675,"context_line":"        header \u003d {\u0027Content-Type\u0027: \u0027application/json-rpc; charset\u003dutf-8\u0027}"},{"line_number":676,"context_line":""},{"line_number":677,"context_line":"        login_key \u003d \u0027\u0027"},{"line_number":678,"context_line":"        if cluster_password is not None:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAADX%2F%2F%2F%2FI%3D","line":675,"updated":"2012-01-05 18:08:55.000000000","message":"this is the first I\u0027ve seen an application/json-rpc content-type. Are we sure that application/json isn\u0027t the more appropriate setting here?","commit_id":"3ca6b513675c740cb6269b1729bc2dda61256b96"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b8f9b8642dd15cc462881a973e03279a59d52146","unresolved":false,"context_lines":[{"line_number":677,"context_line":"        login_key \u003d \u0027\u0027"},{"line_number":678,"context_line":"        if cluster_password is not None:"},{"line_number":679,"context_line":"            auth_key \u003d base64.encodestring(\u0027%s:%s\u0027 % (cluster_admin,"},{"line_number":680,"context_line":"                                           cluster_password))[:-1]"},{"line_number":681,"context_line":"            header[\u0027Authorization\u0027] \u003d \u0027Basic %s\u0027 % auth_key"},{"line_number":682,"context_line":""},{"line_number":683,"context_line":"        LOG.debug(_(\"Payload for SolidFire API call: %s\" % payload))"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAADX%2F%2F%2F%2B0%3D","line":680,"updated":"2012-01-05 18:08:55.000000000","message":"Could you add a comment explaining why the last character is stripped above?","commit_id":"3ca6b513675c740cb6269b1729bc2dda61256b96"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b8f9b8642dd15cc462881a973e03279a59d52146","unresolved":false,"context_lines":[{"line_number":689,"context_line":"        if response.status !\u003d 200:"},{"line_number":690,"context_line":"            connection.close()"},{"line_number":691,"context_line":"            raise exception.Error(_(\"SolidFire API call returned bad\""},{"line_number":692,"context_line":"                                    \"status: %s\"), response.status)"},{"line_number":693,"context_line":"        else:"},{"line_number":694,"context_line":"            data \u003d response.read()"},{"line_number":695,"context_line":"            data \u003d json.loads(data)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAADX%2F%2F%2F%2FE%3D","line":692,"updated":"2012-01-05 18:08:55.000000000","message":"Might be good to include the method name in this error message, to make debugging a bit easier?","commit_id":"3ca6b513675c740cb6269b1729bc2dda61256b96"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b8f9b8642dd15cc462881a973e03279a59d52146","unresolved":false,"context_lines":[{"line_number":692,"context_line":"                                    \"status: %s\"), response.status)"},{"line_number":693,"context_line":"        else:"},{"line_number":694,"context_line":"            data \u003d response.read()"},{"line_number":695,"context_line":"            data \u003d json.loads(data)"},{"line_number":696,"context_line":"            connection.close()"},{"line_number":697,"context_line":"        LOG.debug(_(\"Results of SolidFire API call: %s\" % data))"},{"line_number":698,"context_line":"        return data"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAADX%2F%2F%2F%2FA%3D","line":695,"updated":"2012-01-05 18:08:55.000000000","message":"Would be good to wrap the above in a try: except TypeErro, ValueError: in case the return is not properly JSON encoded? That way you can catch the exception and close the connection properly if a problem occurred...","commit_id":"3ca6b513675c740cb6269b1729bc2dda61256b96"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b8f9b8642dd15cc462881a973e03279a59d52146","unresolved":false,"context_lines":[{"line_number":694,"context_line":"            data \u003d response.read()"},{"line_number":695,"context_line":"            data \u003d json.loads(data)"},{"line_number":696,"context_line":"            connection.close()"},{"line_number":697,"context_line":"        LOG.debug(_(\"Results of SolidFire API call: %s\" % data))"},{"line_number":698,"context_line":"        return data"},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"    def _get_volumes_by_sfaccount(self, account_id):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAADX%2F%2F%2F%2B8%3D","line":697,"updated":"2012-01-05 18:08:55.000000000","message":"Would be good to include method name in the debug message.","commit_id":"3ca6b513675c740cb6269b1729bc2dda61256b96"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b8f9b8642dd15cc462881a973e03279a59d52146","unresolved":false,"context_lines":[{"line_number":742,"context_line":"        return data[\u0027result\u0027]"},{"line_number":743,"context_line":""},{"line_number":744,"context_line":"    def _do_export(self, volume):"},{"line_number":745,"context_line":"        \"\"\" Need to get the account object to retrieve CHAP info"},{"line_number":746,"context_line":"        for the model update"},{"line_number":747,"context_line":"        \"\"\""},{"line_number":748,"context_line":"        sfaccount_name \u003d socket.gethostname() + \u0027-\u0027 + volume[\u0027project_id\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAADX%2F%2F%2F%2Bw%3D","line":745,"updated":"2012-01-05 18:08:55.000000000","message":"Please remove extra space between \"\"\" and Need","commit_id":"3ca6b513675c740cb6269b1729bc2dda61256b96"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b8f9b8642dd15cc462881a973e03279a59d52146","unresolved":false,"context_lines":[{"line_number":755,"context_line":"        return model_update"},{"line_number":756,"context_line":""},{"line_number":757,"context_line":"    def _generate_random_string(self, length):"},{"line_number":758,"context_line":"        \"\"\" Using this to get somewhat secure CHAP"},{"line_number":759,"context_line":"        password settings unique to each SF account"},{"line_number":760,"context_line":"        \"\"\""},{"line_number":761,"context_line":"        char_set \u003d string.ascii_uppercase + string.digits"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAADX%2F%2F%2F%2Bs%3D","line":758,"updated":"2012-01-05 18:08:55.000000000","message":"Extra whitespace after \"\"\"","commit_id":"3ca6b513675c740cb6269b1729bc2dda61256b96"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b8f9b8642dd15cc462881a973e03279a59d52146","unresolved":false,"context_lines":[{"line_number":762,"context_line":"        return \u0027\u0027.join(random.sample(char_set, length))"},{"line_number":763,"context_line":""},{"line_number":764,"context_line":"    def create_volume(self, volume):"},{"line_number":765,"context_line":"        \"\"\" One catch with SolidFire device is that you MUST"},{"line_number":766,"context_line":"        specify the owning account for the volume on creation."},{"line_number":767,"context_line":""},{"line_number":768,"context_line":"        The account is where CHAP settings are derived from,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAADX%2F%2F%2F%2Bo%3D","line":765,"updated":"2012-01-05 18:08:55.000000000","message":"Extra whitespace after \"\"\"","commit_id":"3ca6b513675c740cb6269b1729bc2dda61256b96"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b8f9b8642dd15cc462881a973e03279a59d52146","unresolved":false,"context_lines":[{"line_number":822,"context_line":"        return model_update"},{"line_number":823,"context_line":""},{"line_number":824,"context_line":"    def delete_volume(self, volume):"},{"line_number":825,"context_line":"        \"\"\" SolidFire allows multipe volumes with same name,"},{"line_number":826,"context_line":"        volumeID is what\u0027s guaranteed unique."},{"line_number":827,"context_line":""},{"line_number":828,"context_line":"        What we\u0027ll do here is check volumes based on account. this"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAADX%2F%2F%2F%2Bk%3D","line":825,"updated":"2012-01-05 18:08:55.000000000","message":"Extra whitespace after \"\"\"","commit_id":"3ca6b513675c740cb6269b1729bc2dda61256b96"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"9f002c93a0b6367c3df309e2f16f00ddb73baa64","unresolved":false,"context_lines":[{"line_number":657,"context_line":"        # For now 443 is the only port our server accepts requests on"},{"line_number":658,"context_line":"        port \u003d 443"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"        # (john-griffith) Probably don\u0027t need this, but the idea is"},{"line_number":661,"context_line":"        # we provide a request_id so we can correlate"},{"line_number":662,"context_line":"        # responses with requests"},{"line_number":663,"context_line":"        request_id \u003d int(uuid.uuid4())  # just generate a random number"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAEH%2F%2F%2BEo%3D","line":660,"updated":"2012-01-25 20:18:31.000000000","message":"Notes you wish to attribute to yourself should be formatted like this:\n\n# NOTE(john-griffith): ...","commit_id":"47a357bd2b46a2279a98ed726facd2b12fe0a0f5"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"9f002c93a0b6367c3df309e2f16f00ddb73baa64","unresolved":false,"context_lines":[{"line_number":676,"context_line":"        # we use json-rpc, webserver needs to see json-rpc in header"},{"line_number":677,"context_line":"        header \u003d {\u0027Content-Type\u0027: \u0027application/json-rpc; charset\u003dutf-8\u0027}"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"        login_key \u003d \u0027\u0027"},{"line_number":680,"context_line":"        if cluster_password is not None:"},{"line_number":681,"context_line":"            # base64.encodestring includes a newline character"},{"line_number":682,"context_line":"            # in the result, make sure we strip it off"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAEH%2F%2F%2BEE%3D","line":679,"updated":"2012-01-25 20:18:31.000000000","message":"This variable is set but never used.","commit_id":"47a357bd2b46a2279a98ed726facd2b12fe0a0f5"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"9f002c93a0b6367c3df309e2f16f00ddb73baa64","unresolved":false,"context_lines":[{"line_number":750,"context_line":"        params \u003d {}"},{"line_number":751,"context_line":"        data \u003d self._issue_api_request(\u0027GetClusterInfo\u0027, params)"},{"line_number":752,"context_line":"        if \u0027result\u0027 not in data:"},{"line_number":753,"context_line":"            raise exception.Error(_(\u0027Error in SolidFire API response: %s\u0027"},{"line_number":754,"context_line":"                                  % data))"},{"line_number":755,"context_line":"        return data[\u0027result\u0027]"},{"line_number":756,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAEH%2F%2F%2BEc%3D","line":753,"updated":"2012-01-25 20:18:31.000000000","message":"Lines like this can be broken up into two for readability:\n\nmsg \u003d _(...)\n\nraise exception.Error(msg % data)\n\n\nAnd I would prefer if you would not use exception.Error. Use an exception that subclasses NovaException, you can create new ones if necessary.","commit_id":"47a357bd2b46a2279a98ed726facd2b12fe0a0f5"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"9f002c93a0b6367c3df309e2f16f00ddb73baa64","unresolved":false,"context_lines":[{"line_number":758,"context_line":"        \"\"\"Need to get the account object to retrieve CHAP info"},{"line_number":759,"context_line":"        for the model update"},{"line_number":760,"context_line":"        \"\"\""},{"line_number":761,"context_line":"        sfaccount_name \u003d socket.gethostname() + \u0027-\u0027 + volume[\u0027project_id\u0027]"},{"line_number":762,"context_line":"        sfaccount \u003d self._get_sfaccount_by_name(sfaccount_name)"},{"line_number":763,"context_line":""},{"line_number":764,"context_line":"        model_update \u003d {}"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAEH%2F%2F%2BEU%3D","line":761,"updated":"2012-01-25 20:18:31.000000000","message":"what happens if either of these pieces are an int or None? It would be more robust if you would write this line as:\n\nsfaccount_name \u003d \u0027%s-%s\u0027 % (socket.gethostname(), volume[\u0027project_id\u0027])","commit_id":"47a357bd2b46a2279a98ed726facd2b12fe0a0f5"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"9f002c93a0b6367c3df309e2f16f00ddb73baa64","unresolved":false,"context_lines":[{"line_number":775,"context_line":"        return \u0027\u0027.join(random.sample(char_set, length))"},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"    def create_volume(self, volume):"},{"line_number":778,"context_line":"        \"\"\"One catch with SolidFire device is that you MUST"},{"line_number":779,"context_line":"        specify the owning account for the volume on creation."},{"line_number":780,"context_line":""},{"line_number":781,"context_line":"        The account is where CHAP settings are derived from,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAEH%2F%2F%2BEs%3D","line":778,"updated":"2012-01-25 20:18:31.000000000","message":"Can you update your docstrings to match what is documented in HACKING?","commit_id":"47a357bd2b46a2279a98ed726facd2b12fe0a0f5"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"9f002c93a0b6367c3df309e2f16f00ddb73baa64","unresolved":false,"context_lines":[{"line_number":823,"context_line":"        for v in volume_list:"},{"line_number":824,"context_line":"            if v[\u0027volumeID\u0027] \u003d\u003d volume_id:"},{"line_number":825,"context_line":"                iqn \u003d \u0027iqn.2010-01.com.solidfire:\u0027 + v[\u0027iqn\u0027]"},{"line_number":826,"context_line":"                valid \u003d True"},{"line_number":827,"context_line":"                break"},{"line_number":828,"context_line":""},{"line_number":829,"context_line":"        model_update \u003d {}"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAEH%2F%2F%2BEI%3D","line":826,"updated":"2012-01-25 20:18:31.000000000","message":"this variable is set but never used","commit_id":"47a357bd2b46a2279a98ed726facd2b12fe0a0f5"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"82034556182d5d252f0d63d663d56317c3c5a52e","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                    \u0027The ZFS path under which to create zvols for volumes.\u0027)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"class SfAccountNotFound(exception.NotFound):"},{"line_number":69,"context_line":"    \"\"\"Subclass to specifically address SolidFire account not found.\"\"\""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    message \u003d _(\"Unable to locate account %(account_name) on Solidfire device\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAEH%2F%2F9S8%3D","line":68,"updated":"2012-01-27 21:59:50.000000000","message":"We\u0027re trying to keep all exceptions located in nova/exception.py. Please move these three exceptions over there.","commit_id":"fb4bc97080670d68115f4540a0d94783647ec09f"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"82034556182d5d252f0d63d663d56317c3c5a52e","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    message \u003d _(\"Unable to locate account %(account_name) on Solidfire device\")"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"class DuplicateSfVolumeNames(exception.NovaException):"},{"line_number":75,"context_line":"    \"\"\"Exception to address occurence of duplicate volume names."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    We\u0027re using name to try and keep track of volumes, but it\u0027s"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAEH%2F%2F9TA%3D","line":74,"updated":"2012-01-27 21:59:50.000000000","message":"This can inherit from nova.exception.Duplicate (I think)","commit_id":"fb4bc97080670d68115f4540a0d94783647ec09f"}]}
