)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14274,"name":"XinXiaohui","email":"xiaohui.xin@intel.com","username":"XinXiaohui"},"change_message_id":"8c4db8d4284598c6a765f5e7902d3107d7f0d52c","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently we use a existing QoS without check"},{"line_number":10,"context_line":"whether the QoS is for block storage or NAS,"},{"line_number":11,"context_line":"but one QoS on the array should be used for only"},{"line_number":12,"context_line":"block storage or NAS, not both. Also, we add"},{"line_number":13,"context_line":"check with QoS parameter."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"bae84128_0a98031b","line":11,"range":{"start_line":11,"start_character":44,"end_line":11,"end_character":48},"updated":"2016-02-24 10:56:03.000000000","message":"s/only/either may be better?","commit_id":"2741c9d359890fe62f5c292dd305e1fcc96c07be"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"08d4842327bdeda8c6574e4a6d5fc06baf7b1ba4","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently we use a existing QoS without check"},{"line_number":10,"context_line":"whether the QoS is for block storage or NAS,"},{"line_number":11,"context_line":"but one QoS on the array should be used for only"},{"line_number":12,"context_line":"block storage or NAS, not both. Also, we add"},{"line_number":13,"context_line":"check with QoS parameter."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"bae84128_655f0076","line":11,"range":{"start_line":11,"start_character":44,"end_line":11,"end_character":48},"in_reply_to":"bae84128_0a98031b","updated":"2016-02-25 08:09:13.000000000","message":"Done","commit_id":"2741c9d359890fe62f5c292dd305e1fcc96c07be"}],"cinder/volume/drivers/huawei/constants.py":[{"author":{"_account_id":14274,"name":"XinXiaohui","email":"xiaohui.xin@intel.com","username":"XinXiaohui"},"change_message_id":"56acf1a63abf6720cb8be87b462cf9d9fe277fa2","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                     \u0027maxBandWidth\u0027, \u0027latency\u0027, \u0027IOType\u0027]"},{"line_number":74,"context_line":"QOS_KEYS \u003d [\u0027MAXIOPS\u0027, \u0027MINIOPS\u0027, \u0027MINBANDWidth\u0027,"},{"line_number":75,"context_line":"            \u0027MAXBANDWidth\u0027, \u0027LATENCY\u0027, \u0027IOTYPE\u0027]"},{"line_number":76,"context_line":"EXTRA_QOS_KEYS \u003d [\u0027MAXIOPS\u0027, \u0027MINIOPS\u0027, \u0027MINBANDWIDTH\u0027, \u0027MAXBANDWIDTH\u0027]"},{"line_number":77,"context_line":"MAX_LUN_NUM_IN_QOS \u003d 64"},{"line_number":78,"context_line":"HYPERMETRO_CLASS \u003d \"cinder.volume.drivers.huawei.hypermetro.HuaweiHyperMetro\""},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"bae84128_4f802447","line":76,"range":{"start_line":76,"start_character":41,"end_line":76,"end_character":53},"updated":"2016-02-25 02:13:33.000000000","message":"Maybe it\u0027s not that important, but I think the same item in QOS_KEYS and EXTRA_QOS_KEYS should be the same value, or something I missed here? See MAXBANDWidth in QOS_KEYS, but MAXBANDWIDTH in EXTRA_QOS_KEYS, etc.","commit_id":"2741c9d359890fe62f5c292dd305e1fcc96c07be"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"08d4842327bdeda8c6574e4a6d5fc06baf7b1ba4","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                     \u0027maxBandWidth\u0027, \u0027latency\u0027, \u0027IOType\u0027]"},{"line_number":74,"context_line":"QOS_KEYS \u003d [\u0027MAXIOPS\u0027, \u0027MINIOPS\u0027, \u0027MINBANDWidth\u0027,"},{"line_number":75,"context_line":"            \u0027MAXBANDWidth\u0027, \u0027LATENCY\u0027, \u0027IOTYPE\u0027]"},{"line_number":76,"context_line":"EXTRA_QOS_KEYS \u003d [\u0027MAXIOPS\u0027, \u0027MINIOPS\u0027, \u0027MINBANDWIDTH\u0027, \u0027MAXBANDWIDTH\u0027]"},{"line_number":77,"context_line":"MAX_LUN_NUM_IN_QOS \u003d 64"},{"line_number":78,"context_line":"HYPERMETRO_CLASS \u003d \"cinder.volume.drivers.huawei.hypermetro.HuaweiHyperMetro\""},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"bae84128_6578a0f9","line":76,"range":{"start_line":76,"start_character":41,"end_line":76,"end_character":53},"in_reply_to":"bae84128_4f802447","updated":"2016-02-25 08:09:13.000000000","message":"Done","commit_id":"2741c9d359890fe62f5c292dd305e1fcc96c07be"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"8689d2579252de10ffca54774569bbb658c915eb","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"HUAWEI_VALID_KEYS \u003d [\u0027maxIOPS\u0027, \u0027minIOPS\u0027, \u0027minBandWidth\u0027,"},{"line_number":72,"context_line":"                     \u0027maxBandWidth\u0027, \u0027latency\u0027, \u0027IOType\u0027]"},{"line_number":73,"context_line":"QOS_KEYS \u003d [\u0027MAXIOPS\u0027, \u0027MINIOPS\u0027, \u0027MINBANDWIDTH\u0027,"},{"line_number":74,"context_line":"            \u0027MAXBANDWIDTH\u0027, \u0027LATENCY\u0027, \u0027IOTYPE\u0027]"},{"line_number":75,"context_line":"EXTRA_QOS_KEYS \u003d [\u0027MAXIOPS\u0027, \u0027MINIOPS\u0027, \u0027MINBANDWIDTH\u0027, \u0027MAXBANDWIDTH\u0027]"},{"line_number":76,"context_line":"LOWER_LIMIT_KEYS \u003d [\u0027MINIOPS\u0027, \u0027LATENCY\u0027, \u0027MINBANDWIDTH\u0027]"}],"source_content_type":"text/x-python","patch_set":18,"id":"1af94dfe_276eb5c9","line":73,"updated":"2016-03-15 13:55:37.000000000","message":"I would have preferred the list comprehension, but this is fine as well.","commit_id":"cb67442bbe08a7a9b7f0deba7cc0c4b3f3c46688"}],"cinder/volume/drivers/huawei/huawei_driver.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ffad916000d9a6277c368fcb983f19a66eadfece","unresolved":false,"context_lines":[{"line_number":1007,"context_line":"            qos_info \u003d self.client.get_qos_info(qos_id)"},{"line_number":1008,"context_line":""},{"line_number":1009,"context_line":"        for key, value in qos_info.items():"},{"line_number":1010,"context_line":"            if key.upper() in [i.upper() for i in constants.HUAWEI_VALID_KEYS]:"},{"line_number":1011,"context_line":"                if key.upper() \u003d\u003d \u0027LATENCY\u0027 and value \u003d\u003d \u00270\u0027:"},{"line_number":1012,"context_line":"                    continue"},{"line_number":1013,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_a05f0740","line":1010,"updated":"2016-03-14 11:22:13.000000000","message":"-1: Please just modify HUAWEI_VALID_KEYS to be uppercase in the constants file instead of creating a list for each query.","commit_id":"89ddd01dc9d244be479b7686b547d4280445aafa"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a0c06d6e393faee2b58db3c1ec40be598cf388ff","unresolved":false,"context_lines":[{"line_number":1007,"context_line":"            qos_info \u003d self.client.get_qos_info(qos_id)"},{"line_number":1008,"context_line":""},{"line_number":1009,"context_line":"        for key, value in qos_info.items():"},{"line_number":1010,"context_line":"            if key.upper() in [i.upper() for i in constants.HUAWEI_VALID_KEYS]:"},{"line_number":1011,"context_line":"                if key.upper() \u003d\u003d \u0027LATENCY\u0027 and value \u003d\u003d \u00270\u0027:"},{"line_number":1012,"context_line":"                    continue"},{"line_number":1013,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":14,"id":"1af94dfe_845227dc","line":1010,"in_reply_to":"1af94dfe_3051ce63","updated":"2016-03-15 13:37:17.000000000","message":"Like that or just use the same list comprehension:\n\n QOS_KEYS \u003d [i.upper() for i in HUAWEI_VALID_KEYS]","commit_id":"89ddd01dc9d244be479b7686b547d4280445aafa"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"37bdffc1c5456fab059a54b7fdc90163d668a46f","unresolved":false,"context_lines":[{"line_number":1007,"context_line":"            qos_info \u003d self.client.get_qos_info(qos_id)"},{"line_number":1008,"context_line":""},{"line_number":1009,"context_line":"        for key, value in qos_info.items():"},{"line_number":1010,"context_line":"            if key.upper() in [i.upper() for i in constants.HUAWEI_VALID_KEYS]:"},{"line_number":1011,"context_line":"                if key.upper() \u003d\u003d \u0027LATENCY\u0027 and value \u003d\u003d \u00270\u0027:"},{"line_number":1012,"context_line":"                    continue"},{"line_number":1013,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":14,"id":"1af94dfe_3051ce63","line":1010,"in_reply_to":"1af94dfe_c411d4b1","updated":"2016-03-15 13:28:34.000000000","message":"Like this?\nHUAWEI_VALID_KEYS \u003d [\u0027maxIOPS\u0027, \u0027minIOPS\u0027, \u0027minBandWidth\u0027,\n                     \u0027maxBandWidth\u0027, \u0027latency\u0027, \u0027IOType\u0027]\nQOS_KEYS \u003d [\u0027MAXIOPS\u0027, \u0027MINIOPS\u0027, \u0027MINBANDWIDTH\u0027,\n            \u0027MAXBANDWIDTH\u0027, \u0027LATENCY\u0027, \u0027IOTYPE\u0027]","commit_id":"89ddd01dc9d244be479b7686b547d4280445aafa"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"e3ba13ce5a39db56dda60943d6512af25ab0b132","unresolved":false,"context_lines":[{"line_number":1007,"context_line":"            qos_info \u003d self.client.get_qos_info(qos_id)"},{"line_number":1008,"context_line":""},{"line_number":1009,"context_line":"        for key, value in qos_info.items():"},{"line_number":1010,"context_line":"            if key.upper() in [i.upper() for i in constants.HUAWEI_VALID_KEYS]:"},{"line_number":1011,"context_line":"                if key.upper() \u003d\u003d \u0027LATENCY\u0027 and value \u003d\u003d \u00270\u0027:"},{"line_number":1012,"context_line":"                    continue"},{"line_number":1013,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_a0f4f986","line":1010,"in_reply_to":"3afc51ec_a05f0740","updated":"2016-03-15 02:50:38.000000000","message":"HUAWEI_VALID_KEYS need lower case.","commit_id":"89ddd01dc9d244be479b7686b547d4280445aafa"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"bb564ded4c4dafada74aed9d38f6e9041d6214a7","unresolved":false,"context_lines":[{"line_number":1007,"context_line":"            qos_info \u003d self.client.get_qos_info(qos_id)"},{"line_number":1008,"context_line":""},{"line_number":1009,"context_line":"        for key, value in qos_info.items():"},{"line_number":1010,"context_line":"            if key.upper() in [i.upper() for i in constants.HUAWEI_VALID_KEYS]:"},{"line_number":1011,"context_line":"                if key.upper() \u003d\u003d \u0027LATENCY\u0027 and value \u003d\u003d \u00270\u0027:"},{"line_number":1012,"context_line":"                    continue"},{"line_number":1013,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":14,"id":"1af94dfe_c411d4b1","line":1010,"in_reply_to":"3afc51ec_a0f4f986","updated":"2016-03-15 12:35:22.000000000","message":"OK, in that case you should have a constants variable with the uppercased names (it can be auto generated from HUAWEI_VALID_KEYS), because it makes no sense to dynamically build a list of elements for static values on each call.","commit_id":"89ddd01dc9d244be479b7686b547d4280445aafa"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ffad916000d9a6277c368fcb983f19a66eadfece","unresolved":false,"context_lines":[{"line_number":1008,"context_line":""},{"line_number":1009,"context_line":"        for key, value in qos_info.items():"},{"line_number":1010,"context_line":"            if key.upper() in [i.upper() for i in constants.HUAWEI_VALID_KEYS]:"},{"line_number":1011,"context_line":"                if key.upper() \u003d\u003d \u0027LATENCY\u0027 and value \u003d\u003d \u00270\u0027:"},{"line_number":1012,"context_line":"                    continue"},{"line_number":1013,"context_line":"                else:"},{"line_number":1014,"context_line":"                    qos[key.upper()] \u003d value"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_260f902f","line":1011,"updated":"2016-03-14 11:22:13.000000000","message":"nit: Why not add on L1010 key \u003d key.upper() and remove the changing to upper on L1010, L1011 and L1014?","commit_id":"89ddd01dc9d244be479b7686b547d4280445aafa"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"e3ba13ce5a39db56dda60943d6512af25ab0b132","unresolved":false,"context_lines":[{"line_number":1008,"context_line":""},{"line_number":1009,"context_line":"        for key, value in qos_info.items():"},{"line_number":1010,"context_line":"            if key.upper() in [i.upper() for i in constants.HUAWEI_VALID_KEYS]:"},{"line_number":1011,"context_line":"                if key.upper() \u003d\u003d \u0027LATENCY\u0027 and value \u003d\u003d \u00270\u0027:"},{"line_number":1012,"context_line":"                    continue"},{"line_number":1013,"context_line":"                else:"},{"line_number":1014,"context_line":"                    qos[key.upper()] \u003d value"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_00dded0d","line":1011,"in_reply_to":"3afc51ec_260f902f","updated":"2016-03-15 02:50:38.000000000","message":"Done","commit_id":"89ddd01dc9d244be479b7686b547d4280445aafa"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"01af523e5f7fd0ee1dc72211458c1a40c3e354d5","unresolved":false,"context_lines":[{"line_number":1018,"context_line":""},{"line_number":1019,"context_line":"        for key, value in qos_info.items():"},{"line_number":1020,"context_line":"            key \u003d key.upper()"},{"line_number":1021,"context_line":"            if key in [i.upper() for i in constants.HUAWEI_VALID_KEYS]:"},{"line_number":1022,"context_line":"                if key \u003d\u003d \u0027LATENCY\u0027 and value \u003d\u003d \u00270\u0027:"},{"line_number":1023,"context_line":"                    continue"},{"line_number":1024,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":15,"id":"1af94dfe_0fb475f0","line":1021,"updated":"2016-03-15 12:35:32.000000000","message":"-1: We should not be dynamically building on each call a list object for a static constant list of values.","commit_id":"f0970b2ca9c87856e9b8fded09fde9065afc8f57"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"7ff28171c746f106f5346440bc64e84c6fd79067","unresolved":false,"context_lines":[{"line_number":1018,"context_line":""},{"line_number":1019,"context_line":"        for key, value in qos_info.items():"},{"line_number":1020,"context_line":"            key \u003d key.upper()"},{"line_number":1021,"context_line":"            if key in [i.upper() for i in constants.HUAWEI_VALID_KEYS]:"},{"line_number":1022,"context_line":"                if key \u003d\u003d \u0027LATENCY\u0027 and value \u003d\u003d \u00270\u0027:"},{"line_number":1023,"context_line":"                    continue"},{"line_number":1024,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":15,"id":"1af94dfe_35926058","line":1021,"in_reply_to":"1af94dfe_0fb475f0","updated":"2016-03-15 13:09:10.000000000","message":"I have a little bit of understanding, can you explain more detail","commit_id":"f0970b2ca9c87856e9b8fded09fde9065afc8f57"}],"cinder/volume/drivers/huawei/rest_client.py":[{"author":{"_account_id":16793,"name":"Liucheng Jiang","email":"jiangliucheng@huawei.com","username":"Jiangliucheng"},"change_message_id":"98ef19361a1e01674c1dd0ec6da827e49a5bdb90","unresolved":false,"context_lines":[{"line_number":1526,"context_line":"                # else we cannot add LUN to this QoS any more."},{"line_number":1527,"context_line":"                if (qos_flag \u003d\u003d len(qos)"},{"line_number":1528,"context_line":"                        and lun_num \u003c constants.MAX_LUN_NUM_IN_QOS"},{"line_number":1529,"context_line":"                        and constants.QOS_NAME_PREFIX in qos_name"},{"line_number":1530,"context_line":"                        and qos_status \u003d\u003d constants.STATUS_QOS_ACTIVE"},{"line_number":1531,"context_line":"                        and item[\u0027FSLIST\u0027] \u003d\u003d \u0027[\"\"]\u0027):"},{"line_number":1532,"context_line":"                    qos_id \u003d item[\u0027ID\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a5de9d1_ce579758","line":1529,"range":{"start_line":1529,"start_character":28,"end_line":1529,"end_character":65},"updated":"2016-01-30 03:49:53.000000000","message":"It\u0027s prefix, I think it should be like this:\nqos_name.startswith(constants.QOS_NAME_PREFIX)","commit_id":"5f8646ea68632216b2347707942451de9290f87c"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"c6fad24dafd8d9ba176c825923b44b4390dcd3bd","unresolved":false,"context_lines":[{"line_number":1517,"context_line":"            for items in result[\u0027data\u0027]:"},{"line_number":1518,"context_line":"                qos_flag \u003d 0"},{"line_number":1519,"context_line":"                extra_flag \u003d 0"},{"line_number":1520,"context_line":"                if (\u0027LATENCY\u0027 not in qos and items[\u0027LATENCY\u0027] !\u003d \u00270\u0027):"},{"line_number":1521,"context_line":"                        extra_flag \u003d extra_flag + 1"},{"line_number":1522,"context_line":"                for item in items:"},{"line_number":1523,"context_line":"                    if item in extra_qos:"}],"source_content_type":"text/x-python","patch_set":9,"id":"bae84128_77fde439","line":1520,"updated":"2016-02-20 03:03:44.000000000","message":"The parenthesis is no need.","commit_id":"9169816548491df47f27127b7e9675959bf038fe"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"6042edf4b9da9dfd21e972f91637bdd618e90e3b","unresolved":false,"context_lines":[{"line_number":1517,"context_line":"            for items in result[\u0027data\u0027]:"},{"line_number":1518,"context_line":"                qos_flag \u003d 0"},{"line_number":1519,"context_line":"                extra_flag \u003d 0"},{"line_number":1520,"context_line":"                if (\u0027LATENCY\u0027 not in qos and items[\u0027LATENCY\u0027] !\u003d \u00270\u0027):"},{"line_number":1521,"context_line":"                        extra_flag \u003d extra_flag + 1"},{"line_number":1522,"context_line":"                for item in items:"},{"line_number":1523,"context_line":"                    if item in extra_qos:"}],"source_content_type":"text/x-python","patch_set":9,"id":"bae84128_d4bf675e","line":1520,"in_reply_to":"bae84128_77fde439","updated":"2016-02-22 03:56:26.000000000","message":"Done","commit_id":"9169816548491df47f27127b7e9675959bf038fe"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"c6fad24dafd8d9ba176c825923b44b4390dcd3bd","unresolved":false,"context_lines":[{"line_number":1533,"context_line":"                qos_name \u003d items[\u0027NAME\u0027]"},{"line_number":1534,"context_line":"                qos_status \u003d items[\u0027RUNNINGSTATUS\u0027]"},{"line_number":1535,"context_line":"                # We use this QoS only if the LUNs in it is less than 64,"},{"line_number":1536,"context_line":"                # and must created by openstack also not contain filesystem,"},{"line_number":1537,"context_line":"                # else we cannot add LUN to this QoS any more."},{"line_number":1538,"context_line":"                if (qos_flag \u003d\u003d len(qos)"},{"line_number":1539,"context_line":"                        and extra_flag \u003d\u003d 0"}],"source_content_type":"text/x-python","patch_set":9,"id":"bae84128_b7bc8c6d","line":1536,"updated":"2016-02-20 03:03:44.000000000","message":"Could consider to use below:\n# created by OpenStack and does not contain filesystem,","commit_id":"9169816548491df47f27127b7e9675959bf038fe"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"6042edf4b9da9dfd21e972f91637bdd618e90e3b","unresolved":false,"context_lines":[{"line_number":1533,"context_line":"                qos_name \u003d items[\u0027NAME\u0027]"},{"line_number":1534,"context_line":"                qos_status \u003d items[\u0027RUNNINGSTATUS\u0027]"},{"line_number":1535,"context_line":"                # We use this QoS only if the LUNs in it is less than 64,"},{"line_number":1536,"context_line":"                # and must created by openstack also not contain filesystem,"},{"line_number":1537,"context_line":"                # else we cannot add LUN to this QoS any more."},{"line_number":1538,"context_line":"                if (qos_flag \u003d\u003d len(qos)"},{"line_number":1539,"context_line":"                        and extra_flag \u003d\u003d 0"}],"source_content_type":"text/x-python","patch_set":9,"id":"bae84128_74b13b8f","line":1536,"in_reply_to":"bae84128_b7bc8c6d","updated":"2016-02-22 03:56:26.000000000","message":"Done","commit_id":"9169816548491df47f27127b7e9675959bf038fe"},{"author":{"_account_id":14274,"name":"XinXiaohui","email":"xiaohui.xin@intel.com","username":"XinXiaohui"},"change_message_id":"8c4db8d4284598c6a765f5e7902d3107d7f0d52c","unresolved":false,"context_lines":[{"line_number":1516,"context_line":"        if \u0027data\u0027 in result:"},{"line_number":1517,"context_line":"            for items in result[\u0027data\u0027]:"},{"line_number":1518,"context_line":"                qos_flag \u003d 0"},{"line_number":1519,"context_line":"                extra_flag \u003d 0"},{"line_number":1520,"context_line":"                if \u0027LATENCY\u0027 not in qos and items[\u0027LATENCY\u0027] !\u003d \u00270\u0027:"},{"line_number":1521,"context_line":"                        extra_flag \u003d extra_flag + 1"},{"line_number":1522,"context_line":"                for item in items:"}],"source_content_type":"text/x-python","patch_set":10,"id":"bae84128_aabe37ab","line":1519,"range":{"start_line":1519,"start_character":16,"end_line":1519,"end_character":26},"updated":"2016-02-24 10:56:03.000000000","message":"As you don\u0027t care how many of the extra_flag is, maybe it\u0027s better for it to be a boolean type -\u003e extra_flag \u003d False?","commit_id":"2741c9d359890fe62f5c292dd305e1fcc96c07be"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"08d4842327bdeda8c6574e4a6d5fc06baf7b1ba4","unresolved":false,"context_lines":[{"line_number":1516,"context_line":"        if \u0027data\u0027 in result:"},{"line_number":1517,"context_line":"            for items in result[\u0027data\u0027]:"},{"line_number":1518,"context_line":"                qos_flag \u003d 0"},{"line_number":1519,"context_line":"                extra_flag \u003d 0"},{"line_number":1520,"context_line":"                if \u0027LATENCY\u0027 not in qos and items[\u0027LATENCY\u0027] !\u003d \u00270\u0027:"},{"line_number":1521,"context_line":"                        extra_flag \u003d extra_flag + 1"},{"line_number":1522,"context_line":"                for item in items:"}],"source_content_type":"text/x-python","patch_set":10,"id":"bae84128_1000f0a9","line":1519,"range":{"start_line":1519,"start_character":16,"end_line":1519,"end_character":26},"in_reply_to":"bae84128_aabe37ab","updated":"2016-02-25 08:09:13.000000000","message":"Done","commit_id":"2741c9d359890fe62f5c292dd305e1fcc96c07be"},{"author":{"_account_id":14274,"name":"XinXiaohui","email":"xiaohui.xin@intel.com","username":"XinXiaohui"},"change_message_id":"8c4db8d4284598c6a765f5e7902d3107d7f0d52c","unresolved":false,"context_lines":[{"line_number":1519,"context_line":"                extra_flag \u003d 0"},{"line_number":1520,"context_line":"                if \u0027LATENCY\u0027 not in qos and items[\u0027LATENCY\u0027] !\u003d \u00270\u0027:"},{"line_number":1521,"context_line":"                        extra_flag \u003d extra_flag + 1"},{"line_number":1522,"context_line":"                for item in items:"},{"line_number":1523,"context_line":"                    if item in extra_qos:"},{"line_number":1524,"context_line":"                        extra_flag \u003d extra_flag + 1"},{"line_number":1525,"context_line":"                        break"},{"line_number":1526,"context_line":"                for key in qos:"},{"line_number":1527,"context_line":"                    if key not in items:"},{"line_number":1528,"context_line":"                        break"}],"source_content_type":"text/x-python","patch_set":10,"id":"bae84128_ea65df44","line":1525,"range":{"start_line":1522,"start_character":16,"end_line":1525,"end_character":29},"updated":"2016-02-24 10:56:03.000000000","message":"If extra_flag is already True then the block can be not executed.\n\nif not extra_flag:\n    for item in items:\n        if item in extra_qos:\n           ...","commit_id":"2741c9d359890fe62f5c292dd305e1fcc96c07be"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"08d4842327bdeda8c6574e4a6d5fc06baf7b1ba4","unresolved":false,"context_lines":[{"line_number":1519,"context_line":"                extra_flag \u003d 0"},{"line_number":1520,"context_line":"                if \u0027LATENCY\u0027 not in qos and items[\u0027LATENCY\u0027] !\u003d \u00270\u0027:"},{"line_number":1521,"context_line":"                        extra_flag \u003d extra_flag + 1"},{"line_number":1522,"context_line":"                for item in items:"},{"line_number":1523,"context_line":"                    if item in extra_qos:"},{"line_number":1524,"context_line":"                        extra_flag \u003d extra_flag + 1"},{"line_number":1525,"context_line":"                        break"},{"line_number":1526,"context_line":"                for key in qos:"},{"line_number":1527,"context_line":"                    if key not in items:"},{"line_number":1528,"context_line":"                        break"}],"source_content_type":"text/x-python","patch_set":10,"id":"bae84128_702b3c34","line":1525,"range":{"start_line":1522,"start_character":16,"end_line":1525,"end_character":29},"in_reply_to":"bae84128_ea65df44","updated":"2016-02-25 08:09:13.000000000","message":"Done","commit_id":"2741c9d359890fe62f5c292dd305e1fcc96c07be"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ffad916000d9a6277c368fcb983f19a66eadfece","unresolved":false,"context_lines":[{"line_number":1518,"context_line":"                qos_flag \u003d 0"},{"line_number":1519,"context_line":"                extra_flag \u003d False"},{"line_number":1520,"context_line":"                if \u0027LATENCY\u0027 not in qos and items[\u0027LATENCY\u0027] !\u003d \u00270\u0027:"},{"line_number":1521,"context_line":"                        extra_flag \u003d True"},{"line_number":1522,"context_line":"                if not extra_flag:"},{"line_number":1523,"context_line":"                    for item in items:"},{"line_number":1524,"context_line":"                        if item in extra_qos:"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_e6a808de","line":1521,"updated":"2016-03-14 11:22:13.000000000","message":"-1: These 3 lines should read:\n\n extra_flag \u003d \u0027LATENCY\u0027 not in qos and items[\u0027LATENCY\u0027] !\u003d \u00270\u0027\n\nOf at least replace L1522 with\n\n else:","commit_id":"89ddd01dc9d244be479b7686b547d4280445aafa"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"bb564ded4c4dafada74aed9d38f6e9041d6214a7","unresolved":false,"context_lines":[{"line_number":1518,"context_line":"                qos_flag \u003d 0"},{"line_number":1519,"context_line":"                extra_flag \u003d False"},{"line_number":1520,"context_line":"                if \u0027LATENCY\u0027 not in qos and items[\u0027LATENCY\u0027] !\u003d \u00270\u0027:"},{"line_number":1521,"context_line":"                        extra_flag \u003d True"},{"line_number":1522,"context_line":"                if not extra_flag:"},{"line_number":1523,"context_line":"                    for item in items:"},{"line_number":1524,"context_line":"                        if item in extra_qos:"}],"source_content_type":"text/x-python","patch_set":14,"id":"1af94dfe_e4a3304e","line":1521,"in_reply_to":"3afc51ec_20e109d1","updated":"2016-03-15 12:35:22.000000000","message":"No they are not... You set extra_flag on L1519, and it can only change on L1521, therefore we will only go in L1523 if we haven\u0027t entered L1521.  So this is a basic if else structure, so we can replace L1519 to L1526 with:\n\n if \u0027LATENCY\u0027 not in qos and items[\u0027LATENCY\u0027] !\u003d \u00270\u0027:\n     extra_flag \u003d True\n else:\n     extra_flag \u003d any(item in extra_qos for item in items)\n\nOr at the very least:\n\n extra_flag \u003d False\n if \u0027LATENCY\u0027 not in qos and items[\u0027LATENCY\u0027] !\u003d \u00270\u0027:\n     extra_flag \u003d True\n else:\n     for item in items:\n         if item in extra_qos:\n             extra_flag \u003d True\n             break","commit_id":"89ddd01dc9d244be479b7686b547d4280445aafa"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"e3ba13ce5a39db56dda60943d6512af25ab0b132","unresolved":false,"context_lines":[{"line_number":1518,"context_line":"                qos_flag \u003d 0"},{"line_number":1519,"context_line":"                extra_flag \u003d False"},{"line_number":1520,"context_line":"                if \u0027LATENCY\u0027 not in qos and items[\u0027LATENCY\u0027] !\u003d \u00270\u0027:"},{"line_number":1521,"context_line":"                        extra_flag \u003d True"},{"line_number":1522,"context_line":"                if not extra_flag:"},{"line_number":1523,"context_line":"                    for item in items:"},{"line_number":1524,"context_line":"                        if item in extra_qos:"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_20e109d1","line":1521,"in_reply_to":"3afc51ec_e6a808de","updated":"2016-03-15 02:50:38.000000000","message":"They are two different judgments","commit_id":"89ddd01dc9d244be479b7686b547d4280445aafa"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"01af523e5f7fd0ee1dc72211458c1a40c3e354d5","unresolved":false,"context_lines":[{"line_number":1522,"context_line":"            for items in result[\u0027data\u0027]:"},{"line_number":1523,"context_line":"                qos_flag \u003d 0"},{"line_number":1524,"context_line":"                extra_flag \u003d False"},{"line_number":1525,"context_line":"                if \u0027LATENCY\u0027 not in qos and items[\u0027LATENCY\u0027] !\u003d \u00270\u0027:"},{"line_number":1526,"context_line":"                        extra_flag \u003d True"},{"line_number":1527,"context_line":"                if not extra_flag:"},{"line_number":1528,"context_line":"                    for item in items:"}],"source_content_type":"text/x-python","patch_set":15,"id":"1af94dfe_8fe7e53f","line":1525,"updated":"2016-03-15 12:35:32.000000000","message":"-1: This should be an if else as mentioned in patch 14","commit_id":"f0970b2ca9c87856e9b8fded09fde9065afc8f57"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"eb59c3cb06843f14ed3f4c7596380923abd6841e","unresolved":false,"context_lines":[{"line_number":1522,"context_line":"            for items in result[\u0027data\u0027]:"},{"line_number":1523,"context_line":"                qos_flag \u003d 0"},{"line_number":1524,"context_line":"                extra_flag \u003d False"},{"line_number":1525,"context_line":"                if \u0027LATENCY\u0027 not in qos and items[\u0027LATENCY\u0027] !\u003d \u00270\u0027:"},{"line_number":1526,"context_line":"                        extra_flag \u003d True"},{"line_number":1527,"context_line":"                if not extra_flag:"},{"line_number":1528,"context_line":"                    for item in items:"}],"source_content_type":"text/x-python","patch_set":15,"id":"1af94dfe_55028c3f","line":1525,"in_reply_to":"1af94dfe_8fe7e53f","updated":"2016-03-15 13:14:37.000000000","message":"Done","commit_id":"f0970b2ca9c87856e9b8fded09fde9065afc8f57"}],"cinder/volume/drivers/huawei/smartx.py":[{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"c6fad24dafd8d9ba176c825923b44b4390dcd3bd","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                qos[k.upper()] \u003d v"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        if not io_type_flag:"},{"line_number":67,"context_line":"            msg \u003d (_(\u0027QoS policy must specify for IOTYPE: 0, 1, or 2,\u0027"},{"line_number":68,"context_line":"                     \u0027QoS policy: %(qos_policy)s \u0027) % {\u0027qos_policy\u0027: qos})"},{"line_number":69,"context_line":"            LOG.error(msg)"},{"line_number":70,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bae84128_d7d670c4","line":67,"updated":"2016-02-20 03:03:44.000000000","message":"There should be a space after the comma.","commit_id":"9169816548491df47f27127b7e9675959bf038fe"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"c6fad24dafd8d9ba176c825923b44b4390dcd3bd","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        # QoS policy must specify for IOTYPE and another qos_specs."},{"line_number":73,"context_line":"        if len(qos) \u003c 2:"},{"line_number":74,"context_line":"            msg \u003d (_(\u0027QoS policy must specify for IOTYPE and another \u0027"},{"line_number":75,"context_line":"                     \u0027qos_specs, QoS policy: %(qos_policy)s \u0027)"},{"line_number":76,"context_line":"                   % {\u0027qos_policy\u0027: qos})"},{"line_number":77,"context_line":"            LOG.error(msg)"},{"line_number":78,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bae84128_57e380a3","line":75,"updated":"2016-02-20 03:03:44.000000000","message":"There is a space at the end of this line, should be replaced with full stop:\n...%(qos_policy)s.\u0027)","commit_id":"9169816548491df47f27127b7e9675959bf038fe"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"6042edf4b9da9dfd21e972f91637bdd618e90e3b","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        # QoS policy must specify for IOTYPE and another qos_specs."},{"line_number":73,"context_line":"        if len(qos) \u003c 2:"},{"line_number":74,"context_line":"            msg \u003d (_(\u0027QoS policy must specify for IOTYPE and another \u0027"},{"line_number":75,"context_line":"                     \u0027qos_specs, QoS policy: %(qos_policy)s \u0027)"},{"line_number":76,"context_line":"                   % {\u0027qos_policy\u0027: qos})"},{"line_number":77,"context_line":"            LOG.error(msg)"},{"line_number":78,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bae84128_54acf734","line":75,"in_reply_to":"bae84128_57e380a3","updated":"2016-02-22 03:56:26.000000000","message":"Done","commit_id":"9169816548491df47f27127b7e9675959bf038fe"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"c6fad24dafd8d9ba176c825923b44b4390dcd3bd","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            for lower_limit in lower_limit_list:"},{"line_number":84,"context_line":"                if upper_limit in qos and lower_limit in qos:"},{"line_number":85,"context_line":"                    msg \u003d (_(\u0027QoS policy upper_limit and lower_limite \u0027"},{"line_number":86,"context_line":"                             \u0027conflict, QoS policy: %(qos_policy)s \u0027)"},{"line_number":87,"context_line":"                           % {\u0027qos_policy\u0027: qos})"},{"line_number":88,"context_line":"                    LOG.error(msg)"},{"line_number":89,"context_line":"                    raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bae84128_f7e8d47e","line":86,"updated":"2016-02-20 03:03:44.000000000","message":"ditto","commit_id":"9169816548491df47f27127b7e9675959bf038fe"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"6042edf4b9da9dfd21e972f91637bdd618e90e3b","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            for lower_limit in lower_limit_list:"},{"line_number":84,"context_line":"                if upper_limit in qos and lower_limit in qos:"},{"line_number":85,"context_line":"                    msg \u003d (_(\u0027QoS policy upper_limit and lower_limite \u0027"},{"line_number":86,"context_line":"                             \u0027conflict, QoS policy: %(qos_policy)s \u0027)"},{"line_number":87,"context_line":"                           % {\u0027qos_policy\u0027: qos})"},{"line_number":88,"context_line":"                    LOG.error(msg)"},{"line_number":89,"context_line":"                    raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bae84128_b4abc31c","line":86,"in_reply_to":"bae84128_f7e8d47e","updated":"2016-02-22 03:56:26.000000000","message":"Done","commit_id":"9169816548491df47f27127b7e9675959bf038fe"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ffad916000d9a6277c368fcb983f19a66eadfece","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        kvs \u003d qos_specs.get_qos_specs(ctxt, qos_specs_id)[\u0027specs\u0027]"},{"line_number":48,"context_line":"        LOG.info(_LI(\u0027The QoS sepcs is: %s.\u0027), kvs)"},{"line_number":49,"context_line":"        for k, v in kvs.items():"},{"line_number":50,"context_line":"            if k not in constants.HUAWEI_VALID_KEYS:"},{"line_number":51,"context_line":"                continue"},{"line_number":52,"context_line":"            if k.upper() !\u003d \u0027IOTYPE\u0027 and int(v) \u003c\u003d 0:"},{"line_number":53,"context_line":"                msg \u003d _(\u0027QoS config is wrong. %s must \u003e 0.\u0027) % k"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_06ded43e","line":50,"updated":"2016-03-14 11:22:13.000000000","message":"-1: k must be uppercased, and probably the best idea is to just do it before this line:\n\n k \u003d k.upper()\n\nAnd then we can skip all the k.upper() calls later on","commit_id":"89ddd01dc9d244be479b7686b547d4280445aafa"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"e3ba13ce5a39db56dda60943d6512af25ab0b132","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        kvs \u003d qos_specs.get_qos_specs(ctxt, qos_specs_id)[\u0027specs\u0027]"},{"line_number":48,"context_line":"        LOG.info(_LI(\u0027The QoS sepcs is: %s.\u0027), kvs)"},{"line_number":49,"context_line":"        for k, v in kvs.items():"},{"line_number":50,"context_line":"            if k not in constants.HUAWEI_VALID_KEYS:"},{"line_number":51,"context_line":"                continue"},{"line_number":52,"context_line":"            if k.upper() !\u003d \u0027IOTYPE\u0027 and int(v) \u003c\u003d 0:"},{"line_number":53,"context_line":"                msg \u003d _(\u0027QoS config is wrong. %s must \u003e 0.\u0027) % k"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_3b001a01","line":50,"in_reply_to":"3afc51ec_06ded43e","updated":"2016-03-15 02:50:38.000000000","message":"HUAWEI_VALID_KEYS need lower case.","commit_id":"89ddd01dc9d244be479b7686b547d4280445aafa"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"bb564ded4c4dafada74aed9d38f6e9041d6214a7","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        kvs \u003d qos_specs.get_qos_specs(ctxt, qos_specs_id)[\u0027specs\u0027]"},{"line_number":48,"context_line":"        LOG.info(_LI(\u0027The QoS sepcs is: %s.\u0027), kvs)"},{"line_number":49,"context_line":"        for k, v in kvs.items():"},{"line_number":50,"context_line":"            if k not in constants.HUAWEI_VALID_KEYS:"},{"line_number":51,"context_line":"                continue"},{"line_number":52,"context_line":"            if k.upper() !\u003d \u0027IOTYPE\u0027 and int(v) \u003c\u003d 0:"},{"line_number":53,"context_line":"                msg \u003d _(\u0027QoS config is wrong. %s must \u003e 0.\u0027) % k"}],"source_content_type":"text/x-python","patch_set":14,"id":"1af94dfe_24799830","line":50,"in_reply_to":"3afc51ec_3b001a01","updated":"2016-03-15 12:35:22.000000000","message":"This makes no sense, if it needs to be an exact match, then we don\u0027t need to do all the `upper` method calls later on, just compare with the right string value and we are done.","commit_id":"89ddd01dc9d244be479b7686b547d4280445aafa"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ffad916000d9a6277c368fcb983f19a66eadfece","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                qos[k.upper()] \u003d v"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        if not io_type_flag:"},{"line_number":67,"context_line":"            msg \u003d (_(\u0027QoS policy must specify for IOTYPE: 0, 1, or 2, \u0027"},{"line_number":68,"context_line":"                     \u0027QoS policy: %(qos_policy)s \u0027) % {\u0027qos_policy\u0027: qos})"},{"line_number":69,"context_line":"            LOG.error(msg)"},{"line_number":70,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_06b534ed","line":67,"updated":"2016-03-14 11:22:13.000000000","message":"nig: s/specify for/specify","commit_id":"89ddd01dc9d244be479b7686b547d4280445aafa"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"e3ba13ce5a39db56dda60943d6512af25ab0b132","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                qos[k.upper()] \u003d v"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        if not io_type_flag:"},{"line_number":67,"context_line":"            msg \u003d (_(\u0027QoS policy must specify for IOTYPE: 0, 1, or 2, \u0027"},{"line_number":68,"context_line":"                     \u0027QoS policy: %(qos_policy)s \u0027) % {\u0027qos_policy\u0027: qos})"},{"line_number":69,"context_line":"            LOG.error(msg)"},{"line_number":70,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_3b4e5a6f","line":67,"in_reply_to":"3afc51ec_06b534ed","updated":"2016-03-15 02:50:38.000000000","message":"Done","commit_id":"89ddd01dc9d244be479b7686b547d4280445aafa"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ffad916000d9a6277c368fcb983f19a66eadfece","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            LOG.error(msg)"},{"line_number":70,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        # QoS policy must specify for IOTYPE and another qos_specs."},{"line_number":73,"context_line":"        if len(qos) \u003c 2:"},{"line_number":74,"context_line":"            msg \u003d (_(\u0027QoS policy must specify for IOTYPE and another \u0027"},{"line_number":75,"context_line":"                     \u0027qos_specs, QoS policy: %(qos_policy)s.\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_86c9447b","line":72,"updated":"2016-03-14 11:22:13.000000000","message":"nit: s/specify for/specify","commit_id":"89ddd01dc9d244be479b7686b547d4280445aafa"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ffad916000d9a6277c368fcb983f19a66eadfece","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        # QoS policy must specify for IOTYPE and another qos_specs."},{"line_number":73,"context_line":"        if len(qos) \u003c 2:"},{"line_number":74,"context_line":"            msg \u003d (_(\u0027QoS policy must specify for IOTYPE and another \u0027"},{"line_number":75,"context_line":"                     \u0027qos_specs, QoS policy: %(qos_policy)s.\u0027)"},{"line_number":76,"context_line":"                   % {\u0027qos_policy\u0027: qos})"},{"line_number":77,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_46cbbc53","line":74,"updated":"2016-03-14 11:22:13.000000000","message":"nit: s/specify for/specify","commit_id":"89ddd01dc9d244be479b7686b547d4280445aafa"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"e3ba13ce5a39db56dda60943d6512af25ab0b132","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        # QoS policy must specify for IOTYPE and another qos_specs."},{"line_number":73,"context_line":"        if len(qos) \u003c 2:"},{"line_number":74,"context_line":"            msg \u003d (_(\u0027QoS policy must specify for IOTYPE and another \u0027"},{"line_number":75,"context_line":"                     \u0027qos_specs, QoS policy: %(qos_policy)s.\u0027)"},{"line_number":76,"context_line":"                   % {\u0027qos_policy\u0027: qos})"},{"line_number":77,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_db3016eb","line":74,"in_reply_to":"3afc51ec_46cbbc53","updated":"2016-03-15 02:50:38.000000000","message":"Done","commit_id":"89ddd01dc9d244be479b7686b547d4280445aafa"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ffad916000d9a6277c368fcb983f19a66eadfece","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        lower_limit_list \u003d [\u0027MINIOPS\u0027, \u0027LATENCY\u0027, \u0027MINBANDWIDTH\u0027]"},{"line_number":81,"context_line":"        upper_limit_list \u003d [\u0027MAXIOPS\u0027, \u0027MAXBANDWIDTH\u0027]"},{"line_number":82,"context_line":"        for upper_limit in upper_limit_list:"},{"line_number":83,"context_line":"            for lower_limit in lower_limit_list:"},{"line_number":84,"context_line":"                if upper_limit in qos and lower_limit in qos:"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_c6122cb4","line":81,"updated":"2016-03-14 11:22:13.000000000","message":"nit: Why not move these to the constants file and then generate the HUAWEI_VALID_KEYS from them?\n\n LOWER_LIMIT_KEYS \u003d [\u0027MINIOPS\u0027, \u0027LATENCY\u0027, \u0027MINBANDWIDTH\u0027]\n UPPER_LIMIT_KEYS \u003d [\u0027MAXIOPS\u0027, \u0027MAXBANDWIDTH\u0027]\n HUAWEI_VALID_KEYS \u003d LOWER_LIMIT_KEYS + UPPER_LIMIT_KEYS + [IOTYPE]","commit_id":"89ddd01dc9d244be479b7686b547d4280445aafa"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"e3ba13ce5a39db56dda60943d6512af25ab0b132","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        lower_limit_list \u003d [\u0027MINIOPS\u0027, \u0027LATENCY\u0027, \u0027MINBANDWIDTH\u0027]"},{"line_number":81,"context_line":"        upper_limit_list \u003d [\u0027MAXIOPS\u0027, \u0027MAXBANDWIDTH\u0027]"},{"line_number":82,"context_line":"        for upper_limit in upper_limit_list:"},{"line_number":83,"context_line":"            for lower_limit in lower_limit_list:"},{"line_number":84,"context_line":"                if upper_limit in qos and lower_limit in qos:"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_fb3512da","line":81,"in_reply_to":"3afc51ec_c6122cb4","updated":"2016-03-15 02:50:38.000000000","message":"Done","commit_id":"89ddd01dc9d244be479b7686b547d4280445aafa"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ffad916000d9a6277c368fcb983f19a66eadfece","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        for upper_limit in upper_limit_list:"},{"line_number":83,"context_line":"            for lower_limit in lower_limit_list:"},{"line_number":84,"context_line":"                if upper_limit in qos and lower_limit in qos:"},{"line_number":85,"context_line":"                    msg \u003d (_(\u0027QoS policy upper_limit and lower_limite \u0027"},{"line_number":86,"context_line":"                             \u0027conflict, QoS policy: %(qos_policy)s.\u0027)"},{"line_number":87,"context_line":"                           % {\u0027qos_policy\u0027: qos})"},{"line_number":88,"context_line":"                    LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_66735816","line":85,"updated":"2016-03-14 11:22:13.000000000","message":"nit: s/lower_limite/lower_limit\n\nnit: It would be a good idea to return the upper_limit and lower_limit that triggered the error.","commit_id":"89ddd01dc9d244be479b7686b547d4280445aafa"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"e3ba13ce5a39db56dda60943d6512af25ab0b132","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        for upper_limit in upper_limit_list:"},{"line_number":83,"context_line":"            for lower_limit in lower_limit_list:"},{"line_number":84,"context_line":"                if upper_limit in qos and lower_limit in qos:"},{"line_number":85,"context_line":"                    msg \u003d (_(\u0027QoS policy upper_limit and lower_limite \u0027"},{"line_number":86,"context_line":"                             \u0027conflict, QoS policy: %(qos_policy)s.\u0027)"},{"line_number":87,"context_line":"                           % {\u0027qos_policy\u0027: qos})"},{"line_number":88,"context_line":"                    LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_9b368ee5","line":85,"in_reply_to":"3afc51ec_66735816","updated":"2016-03-15 02:50:38.000000000","message":"There is no need to modify.","commit_id":"89ddd01dc9d244be479b7686b547d4280445aafa"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"bb564ded4c4dafada74aed9d38f6e9041d6214a7","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        for upper_limit in upper_limit_list:"},{"line_number":83,"context_line":"            for lower_limit in lower_limit_list:"},{"line_number":84,"context_line":"                if upper_limit in qos and lower_limit in qos:"},{"line_number":85,"context_line":"                    msg \u003d (_(\u0027QoS policy upper_limit and lower_limite \u0027"},{"line_number":86,"context_line":"                             \u0027conflict, QoS policy: %(qos_policy)s.\u0027)"},{"line_number":87,"context_line":"                           % {\u0027qos_policy\u0027: qos})"},{"line_number":88,"context_line":"                    LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"1af94dfe_a44e4894","line":85,"in_reply_to":"3afc51ec_9b368ee5","updated":"2016-03-15 12:35:22.000000000","message":"It was magically changed, cool!  ;-)","commit_id":"89ddd01dc9d244be479b7686b547d4280445aafa"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"01af523e5f7fd0ee1dc72211458c1a40c3e354d5","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        for k, v in kvs.items():"},{"line_number":50,"context_line":"            if k not in constants.HUAWEI_VALID_KEYS:"},{"line_number":51,"context_line":"                continue"},{"line_number":52,"context_line":"            if k.upper() !\u003d \u0027IOTYPE\u0027 and int(v) \u003c\u003d 0:"},{"line_number":53,"context_line":"                msg \u003d _(\u0027QoS config is wrong. %s must \u003e 0.\u0027) % k"},{"line_number":54,"context_line":"                LOG.error(msg)"},{"line_number":55,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":15,"id":"1af94dfe_642c40ac","line":52,"updated":"2016-03-15 12:35:32.000000000","message":"-1: If k really need to be one of HUWAWEI_VALID_KEYS","commit_id":"f0970b2ca9c87856e9b8fded09fde9065afc8f57"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"eb59c3cb06843f14ed3f4c7596380923abd6841e","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        for k, v in kvs.items():"},{"line_number":50,"context_line":"            if k not in constants.HUAWEI_VALID_KEYS:"},{"line_number":51,"context_line":"                continue"},{"line_number":52,"context_line":"            if k.upper() !\u003d \u0027IOTYPE\u0027 and int(v) \u003c\u003d 0:"},{"line_number":53,"context_line":"                msg \u003d _(\u0027QoS config is wrong. %s must \u003e 0.\u0027) % k"},{"line_number":54,"context_line":"                LOG.error(msg)"},{"line_number":55,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":15,"id":"1af94dfe_d594dce9","line":52,"in_reply_to":"1af94dfe_642c40ac","updated":"2016-03-15 13:14:37.000000000","message":"Done","commit_id":"f0970b2ca9c87856e9b8fded09fde9065afc8f57"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"01af523e5f7fd0ee1dc72211458c1a40c3e354d5","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                msg \u003d _(\u0027QoS config is wrong. %s must \u003e 0.\u0027) % k"},{"line_number":54,"context_line":"                LOG.error(msg)"},{"line_number":55,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":56,"context_line":"            if k.upper() \u003d\u003d \u0027IOTYPE\u0027 and v not in [\u00270\u0027, \u00271\u0027, \u00272\u0027]:"},{"line_number":57,"context_line":"                msg \u003d _(\u0027Illegal value specified for IOTYPE: 0, 1, or 2.\u0027)"},{"line_number":58,"context_line":"                LOG.error(msg)"},{"line_number":59,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":15,"id":"1af94dfe_cf256daf","line":56,"updated":"2016-03-15 12:35:32.000000000","message":"-1: If k really needs to be a case sensitive match for one of HUAWEI_VALID_KEYS, then there\u0027s no need to use upper, just compare against \u0027IOType\u0027","commit_id":"f0970b2ca9c87856e9b8fded09fde9065afc8f57"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"eb59c3cb06843f14ed3f4c7596380923abd6841e","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                msg \u003d _(\u0027QoS config is wrong. %s must \u003e 0.\u0027) % k"},{"line_number":54,"context_line":"                LOG.error(msg)"},{"line_number":55,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":56,"context_line":"            if k.upper() \u003d\u003d \u0027IOTYPE\u0027 and v not in [\u00270\u0027, \u00271\u0027, \u00272\u0027]:"},{"line_number":57,"context_line":"                msg \u003d _(\u0027Illegal value specified for IOTYPE: 0, 1, or 2.\u0027)"},{"line_number":58,"context_line":"                LOG.error(msg)"},{"line_number":59,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":15,"id":"1af94dfe_75f9884d","line":56,"in_reply_to":"1af94dfe_cf256daf","updated":"2016-03-15 13:14:37.000000000","message":"Done","commit_id":"f0970b2ca9c87856e9b8fded09fde9065afc8f57"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"01af523e5f7fd0ee1dc72211458c1a40c3e354d5","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                msg \u003d _(\u0027Illegal value specified for IOTYPE: 0, 1, or 2.\u0027)"},{"line_number":58,"context_line":"                LOG.error(msg)"},{"line_number":59,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":60,"context_line":"            elif k.upper() \u003d\u003d \u0027IOTYPE\u0027:"},{"line_number":61,"context_line":"                io_type_flag \u003d 1"},{"line_number":62,"context_line":"                qos[k.upper()] \u003d v"},{"line_number":63,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":15,"id":"1af94dfe_4f3afdce","line":60,"updated":"2016-03-15 12:35:32.000000000","message":"-1: We don\u0027t need this extra condition L56 to L62:\n\n if k \u003d\u003d \u0027IOType\u0027:\n     if v not in [\u00270\u0027, \u00271\u0027, \u00272\u0027]:\n         msg \u003d _(\u0027Illegal value specified for IOTYPE: 0, 1, or 2.\u0027)\n         LOG.error(msg)\n         raise exception.InvalidInput(reason\u003dmsg)\n     io_type_flag \u003d 1\n     qos[k.upper()] \u003d v","commit_id":"f0970b2ca9c87856e9b8fded09fde9065afc8f57"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"eb59c3cb06843f14ed3f4c7596380923abd6841e","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                msg \u003d _(\u0027Illegal value specified for IOTYPE: 0, 1, or 2.\u0027)"},{"line_number":58,"context_line":"                LOG.error(msg)"},{"line_number":59,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":60,"context_line":"            elif k.upper() \u003d\u003d \u0027IOTYPE\u0027:"},{"line_number":61,"context_line":"                io_type_flag \u003d 1"},{"line_number":62,"context_line":"                qos[k.upper()] \u003d v"},{"line_number":63,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":15,"id":"1af94dfe_35ff0036","line":60,"in_reply_to":"1af94dfe_4f3afdce","updated":"2016-03-15 13:14:37.000000000","message":"Done","commit_id":"f0970b2ca9c87856e9b8fded09fde9065afc8f57"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"2d3110f2755a85542f62493b93be4f5a77eef425","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                msg \u003d _(\u0027QoS config is wrong. %s must \u003e 0.\u0027) % k"},{"line_number":54,"context_line":"                LOG.error(msg)"},{"line_number":55,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":56,"context_line":"           if k \u003d\u003d \u0027IOType\u0027:"},{"line_number":57,"context_line":"                if v not in [\u00270\u0027, \u00271\u0027, \u00272\u0027]:"},{"line_number":58,"context_line":"                    msg \u003d _(\u0027Illegal value specified for IOTYPE: 0, 1, or 2.\u0027)"},{"line_number":59,"context_line":"                    LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1af94dfe_4c3af437","line":56,"updated":"2016-03-15 17:51:35.000000000","message":"-1: Wrong indentation level.","commit_id":"cb67442bbe08a7a9b7f0deba7cc0c4b3f3c46688"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"8689d2579252de10ffca54774569bbb658c915eb","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                io_type_flag \u003d 1"},{"line_number":62,"context_line":"                qos[k.upper()] \u003d v"},{"line_number":63,"context_line":"            else:"},{"line_number":64,"context_line":"                qos[k.upper()] \u003d v"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        if not io_type_flag:"},{"line_number":67,"context_line":"            msg \u003d (_(\u0027QoS policy must specify for IOTYPE: 0, 1, or 2, \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"1af94dfe_c7bef1d3","line":64,"updated":"2016-03-15 13:55:37.000000000","message":"Oh, I just realized we don\u0027t really need this else and we could just remove L62 and unindent L64  and it would do the same.\n\nAnd if we move the first if of L52 to here with an elif we can remove the first condition of the if...\n\nBut refactoring this whole method is out of the scope of this patch.  So I won\u0027t nag you anymore.","commit_id":"cb67442bbe08a7a9b7f0deba7cc0c4b3f3c46688"}]}
