)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6dde4fc4a52276ea514f5f74ae1e9a5f6dc5bfd0","unresolved":false,"context_lines":[{"line_number":15,"context_line":"is available from pip."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Implements blueprint lio-iscsi-support"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: Ifb23de65f26a40997afd6148a1d0be39bcc8d196"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAAM3%2F%2FyKM%3D","line":18,"updated":"2013-01-05 02:18:16.000000000","message":"Add another line that says \"DocImpact\" to the commit message.  This will cause the openstack doc team to get notified of this change.","commit_id":"5d79508445493ad6b5186e59cfe071c49f61e455"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"7391ca596b7a897c8d1c40959019b76aad883c2a","unresolved":false,"context_lines":[{"line_number":12,"context_line":"To enable, set \"iscsi_helper \u003d lioadm\" in cinder.conf."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This requires a relatively recent version of python-rtslib, which"},{"line_number":15,"context_line":"is available from pip."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Implements blueprint lio-iscsi-support"},{"line_number":18,"context_line":"DocImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"AAAAM3%2F%2FYtY%3D","line":15,"updated":"2013-01-24 15:57:23.000000000","message":"When you mean relatively recent version of python-rtslib how new does it have to be?","commit_id":"248ea174c42e60a195339d4efc905bad13ac5799"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"1b0c95ce8174739e8d70e431cf4125cf3df10d56","unresolved":false,"context_lines":[{"line_number":12,"context_line":"To enable, set \"iscsi_helper \u003d lioadm\" in cinder.conf."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This requires a relatively recent version of python-rtslib, which"},{"line_number":15,"context_line":"is available from pip."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Implements blueprint lio-iscsi-support"},{"line_number":18,"context_line":"DocImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"AAAAM3%2F%2FYT8%3D","line":15,"in_reply_to":"AAAAM3%2F%2FYtY%3D","updated":"2013-01-24 19:08:40.000000000","message":"It needs to be 2.1.fb27 (newest on pip), as the prior versions pushed to pip were found to have packaging problems.","commit_id":"248ea174c42e60a195339d4efc905bad13ac5799"}],"bin/cinder-rtstool":[{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6dde4fc4a52276ea514f5f74ae1e9a5f6dc5bfd0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/python"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"import re"},{"line_number":4,"context_line":"try:"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"AAAAM3%2F%2FyKI%3D","line":1,"updated":"2013-01-05 02:18:16.000000000","message":"For consistency with other binaries, use #!/usr/bin/env python\n\nA copyright header is needed for this file.  Something like ...\n\n# Copyright 2012 - 2013, Red Hat, Inc.\n#\n#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may\n#    not use this file except in compliance with the License. You may obtain\n#    a copy of the License at\n#\n#         http://www.apache.org/licenses/LICENSE-2.0\n#\n#    Unless required by applicable law or agreed to in writing, software\n#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n#    License for the specific language governing permissions and limitations\n#    under the License.","commit_id":"5d79508445493ad6b5186e59cfe071c49f61e455"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6dde4fc4a52276ea514f5f74ae1e9a5f6dc5bfd0","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    print (\"Importing rtslib requirements failed, \""},{"line_number":16,"context_line":"           \"you may need a newer python-rtslib\")"},{"line_number":17,"context_line":"    raise"},{"line_number":18,"context_line":"import sys"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"def create():"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"AAAAM3%2F%2FyKE%3D","line":18,"updated":"2013-01-05 02:18:16.000000000","message":"I think the conventions for imports are that the system imports should be first, so ...\n\nimport re\nimport sys\n\nand then all the rtslib ones.\n\nAlso, I think that the convention is that you should only import modules (import rtslib), not classes from a module.\n\nSee the HACKING file for details.","commit_id":"5d79508445493ad6b5186e59cfe071c49f61e455"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6dde4fc4a52276ea514f5f74ae1e9a5f6dc5bfd0","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    backing_device \u003d sys.argv[2]"},{"line_number":23,"context_line":"    name \u003d sys.argv[3]"},{"line_number":24,"context_line":"    userid \u003d sys.argv[4]"},{"line_number":25,"context_line":"    password \u003d sys.argv[5]"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    try:"},{"line_number":28,"context_line":"        rtsroot \u003d rtslib_root.RTSRoot()"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"AAAAM3%2F%2FyJ4%3D","line":25,"updated":"2013-01-05 02:18:16.000000000","message":"Hmm ... how about change this to take all of these as arguments and keep all script argument handling together in main() ?","commit_id":"5d79508445493ad6b5186e59cfe071c49f61e455"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6dde4fc4a52276ea514f5f74ae1e9a5f6dc5bfd0","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    try:"},{"line_number":28,"context_line":"        rtsroot \u003d rtslib_root.RTSRoot()"},{"line_number":29,"context_line":"    except Exception:"},{"line_number":30,"context_line":"        print \u0027Ensure that configfs is mounted at /sys/kernel/config.\u0027"},{"line_number":31,"context_line":"        raise"},{"line_number":32,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":8,"id":"AAAAM3%2F%2FyJ0%3D","line":29,"updated":"2013-01-05 02:18:16.000000000","message":"Is there any more specific of an exception you can expect here?","commit_id":"5d79508445493ad6b5186e59cfe071c49f61e455"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6dde4fc4a52276ea514f5f74ae1e9a5f6dc5bfd0","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    lun_new \u003d LUN(tpg_new, storage_object\u003dso_new)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    initiator_name \u003d None"},{"line_number":50,"context_line":"    with open(\u0027/etc/iscsi/initiatorname.iscsi\u0027, \u0027r\u0027) as f:"},{"line_number":51,"context_line":"        for line in f:"},{"line_number":52,"context_line":"            m \u003d re.match(\u0027InitiatorName\u003d(.+)\u0027, line)"},{"line_number":53,"context_line":"            if m !\u003d None:"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"AAAAM3%2F%2FyJk%3D","line":50,"updated":"2013-01-05 02:18:16.000000000","message":"Need to handle failing to open here (IOError)","commit_id":"5d79508445493ad6b5186e59cfe071c49f61e455"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6dde4fc4a52276ea514f5f74ae1e9a5f6dc5bfd0","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    if initiator_name \u003d\u003d None:"},{"line_number":58,"context_line":"        print (\u0027Could not read InitiatorName \u0027"},{"line_number":59,"context_line":"               \u0027from /etc/iscsi/initiatorname.iscsi\u0027)"},{"line_number":60,"context_line":"        sys.exit(1)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    acl_new \u003d NodeACL(tpg_new, initiator_name, mode\u003d\u0027create\u0027)"},{"line_number":63,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":8,"id":"AAAAM3%2F%2FyJQ%3D","line":60,"updated":"2013-01-05 02:18:16.000000000","message":"How about just return a result, or raise an exception here and then do sys.exit() from main().  That should make this code more unit testable, too.","commit_id":"5d79508445493ad6b5186e59cfe071c49f61e455"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6dde4fc4a52276ea514f5f74ae1e9a5f6dc5bfd0","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"def delete():"},{"line_number":92,"context_line":"    iqn \u003d sys.argv[2]"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    rtsroot \u003d rtslib_root.RTSRoot()"},{"line_number":95,"context_line":"    for x in rtsroot.targets:"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"AAAAM3%2F%2FyIs%3D","line":92,"updated":"2013-01-05 02:18:16.000000000","message":"I would update delete() to take this as an argument","commit_id":"5d79508445493ad6b5186e59cfe071c49f61e455"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6dde4fc4a52276ea514f5f74ae1e9a5f6dc5bfd0","unresolved":false,"context_lines":[{"line_number":111,"context_line":"    print sys.argv[0], \"verify\""},{"line_number":112,"context_line":"    sys.exit(1)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"if len(sys.argv) \u003c 2:"},{"line_number":115,"context_line":"    usage()"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"if sys.argv[1] \u003d\u003d \u0027create\u0027:"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"AAAAM3%2F%2FyKA%3D","line":114,"updated":"2013-01-05 02:18:16.000000000","message":"I would move all of the stuff below here into a main() function.  That way you can import this module without actually running all of this.  That\u0027s required for being able to add unit tests for this.  The pattern I would use is ...\n\n\ndef main(argv\u003dNone):\n    if argv is None:\n        argv \u003d sys.argv\n\n    ...\n\n    return 0\n\n\nif __name__ \u003d\u003d \u0027__main__\u0027:\n    sys.exit(main())","commit_id":"5d79508445493ad6b5186e59cfe071c49f61e455"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"1d0eb1320b10a05e0ed9b3cad12cc1cba23d7456","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    print sys.argv[0], \"get-targets\""},{"line_number":127,"context_line":"    print sys.argv[0], \"delete [iqn]\""},{"line_number":128,"context_line":"    print sys.argv[0], \"verify\""},{"line_number":129,"context_line":"    sys.exit(1)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"def main(argv\u003dNone):"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"AAAAM3%2F%2Fvyo%3D","line":129,"updated":"2013-01-07 20:27:10.000000000","message":"I wouldn\u0027t sys.exit() here ... easier to test this stuff if you can limit sys.exit() to when you know you\u0027re in __main__","commit_id":"4426cc91e8be12344b7e14faf2331998fc118811"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"7391ca596b7a897c8d1c40959019b76aad883c2a","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    try:"},{"line_number":34,"context_line":"        rtsroot \u003d rtslib.root.RTSRoot()"},{"line_number":35,"context_line":"    except rtslib.utils.RTSLibError:"},{"line_number":36,"context_line":"        print \u0027Ensure that configfs is mounted at /sys/kernel/config.\u0027"},{"line_number":37,"context_line":"        raise"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    # Look to see if BlockStorageObject already exists"}],"source_content_type":"application/octet-stream","patch_set":10,"id":"AAAAM3%2F%2FYtM%3D","line":36,"updated":"2013-01-24 15:57:23.000000000","message":"Can you il8n this please?","commit_id":"248ea174c42e60a195339d4efc905bad13ac5799"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"7391ca596b7a897c8d1c40959019b76aad883c2a","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                    initiator_name \u003d m.group(1)"},{"line_number":64,"context_line":"                    break"},{"line_number":65,"context_line":"    except IOError:"},{"line_number":66,"context_line":"        raise RtstoolError(\u0027Could not open %(name_file)s\u0027)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    if initiator_name \u003d\u003d None:"},{"line_number":69,"context_line":"        raise RtstoolError(\u0027Could not read InitiatorName from %(name_file)s\u0027)"}],"source_content_type":"application/octet-stream","patch_set":10,"id":"AAAAM3%2F%2FYtE%3D","line":66,"updated":"2013-01-24 15:57:23.000000000","message":"dito","commit_id":"248ea174c42e60a195339d4efc905bad13ac5799"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"7391ca596b7a897c8d1c40959019b76aad883c2a","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        raise RtstoolError(\u0027Could not open %(name_file)s\u0027)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    if initiator_name \u003d\u003d None:"},{"line_number":69,"context_line":"        raise RtstoolError(\u0027Could not read InitiatorName from %(name_file)s\u0027)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    acl_new \u003d rtslib.NodeACL(tpg_new, initiator_name, mode\u003d\u0027create\u0027)"},{"line_number":72,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":10,"id":"AAAAM3%2F%2FYtA%3D","line":69,"updated":"2013-01-24 15:57:23.000000000","message":"dito","commit_id":"248ea174c42e60a195339d4efc905bad13ac5799"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"7391ca596b7a897c8d1c40959019b76aad883c2a","unresolved":false,"context_lines":[{"line_number":115,"context_line":"                   \u0027MappedLUN\u0027, \u0027NetworkPortal\u0027, \u0027NodeACL\u0027, \u0027root\u0027,"},{"line_number":116,"context_line":"                   \u0027Target\u0027, \u0027TPG\u0027]:"},{"line_number":117,"context_line":"        if not hasattr(rtslib, member):"},{"line_number":118,"context_line":"            raise RtstoolImportError(\"rtslib is missing member %s: \""},{"line_number":119,"context_line":"                                     \"You may need a newer python-rtslib.\" %"},{"line_number":120,"context_line":"                                     member)"},{"line_number":121,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":10,"id":"AAAAM3%2F%2FYs4%3D","line":118,"updated":"2013-01-24 15:57:23.000000000","message":"dito","commit_id":"248ea174c42e60a195339d4efc905bad13ac5799"}],"cinder/tests/test_iscsi.py":[{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6dde4fc4a52276ea514f5f74ae1e9a5f6dc5bfd0","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        self.script_template \u003d \"\\n\".join(["},{"line_number":137,"context_line":"            \u0027cinder-rtstool create \u0027"},{"line_number":138,"context_line":"                \u0027/foo iqn.2011-09.org.foo.bar:blaa test_id test_pass\u0027,"},{"line_number":139,"context_line":"            \u0027cinder-rtstool delete iqn.2010-10.org.openstack:volume-blaa\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FyIg%3D","line":139,"updated":"2013-01-05 02:18:16.000000000","message":"I think it would be nice to add some tests to cover cinder-rtstool itself, as well.  That could be a future improvement.","commit_id":"5d79508445493ad6b5186e59cfe071c49f61e455"}],"cinder/volume/iscsi.py":[{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6dde4fc4a52276ea514f5f74ae1e9a5f6dc5bfd0","unresolved":false,"context_lines":[{"line_number":321,"context_line":""},{"line_number":322,"context_line":"        try:"},{"line_number":323,"context_line":"            self._execute(\u0027cinder-rtstool\u0027, \u0027verify\u0027)"},{"line_number":324,"context_line":"        except Exception:"},{"line_number":325,"context_line":"            LOG.error(\u0027cinder-rtstool is not installed correctly\u0027)"},{"line_number":326,"context_line":"            raise"},{"line_number":327,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FyIQ%3D","line":324,"updated":"2013-01-05 02:18:16.000000000","message":"Is there a more specific exception you can expect here?","commit_id":"5d79508445493ad6b5186e59cfe071c49f61e455"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"7391ca596b7a897c8d1c40959019b76aad883c2a","unresolved":false,"context_lines":[{"line_number":321,"context_line":""},{"line_number":322,"context_line":"        try:"},{"line_number":323,"context_line":"            self._execute(\u0027cinder-rtstool\u0027, \u0027verify\u0027)"},{"line_number":324,"context_line":"        except (OSError, exception.ProcessExecutionError):"},{"line_number":325,"context_line":"            LOG.error(\u0027cinder-rtstool is not installed correctly\u0027)"},{"line_number":326,"context_line":"            raise"},{"line_number":327,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAM3%2F%2FYsc%3D","line":324,"updated":"2013-01-24 15:57:23.000000000","message":"except exception.ProcessExecutionError, e: is probably enough here","commit_id":"248ea174c42e60a195339d4efc905bad13ac5799"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"1b0c95ce8174739e8d70e431cf4125cf3df10d56","unresolved":false,"context_lines":[{"line_number":321,"context_line":""},{"line_number":322,"context_line":"        try:"},{"line_number":323,"context_line":"            self._execute(\u0027cinder-rtstool\u0027, \u0027verify\u0027)"},{"line_number":324,"context_line":"        except (OSError, exception.ProcessExecutionError):"},{"line_number":325,"context_line":"            LOG.error(\u0027cinder-rtstool is not installed correctly\u0027)"},{"line_number":326,"context_line":"            raise"},{"line_number":327,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAM3%2F%2FYVw%3D","line":324,"in_reply_to":"AAAAM3%2F%2FYsc%3D","updated":"2013-01-24 19:08:40.000000000","message":"I think it isn\u0027t, because if cinder-rtstool can\u0027t be found in the path, you get an OSError instead of ProcessExecutionError.  This is mostly to catch problems w/ distro packaging since it\u0027s a new script.","commit_id":"248ea174c42e60a195339d4efc905bad13ac5799"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"7391ca596b7a897c8d1c40959019b76aad883c2a","unresolved":false,"context_lines":[{"line_number":322,"context_line":"        try:"},{"line_number":323,"context_line":"            self._execute(\u0027cinder-rtstool\u0027, \u0027verify\u0027)"},{"line_number":324,"context_line":"        except (OSError, exception.ProcessExecutionError):"},{"line_number":325,"context_line":"            LOG.error(\u0027cinder-rtstool is not installed correctly\u0027)"},{"line_number":326,"context_line":"            raise"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    def _get_target(self, iqn):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAM3%2F%2FYsY%3D","line":325,"updated":"2013-01-24 15:57:23.000000000","message":"also il8n the string here","commit_id":"248ea174c42e60a195339d4efc905bad13ac5799"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"85a2a71aa00a14cacfea79ec1cfb97a4f15a7e81","unresolved":false,"context_lines":[{"line_number":344,"context_line":""},{"line_number":345,"context_line":"        LOG.info(_(\u0027Creating volume: %s\u0027) % vol_id)"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"        LOG.debug(\"path is %(path)s\" % locals())"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        # cinder-rtstool requires chap_auth, but unit tests don\u0027t provide it"},{"line_number":350,"context_line":"        chap_auth_userid \u003d \u0027test_id\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAM3%2F%2FQPY%3D","line":347,"updated":"2013-01-31 08:14:18.000000000","message":"I18n? Or was this line supposed to be removed?","commit_id":"500575aebb53b7874b220b4142e7fffeb85feb53"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"a8e84b3a249a8ed2e4683e5a8070cd244e1f996c","unresolved":false,"context_lines":[{"line_number":344,"context_line":""},{"line_number":345,"context_line":"        LOG.info(_(\u0027Creating volume: %s\u0027) % vol_id)"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"        LOG.debug(\"path is %(path)s\" % locals())"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        # cinder-rtstool requires chap_auth, but unit tests don\u0027t provide it"},{"line_number":350,"context_line":"        chap_auth_userid \u003d \u0027test_id\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAM3%2F%2FPyI%3D","line":347,"in_reply_to":"AAAAM3%2F%2FQPY%3D","updated":"2013-01-31 15:53:24.000000000","message":"Will remove, thanks.","commit_id":"500575aebb53b7874b220b4142e7fffeb85feb53"}],"tools/test-requires":[{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"3e06ea91dd49b975d8df8f158b6876544d051d8d","unresolved":false,"context_lines":[{"line_number":9,"context_line":"nosehtmloutput"},{"line_number":10,"context_line":"pep8\u003d\u003d1.3.3"},{"line_number":11,"context_line":"pylint\u003d\u003d0.25.2"},{"line_number":12,"context_line":"rtslib"},{"line_number":13,"context_line":"sphinx\u003e\u003d1.1.2"},{"line_number":14,"context_line":"MySQL-python"},{"line_number":15,"context_line":"hp3parclient\u003e\u003d1.0.0"}],"source_content_type":"application/octet-stream","patch_set":14,"id":"AAAAM3%2F%2FOwc%3D","line":12,"updated":"2013-02-01 02:34:30.000000000","message":"Why don\u0027t you also add it into tools/pip-requires?","commit_id":"7714c3197556552dd42723b6c2e7b1b5e82a7ed8"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"5dfc157464dc9ed511468a8e8d2c0aa4221a60b3","unresolved":false,"context_lines":[{"line_number":9,"context_line":"nosehtmloutput"},{"line_number":10,"context_line":"pep8\u003d\u003d1.3.3"},{"line_number":11,"context_line":"pylint\u003d\u003d0.25.2"},{"line_number":12,"context_line":"rtslib"},{"line_number":13,"context_line":"sphinx\u003e\u003d1.1.2"},{"line_number":14,"context_line":"MySQL-python"},{"line_number":15,"context_line":"hp3parclient\u003e\u003d1.0.0"}],"source_content_type":"application/octet-stream","patch_set":14,"id":"AAAAM3%2F%2FL3o%3D","line":12,"in_reply_to":"AAAAM3%2F%2FMWQ%3D","updated":"2013-02-04 15:33:21.000000000","message":"I think this is likely at some point, but probably not during Grizzly.","commit_id":"7714c3197556552dd42723b6c2e7b1b5e82a7ed8"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"c52ca05aef9244f9815b1cc9a54407950c192b5e","unresolved":false,"context_lines":[{"line_number":9,"context_line":"nosehtmloutput"},{"line_number":10,"context_line":"pep8\u003d\u003d1.3.3"},{"line_number":11,"context_line":"pylint\u003d\u003d0.25.2"},{"line_number":12,"context_line":"rtslib"},{"line_number":13,"context_line":"sphinx\u003e\u003d1.1.2"},{"line_number":14,"context_line":"MySQL-python"},{"line_number":15,"context_line":"hp3parclient\u003e\u003d1.0.0"}],"source_content_type":"application/octet-stream","patch_set":14,"id":"AAAAM3%2F%2FMWQ%3D","line":12,"in_reply_to":"AAAAM3%2F%2FON0%3D","updated":"2013-02-04 06:47:24.000000000","message":"Er... I remember in one IRC meeting, folks said LIO is going to replace tgt as the default one. Is it true?","commit_id":"7714c3197556552dd42723b6c2e7b1b5e82a7ed8"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"e9696484de74ed2e76abed2784d390c8e0bd2ba5","unresolved":false,"context_lines":[{"line_number":9,"context_line":"nosehtmloutput"},{"line_number":10,"context_line":"pep8\u003d\u003d1.3.3"},{"line_number":11,"context_line":"pylint\u003d\u003d0.25.2"},{"line_number":12,"context_line":"rtslib"},{"line_number":13,"context_line":"sphinx\u003e\u003d1.1.2"},{"line_number":14,"context_line":"MySQL-python"},{"line_number":15,"context_line":"hp3parclient\u003e\u003d1.0.0"}],"source_content_type":"application/octet-stream","patch_set":14,"id":"AAAAM3%2F%2FON0%3D","line":12,"in_reply_to":"AAAAM3%2F%2FOwc%3D","updated":"2013-02-01 15:21:41.000000000","message":"I left it out because it isn\u0027t needed by the default configuration, and it seemed better to not complicate packaging efforts for it at this point, being a new driver that most installs won\u0027t be using yet.","commit_id":"7714c3197556552dd42723b6c2e7b1b5e82a7ed8"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"4c1df0f515701c844ccfb22cb1f7b22368d8ad5f","unresolved":false,"context_lines":[{"line_number":9,"context_line":"nosehtmloutput"},{"line_number":10,"context_line":"pep8\u003d\u003d1.3.3"},{"line_number":11,"context_line":"pylint\u003d\u003d0.25.2"},{"line_number":12,"context_line":"rtslib"},{"line_number":13,"context_line":"sphinx\u003e\u003d1.1.2"},{"line_number":14,"context_line":"MySQL-python"},{"line_number":15,"context_line":"hp3parclient\u003e\u003d1.0.0"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"AAAAM3%2F%2B%2FgE%3D","line":12,"updated":"2013-02-14 17:47:03.000000000","message":"The commit message says that you need python-rtslib 2.1.fb27 - if the version is important, it should be here.  Also should this go to pip-requires?","commit_id":"622e89a0ea74a71827891b42ae5083fecf155016"}]}
