)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"573201efa925d9382d5762dc5e7611c9c06b669c","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This driver provide support for Coraid hardware storage appliances"},{"line_number":10,"context_line":"using AoE (ATA Over Ethernet) protocol released under GPL."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Implements blueprint coraid-volume-driver"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Currently, the following operations are supported :"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAAM3%2F%2B%2FCY%3D","line":11,"updated":"2013-02-12 14:32:18.000000000","message":"According to the header in the driver file, the cinder driver part at least is apache.","commit_id":"1360a09b897779fbcfd480a8877170c8b0d455f6"}],"cinder/tests/test_coraid.py":[{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"ceb3a040ad7c04e0832b653497ebf72ac31e4e36","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from cinder.volume.drivers import coraid"},{"line_number":23,"context_line":"from cinder.volume.drivers.coraid import CoraidDriver"},{"line_number":24,"context_line":"from cinder.volume.drivers.coraid import CoraidRESTClient"},{"line_number":25,"context_line":"from cinder.volume import volume_types"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"import cookielib"},{"line_number":28,"context_line":"import urllib2"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAM3%2F%2B6dw%3D","line":25,"updated":"2013-02-14 17:17:55.000000000","message":"volume_types is not used","commit_id":"8cd84e8f70dc7425611a822a85bb5e1cd2ba72ab"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"34b61e1c87713c985f8414456ed0358892438f0d","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from cinder.volume.drivers import coraid"},{"line_number":23,"context_line":"from cinder.volume.drivers.coraid import CoraidDriver"},{"line_number":24,"context_line":"from cinder.volume.drivers.coraid import CoraidRESTClient"},{"line_number":25,"context_line":"from cinder.volume import volume_types"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"import cookielib"},{"line_number":28,"context_line":"import urllib2"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAM3%2F%2B6RI%3D","line":25,"in_reply_to":"AAAAM3%2F%2B6dw%3D","updated":"2013-02-14 22:20:10.000000000","message":"Done","commit_id":"8cd84e8f70dc7425611a822a85bb5e1cd2ba72ab"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"776da31cf58785e902aa9c827bcc437957b9d9e1","unresolved":false,"context_lines":[{"line_number":160,"context_line":"                       lambda *_: fake_esm_fetch)"},{"line_number":161,"context_line":"        self.drv._get_volume_info(fake_volume_name)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def test__get_lun_address(self):"},{"line_number":164,"context_line":"        setattr(self.rest_mock, \u0027_get_lun_address\u0027,"},{"line_number":165,"context_line":"                lambda *_: fake_lun_info)"},{"line_number":166,"context_line":"        self.stubs.Set(CoraidRESTClient, \u0027_get_volume_info\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAM3%2F%2B62s%3D","line":163,"updated":"2013-02-14 14:38:25.000000000","message":"Multiple consecutive underscores. Is it intentional?","commit_id":"8cd84e8f70dc7425611a822a85bb5e1cd2ba72ab"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"34b61e1c87713c985f8414456ed0358892438f0d","unresolved":false,"context_lines":[{"line_number":160,"context_line":"                       lambda *_: fake_esm_fetch)"},{"line_number":161,"context_line":"        self.drv._get_volume_info(fake_volume_name)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def test__get_lun_address(self):"},{"line_number":164,"context_line":"        setattr(self.rest_mock, \u0027_get_lun_address\u0027,"},{"line_number":165,"context_line":"                lambda *_: fake_lun_info)"},{"line_number":166,"context_line":"        self.stubs.Set(CoraidRESTClient, \u0027_get_volume_info\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAM3%2F%2B61c%3D","line":163,"in_reply_to":"AAAAM3%2F%2B62s%3D","updated":"2013-02-14 22:20:10.000000000","message":"yes it is, the method i test here, starts with an underscore.","commit_id":"8cd84e8f70dc7425611a822a85bb5e1cd2ba72ab"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"5d5301aa2c38042aede00063181124c09b1924de","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from cinder import exception"},{"line_number":19,"context_line":"from cinder.openstack.common import jsonutils"},{"line_number":20,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":21,"context_line":"from cinder import test"},{"line_number":22,"context_line":"from cinder.volume.drivers import coraid"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B5Bo%3D","line":19,"updated":"2013-02-15 12:37:02.000000000","message":"jsonutils not used","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"6569d77c87f5525bf9c345fdac370ba9826c2517","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from cinder import exception"},{"line_number":19,"context_line":"from cinder.openstack.common import jsonutils"},{"line_number":20,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":21,"context_line":"from cinder import test"},{"line_number":22,"context_line":"from cinder.volume.drivers import coraid"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B43k%3D","line":19,"in_reply_to":"AAAAM3%2F%2B5Bo%3D","updated":"2013-02-15 17:31:17.000000000","message":"Done","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"}],"cinder/volume/drivers/coraid.py":[{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"3116d7be4287ce39343415a19766b5ae9d307a62","unresolved":false,"context_lines":[{"line_number":150,"context_line":"                            \u0027repo\u0027: infos.get(\u0027owner\u0027).get(\u0027name\u0027),"},{"line_number":151,"context_line":"                            \u0027vsxidx\u0027: infos.get(\u0027vsxIndex\u0027),"},{"line_number":152,"context_line":"                            \u0027index\u0027: infos.get(\u0027index\u0027),"},{"line_number":153,"context_line":"                            \u0027shelf\u0027: infos.get(\u0027shelf\u0027)                            "},{"line_number":154,"context_line":"                        }"},{"line_number":155,"context_line":"        if volume_info:"},{"line_number":156,"context_line":"            return volume_info"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FDKY%3D","line":153,"updated":"2013-02-09 00:26:35.000000000","message":"You\u0027ll need unit tests for your driver\u0027s features that you have implemented as well as the remaining features that\u0027s considered the bare minimum(see http://wiki.openstack.org/Cinder under the \"Minimum Driver Features\" section) to get the driver accepted into the Cinder project. Also once you have the unit test implemented you can run the test with the --pep8 option and fix any problem(end of line whitespace, in this case) that it reports.","commit_id":"da3d4c2997d8002c810ff497602e48227c9f1d12"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"3116d7be4287ce39343415a19766b5ae9d307a62","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def _get_repo_name(self, volume_name):"},{"line_number":166,"context_line":"        return self._get_volume_info(volume_name).get(\u0027repo\u0027)"},{"line_number":167,"context_line":"        "},{"line_number":168,"context_line":"    def _get_lun_address(self, volume_name):"},{"line_number":169,"context_line":"        volume_info \u003d self._get_volume_info(volume_name)"},{"line_number":170,"context_line":"        shelf \u003d volume_info.get(\u0027shelf\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FDKU%3D","line":167,"updated":"2013-02-09 00:26:35.000000000","message":"Same as above","commit_id":"da3d4c2997d8002c810ff497602e48227c9f1d12"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"ec3c174b8042a4df6ffc2be3a2dff7db2797a124","unresolved":false,"context_lines":[{"line_number":17,"context_line":"\"\"\""},{"line_number":18,"context_line":"Desc   : Driver to store volumes on Coraid Appliance"},{"line_number":19,"context_line":"Author : Jean-Baptiste RANSY \u003copenstack@alyseo.com\u003e"},{"line_number":20,"context_line":"Version: !!! Draft !!!"},{"line_number":21,"context_line":"State  : Create, Delete, Attach, Detach works"},{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2B%2Fn0%3D","line":20,"updated":"2013-02-12 06:39:17.000000000","message":"Need to modify the version.","commit_id":"970ce4d9eb60258de0f616a9a811adb8ca589e57"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"ec3c174b8042a4df6ffc2be3a2dff7db2797a124","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        return True"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    def local_path(self, volume):"},{"line_number":246,"context_line":"        \"\"\" Unused \"\"\""},{"line_number":247,"context_line":"        pass"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    def create_export(self, context, volume):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2B%2Fnw%3D","line":246,"updated":"2013-02-12 06:39:17.000000000","message":"This should be a comment,not docstring.","commit_id":"970ce4d9eb60258de0f616a9a811adb8ca589e57"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"ec3c174b8042a4df6ffc2be3a2dff7db2797a124","unresolved":false,"context_lines":[{"line_number":277,"context_line":"            return False"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":280,"context_line":"        \"\"\" Unused \"\"\""},{"line_number":281,"context_line":"        pass"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    def ensure_export(self, context, volume):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2B%2Fns%3D","line":280,"updated":"2013-02-12 06:39:17.000000000","message":"Ditto","commit_id":"970ce4d9eb60258de0f616a9a811adb8ca589e57"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"1fe28a609ded37ffc9fba1479261256ddad39cc8","unresolved":false,"context_lines":[{"line_number":215,"context_line":"                                    FLAGS.coraid_user, FLAGS.coraid_password)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    def check_for_setup_error(self):"},{"line_number":218,"context_line":"        # NOTE(jbr_): Return an error if prerequisites aren\u0027t met."},{"line_number":219,"context_line":"        if not self.esm._login():"},{"line_number":220,"context_line":"            raise LookupError(\"Can\u0027t login on Coraid ESM. Check your config\")"},{"line_number":221,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2B%2FCQ%3D","line":218,"updated":"2013-02-12 14:35:11.000000000","message":"pydoc rather than #NOTE?","commit_id":"1360a09b897779fbcfd480a8877170c8b0d455f6"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"1fe28a609ded37ffc9fba1479261256ddad39cc8","unresolved":false,"context_lines":[{"line_number":220,"context_line":"            raise LookupError(\"Can\u0027t login on Coraid ESM. Check your config\")"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def _get_repository(self, volume_type):"},{"line_number":223,"context_line":"        # NOTE(jbr_): Return the Coraid Repository from the Volume Type."},{"line_number":224,"context_line":"        # The Coraid Repository is stored into a volume_type_extra_specs key."},{"line_number":225,"context_line":"        volume_type_id \u003d volume_type.get(\u0027id\u0027)"},{"line_number":226,"context_line":"        repository_key_name \u003d FLAGS.coraid_repository_key"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2B%2FCI%3D","line":223,"updated":"2013-02-12 14:35:11.000000000","message":"pydoc not #NOTE","commit_id":"1360a09b897779fbcfd480a8877170c8b0d455f6"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"1fe28a609ded37ffc9fba1479261256ddad39cc8","unresolved":false,"context_lines":[{"line_number":238,"context_line":"        # NOTE(jbr_): The manager currently interprets any return as"},{"line_number":239,"context_line":"        # being the model_update for provider location."},{"line_number":240,"context_line":"        # return None to not break it (thank to jgriffith and DuncanT)"},{"line_number":241,"context_line":"        return None"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    def delete_volume(self, volume):"},{"line_number":244,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2B%2FCE%3D","line":241,"updated":"2013-02-12 14:35:11.000000000","message":"Just \u0027return\u0027 is the right thing to do here.","commit_id":"1360a09b897779fbcfd480a8877170c8b0d455f6"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"f106491424131f6e320ccca80ee09e24aee9d2ad","unresolved":false,"context_lines":[{"line_number":305,"context_line":"    def get_volume_stats(self, refresh\u003dFalse):"},{"line_number":306,"context_line":"        # NOTE(jbr_): Required feature for Grizzly."},{"line_number":307,"context_line":"        # Does anyone know what \u0027Volume Stats\u0027 a Volume Driver must return"},{"line_number":308,"context_line":"        # as minimum ? (http://wiki.openstack.org/Cinder)"},{"line_number":309,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2B%2BvY%3D","line":308,"updated":"2013-02-12 16:41:56.000000000","message":"Volume stats need to return the values for the following\n {\u0027driver_version\u0027: \u00271.0\u0027,\n \u0027free_capacity_gb\u0027: 100,\n \u0027reserved_percentage\u0027: 0,\n \u0027storage_protocol\u0027: \u0027\u0027,\n \u0027total_capacity_gb\u0027: 1024,\n \u0027vendor_name\u0027: \u0027\u0027,\n \u0027volume_backend_name\u0027: \u0027\u0027}\n\nYou can the keyword \u0027infinite\u0027 or \u0027unknown\u0027 accordingly for free_capacity_gb and total_capacity_gb if you array is unable to return this information","commit_id":"1de0610c439a3781aae80d36f2ab70f73c5af07f"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"55f540e841ba82725267f123f722e0880a580137","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    pass"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"# NOTE(jbr_): This is the Class to discuss with Coraid ESM Appliance"},{"line_number":79,"context_line":"class CoraidRESTClient(object):"},{"line_number":80,"context_line":"    def __init__(self, ipaddress, user, password):"},{"line_number":81,"context_line":"        self.url \u003d \"https://%s:8443/\" % ipaddress"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAM3%2F%2B630%3D","line":78,"updated":"2013-02-14 14:36:02.000000000","message":"These info should appear as docstrings","commit_id":"8cd84e8f70dc7425611a822a85bb5e1cd2ba72ab"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"34b61e1c87713c985f8414456ed0358892438f0d","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    pass"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"# NOTE(jbr_): This is the Class to discuss with Coraid ESM Appliance"},{"line_number":79,"context_line":"class CoraidRESTClient(object):"},{"line_number":80,"context_line":"    def __init__(self, ipaddress, user, password):"},{"line_number":81,"context_line":"        self.url \u003d \"https://%s:8443/\" % ipaddress"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAM3%2F%2B6sc%3D","line":78,"in_reply_to":"AAAAM3%2F%2B630%3D","updated":"2013-02-14 22:20:10.000000000","message":"Done. Most of NOTEs converted to docstrigs","commit_id":"8cd84e8f70dc7425611a822a85bb5e1cd2ba72ab"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"55f540e841ba82725267f123f722e0880a580137","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        return True"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    # NOTE(jbr_): Send the HTTPS call, get response in JSON"},{"line_number":107,"context_line":"    # convert response into Python Object an return it"},{"line_number":108,"context_line":"    def _esm(self, url\u003dFalse, data\u003dFalse):"},{"line_number":109,"context_line":"        if url:"},{"line_number":110,"context_line":"            url \u003d self.url + url"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAM3%2F%2B63s%3D","line":107,"updated":"2013-02-14 14:36:02.000000000","message":"Typo: \u0027and\u0027 return it","commit_id":"8cd84e8f70dc7425611a822a85bb5e1cd2ba72ab"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"34b61e1c87713c985f8414456ed0358892438f0d","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        return True"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    # NOTE(jbr_): Send the HTTPS call, get response in JSON"},{"line_number":107,"context_line":"    # convert response into Python Object an return it"},{"line_number":108,"context_line":"    def _esm(self, url\u003dFalse, data\u003dFalse):"},{"line_number":109,"context_line":"        if url:"},{"line_number":110,"context_line":"            url \u003d self.url + url"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAM3%2F%2B6sY%3D","line":107,"in_reply_to":"AAAAM3%2F%2B63s%3D","updated":"2013-02-14 22:20:10.000000000","message":"Done","commit_id":"8cd84e8f70dc7425611a822a85bb5e1cd2ba72ab"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"55f540e841ba82725267f123f722e0880a580137","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    # NOTE(jbr_): Send the HTTPS call, get response in JSON"},{"line_number":107,"context_line":"    # convert response into Python Object an return it"},{"line_number":108,"context_line":"    def _esm(self, url\u003dFalse, data\u003dFalse):"},{"line_number":109,"context_line":"        if url:"},{"line_number":110,"context_line":"            url \u003d self.url + url"},{"line_number":111,"context_line":"            if data:"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAM3%2F%2B63w%3D","line":108,"updated":"2013-02-14 14:36:02.000000000","message":"What does esm mean? Can you change it to something else?","commit_id":"8cd84e8f70dc7425611a822a85bb5e1cd2ba72ab"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"34b61e1c87713c985f8414456ed0358892438f0d","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    # NOTE(jbr_): Send the HTTPS call, get response in JSON"},{"line_number":107,"context_line":"    # convert response into Python Object an return it"},{"line_number":108,"context_line":"    def _esm(self, url\u003dFalse, data\u003dFalse):"},{"line_number":109,"context_line":"        if url:"},{"line_number":110,"context_line":"            url \u003d self.url + url"},{"line_number":111,"context_line":"            if data:"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAM3%2F%2B600%3D","line":108,"in_reply_to":"AAAAM3%2F%2B63w%3D","updated":"2013-02-14 22:20:10.000000000","message":"_esm represent the Coraid ESM Appliance. (added as docstrigs)","commit_id":"8cd84e8f70dc7425611a822a85bb5e1cd2ba72ab"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"34b61e1c87713c985f8414456ed0358892438f0d","unresolved":false,"context_lines":[{"line_number":333,"context_line":"            }"},{"line_number":334,"context_line":"        except Exception:"},{"line_number":335,"context_line":"            msg \u003d \u0027Fail to Initialize Connection. Volume Name: %s\u0027 \\"},{"line_number":336,"context_line":"                  \u0027Volume Name: %s \u0027 \\"},{"line_number":337,"context_line":"                  \u0027Shelf: %s, Lun: %s\u0027 % (volume[\u0027name\u0027], shelf, lun)"},{"line_number":338,"context_line":"            LOG.debug(msg)"},{"line_number":339,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAM3%2F%2B6ro%3D","line":336,"updated":"2013-02-14 22:20:10.000000000","message":"Fixed. Repetition \u0027Volume Name: %s \u0027","commit_id":"8cd84e8f70dc7425611a822a85bb5e1cd2ba72ab"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"55f540e841ba82725267f123f722e0880a580137","unresolved":false,"context_lines":[{"line_number":350,"context_line":"                \u0027volume_backend_name\u0027: \u0027EtherCloud ESM\u0027}"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"    def local_path(self, volume):"},{"line_number":353,"context_line":"        # NOTE(jbr_): Unused."},{"line_number":354,"context_line":"        return"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    def create_export(self, context, volume):"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAM3%2F%2B63c%3D","line":353,"updated":"2013-02-14 14:36:02.000000000","message":"Notes like these, appearing repetitively, looks odd. You can actually remove it altogether.","commit_id":"8cd84e8f70dc7425611a822a85bb5e1cd2ba72ab"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"34b61e1c87713c985f8414456ed0358892438f0d","unresolved":false,"context_lines":[{"line_number":350,"context_line":"                \u0027volume_backend_name\u0027: \u0027EtherCloud ESM\u0027}"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"    def local_path(self, volume):"},{"line_number":353,"context_line":"        # NOTE(jbr_): Unused."},{"line_number":354,"context_line":"        return"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    def create_export(self, context, volume):"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAM3%2F%2B6sU%3D","line":353,"in_reply_to":"AAAAM3%2F%2B63c%3D","updated":"2013-02-14 22:20:10.000000000","message":"Done. BTW what to do with unused methods ?","commit_id":"8cd84e8f70dc7425611a822a85bb5e1cd2ba72ab"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"ceb3a040ad7c04e0832b653497ebf72ac31e4e36","unresolved":false,"context_lines":[{"line_number":368,"context_line":"    def ensure_export(self, context, volume):"},{"line_number":369,"context_line":"        # NOTE(jbr_): Unused."},{"line_number":370,"context_line":"        return"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"    def attach_volume(self, context, volume, instance_uuid, mountpoint):"},{"line_number":373,"context_line":"        # NOTE(jbr_): Unused."},{"line_number":374,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAM3%2F%2B6c4%3D","line":371,"updated":"2013-02-14 17:17:55.000000000","message":"these should just be marked pass. For example,\ndef ensure_export(self, context, volume):\n    pass","commit_id":"8cd84e8f70dc7425611a822a85bb5e1cd2ba72ab"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"34b61e1c87713c985f8414456ed0358892438f0d","unresolved":false,"context_lines":[{"line_number":368,"context_line":"    def ensure_export(self, context, volume):"},{"line_number":369,"context_line":"        # NOTE(jbr_): Unused."},{"line_number":370,"context_line":"        return"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"    def attach_volume(self, context, volume, instance_uuid, mountpoint):"},{"line_number":373,"context_line":"        # NOTE(jbr_): Unused."},{"line_number":374,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAM3%2F%2B6Ro%3D","line":371,"in_reply_to":"AAAAM3%2F%2B6c4%3D","updated":"2013-02-14 22:20:10.000000000","message":"Done","commit_id":"8cd84e8f70dc7425611a822a85bb5e1cd2ba72ab"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"ceb3a040ad7c04e0832b653497ebf72ac31e4e36","unresolved":false,"context_lines":[{"line_number":372,"context_line":"    def attach_volume(self, context, volume, instance_uuid, mountpoint):"},{"line_number":373,"context_line":"        # NOTE(jbr_): Unused."},{"line_number":374,"context_line":"        return"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"    def detach_volume(self, context, volume):"},{"line_number":377,"context_line":"        # NOTE(jbr_): Unused."},{"line_number":378,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAM3%2F%2B6c0%3D","line":375,"updated":"2013-02-14 17:17:55.000000000","message":"same as above","commit_id":"8cd84e8f70dc7425611a822a85bb5e1cd2ba72ab"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"34b61e1c87713c985f8414456ed0358892438f0d","unresolved":false,"context_lines":[{"line_number":372,"context_line":"    def attach_volume(self, context, volume, instance_uuid, mountpoint):"},{"line_number":373,"context_line":"        # NOTE(jbr_): Unused."},{"line_number":374,"context_line":"        return"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"    def detach_volume(self, context, volume):"},{"line_number":377,"context_line":"        # NOTE(jbr_): Unused."},{"line_number":378,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAM3%2F%2B6Rk%3D","line":375,"in_reply_to":"AAAAM3%2F%2B6c0%3D","updated":"2013-02-14 22:20:10.000000000","message":"Done","commit_id":"8cd84e8f70dc7425611a822a85bb5e1cd2ba72ab"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"ceb3a040ad7c04e0832b653497ebf72ac31e4e36","unresolved":false,"context_lines":[{"line_number":375,"context_line":""},{"line_number":376,"context_line":"    def detach_volume(self, context, volume):"},{"line_number":377,"context_line":"        # NOTE(jbr_): Unused."},{"line_number":378,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAM3%2F%2B6cs%3D","line":378,"updated":"2013-02-14 17:17:55.000000000","message":"same as above","commit_id":"8cd84e8f70dc7425611a822a85bb5e1cd2ba72ab"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"34b61e1c87713c985f8414456ed0358892438f0d","unresolved":false,"context_lines":[{"line_number":375,"context_line":""},{"line_number":376,"context_line":"    def detach_volume(self, context, volume):"},{"line_number":377,"context_line":"        # NOTE(jbr_): Unused."},{"line_number":378,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAM3%2F%2B6Rg%3D","line":378,"in_reply_to":"AAAAM3%2F%2B6cs%3D","updated":"2013-02-14 22:20:10.000000000","message":"Done","commit_id":"8cd84e8f70dc7425611a822a85bb5e1cd2ba72ab"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"b3205ce5d18d05c68a7f23ca54d31869620befc9","unresolved":false,"context_lines":[{"line_number":34,"context_line":"import random"},{"line_number":35,"context_line":"import string"},{"line_number":36,"context_line":"import time"},{"line_number":37,"context_line":"import urllib"},{"line_number":38,"context_line":"import urllib2"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAM3%2F%2B5vc%3D","line":37,"updated":"2013-02-15 00:49:54.000000000","message":"urllib is never used, only urllib2","commit_id":"e02f08a090ff7abc6c3d8822cecb40198876d955"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"f6cf529b948f7e4e5b934a30f43dc17bbce999e2","unresolved":false,"context_lines":[{"line_number":34,"context_line":"import random"},{"line_number":35,"context_line":"import string"},{"line_number":36,"context_line":"import time"},{"line_number":37,"context_line":"import urllib"},{"line_number":38,"context_line":"import urllib2"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAM3%2F%2B5NA%3D","line":37,"in_reply_to":"AAAAM3%2F%2B5vc%3D","updated":"2013-02-15 09:21:57.000000000","message":"Done","commit_id":"e02f08a090ff7abc6c3d8822cecb40198876d955"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"b3205ce5d18d05c68a7f23ca54d31869620befc9","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"class CoraidException(Exception):"},{"line_number":62,"context_line":"    MESSAGE \u003d _(\u0027Coraid ESM returned the error\u0027)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def __init__(self, error\u003dNone):"},{"line_number":65,"context_line":"        super(CoraidException, self).__init__(self.message, error)"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAM3%2F%2B5vQ%3D","line":62,"updated":"2013-02-15 00:49:54.000000000","message":"Where is this MESSAGE used? Should it not be message","commit_id":"e02f08a090ff7abc6c3d8822cecb40198876d955"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"f6cf529b948f7e4e5b934a30f43dc17bbce999e2","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"class CoraidException(Exception):"},{"line_number":62,"context_line":"    MESSAGE \u003d _(\u0027Coraid ESM returned the error\u0027)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def __init__(self, error\u003dNone):"},{"line_number":65,"context_line":"        super(CoraidException, self).__init__(self.message, error)"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAM3%2F%2B5Mc%3D","line":62,"in_reply_to":"AAAAM3%2F%2B5vQ%3D","updated":"2013-02-15 09:21:57.000000000","message":"Each time i raise an Exception, i provide a complete message, so I will remove that.\n\n\ni will :\n\nAdd message\u003dNone into __init__()\n\nReplace self.message by message into super()","commit_id":"e02f08a090ff7abc6c3d8822cecb40198876d955"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"b3205ce5d18d05c68a7f23ca54d31869620befc9","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        \"\"\"In charge of all commands into \u0027configure\u0027.\"\"\""},{"line_number":137,"context_line":"        self._login()"},{"line_number":138,"context_line":"        url \u003d \u0027configure\u0027"},{"line_number":139,"context_line":"        LOG.debug(_(\u0027CONFIGURE : %s\u0027), data)"},{"line_number":140,"context_line":"        response \u003d self._esm(url, data)"},{"line_number":141,"context_line":"        LOG.debug(_(\"CONFIGURE : %s\"), response)"},{"line_number":142,"context_line":"        if response:"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAM3%2F%2B5tI%3D","line":139,"updated":"2013-02-15 00:49:54.000000000","message":"maybe change to Configure data:, if these are still even needed","commit_id":"e02f08a090ff7abc6c3d8822cecb40198876d955"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"f6cf529b948f7e4e5b934a30f43dc17bbce999e2","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        \"\"\"In charge of all commands into \u0027configure\u0027.\"\"\""},{"line_number":137,"context_line":"        self._login()"},{"line_number":138,"context_line":"        url \u003d \u0027configure\u0027"},{"line_number":139,"context_line":"        LOG.debug(_(\u0027CONFIGURE : %s\u0027), data)"},{"line_number":140,"context_line":"        response \u003d self._esm(url, data)"},{"line_number":141,"context_line":"        LOG.debug(_(\"CONFIGURE : %s\"), response)"},{"line_number":142,"context_line":"        if response:"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAM3%2F%2B5MQ%3D","line":139,"in_reply_to":"AAAAM3%2F%2B5tI%3D","updated":"2013-02-15 09:21:57.000000000","message":"I will change CONFIGURE to Configure data","commit_id":"e02f08a090ff7abc6c3d8822cecb40198876d955"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"b3205ce5d18d05c68a7f23ca54d31869620befc9","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        url \u003d \u0027configure\u0027"},{"line_number":139,"context_line":"        LOG.debug(_(\u0027CONFIGURE : %s\u0027), data)"},{"line_number":140,"context_line":"        response \u003d self._esm(url, data)"},{"line_number":141,"context_line":"        LOG.debug(_(\"CONFIGURE : %s\"), response)"},{"line_number":142,"context_line":"        if response:"},{"line_number":143,"context_line":"            if (response.get(\u0027configState\u0027) and"},{"line_number":144,"context_line":"                response.get(\u0027configState\u0027) \u003d\u003d \u0027completedSuccessfully\u0027):"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAM3%2F%2B5u4%3D","line":141,"updated":"2013-02-15 00:49:54.000000000","message":"You may want to change the text of this debug message as it the same as the one directly above it. i.e Configure response:","commit_id":"e02f08a090ff7abc6c3d8822cecb40198876d955"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"f6cf529b948f7e4e5b934a30f43dc17bbce999e2","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        url \u003d \u0027configure\u0027"},{"line_number":139,"context_line":"        LOG.debug(_(\u0027CONFIGURE : %s\u0027), data)"},{"line_number":140,"context_line":"        response \u003d self._esm(url, data)"},{"line_number":141,"context_line":"        LOG.debug(_(\"CONFIGURE : %s\"), response)"},{"line_number":142,"context_line":"        if response:"},{"line_number":143,"context_line":"            if (response.get(\u0027configState\u0027) and"},{"line_number":144,"context_line":"                response.get(\u0027configState\u0027) \u003d\u003d \u0027completedSuccessfully\u0027):"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAM3%2F%2B5MI%3D","line":141,"in_reply_to":"AAAAM3%2F%2B5u4%3D","updated":"2013-02-15 09:21:57.000000000","message":"I will change CONFIGURE to Configure response","commit_id":"e02f08a090ff7abc6c3d8822cecb40198876d955"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"5d5301aa2c38042aede00063181124c09b1924de","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"import cookielib"},{"line_number":33,"context_line":"import os"},{"line_number":34,"context_line":"import random"},{"line_number":35,"context_line":"import string"},{"line_number":36,"context_line":"import time"},{"line_number":37,"context_line":"import urllib2"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B5GM%3D","line":34,"updated":"2013-02-15 12:37:02.000000000","message":"random not used","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"6569d77c87f5525bf9c345fdac370ba9826c2517","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"import cookielib"},{"line_number":33,"context_line":"import os"},{"line_number":34,"context_line":"import random"},{"line_number":35,"context_line":"import string"},{"line_number":36,"context_line":"import time"},{"line_number":37,"context_line":"import urllib2"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B43g%3D","line":34,"in_reply_to":"AAAAM3%2F%2B5GM%3D","updated":"2013-02-15 17:31:17.000000000","message":"Done","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"5d5301aa2c38042aede00063181124c09b1924de","unresolved":false,"context_lines":[{"line_number":32,"context_line":"import cookielib"},{"line_number":33,"context_line":"import os"},{"line_number":34,"context_line":"import random"},{"line_number":35,"context_line":"import string"},{"line_number":36,"context_line":"import time"},{"line_number":37,"context_line":"import urllib2"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B5Bk%3D","line":35,"updated":"2013-02-15 12:37:02.000000000","message":"string not used","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"6569d77c87f5525bf9c345fdac370ba9826c2517","unresolved":false,"context_lines":[{"line_number":32,"context_line":"import cookielib"},{"line_number":33,"context_line":"import os"},{"line_number":34,"context_line":"import random"},{"line_number":35,"context_line":"import string"},{"line_number":36,"context_line":"import time"},{"line_number":37,"context_line":"import urllib2"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B43c%3D","line":35,"in_reply_to":"AAAAM3%2F%2B5Bk%3D","updated":"2013-02-15 17:31:17.000000000","message":"Done","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"5d5301aa2c38042aede00063181124c09b1924de","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                raise CoraidESMException(response.get(\u0027message\u0027, \u0027\u0027))"},{"line_number":103,"context_line":"        return True"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def _esm(self, url\u003dFalse, data\u003dFalse):"},{"line_number":106,"context_line":"        \"\"\""},{"line_number":107,"context_line":"        _esm represent the entry point to send requests to ESM Appliance."},{"line_number":108,"context_line":"        Send the HTTPS call, get response in JSON"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B5Fw%3D","line":105,"updated":"2013-02-15 12:37:02.000000000","message":"It looks like a URL is not passed here as parameter but the method to be called over that URL (line 135 says that the parameter url would take the value \u0027configure\u0027). So It would look better if this can be changed to something else (e.g. \u0027method\u0027).","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"6569d77c87f5525bf9c345fdac370ba9826c2517","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                raise CoraidESMException(response.get(\u0027message\u0027, \u0027\u0027))"},{"line_number":103,"context_line":"        return True"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def _esm(self, url\u003dFalse, data\u003dFalse):"},{"line_number":106,"context_line":"        \"\"\""},{"line_number":107,"context_line":"        _esm represent the entry point to send requests to ESM Appliance."},{"line_number":108,"context_line":"        Send the HTTPS call, get response in JSON"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B43U%3D","line":105,"in_reply_to":"AAAAM3%2F%2B5Fw%3D","updated":"2013-02-15 17:31:17.000000000","message":"no, your wrong :\n\n_login() method pass url \u003d \u0027admin?op\u003dlogin\u0026username\u003d%s\u0026password\u003d%s\u0027\n\n_configure() method pass url \u003d \u0027configure\u0027\n\n_get_volume_info() method pass url \u003d \u0027fetch?shelf\u003dcms\u0026orchStrRepo\u0026lv\u003d%s\u0027","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"5d5301aa2c38042aede00063181124c09b1924de","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        \"\"\""},{"line_number":111,"context_line":"        if url:"},{"line_number":112,"context_line":"            url \u003d self.url + url"},{"line_number":113,"context_line":"            if data:"},{"line_number":114,"context_line":"                req \u003d urllib2.Request(url, data)"},{"line_number":115,"context_line":"            else:"},{"line_number":116,"context_line":"                req \u003d urllib2.Request(url)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B5F4%3D","line":113,"updated":"2013-02-15 12:37:02.000000000","message":"This if..else block can be replaced by req \u003d urllib2.Request(url, data)\n\nThe urllib2.Request() function handles the case when data is None.","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"6569d77c87f5525bf9c345fdac370ba9826c2517","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        \"\"\""},{"line_number":111,"context_line":"        if url:"},{"line_number":112,"context_line":"            url \u003d self.url + url"},{"line_number":113,"context_line":"            if data:"},{"line_number":114,"context_line":"                req \u003d urllib2.Request(url, data)"},{"line_number":115,"context_line":"            else:"},{"line_number":116,"context_line":"                req \u003d urllib2.Request(url)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B41k%3D","line":113,"in_reply_to":"AAAAM3%2F%2B5F4%3D","updated":"2013-02-15 17:31:17.000000000","message":"Woot ! Now i know the difference between None and False, Thanks a lot !\n\ndef _esm(self, url\u003dFalse, data\u003dNone):\n\nreq \u003d urllib2.Request(url, data)","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"5d5301aa2c38042aede00063181124c09b1924de","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            try:"},{"line_number":119,"context_line":"                res \u003d self.urlOpener.open(req).read()"},{"line_number":120,"context_line":"            except Exception:"},{"line_number":121,"context_line":"                raise CoraidRESTException(\u0027ESM urlOpen error\u0027)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"            try:"},{"line_number":124,"context_line":"                res_json \u003d jsonutils.loads(res)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B5B0%3D","line":121,"updated":"2013-02-15 12:37:02.000000000","message":"Internationalization not done. Not sure if needed here. I guess it is.","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"6569d77c87f5525bf9c345fdac370ba9826c2517","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            try:"},{"line_number":119,"context_line":"                res \u003d self.urlOpener.open(req).read()"},{"line_number":120,"context_line":"            except Exception:"},{"line_number":121,"context_line":"                raise CoraidRESTException(\u0027ESM urlOpen error\u0027)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"            try:"},{"line_number":124,"context_line":"                res_json \u003d jsonutils.loads(res)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B4zo%3D","line":121,"in_reply_to":"AAAAM3%2F%2B5B0%3D","updated":"2013-02-15 17:31:17.000000000","message":"Done and i reviewed all my code about that.\nThanks again !","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"5d5301aa2c38042aede00063181124c09b1924de","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        response \u003d self._esm(url, data)"},{"line_number":138,"context_line":"        LOG.debug(_(\"Configure response : %s\"), response)"},{"line_number":139,"context_line":"        if response:"},{"line_number":140,"context_line":"            if (response.get(\u0027configState\u0027) and"},{"line_number":141,"context_line":"                response.get(\u0027configState\u0027) \u003d\u003d \u0027completedSuccessfully\u0027):"},{"line_number":142,"context_line":"                return True"},{"line_number":143,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B5Fs%3D","line":140,"updated":"2013-02-15 12:37:02.000000000","message":"Only the second condition (after the \u0027and\u0027) would do I guess","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"6569d77c87f5525bf9c345fdac370ba9826c2517","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        response \u003d self._esm(url, data)"},{"line_number":138,"context_line":"        LOG.debug(_(\"Configure response : %s\"), response)"},{"line_number":139,"context_line":"        if response:"},{"line_number":140,"context_line":"            if (response.get(\u0027configState\u0027) and"},{"line_number":141,"context_line":"                response.get(\u0027configState\u0027) \u003d\u003d \u0027completedSuccessfully\u0027):"},{"line_number":142,"context_line":"                return True"},{"line_number":143,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B4gI%3D","line":140,"in_reply_to":"AAAAM3%2F%2B5Fs%3D","updated":"2013-02-15 17:31:17.000000000","message":"Done","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"5d5301aa2c38042aede00063181124c09b1924de","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        if volume_info:"},{"line_number":169,"context_line":"            return volume_info"},{"line_number":170,"context_line":"        else:"},{"line_number":171,"context_line":"            msg \u003d \"Informtion about Volume %s not found\" % (volume_name)"},{"line_number":172,"context_line":"            raise CoraidESMException(msg)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    def _get_lun_address(self, volume_name):"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B5CE%3D","line":171,"updated":"2013-02-15 12:37:02.000000000","message":"Internationalization not done","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"6569d77c87f5525bf9c345fdac370ba9826c2517","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        if volume_info:"},{"line_number":169,"context_line":"            return volume_info"},{"line_number":170,"context_line":"        else:"},{"line_number":171,"context_line":"            msg \u003d \"Informtion about Volume %s not found\" % (volume_name)"},{"line_number":172,"context_line":"            raise CoraidESMException(msg)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    def _get_lun_address(self, volume_name):"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B4gE%3D","line":171,"in_reply_to":"AAAAM3%2F%2B5CE%3D","updated":"2013-02-15 17:31:17.000000000","message":"Done","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"5d5301aa2c38042aede00063181124c09b1924de","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        return self._configure(data)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def delete_lun(self, volume_name):"},{"line_number":194,"context_line":"        \"\"\"Delete LUN.\"\"\""},{"line_number":195,"context_line":"        volume_info \u003d self._get_volume_info(volume_name)"},{"line_number":196,"context_line":"        repository \u003d volume_info[\u0027repo\u0027]"},{"line_number":197,"context_line":"        data \u003d \u0027[{\"addr\":\"cms\",\"data\":\"{\u0027 \\"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B5Cc%3D","line":194,"updated":"2013-02-15 12:37:02.000000000","message":"The method name is self sufficient, which makes this docstring redundant.","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"6569d77c87f5525bf9c345fdac370ba9826c2517","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        return self._configure(data)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def delete_lun(self, volume_name):"},{"line_number":194,"context_line":"        \"\"\"Delete LUN.\"\"\""},{"line_number":195,"context_line":"        volume_info \u003d self._get_volume_info(volume_name)"},{"line_number":196,"context_line":"        repository \u003d volume_info[\u0027repo\u0027]"},{"line_number":197,"context_line":"        data \u003d \u0027[{\"addr\":\"cms\",\"data\":\"{\u0027 \\"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B4ek%3D","line":194,"in_reply_to":"AAAAM3%2F%2B5Cc%3D","updated":"2013-02-15 17:31:17.000000000","message":"Not changed","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"5d5301aa2c38042aede00063181124c09b1924de","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        return self._configure(data)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    def create_snapshot(self, volume_name, snapshot_name):"},{"line_number":205,"context_line":"        \"\"\"Create Snapshot.\"\"\""},{"line_number":206,"context_line":"        volume_info \u003d self._get_volume_info(volume_name)"},{"line_number":207,"context_line":"        repository \u003d volume_info[\u0027repo\u0027]"},{"line_number":208,"context_line":"        data \u003d \u0027[{\"addr\":\"cms\",\"data\":\"{\u0027 \\"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B5CY%3D","line":205,"updated":"2013-02-15 12:37:02.000000000","message":"Ditto","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"6569d77c87f5525bf9c345fdac370ba9826c2517","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        return self._configure(data)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    def create_snapshot(self, volume_name, snapshot_name):"},{"line_number":205,"context_line":"        \"\"\"Create Snapshot.\"\"\""},{"line_number":206,"context_line":"        volume_info \u003d self._get_volume_info(volume_name)"},{"line_number":207,"context_line":"        repository \u003d volume_info[\u0027repo\u0027]"},{"line_number":208,"context_line":"        data \u003d \u0027[{\"addr\":\"cms\",\"data\":\"{\u0027 \\"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B4ec%3D","line":205,"in_reply_to":"AAAAM3%2F%2B5CY%3D","updated":"2013-02-15 17:31:17.000000000","message":"Not changed","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"5d5301aa2c38042aede00063181124c09b1924de","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        return self._configure(data)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    def delete_snapshot(self, snapshot_name):"},{"line_number":218,"context_line":"        \"\"\"Delete Snapshot.\"\"\""},{"line_number":219,"context_line":"        snapshot_info \u003d self._get_volume_info(snapshot_name)"},{"line_number":220,"context_line":"        repository \u003d snapshot_info[\u0027repo\u0027]"},{"line_number":221,"context_line":"        data \u003d \u0027[{\"addr\":\"cms\",\"data\":\"{\u0027 \\"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B5CU%3D","line":218,"updated":"2013-02-15 12:37:02.000000000","message":"Ditto","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"6569d77c87f5525bf9c345fdac370ba9826c2517","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        return self._configure(data)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    def delete_snapshot(self, snapshot_name):"},{"line_number":218,"context_line":"        \"\"\"Delete Snapshot.\"\"\""},{"line_number":219,"context_line":"        snapshot_info \u003d self._get_volume_info(snapshot_name)"},{"line_number":220,"context_line":"        repository \u003d snapshot_info[\u0027repo\u0027]"},{"line_number":221,"context_line":"        data \u003d \u0027[{\"addr\":\"cms\",\"data\":\"{\u0027 \\"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B4eY%3D","line":218,"in_reply_to":"AAAAM3%2F%2B5CU%3D","updated":"2013-02-15 17:31:17.000000000","message":"Not changed","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"5d5301aa2c38042aede00063181124c09b1924de","unresolved":false,"context_lines":[{"line_number":256,"context_line":"    def check_for_setup_error(self):"},{"line_number":257,"context_line":"        \"\"\"Return an error if prerequisites aren\u0027t met.\"\"\""},{"line_number":258,"context_line":"        if not self.esm._login():"},{"line_number":259,"context_line":"            raise LookupError(\"Cannot login on Coraid ESM\")"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    def _get_repository(self, volume_type):"},{"line_number":262,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B5CM%3D","line":259,"updated":"2013-02-15 12:37:02.000000000","message":"Internationalization not done","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"6569d77c87f5525bf9c345fdac370ba9826c2517","unresolved":false,"context_lines":[{"line_number":256,"context_line":"    def check_for_setup_error(self):"},{"line_number":257,"context_line":"        \"\"\"Return an error if prerequisites aren\u0027t met.\"\"\""},{"line_number":258,"context_line":"        if not self.esm._login():"},{"line_number":259,"context_line":"            raise LookupError(\"Cannot login on Coraid ESM\")"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    def _get_repository(self, volume_type):"},{"line_number":262,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B4f0%3D","line":259,"in_reply_to":"AAAAM3%2F%2B5CM%3D","updated":"2013-02-15 17:31:17.000000000","message":"Done","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"5d5301aa2c38042aede00063181124c09b1924de","unresolved":false,"context_lines":[{"line_number":275,"context_line":"            repository \u003d self._get_repository(volume[\u0027volume_type\u0027])"},{"line_number":276,"context_line":"            self.esm.create_lun(volume[\u0027name\u0027], volume[\u0027size\u0027], repository)"},{"line_number":277,"context_line":"        except Exception:"},{"line_number":278,"context_line":"            LOG.debug(_(\u0027Fail to create volume %s\u0027), volume[\u0027name\u0027])"},{"line_number":279,"context_line":"            raise"},{"line_number":280,"context_line":"        # NOTE(jbr_): The manager currently interprets any return as"},{"line_number":281,"context_line":"        # being the model_update for provider location."}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B5Bw%3D","line":278,"updated":"2013-02-15 12:37:02.000000000","message":"\u0027Failed\u0027 to create volume. Not a big issue though.","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"6569d77c87f5525bf9c345fdac370ba9826c2517","unresolved":false,"context_lines":[{"line_number":275,"context_line":"            repository \u003d self._get_repository(volume[\u0027volume_type\u0027])"},{"line_number":276,"context_line":"            self.esm.create_lun(volume[\u0027name\u0027], volume[\u0027size\u0027], repository)"},{"line_number":277,"context_line":"        except Exception:"},{"line_number":278,"context_line":"            LOG.debug(_(\u0027Fail to create volume %s\u0027), volume[\u0027name\u0027])"},{"line_number":279,"context_line":"            raise"},{"line_number":280,"context_line":"        # NOTE(jbr_): The manager currently interprets any return as"},{"line_number":281,"context_line":"        # being the model_update for provider location."}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B4fM%3D","line":278,"in_reply_to":"AAAAM3%2F%2B5Bw%3D","updated":"2013-02-15 17:31:17.000000000","message":"Done on this one and others.","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"5d5301aa2c38042aede00063181124c09b1924de","unresolved":false,"context_lines":[{"line_number":339,"context_line":"            }"},{"line_number":340,"context_line":"            return {"},{"line_number":341,"context_line":"                \u0027driver_volume_type\u0027: \u0027aoe\u0027,"},{"line_number":342,"context_line":"                \u0027data\u0027: aoe_properties"},{"line_number":343,"context_line":"            }"},{"line_number":344,"context_line":"        except Exception:"},{"line_number":345,"context_line":"            msg \u003d \u0027Fail to Initialize Connection. \u0027 \\"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B5Bs%3D","line":342,"updated":"2013-02-15 12:37:02.000000000","message":"Comma at end. Can be corrected at a few more places too. (Not a big deal though)","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"6569d77c87f5525bf9c345fdac370ba9826c2517","unresolved":false,"context_lines":[{"line_number":339,"context_line":"            }"},{"line_number":340,"context_line":"            return {"},{"line_number":341,"context_line":"                \u0027driver_volume_type\u0027: \u0027aoe\u0027,"},{"line_number":342,"context_line":"                \u0027data\u0027: aoe_properties"},{"line_number":343,"context_line":"            }"},{"line_number":344,"context_line":"        except Exception:"},{"line_number":345,"context_line":"            msg \u003d \u0027Fail to Initialize Connection. \u0027 \\"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B4fA%3D","line":342,"in_reply_to":"AAAAM3%2F%2B5Bs%3D","updated":"2013-02-15 17:31:17.000000000","message":"Done","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"5d5301aa2c38042aede00063181124c09b1924de","unresolved":false,"context_lines":[{"line_number":342,"context_line":"                \u0027data\u0027: aoe_properties"},{"line_number":343,"context_line":"            }"},{"line_number":344,"context_line":"        except Exception:"},{"line_number":345,"context_line":"            msg \u003d \u0027Fail to Initialize Connection. \u0027 \\"},{"line_number":346,"context_line":"                  \u0027Volume Name: %s \u0027 \\"},{"line_number":347,"context_line":"                  \u0027Shelf: %s, Lun: %s\u0027 % (volume[\u0027name\u0027], shelf, lun)"},{"line_number":348,"context_line":"            LOG.debug(msg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B5CQ%3D","line":345,"updated":"2013-02-15 12:37:02.000000000","message":"Internationalization not done for msg","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"6569d77c87f5525bf9c345fdac370ba9826c2517","unresolved":false,"context_lines":[{"line_number":342,"context_line":"                \u0027data\u0027: aoe_properties"},{"line_number":343,"context_line":"            }"},{"line_number":344,"context_line":"        except Exception:"},{"line_number":345,"context_line":"            msg \u003d \u0027Fail to Initialize Connection. \u0027 \\"},{"line_number":346,"context_line":"                  \u0027Volume Name: %s \u0027 \\"},{"line_number":347,"context_line":"                  \u0027Shelf: %s, Lun: %s\u0027 % (volume[\u0027name\u0027], shelf, lun)"},{"line_number":348,"context_line":"            LOG.debug(msg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAM3%2F%2B4eU%3D","line":345,"in_reply_to":"AAAAM3%2F%2B5CQ%3D","updated":"2013-02-15 17:31:17.000000000","message":"Done","commit_id":"fb21e304c63b2ff9a5f87a1b50ea61cd306525e7"}],"cinder/volume/volume_types.py":[{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"55f540e841ba82725267f123f722e0880a580137","unresolved":false,"context_lines":[{"line_number":149,"context_line":"    volume_type \u003d get_volume_type(context.get_admin_context(),"},{"line_number":150,"context_line":"                                  volume_type_id)"},{"line_number":151,"context_line":"    extra_specs \u003d volume_type[\u0027extra_specs\u0027]"},{"line_number":152,"context_line":"    if key is not False:"},{"line_number":153,"context_line":"        return extra_specs.get(key)"},{"line_number":154,"context_line":"    else:"},{"line_number":155,"context_line":"        return extra_specs"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAM3%2F%2B63Y%3D","line":152,"updated":"2013-02-14 14:36:02.000000000","message":"if not key","commit_id":"8cd84e8f70dc7425611a822a85bb5e1cd2ba72ab"},{"author":{"_account_id":6798,"name":"Jean-Baptiste Ransy","email":"jean-baptiste.ransy@alyseo.com","username":"jean-baptiste-ransy"},"change_message_id":"34b61e1c87713c985f8414456ed0358892438f0d","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    if key is not False:"},{"line_number":153,"context_line":"        return extra_specs.get(key)"},{"line_number":154,"context_line":"    else:"},{"line_number":155,"context_line":"        return extra_specs"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAM3%2F%2B6so%3D","line":155,"updated":"2013-02-14 22:20:10.000000000","message":"def get_volume_type_extra_specs(volume_type_id, key\u003dFalse):\n    volume_type \u003d get_volume_type(context.get_admin_context(),\n                                  volume_type_id)\n    extra_specs \u003d volume_type[\u0027extra_specs\u0027]\n    if key:\n        if extra_specs.get(key):\n            return extra_specs.get(key)\n        else:\n            return False\n    else:\n        return extra_specs","commit_id":"8cd84e8f70dc7425611a822a85bb5e1cd2ba72ab"}]}
