)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"956ccdfefbbfa1a043417bd24fb731b569e9334f","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Helen Walsh \u003chelen.walsh@emc.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-11-08 20:38:34 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"fix for randomly selecting a portgroup"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I49020a192f62bc75bca26ea0d206e9ed7c700195"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da85f559_eb350846","line":7,"updated":"2015-11-09 20:45:49.000000000","message":"Capital: s/fix/Fix\n\nPlease add a description on what this fix is about and how you fixed it.","commit_id":"1444f0c600972b507a5d220578d3a56fb66483eb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"956ccdfefbbfa1a043417bd24fb731b569e9334f","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-11-08 20:38:34 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"fix for randomly selecting a portgroup"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I49020a192f62bc75bca26ea0d206e9ed7c700195"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da85f559_cb3b6437","line":8,"updated":"2015-11-09 20:45:49.000000000","message":"Reference the bug number in the following format:\n\nCloses-Bug: #\u003cbug number\u003e","commit_id":"1444f0c600972b507a5d220578d3a56fb66483eb"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"bdad96c55c4829ff44d7273665b031c775ef1104","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Helen Walsh \u003chelen.walsh@emc.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-11-10 11:34:35 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix for randomly selecting a portgroup."},{"line_number":8,"context_line":"Before now the utils function was always returning the first portgroup in the list.  It should randomly select."},{"line_number":9,"context_line":"This addresses the following bug"},{"line_number":10,"context_line":"https://bugs.launchpad.net/cinder/+bug/1501919"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da85f559_33236707","line":7,"updated":"2015-11-10 13:39:04.000000000","message":"First line should be limited to 50 characters and should not end with a period.\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"8fb4a04fffec4a187a4822af743d32e0f94751b1"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"bdad96c55c4829ff44d7273665b031c775ef1104","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-11-10 11:34:35 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix for randomly selecting a portgroup."},{"line_number":8,"context_line":"Before now the utils function was always returning the first portgroup in the list.  It should randomly select."},{"line_number":9,"context_line":"This addresses the following bug"},{"line_number":10,"context_line":"https://bugs.launchpad.net/cinder/+bug/1501919"},{"line_number":11,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da85f559_73eb2fb1","line":8,"updated":"2015-11-10 13:39:04.000000000","message":"Lines should be wrapped at 72 characters.\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"8fb4a04fffec4a187a4822af743d32e0f94751b1"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"bdad96c55c4829ff44d7273665b031c775ef1104","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix for randomly selecting a portgroup."},{"line_number":8,"context_line":"Before now the utils function was always returning the first portgroup in the list.  It should randomly select."},{"line_number":9,"context_line":"This addresses the following bug"},{"line_number":10,"context_line":"https://bugs.launchpad.net/cinder/+bug/1501919"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Closes-Bug: #1501919"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da85f559_d34f7bbb","line":10,"updated":"2015-11-10 13:39:04.000000000","message":"You probably do not need this link since you have a working \u0027Closes-Bug\u0027 below.","commit_id":"8fb4a04fffec4a187a4822af743d32e0f94751b1"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"3e233f9816de7dadd7eaf6642846735d791d1186","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Before now the utils function was always returning the first"},{"line_number":10,"context_line":"portgroup in the list.  This fix ensures a port group is"},{"line_number":11,"context_line":"randomly selected from the list, where more than one value"},{"line_number":12,"context_line":"is in the list."},{"line_number":13,"context_line":"DocImpact"},{"line_number":14,"context_line":"Closes-Bug: #1501919"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"ba8a016a_5b5e1d45","line":12,"updated":"2015-11-18 15:43:49.000000000","message":"Not sure if this needs DocImpact","commit_id":"c2a05c18098b33b8516fb2bd483fbf10e7aaa8df"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"598af6b47a56beaa972e7531b9daf5ec1fade304","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Before now the utils function was always returning the first"},{"line_number":10,"context_line":"portgroup in the list.  This fix ensures a port group is"},{"line_number":11,"context_line":"randomly selected from the list, where more than one value"},{"line_number":12,"context_line":"is in the list."},{"line_number":13,"context_line":"DocImpact"},{"line_number":14,"context_line":"Closes-Bug: #1501919"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"ba8a016a_264ea03b","line":12,"in_reply_to":"ba8a016a_5b5e1d45","updated":"2015-11-18 15:50:54.000000000","message":"I will remove it. Thanks","commit_id":"c2a05c18098b33b8516fb2bd483fbf10e7aaa8df"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"ef0375d7dc13f94d99610745f99e85cdc7d4e749","unresolved":false,"context_lines":[{"line_number":12,"context_line":"is in the list."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-Bug: #1501919"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I49020a192f62bc75bca26ea0d206e9ed7c700195"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"ba8a016a_f8a8108e","line":15,"updated":"2015-11-19 09:09:34.000000000","message":"Would you remove the blank here?","commit_id":"3596932e6095ff3aaae023b5dc1517b87a99992d"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"7e9a538041c17add4fdf7ba869e0c6c0542d4ccd","unresolved":false,"context_lines":[{"line_number":12,"context_line":"is in the list."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-Bug: #1501919"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I49020a192f62bc75bca26ea0d206e9ed7c700195"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"ba8a016a_686cc09c","line":15,"in_reply_to":"ba8a016a_f8a8108e","updated":"2015-11-23 11:13:54.000000000","message":"Will do","commit_id":"3596932e6095ff3aaae023b5dc1517b87a99992d"}],"cinder/tests/unit/test_emc_vmax.py":[{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"d364eddbc0f4e5fc3e3121506d52225df56b7a0f","unresolved":false,"context_lines":[{"line_number":1875,"context_line":"        text_file.close()"},{"line_number":1876,"context_line":"        myFile \u003d open(config_file, \u0027r\u0027)"},{"line_number":1877,"context_line":"        data \u003d myFile.read()"},{"line_number":1878,"context_line":"        myFile.close()"},{"line_number":1879,"context_line":"        dom \u003d minidom.parseString(data)"},{"line_number":1880,"context_line":"        portgroup, numpg \u003d self.driver.common.utils._get_random_portgroup(dom)"},{"line_number":1881,"context_line":"        self.assertTrue(\u0027OS-PG\u0027 in portgroup)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da85f559_1c8061f4","line":1878,"updated":"2015-11-11 21:26:53.000000000","message":"Could we just do minidom.parseString w/ text you have on line 1867-1875 without writing to and then reading from a file?","commit_id":"32953fe348fe95dada19249e49bac4bea927ada5"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"9cb234aac3dc32fc14ebebb50942be0604d7f204","unresolved":false,"context_lines":[{"line_number":1875,"context_line":"        text_file.close()"},{"line_number":1876,"context_line":"        myFile \u003d open(config_file, \u0027r\u0027)"},{"line_number":1877,"context_line":"        data \u003d myFile.read()"},{"line_number":1878,"context_line":"        myFile.close()"},{"line_number":1879,"context_line":"        dom \u003d minidom.parseString(data)"},{"line_number":1880,"context_line":"        portgroup, numpg \u003d self.driver.common.utils._get_random_portgroup(dom)"},{"line_number":1881,"context_line":"        self.assertTrue(\u0027OS-PG\u0027 in portgroup)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da85f559_bfc02751","line":1878,"in_reply_to":"da85f559_1c8061f4","updated":"2015-11-11 21:50:28.000000000","message":"Will look into this","commit_id":"32953fe348fe95dada19249e49bac4bea927ada5"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"d364eddbc0f4e5fc3e3121506d52225df56b7a0f","unresolved":false,"context_lines":[{"line_number":1879,"context_line":"        dom \u003d minidom.parseString(data)"},{"line_number":1880,"context_line":"        portgroup, numpg \u003d self.driver.common.utils._get_random_portgroup(dom)"},{"line_number":1881,"context_line":"        self.assertTrue(\u0027OS-PG\u0027 in portgroup)"},{"line_number":1882,"context_line":"        self.assertEqual(4, numpg)"},{"line_number":1883,"context_line":"        bExists \u003d os.path.exists(config_file)"},{"line_number":1884,"context_line":"        if bExists:"},{"line_number":1885,"context_line":"            os.remove(config_file)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da85f559_dcac198e","line":1882,"updated":"2015-11-11 21:26:53.000000000","message":"Any reason we save off this value if we only use it once and it\u0027s in the line after?","commit_id":"32953fe348fe95dada19249e49bac4bea927ada5"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"9cb234aac3dc32fc14ebebb50942be0604d7f204","unresolved":false,"context_lines":[{"line_number":1879,"context_line":"        dom \u003d minidom.parseString(data)"},{"line_number":1880,"context_line":"        portgroup, numpg \u003d self.driver.common.utils._get_random_portgroup(dom)"},{"line_number":1881,"context_line":"        self.assertTrue(\u0027OS-PG\u0027 in portgroup)"},{"line_number":1882,"context_line":"        self.assertEqual(4, numpg)"},{"line_number":1883,"context_line":"        bExists \u003d os.path.exists(config_file)"},{"line_number":1884,"context_line":"        if bExists:"},{"line_number":1885,"context_line":"            os.remove(config_file)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da85f559_ff146fe9","line":1882,"in_reply_to":"da85f559_dcac198e","updated":"2015-11-11 21:50:28.000000000","message":"Yes, this can be done","commit_id":"32953fe348fe95dada19249e49bac4bea927ada5"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"d364eddbc0f4e5fc3e3121506d52225df56b7a0f","unresolved":false,"context_lines":[{"line_number":1887,"context_line":"        filename \u003d \u0027cinder_emc_config_2_portgroup.xml\u0027"},{"line_number":1888,"context_line":"        config_file \u003d tempdir + \u0027/\u0027 + filename"},{"line_number":1889,"context_line":"        text_file \u003d open(config_file, \"w\")"},{"line_number":1890,"context_line":"        # Duplicate portgroups"},{"line_number":1891,"context_line":"        text_file.write(\"\u003c?xml version\u003d\u00271.0\u0027 encoding\u003d\u0027UTF-8\u0027?\u003e\\n\u003cEMC\u003e\\n\""},{"line_number":1892,"context_line":"                        \"\u003cPortGroups\u003e\""},{"line_number":1893,"context_line":"                        \"\u003cPortGroup\u003eOS-PG1\u003c/PortGroup\u003e\\n\""}],"source_content_type":"text/x-python","patch_set":5,"id":"da85f559_fcd55de4","line":1890,"updated":"2015-11-11 21:26:53.000000000","message":"Same comment as above?","commit_id":"32953fe348fe95dada19249e49bac4bea927ada5"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"38919147b48cd0c9d8bf2d5ea0f24a59bf1ad39e","unresolved":false,"context_lines":[{"line_number":1902,"context_line":"        dom \u003d minidom.parseString(data)"},{"line_number":1903,"context_line":"        portgroup \u003d self.driver.common.utils._get_random_portgroup(dom)"},{"line_number":1904,"context_line":"        self.assertTrue(\u0027OS-PG\u0027 in portgroup)"},{"line_number":1905,"context_line":""},{"line_number":1906,"context_line":"        # Missing PortGroup values"},{"line_number":1907,"context_line":"        data \u003d (\"\u003c?xml version\u003d\u00271.0\u0027 encoding\u003d\u0027UTF-8\u0027?\u003e\\n\u003cEMC\u003e\\n\""},{"line_number":1908,"context_line":"                \"\u003cPortGroups\u003e\""}],"source_content_type":"text/x-python","patch_set":7,"id":"da85f559_fbcad66d","line":1905,"updated":"2015-11-13 15:37:53.000000000","message":"May want to move the negative test cases into a different test (we tend to keep the test cases pretty granular)","commit_id":"29a0d8843abe938e565bd39c254bcac28b4cbfe0"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"2d29a52f6d9966e1b36c6c8cc665658561794cf3","unresolved":false,"context_lines":[{"line_number":1902,"context_line":"        dom \u003d minidom.parseString(data)"},{"line_number":1903,"context_line":"        portgroup \u003d self.driver.common.utils._get_random_portgroup(dom)"},{"line_number":1904,"context_line":"        self.assertTrue(\u0027OS-PG\u0027 in portgroup)"},{"line_number":1905,"context_line":""},{"line_number":1906,"context_line":"        # Missing PortGroup values"},{"line_number":1907,"context_line":"        data \u003d (\"\u003c?xml version\u003d\u00271.0\u0027 encoding\u003d\u0027UTF-8\u0027?\u003e\\n\u003cEMC\u003e\\n\""},{"line_number":1908,"context_line":"                \"\u003cPortGroups\u003e\""}],"source_content_type":"text/x-python","patch_set":7,"id":"da85f559_bb7d2eb3","line":1905,"in_reply_to":"da85f559_fbcad66d","updated":"2015-11-13 15:47:24.000000000","message":"Will do","commit_id":"29a0d8843abe938e565bd39c254bcac28b4cbfe0"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"1357959fa2df944573f159eca902af22efd8f73c","unresolved":false,"context_lines":[{"line_number":1844,"context_line":"        portgroupnames \u003d [\u0027pg1\u0027, \u0027pg2\u0027, \u0027pg3\u0027, \u0027pg4\u0027]"},{"line_number":1845,"context_line":"        portgroupnames \u003d ("},{"line_number":1846,"context_line":"            self.driver.common.utils._filter_list(portgroupnames))"},{"line_number":1847,"context_line":"        self.assertEqual(4, len(portgroupnames))"},{"line_number":1848,"context_line":"        self.assertEqual([\u0027pg4\u0027, \u0027pg2\u0027, \u0027pg3\u0027, \u0027pg1\u0027], portgroupnames)"},{"line_number":1849,"context_line":""},{"line_number":1850,"context_line":"        portgroupnames \u003d [\u0027pg1\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"da85f559_b0178453","line":1847,"updated":"2015-11-13 18:11:57.000000000","message":"Isn\u0027t this forcing the order of the list to be this strange 4,2,3,1 ordering? If this is based on the order that \"set()\" represents things, don\u0027t think we should be depending on that.  Since we don\u0027t care about the ordering seems like we should do assertEqual(set([]))","commit_id":"2dbeaf24f78277c1fee7245df6ac28f79bf9deec"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"8cff354f924f2ad2e07c59bed2c912d7168d2849","unresolved":false,"context_lines":[{"line_number":1844,"context_line":"        portgroupnames \u003d [\u0027pg1\u0027, \u0027pg2\u0027, \u0027pg3\u0027, \u0027pg4\u0027]"},{"line_number":1845,"context_line":"        portgroupnames \u003d ("},{"line_number":1846,"context_line":"            self.driver.common.utils._filter_list(portgroupnames))"},{"line_number":1847,"context_line":"        self.assertEqual(4, len(portgroupnames))"},{"line_number":1848,"context_line":"        self.assertEqual([\u0027pg4\u0027, \u0027pg2\u0027, \u0027pg3\u0027, \u0027pg1\u0027], portgroupnames)"},{"line_number":1849,"context_line":""},{"line_number":1850,"context_line":"        portgroupnames \u003d [\u0027pg1\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"da85f559_404bc559","line":1847,"in_reply_to":"da85f559_b0178453","updated":"2015-11-15 17:19:15.000000000","message":"Will do.  Thanks","commit_id":"2dbeaf24f78277c1fee7245df6ac28f79bf9deec"}],"cinder/volume/drivers/emc/emc_vmax_fc.py":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e6e91507585f5899771f305d31b57044dd75ce93","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        2.3.1 - Fix for randomly choosing port group."},{"line_number":46,"context_line":"    \"\"\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    VERSION \u003d \"2.3.1\""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da85f559_2f2573c1","line":48,"updated":"2015-11-13 17:15:47.000000000","message":"The only change in this file is to bump the version # ?","commit_id":"29a0d8843abe938e565bd39c254bcac28b4cbfe0"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"5cf885cf8b32e632c5556e5a5e2be48ec4e7554f","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        2.3.1 - Fix for randomly choosing port group."},{"line_number":46,"context_line":"    \"\"\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    VERSION \u003d \"2.3.1\""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da85f559_80af6de2","line":48,"in_reply_to":"da85f559_2f2573c1","updated":"2015-11-15 17:28:17.000000000","message":"Hi Walter, I am awaiting feedback from my team on how we are going to preceed with versioning.  Each bug fix/feature should at least have a good description.  Will update as soon as I get confirmation","commit_id":"29a0d8843abe938e565bd39c254bcac28b4cbfe0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5aff476d752cdb0dc699593cf22dcce3d9d41f37","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        2.2.2 - Update Consistency Group"},{"line_number":43,"context_line":"        2.2.3 - Pool aware scheduler(multi-pool) support"},{"line_number":44,"context_line":"        2.2.4 - Create CG from CG snapshot"},{"line_number":45,"context_line":"        2.3   - Bug - Fix for randomly choosing port group."},{"line_number":46,"context_line":"    \"\"\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    VERSION \u003d \"2.3\""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba8a016a_431b81ca","line":45,"updated":"2015-11-18 22:52:15.000000000","message":"Can you add the launchpad bug #1501919 in the description like this?  This will be consistent with what we did in the past too.  See line 38.  Remove \"Bug\" after \"-\".\n\n2.3 - Fix for randomly choosing port group (bug #1501919)","commit_id":"3596932e6095ff3aaae023b5dc1517b87a99992d"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"7e9a538041c17add4fdf7ba869e0c6c0542d4ccd","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        2.2.2 - Update Consistency Group"},{"line_number":43,"context_line":"        2.2.3 - Pool aware scheduler(multi-pool) support"},{"line_number":44,"context_line":"        2.2.4 - Create CG from CG snapshot"},{"line_number":45,"context_line":"        2.3   - Bug - Fix for randomly choosing port group."},{"line_number":46,"context_line":"    \"\"\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    VERSION \u003d \"2.3\""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba8a016a_c81b6c1b","line":45,"in_reply_to":"ba8a016a_431b81ca","updated":"2015-11-23 11:13:54.000000000","message":"Will do","commit_id":"3596932e6095ff3aaae023b5dc1517b87a99992d"}],"cinder/volume/drivers/emc/emc_vmax_iscsi.py":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e6e91507585f5899771f305d31b57044dd75ce93","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        2.3.1 - Fix for randomly choosing port group."},{"line_number":54,"context_line":"    \"\"\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    VERSION \u003d \"2.3.1\""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da85f559_aafe3103","line":56,"updated":"2015-11-13 17:15:47.000000000","message":"same as the FC driver.   why are we bumping the version here when there is no change to the file?","commit_id":"29a0d8843abe938e565bd39c254bcac28b4cbfe0"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"ed3d54bf1fa6094ef2fc8c730ac6e54b7b52e639","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        2.3.1 - Fix for randomly choosing port group."},{"line_number":54,"context_line":"    \"\"\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    VERSION \u003d \"2.3.1\""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da85f559_f048acce","line":56,"in_reply_to":"da85f559_aafe3103","updated":"2015-11-13 18:03:18.000000000","message":"Yea, it\u0027s not obvious but I think they\u0027re bumping the version because both drivers are using this random port function in emc_vmax_utils, so essentially this one bug won\u0027t show up anymore in these drivers (and then they can use that for support reasons).","commit_id":"29a0d8843abe938e565bd39c254bcac28b4cbfe0"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"5cf885cf8b32e632c5556e5a5e2be48ec4e7554f","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        2.3.1 - Fix for randomly choosing port group."},{"line_number":54,"context_line":"    \"\"\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    VERSION \u003d \"2.3.1\""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da85f559_4090a595","line":56,"in_reply_to":"da85f559_f048acce","updated":"2015-11-15 17:28:17.000000000","message":"I am awaiting feedback on how we are going to preceed with versioning for our bug fixes and features.  Will know soon","commit_id":"29a0d8843abe938e565bd39c254bcac28b4cbfe0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5aff476d752cdb0dc699593cf22dcce3d9d41f37","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        2.2.2 - Update Consistency Group"},{"line_number":51,"context_line":"        2.2.3 - Pool aware scheduler(multi-pool) support"},{"line_number":52,"context_line":"        2.2.4 - Create CG from CG snapshot"},{"line_number":53,"context_line":"        2.3   - Bug - Fix for randomly choosing port group."},{"line_number":54,"context_line":"    \"\"\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    VERSION \u003d \"2.3\""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba8a016a_e34b9585","line":53,"updated":"2015-11-18 22:52:15.000000000","message":"same","commit_id":"3596932e6095ff3aaae023b5dc1517b87a99992d"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"7e9a538041c17add4fdf7ba869e0c6c0542d4ccd","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        2.2.2 - Update Consistency Group"},{"line_number":51,"context_line":"        2.2.3 - Pool aware scheduler(multi-pool) support"},{"line_number":52,"context_line":"        2.2.4 - Create CG from CG snapshot"},{"line_number":53,"context_line":"        2.3   - Bug - Fix for randomly choosing port group."},{"line_number":54,"context_line":"    \"\"\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    VERSION \u003d \"2.3\""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba8a016a_28ba38e2","line":53,"in_reply_to":"ba8a016a_e34b9585","updated":"2015-11-23 11:13:54.000000000","message":"Yes","commit_id":"3596932e6095ff3aaae023b5dc1517b87a99992d"}],"cinder/volume/drivers/emc/emc_vmax_utils.py":[{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"d364eddbc0f4e5fc3e3121506d52225df56b7a0f","unresolved":false,"context_lines":[{"line_number":2061,"context_line":""},{"line_number":2062,"context_line":"        :param portGroupNames: list of available portgroups"},{"line_number":2063,"context_line":"        :returns: portGroupName - the random portgroup"},{"line_number":2064,"context_line":"        \"\"\""},{"line_number":2065,"context_line":"        portGroupNames \u003d filter(None, portGroupNames)"},{"line_number":2066,"context_line":"        # Convert list to set to remove duplicate portgroups"},{"line_number":2067,"context_line":"        portgroupnamesset \u003d set(portGroupNames)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da85f559_fceb1dda","line":2064,"updated":"2015-11-11 21:26:53.000000000","message":"Looks like on line you already filter out None values on line 2048","commit_id":"32953fe348fe95dada19249e49bac4bea927ada5"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"d364eddbc0f4e5fc3e3121506d52225df56b7a0f","unresolved":false,"context_lines":[{"line_number":2063,"context_line":"        :returns: portGroupName - the random portgroup"},{"line_number":2064,"context_line":"        \"\"\""},{"line_number":2065,"context_line":"        portGroupNames \u003d filter(None, portGroupNames)"},{"line_number":2066,"context_line":"        # Convert list to set to remove duplicate portgroups"},{"line_number":2067,"context_line":"        portgroupnamesset \u003d set(portGroupNames)"},{"line_number":2068,"context_line":"        portGroupNames \u003d list(portgroupnamesset)"},{"line_number":2069,"context_line":"        numPortGroups \u003d len(portGroupNames)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da85f559_9c2f713e","line":2066,"updated":"2015-11-11 21:26:53.000000000","message":"Could do this in a single line with list(set(portGroupNames)).  Reason I bring it up is because this variable name isn\u0027t using _ between words (e.g. port_group_names_set) like I think most of these variables should be using.  I understand some of them where using camel case to be consistent with the existing code this variable is using neither style.","commit_id":"32953fe348fe95dada19249e49bac4bea927ada5"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"9cb234aac3dc32fc14ebebb50942be0604d7f204","unresolved":false,"context_lines":[{"line_number":2063,"context_line":"        :returns: portGroupName - the random portgroup"},{"line_number":2064,"context_line":"        \"\"\""},{"line_number":2065,"context_line":"        portGroupNames \u003d filter(None, portGroupNames)"},{"line_number":2066,"context_line":"        # Convert list to set to remove duplicate portgroups"},{"line_number":2067,"context_line":"        portgroupnamesset \u003d set(portGroupNames)"},{"line_number":2068,"context_line":"        portGroupNames \u003d list(portgroupnamesset)"},{"line_number":2069,"context_line":"        numPortGroups \u003d len(portGroupNames)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da85f559_dfc3ab36","line":2066,"in_reply_to":"da85f559_9c2f713e","updated":"2015-11-11 21:50:28.000000000","message":"Correct, historically we use camelcase.  We understand we should move away from this","commit_id":"32953fe348fe95dada19249e49bac4bea927ada5"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"d364eddbc0f4e5fc3e3121506d52225df56b7a0f","unresolved":false,"context_lines":[{"line_number":2073,"context_line":"        if portGroupName:"},{"line_number":2074,"context_line":"            LOG.info(_LI(\"Returning random Port Group: \""},{"line_number":2075,"context_line":"                         \"%(portGroupName)s.\"),"},{"line_number":2076,"context_line":"                     {\u0027portGroupName\u0027: portGroupName})"},{"line_number":2077,"context_line":"        else:"},{"line_number":2078,"context_line":"            exception_message \u003d (_(\"Random Port Group name not found from \""},{"line_number":2079,"context_line":"                                   \"list: %(list)s\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"da85f559_3c4a0527","line":2076,"updated":"2015-11-11 21:26:53.000000000","message":"Is there any way we could make it into this else statement?  Even the error seems strange.... we can\u0027t pick a \"random\" value - when will this happen?  We check on line 2050 that len \u003e 0 already...","commit_id":"32953fe348fe95dada19249e49bac4bea927ada5"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"9cb234aac3dc32fc14ebebb50942be0604d7f204","unresolved":false,"context_lines":[{"line_number":2073,"context_line":"        if portGroupName:"},{"line_number":2074,"context_line":"            LOG.info(_LI(\"Returning random Port Group: \""},{"line_number":2075,"context_line":"                         \"%(portGroupName)s.\"),"},{"line_number":2076,"context_line":"                     {\u0027portGroupName\u0027: portGroupName})"},{"line_number":2077,"context_line":"        else:"},{"line_number":2078,"context_line":"            exception_message \u003d (_(\"Random Port Group name not found from \""},{"line_number":2079,"context_line":"                                   \"list: %(list)s\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"da85f559_ff70ef41","line":2076,"in_reply_to":"da85f559_3c4a0527","updated":"2015-11-11 21:50:28.000000000","message":"Agreed","commit_id":"32953fe348fe95dada19249e49bac4bea927ada5"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"d364eddbc0f4e5fc3e3121506d52225df56b7a0f","unresolved":false,"context_lines":[{"line_number":2080,"context_line":"                                 % {\u0027list\u0027: portGroupNames})"},{"line_number":2081,"context_line":"            LOG.error(exception_message)"},{"line_number":2082,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dexception_message)"},{"line_number":2083,"context_line":""},{"line_number":2084,"context_line":"        return portGroupName, numPortGroups"},{"line_number":2085,"context_line":""},{"line_number":2086,"context_line":"    def _get_serial_number(self, arrayInfo):"}],"source_content_type":"text/x-python","patch_set":5,"id":"da85f559_bcefd51c","line":2083,"updated":"2015-11-11 21:26:53.000000000","message":"Is there a reason we\u0027re returning the numPortGroups with this now?  We don\u0027t seem to be using the count and the method description says nothing about this...","commit_id":"32953fe348fe95dada19249e49bac4bea927ada5"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"9cb234aac3dc32fc14ebebb50942be0604d7f204","unresolved":false,"context_lines":[{"line_number":2080,"context_line":"                                 % {\u0027list\u0027: portGroupNames})"},{"line_number":2081,"context_line":"            LOG.error(exception_message)"},{"line_number":2082,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dexception_message)"},{"line_number":2083,"context_line":""},{"line_number":2084,"context_line":"        return portGroupName, numPortGroups"},{"line_number":2085,"context_line":""},{"line_number":2086,"context_line":"    def _get_serial_number(self, arrayInfo):"}],"source_content_type":"text/x-python","patch_set":5,"id":"da85f559_9f8be31e","line":2083,"in_reply_to":"da85f559_bcefd51c","updated":"2015-11-11 21:50:28.000000000","message":"I added it to qualify the unit test","commit_id":"32953fe348fe95dada19249e49bac4bea927ada5"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"c086ceaabf9be3ba19287478f9e99667c64cf618","unresolved":false,"context_lines":[{"line_number":2068,"context_line":"        numportgroups \u003d len(portgroupnames)"},{"line_number":2069,"context_line":""},{"line_number":2070,"context_line":"        portgroupname \u003d ("},{"line_number":2071,"context_line":"            portgroupnames[random.randint(0, numportgroups - 1)])"},{"line_number":2072,"context_line":"        if portgroupname:"},{"line_number":2073,"context_line":"            LOG.info(_LI(\"Returning random Port Group: \""},{"line_number":2074,"context_line":"                         \"%(portGroupName)s.\"),"}],"source_content_type":"text/x-python","patch_set":6,"id":"da85f559_a56fb1fa","line":2071,"updated":"2015-11-12 01:38:54.000000000","message":"Don\u0027t think we even need the \"if\" part of this - there should always be a portgroupname as far as I can tell because we are already filtering out None\u0027s on line 2048.  \n\nIMO seems like it would be reasonable for this method to not have to worry about scrubbing empty strings (you can always put that in another helper method if you really think it\u0027s needed), because then you wouldn\u0027t need to return numportgroups from this method.  I think the fact it\u0027s only being used by the unit tests is a good indication that we don\u0027t really want to be returning it (and the filtering could be validated in a different unit test if it was it\u0027s own method).\n\nRegardless, I think there\u0027s a gap in the error handling between this and line 2050-2053, because if we pass in \"portGroupNames\u003d[\u0027  \u0027]\", we won\u0027t get a port returned, but we also won\u0027t hit the exception.  This is different than if we pass in  \"portGroupNames\u003d[\u0027\u0027]\" or  \"portGroupNames\u003d[None]\"","commit_id":"12e9059ea88da97f6371c68016534cb49e88a763"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"2aa3a79c6c66e79aefece1a229cc73fabafd3998","unresolved":false,"context_lines":[{"line_number":2068,"context_line":"        numportgroups \u003d len(portgroupnames)"},{"line_number":2069,"context_line":""},{"line_number":2070,"context_line":"        portgroupname \u003d ("},{"line_number":2071,"context_line":"            portgroupnames[random.randint(0, numportgroups - 1)])"},{"line_number":2072,"context_line":"        if portgroupname:"},{"line_number":2073,"context_line":"            LOG.info(_LI(\"Returning random Port Group: \""},{"line_number":2074,"context_line":"                         \"%(portGroupName)s.\"),"}],"source_content_type":"text/x-python","patch_set":6,"id":"da85f559_bad475bd","line":2071,"in_reply_to":"da85f559_a56fb1fa","updated":"2015-11-12 20:38:18.000000000","message":"Hi Ryan, thanks so much for the feedback.  I added the numportgroups return value so I would be able to test for the existence of duplicates, not sure if this is necessary as there only ever will be one portgroup returned anyway and having duplicates in the list doesn\u0027t really matter.  Like you mention, it is more complicated than it needs to be.","commit_id":"12e9059ea88da97f6371c68016534cb49e88a763"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"38919147b48cd0c9d8bf2d5ea0f24a59bf1ad39e","unresolved":false,"context_lines":[{"line_number":2047,"context_line":"                    portGroupName \u003d portGroupElement.childNodes[0].nodeValue"},{"line_number":2048,"context_line":"                    if portGroupName:"},{"line_number":2049,"context_line":"                        portGroupNames.append(portGroupName.strip())"},{"line_number":2050,"context_line":"            if len(portGroupNames) \u003e 0:"},{"line_number":2051,"context_line":"                return self._get_random_pg_from_list(portGroupNames)"},{"line_number":2052,"context_line":""},{"line_number":2053,"context_line":"        exception_message \u003d (_(\"No Port Group elements found in config file.\"))"}],"source_content_type":"text/x-python","patch_set":7,"id":"da85f559_7b30269f","line":2050,"updated":"2015-11-13 15:37:53.000000000","message":"Think there still is a gap in the error checking if you pass in exclusively port groups with whitespace. E.g. {\u0027 \u0027}","commit_id":"29a0d8843abe938e565bd39c254bcac28b4cbfe0"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"2d29a52f6d9966e1b36c6c8cc665658561794cf3","unresolved":false,"context_lines":[{"line_number":2047,"context_line":"                    portGroupName \u003d portGroupElement.childNodes[0].nodeValue"},{"line_number":2048,"context_line":"                    if portGroupName:"},{"line_number":2049,"context_line":"                        portGroupNames.append(portGroupName.strip())"},{"line_number":2050,"context_line":"            if len(portGroupNames) \u003e 0:"},{"line_number":2051,"context_line":"                return self._get_random_pg_from_list(portGroupNames)"},{"line_number":2052,"context_line":""},{"line_number":2053,"context_line":"        exception_message \u003d (_(\"No Port Group elements found in config file.\"))"}],"source_content_type":"text/x-python","patch_set":7,"id":"da85f559_bb73edb3","line":2050,"in_reply_to":"da85f559_7b30269f","updated":"2015-11-13 15:47:24.000000000","message":"I might move the _filter_list up here","commit_id":"29a0d8843abe938e565bd39c254bcac28b4cbfe0"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"717bf480d4b5c31d14a90653327580816361ecf0","unresolved":false,"context_lines":[{"line_number":2047,"context_line":"                    portGroupName \u003d portGroupElement.childNodes[0].nodeValue"},{"line_number":2048,"context_line":"                    if portGroupName:"},{"line_number":2049,"context_line":"                        portGroupNames.append(portGroupName.strip())"},{"line_number":2050,"context_line":"            if len(portGroupNames) \u003e 0:"},{"line_number":2051,"context_line":"                return self._get_random_pg_from_list(portGroupNames)"},{"line_number":2052,"context_line":""},{"line_number":2053,"context_line":"        exception_message \u003d (_(\"No Port Group elements found in config file.\"))"}],"source_content_type":"text/x-python","patch_set":7,"id":"da85f559_3ba37da0","line":2050,"in_reply_to":"da85f559_bb73edb3","updated":"2015-11-13 15:53:08.000000000","message":"Cool, that seems perfect.  Then if you do filtering before the \u0027if len(portGroupNames) \u003e 0\u0027 you should be golden.","commit_id":"29a0d8843abe938e565bd39c254bcac28b4cbfe0"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"38919147b48cd0c9d8bf2d5ea0f24a59bf1ad39e","unresolved":false,"context_lines":[{"line_number":2083,"context_line":"        portgroupnames \u003d filter(None, portgroupnames)"},{"line_number":2084,"context_line":"        # Convert list to set to remove duplicate portgroups"},{"line_number":2085,"context_line":"        portgroupnames \u003d list(set(portgroupnames))"},{"line_number":2086,"context_line":"        numportgroups \u003d len(portgroupnames)"},{"line_number":2087,"context_line":"        return portgroupnames, numportgroups"},{"line_number":2088,"context_line":""},{"line_number":2089,"context_line":"    def _get_serial_number(self, arrayInfo):"}],"source_content_type":"text/x-python","patch_set":7,"id":"da85f559_1bdc7a45","line":2086,"updated":"2015-11-13 15:37:53.000000000","message":"Since this method returns the whole list now, seems reasonable not to return a numportgroups with it (since anyone calling it can do len of the list)","commit_id":"29a0d8843abe938e565bd39c254bcac28b4cbfe0"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"2d29a52f6d9966e1b36c6c8cc665658561794cf3","unresolved":false,"context_lines":[{"line_number":2083,"context_line":"        portgroupnames \u003d filter(None, portgroupnames)"},{"line_number":2084,"context_line":"        # Convert list to set to remove duplicate portgroups"},{"line_number":2085,"context_line":"        portgroupnames \u003d list(set(portgroupnames))"},{"line_number":2086,"context_line":"        numportgroups \u003d len(portgroupnames)"},{"line_number":2087,"context_line":"        return portgroupnames, numportgroups"},{"line_number":2088,"context_line":""},{"line_number":2089,"context_line":"    def _get_serial_number(self, arrayInfo):"}],"source_content_type":"text/x-python","patch_set":7,"id":"da85f559_1b5f990f","line":2086,"in_reply_to":"da85f559_1bdc7a45","updated":"2015-11-13 15:47:24.000000000","message":"Good point","commit_id":"29a0d8843abe938e565bd39c254bcac28b4cbfe0"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"965198bcd0299eb8e4217941f3a84d8b94e64a48","unresolved":false,"context_lines":[{"line_number":2056,"context_line":"        raise exception.VolumeBackendAPIException(data\u003dexception_message)"},{"line_number":2057,"context_line":""},{"line_number":2058,"context_line":"    def _get_random_pg_from_list(self, portgroupnames):"},{"line_number":2059,"context_line":"        \"\"\"From list of portgroup, choose one randomly"},{"line_number":2060,"context_line":""},{"line_number":2061,"context_line":"        It also removes any empty strings"},{"line_number":2062,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"ba8a016a_6ab798f5","line":2059,"updated":"2015-11-18 13:07:41.000000000","message":"Add a \".\" at the EOL please.","commit_id":"c89fb0f4c8c834b8b8a3f014fb2c8cd92cfa6864"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"2178d9722ebe06b6ee3a245d91051d39367a8e40","unresolved":false,"context_lines":[{"line_number":2056,"context_line":"        raise exception.VolumeBackendAPIException(data\u003dexception_message)"},{"line_number":2057,"context_line":""},{"line_number":2058,"context_line":"    def _get_random_pg_from_list(self, portgroupnames):"},{"line_number":2059,"context_line":"        \"\"\"From list of portgroup, choose one randomly"},{"line_number":2060,"context_line":""},{"line_number":2061,"context_line":"        It also removes any empty strings"},{"line_number":2062,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"ba8a016a_1d7c141e","line":2059,"in_reply_to":"ba8a016a_6ab798f5","updated":"2015-11-18 13:20:06.000000000","message":"ok","commit_id":"c89fb0f4c8c834b8b8a3f014fb2c8cd92cfa6864"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"965198bcd0299eb8e4217941f3a84d8b94e64a48","unresolved":false,"context_lines":[{"line_number":2058,"context_line":"    def _get_random_pg_from_list(self, portgroupnames):"},{"line_number":2059,"context_line":"        \"\"\"From list of portgroup, choose one randomly"},{"line_number":2060,"context_line":""},{"line_number":2061,"context_line":"        It also removes any empty strings"},{"line_number":2062,"context_line":""},{"line_number":2063,"context_line":"        :param portGroupNames: list of available portgroups"},{"line_number":2064,"context_line":"        :returns: portGroupName - the random portgroup"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba8a016a_2a95103e","line":2061,"updated":"2015-11-18 13:07:41.000000000","message":"Add a \".\" at the EOL please.","commit_id":"c89fb0f4c8c834b8b8a3f014fb2c8cd92cfa6864"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"965198bcd0299eb8e4217941f3a84d8b94e64a48","unresolved":false,"context_lines":[{"line_number":2073,"context_line":"        return portgroupname"},{"line_number":2074,"context_line":""},{"line_number":2075,"context_line":"    def _filter_list(self, portgroupnames):"},{"line_number":2076,"context_line":"        \"\"\"Clean up the port group list"},{"line_number":2077,"context_line":""},{"line_number":2078,"context_line":"        :param portgroupnames: list of available portgroups"},{"line_number":2079,"context_line":"        :returns: portgroupnames - cleaned up list"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba8a016a_ca9d6467","line":2076,"updated":"2015-11-18 13:07:41.000000000","message":"Add a \".\" at the EOL please.","commit_id":"c89fb0f4c8c834b8b8a3f014fb2c8cd92cfa6864"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"ef0375d7dc13f94d99610745f99e85cdc7d4e749","unresolved":false,"context_lines":[{"line_number":2055,"context_line":"        LOG.error(exception_message)"},{"line_number":2056,"context_line":"        raise exception.VolumeBackendAPIException(data\u003dexception_message)"},{"line_number":2057,"context_line":""},{"line_number":2058,"context_line":"    def _get_random_pg_from_list(self, portgroupnames):"},{"line_number":2059,"context_line":"        \"\"\"From list of portgroup, choose one randomly."},{"line_number":2060,"context_line":""},{"line_number":2061,"context_line":"        It also removes any empty strings."}],"source_content_type":"text/x-python","patch_set":12,"id":"ba8a016a_d888acc7","line":2058,"updated":"2015-11-19 09:09:34.000000000","message":"I think it should be a static method.","commit_id":"3596932e6095ff3aaae023b5dc1517b87a99992d"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"7e9a538041c17add4fdf7ba869e0c6c0542d4ccd","unresolved":false,"context_lines":[{"line_number":2055,"context_line":"        LOG.error(exception_message)"},{"line_number":2056,"context_line":"        raise exception.VolumeBackendAPIException(data\u003dexception_message)"},{"line_number":2057,"context_line":""},{"line_number":2058,"context_line":"    def _get_random_pg_from_list(self, portgroupnames):"},{"line_number":2059,"context_line":"        \"\"\"From list of portgroup, choose one randomly."},{"line_number":2060,"context_line":""},{"line_number":2061,"context_line":"        It also removes any empty strings."}],"source_content_type":"text/x-python","patch_set":12,"id":"ba8a016a_c8c92c7b","line":2058,"in_reply_to":"ba8a016a_d888acc7","updated":"2015-11-23 11:13:54.000000000","message":"Ok","commit_id":"3596932e6095ff3aaae023b5dc1517b87a99992d"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"ef0375d7dc13f94d99610745f99e85cdc7d4e749","unresolved":false,"context_lines":[{"line_number":2058,"context_line":"    def _get_random_pg_from_list(self, portgroupnames):"},{"line_number":2059,"context_line":"        \"\"\"From list of portgroup, choose one randomly."},{"line_number":2060,"context_line":""},{"line_number":2061,"context_line":"        It also removes any empty strings."},{"line_number":2062,"context_line":""},{"line_number":2063,"context_line":"        :param portGroupNames: list of available portgroups"},{"line_number":2064,"context_line":"        :returns: portGroupName - the random portgroup"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba8a016a_38c9b826","line":2061,"updated":"2015-11-19 09:09:34.000000000","message":"How _get_random_pg_from_list removes empty strings?","commit_id":"3596932e6095ff3aaae023b5dc1517b87a99992d"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"7e9a538041c17add4fdf7ba869e0c6c0542d4ccd","unresolved":false,"context_lines":[{"line_number":2058,"context_line":"    def _get_random_pg_from_list(self, portgroupnames):"},{"line_number":2059,"context_line":"        \"\"\"From list of portgroup, choose one randomly."},{"line_number":2060,"context_line":""},{"line_number":2061,"context_line":"        It also removes any empty strings."},{"line_number":2062,"context_line":""},{"line_number":2063,"context_line":"        :param portGroupNames: list of available portgroups"},{"line_number":2064,"context_line":"        :returns: portGroupName - the random portgroup"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba8a016a_e8b3d008","line":2061,"in_reply_to":"ba8a016a_38c9b826","updated":"2015-11-23 11:13:54.000000000","message":"You are right, since the refactoring it does not.  I will remove","commit_id":"3596932e6095ff3aaae023b5dc1517b87a99992d"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"ef0375d7dc13f94d99610745f99e85cdc7d4e749","unresolved":false,"context_lines":[{"line_number":2063,"context_line":"        :param portGroupNames: list of available portgroups"},{"line_number":2064,"context_line":"        :returns: portGroupName - the random portgroup"},{"line_number":2065,"context_line":"        \"\"\""},{"line_number":2066,"context_line":"        portgroupname \u003d ("},{"line_number":2067,"context_line":"            portgroupnames[random.randint(0, len(portgroupnames) - 1)])"},{"line_number":2068,"context_line":""},{"line_number":2069,"context_line":"        LOG.info(_LI(\"Returning random Port Group: \""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba8a016a_b86fe829","line":2066,"updated":"2015-11-19 09:09:34.000000000","message":"Would you follow the camel naming style like \u0027portGroupNames\u0027?","commit_id":"3596932e6095ff3aaae023b5dc1517b87a99992d"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"c4dd6dd4361f1330bec3b7326d16ca525ba3cec1","unresolved":false,"context_lines":[{"line_number":2063,"context_line":"        :param portGroupNames: list of available portgroups"},{"line_number":2064,"context_line":"        :returns: portGroupName - the random portgroup"},{"line_number":2065,"context_line":"        \"\"\""},{"line_number":2066,"context_line":"        portgroupname \u003d ("},{"line_number":2067,"context_line":"            portgroupnames[random.randint(0, len(portgroupnames) - 1)])"},{"line_number":2068,"context_line":""},{"line_number":2069,"context_line":"        LOG.info(_LI(\"Returning random Port Group: \""}],"source_content_type":"text/x-python","patch_set":12,"id":"9a8ffd7b_c33431fd","line":2066,"in_reply_to":"ba8a016a_28b6b8dc","updated":"2015-12-04 15:23:00.000000000","message":"Replied in patch 13","commit_id":"3596932e6095ff3aaae023b5dc1517b87a99992d"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"7e9a538041c17add4fdf7ba869e0c6c0542d4ccd","unresolved":false,"context_lines":[{"line_number":2063,"context_line":"        :param portGroupNames: list of available portgroups"},{"line_number":2064,"context_line":"        :returns: portGroupName - the random portgroup"},{"line_number":2065,"context_line":"        \"\"\""},{"line_number":2066,"context_line":"        portgroupname \u003d ("},{"line_number":2067,"context_line":"            portgroupnames[random.randint(0, len(portgroupnames) - 1)])"},{"line_number":2068,"context_line":""},{"line_number":2069,"context_line":"        LOG.info(_LI(\"Returning random Port Group: \""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba8a016a_28b6b8dc","line":2066,"in_reply_to":"ba8a016a_b86fe829","updated":"2015-11-23 11:13:54.000000000","message":"I changed this based on another comment.  Apparently we should not use camelcase in variable names.  The alternative is port_group_name, which I do not as it increases the length of the variable, but perhaps it is the best.  Lots of different opinions on this one.","commit_id":"3596932e6095ff3aaae023b5dc1517b87a99992d"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"ef0375d7dc13f94d99610745f99e85cdc7d4e749","unresolved":false,"context_lines":[{"line_number":2072,"context_line":""},{"line_number":2073,"context_line":"        return portgroupname"},{"line_number":2074,"context_line":""},{"line_number":2075,"context_line":"    def _filter_list(self, portgroupnames):"},{"line_number":2076,"context_line":"        \"\"\"Clean up the port group list."},{"line_number":2077,"context_line":""},{"line_number":2078,"context_line":"        :param portgroupnames: list of available portgroups"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba8a016a_789180f0","line":2075,"updated":"2015-11-19 09:09:34.000000000","message":"I think it should be a static method.","commit_id":"3596932e6095ff3aaae023b5dc1517b87a99992d"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"7e9a538041c17add4fdf7ba869e0c6c0542d4ccd","unresolved":false,"context_lines":[{"line_number":2072,"context_line":""},{"line_number":2073,"context_line":"        return portgroupname"},{"line_number":2074,"context_line":""},{"line_number":2075,"context_line":"    def _filter_list(self, portgroupnames):"},{"line_number":2076,"context_line":"        \"\"\"Clean up the port group list."},{"line_number":2077,"context_line":""},{"line_number":2078,"context_line":"        :param portgroupnames: list of available portgroups"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba8a016a_e8af507b","line":2075,"in_reply_to":"ba8a016a_789180f0","updated":"2015-11-23 11:13:54.000000000","message":"Ok","commit_id":"3596932e6095ff3aaae023b5dc1517b87a99992d"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"ef0375d7dc13f94d99610745f99e85cdc7d4e749","unresolved":false,"context_lines":[{"line_number":2078,"context_line":"        :param portgroupnames: list of available portgroups"},{"line_number":2079,"context_line":"        :returns: portgroupnames - cleaned up list"},{"line_number":2080,"context_line":"        \"\"\""},{"line_number":2081,"context_line":"        portgroupnames \u003d filter(None, portgroupnames)"},{"line_number":2082,"context_line":"        # Convert list to set to remove duplicate portgroups"},{"line_number":2083,"context_line":"        portgroupnames \u003d list(set(portgroupnames))"},{"line_number":2084,"context_line":"        return portgroupnames"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba8a016a_58bd9cb5","line":2081,"updated":"2015-11-19 09:09:34.000000000","message":"Ditto.","commit_id":"3596932e6095ff3aaae023b5dc1517b87a99992d"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"7e9a538041c17add4fdf7ba869e0c6c0542d4ccd","unresolved":false,"context_lines":[{"line_number":2078,"context_line":"        :param portgroupnames: list of available portgroups"},{"line_number":2079,"context_line":"        :returns: portgroupnames - cleaned up list"},{"line_number":2080,"context_line":"        \"\"\""},{"line_number":2081,"context_line":"        portgroupnames \u003d filter(None, portgroupnames)"},{"line_number":2082,"context_line":"        # Convert list to set to remove duplicate portgroups"},{"line_number":2083,"context_line":"        portgroupnames \u003d list(set(portgroupnames))"},{"line_number":2084,"context_line":"        return portgroupnames"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba8a016a_88bfa4a9","line":2081,"in_reply_to":"ba8a016a_58bd9cb5","updated":"2015-11-23 11:13:54.000000000","message":"See above.  Thanks for the feedback","commit_id":"3596932e6095ff3aaae023b5dc1517b87a99992d"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"2c5ed488272128be3ddddc35e5b32580dda18f91","unresolved":false,"context_lines":[{"line_number":2062,"context_line":"        :param portGroupNames: list of available portgroups"},{"line_number":2063,"context_line":"        :returns: portGroupName - the random portgroup"},{"line_number":2064,"context_line":"        \"\"\""},{"line_number":2065,"context_line":"        portgroupname \u003d ("},{"line_number":2066,"context_line":"            portgroupnames[random.randint(0, len(portgroupnames) - 1)])"},{"line_number":2067,"context_line":""},{"line_number":2068,"context_line":"        LOG.info(_LI(\"Returning random Port Group: \""}],"source_content_type":"text/x-python","patch_set":13,"id":"9a8ffd7b_e31e156f","line":2065,"updated":"2015-11-27 16:13:00.000000000","message":"port_group_name is the correct way. But most names in this file is using camel, so I think it is OK to follow that.","commit_id":"a812d062b7a5135684a401480a910e17c63951ee"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"d73f4a5db10f635aef837b93bd5d1df0c3752b66","unresolved":false,"context_lines":[{"line_number":2062,"context_line":"        :param portGroupNames: list of available portgroups"},{"line_number":2063,"context_line":"        :returns: portGroupName - the random portgroup"},{"line_number":2064,"context_line":"        \"\"\""},{"line_number":2065,"context_line":"        portgroupname \u003d ("},{"line_number":2066,"context_line":"            portgroupnames[random.randint(0, len(portgroupnames) - 1)])"},{"line_number":2067,"context_line":""},{"line_number":2068,"context_line":"        LOG.info(_LI(\"Returning random Port Group: \""}],"source_content_type":"text/x-python","patch_set":13,"id":"7a740942_c944dd75","line":2065,"in_reply_to":"9a8ffd7b_e31e156f","updated":"2015-12-04 15:33:20.000000000","message":"Thanks, we may start using the correct way as we are getting a lot of comments to do so.","commit_id":"a812d062b7a5135684a401480a910e17c63951ee"}]}
