)]}'
{"manila/share/drivers/huawei/v3/connection.py":[{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"e660851dbf8143485d164066ac42c7ec4e8d8c5b","unresolved":false,"context_lines":[{"line_number":303,"context_line":"            LOG.error(err_msg)"},{"line_number":304,"context_line":"            raise exception.InvalidInput(reason\u003derr_msg)"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    def get_qos_capability(self):"},{"line_number":307,"context_line":"        version \u003d self.helper.find_array_version()"},{"line_number":308,"context_line":"        if version.upper() \u003e\u003d constants.ARRAY_VERSION:"},{"line_number":309,"context_line":"            return True"},{"line_number":310,"context_line":"        else:"},{"line_number":311,"context_line":"            return False"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"    def delete_share(self, share, share_server\u003dNone):"},{"line_number":314,"context_line":"        \"\"\"Delete share.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"bae84128_763fcd25","line":311,"range":{"start_line":306,"start_character":0,"end_line":311,"end_character":24},"updated":"2016-02-19 12:50:04.000000000","message":"Can\u0027t this be set to an attribute in this class so you don\u0027t have to run it for every share being deleted?","commit_id":"1189c5fab1b954232a9b07cfa900a9fff7dc874a"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"a1d7f4f3ea6279673909d8957493daf0defb4751","unresolved":false,"context_lines":[{"line_number":303,"context_line":"            LOG.error(err_msg)"},{"line_number":304,"context_line":"            raise exception.InvalidInput(reason\u003derr_msg)"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    def get_qos_capability(self):"},{"line_number":307,"context_line":"        version \u003d self.helper.find_array_version()"},{"line_number":308,"context_line":"        if version.upper() \u003e\u003d constants.ARRAY_VERSION:"},{"line_number":309,"context_line":"            return True"},{"line_number":310,"context_line":"        else:"},{"line_number":311,"context_line":"            return False"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"    def delete_share(self, share, share_server\u003dNone):"},{"line_number":314,"context_line":"        \"\"\"Delete share.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"bae84128_d77da26f","line":311,"range":{"start_line":306,"start_character":0,"end_line":311,"end_character":24},"in_reply_to":"bae84128_763fcd25","updated":"2016-02-22 08:22:31.000000000","message":"Done","commit_id":"1189c5fab1b954232a9b07cfa900a9fff7dc874a"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"cafed84f5f5405ef03a12d4d3c01f4d953ec333a","unresolved":false,"context_lines":[{"line_number":304,"context_line":"            LOG.error(err_msg)"},{"line_number":305,"context_line":"            raise exception.InvalidInput(reason\u003derr_msg)"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"    def get_qos_capability(self):"},{"line_number":308,"context_line":"        version \u003d self.helper.find_array_version()"},{"line_number":309,"context_line":"        if version.upper() \u003e\u003d constants.ARRAY_VERSION:"},{"line_number":310,"context_line":"            self.qos_support \u003d True"}],"source_content_type":"text/x-python","patch_set":4,"id":"bae84128_56e054fa","line":307,"range":{"start_line":307,"start_character":8,"end_line":307,"end_character":26},"updated":"2016-02-22 20:22:21.000000000","message":"Shouldn\u0027t this be a private method?\n\nAnd does the QoS support vary for each pool?  Similar to what Rodrigo asked, why can\u0027t you call this method exactly once in __init__ and use that value anytime you need it?","commit_id":"6cbf02957c21a814cd10d4d181f408d5d96e0b45"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"1e5703d1940f6158b08c4b19b75ed0345d4d2dbb","unresolved":false,"context_lines":[{"line_number":304,"context_line":"            LOG.error(err_msg)"},{"line_number":305,"context_line":"            raise exception.InvalidInput(reason\u003derr_msg)"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"    def get_qos_capability(self):"},{"line_number":308,"context_line":"        version \u003d self.helper.find_array_version()"},{"line_number":309,"context_line":"        if version.upper() \u003e\u003d constants.ARRAY_VERSION:"},{"line_number":310,"context_line":"            self.qos_support \u003d True"}],"source_content_type":"text/x-python","patch_set":4,"id":"bae84128_e179d9c9","line":307,"range":{"start_line":307,"start_character":8,"end_line":307,"end_character":26},"in_reply_to":"bae84128_56e054fa","updated":"2016-02-23 02:20:01.000000000","message":"QoS support varies for different array version. When update array on line, qos support may change, so I\u0027d like to update it with time.","commit_id":"6cbf02957c21a814cd10d4d181f408d5d96e0b45"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"cafed84f5f5405ef03a12d4d3c01f4d953ec333a","unresolved":false,"context_lines":[{"line_number":306,"context_line":""},{"line_number":307,"context_line":"    def get_qos_capability(self):"},{"line_number":308,"context_line":"        version \u003d self.helper.find_array_version()"},{"line_number":309,"context_line":"        if version.upper() \u003e\u003d constants.ARRAY_VERSION:"},{"line_number":310,"context_line":"            self.qos_support \u003d True"},{"line_number":311,"context_line":"        else:"},{"line_number":312,"context_line":"            self.qos_support \u003d False"}],"source_content_type":"text/x-python","patch_set":4,"id":"bae84128_161fec6c","line":309,"range":{"start_line":309,"start_character":40,"end_line":309,"end_character":53},"updated":"2016-02-22 20:22:21.000000000","message":"How does the name \u0027ARRAY_VERSION\u0027 imply that QoS is supported?  Please choose a sensible name that means something, like \u0027MIN_ARRAY_VERSION_FOR_QOS\u0027 or similar.  Or borrow the Features mechanism from the NetApp driver: https://github.com/openstack/manila/blob/master/manila/share/drivers/netapp/dataontap/client/client_base.py#L78","commit_id":"6cbf02957c21a814cd10d4d181f408d5d96e0b45"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"1e5703d1940f6158b08c4b19b75ed0345d4d2dbb","unresolved":false,"context_lines":[{"line_number":306,"context_line":""},{"line_number":307,"context_line":"    def get_qos_capability(self):"},{"line_number":308,"context_line":"        version \u003d self.helper.find_array_version()"},{"line_number":309,"context_line":"        if version.upper() \u003e\u003d constants.ARRAY_VERSION:"},{"line_number":310,"context_line":"            self.qos_support \u003d True"},{"line_number":311,"context_line":"        else:"},{"line_number":312,"context_line":"            self.qos_support \u003d False"}],"source_content_type":"text/x-python","patch_set":4,"id":"bae84128_1c3382f7","line":309,"range":{"start_line":309,"start_character":40,"end_line":309,"end_character":53},"in_reply_to":"bae84128_161fec6c","updated":"2016-02-23 02:20:01.000000000","message":"Done","commit_id":"6cbf02957c21a814cd10d4d181f408d5d96e0b45"}],"manila/share/drivers/huawei/v3/helper.py":[{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"62e58b05b7e91993804d4b6fa4206c3d3923d7e4","unresolved":false,"context_lines":[{"line_number":834,"context_line":"            if \u0027LATENCY\u0027 not in temp_qos:"},{"line_number":835,"context_line":"                temp_qos[\u0027LATENCY\u0027] \u003d \u00270\u0027"},{"line_number":836,"context_line":"            for items in result[\u0027data\u0027]:"},{"line_number":837,"context_line":"                qos_flag \u003d True"},{"line_number":838,"context_line":"                for key in constants.OPTS_QOS_VALUE:"},{"line_number":839,"context_line":"                    if temp_qos.get(key.upper()) !\u003d items.get(key.upper()):"},{"line_number":840,"context_line":"                        qos_flag \u003d False"},{"line_number":841,"context_line":"                        break"},{"line_number":842,"context_line":""},{"line_number":843,"context_line":"                if qos_flag:"},{"line_number":844,"context_line":"                    fs_num \u003d len(items[\u0027FSLIST\u0027].split(\",\"))"},{"line_number":845,"context_line":"                    # We use this QoS only if the filesystems in it is less"},{"line_number":846,"context_line":"                    # than 64, else we cannot add filesystem to this QoS"}],"source_content_type":"text/x-python","patch_set":1,"id":"dae33548_30d52d43","line":843,"range":{"start_line":837,"start_character":0,"end_line":843,"end_character":28},"updated":"2016-02-15 16:32:14.000000000","message":"You can use python\u0027s for/else statement and remove the qos_flag variable.","commit_id":"850b24be45dedccd6149f4f2676119ecb9a13bea"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"56d61967add608821847277de66b539a7d75fb97","unresolved":false,"context_lines":[{"line_number":834,"context_line":"            if \u0027LATENCY\u0027 not in temp_qos:"},{"line_number":835,"context_line":"                temp_qos[\u0027LATENCY\u0027] \u003d \u00270\u0027"},{"line_number":836,"context_line":"            for items in result[\u0027data\u0027]:"},{"line_number":837,"context_line":"                qos_flag \u003d True"},{"line_number":838,"context_line":"                for key in constants.OPTS_QOS_VALUE:"},{"line_number":839,"context_line":"                    if temp_qos.get(key.upper()) !\u003d items.get(key.upper()):"},{"line_number":840,"context_line":"                        qos_flag \u003d False"},{"line_number":841,"context_line":"                        break"},{"line_number":842,"context_line":""},{"line_number":843,"context_line":"                if qos_flag:"},{"line_number":844,"context_line":"                    fs_num \u003d len(items[\u0027FSLIST\u0027].split(\",\"))"},{"line_number":845,"context_line":"                    # We use this QoS only if the filesystems in it is less"},{"line_number":846,"context_line":"                    # than 64, else we cannot add filesystem to this QoS"}],"source_content_type":"text/x-python","patch_set":1,"id":"dae33548_df85db59","line":843,"range":{"start_line":837,"start_character":0,"end_line":843,"end_character":28},"in_reply_to":"dae33548_30d52d43","updated":"2016-02-16 02:22:46.000000000","message":"Done","commit_id":"850b24be45dedccd6149f4f2676119ecb9a13bea"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"0a1570eda7e1470fdb79ee21e8785a12a591573a","unresolved":false,"context_lines":[{"line_number":833,"context_line":"        if \u0027data\u0027 in result:"},{"line_number":834,"context_line":"            if \u0027LATENCY\u0027 not in temp_qos:"},{"line_number":835,"context_line":"                temp_qos[\u0027LATENCY\u0027] \u003d \u00270\u0027"},{"line_number":836,"context_line":"            for items in result[\u0027data\u0027]:"},{"line_number":837,"context_line":"                for key in constants.OPTS_QOS_VALUE:"},{"line_number":838,"context_line":"                    if temp_qos.get(key.upper()) !\u003d items.get(key.upper()):"},{"line_number":839,"context_line":"                        break"}],"source_content_type":"text/x-python","patch_set":2,"id":"dae33548_db77a638","line":836,"range":{"start_line":836,"start_character":16,"end_line":836,"end_character":21},"updated":"2016-02-16 08:41:18.000000000","message":"Why \"items\"? for me the usage look more like a single item","commit_id":"05f6b425c239e11a7c2adf7332985abf168e5c91"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"d331867f6d29154010859b33c9a1b628761cc84a","unresolved":false,"context_lines":[{"line_number":833,"context_line":"        if \u0027data\u0027 in result:"},{"line_number":834,"context_line":"            if \u0027LATENCY\u0027 not in temp_qos:"},{"line_number":835,"context_line":"                temp_qos[\u0027LATENCY\u0027] \u003d \u00270\u0027"},{"line_number":836,"context_line":"            for items in result[\u0027data\u0027]:"},{"line_number":837,"context_line":"                for key in constants.OPTS_QOS_VALUE:"},{"line_number":838,"context_line":"                    if temp_qos.get(key.upper()) !\u003d items.get(key.upper()):"},{"line_number":839,"context_line":"                        break"}],"source_content_type":"text/x-python","patch_set":2,"id":"dae33548_473f35d6","line":836,"range":{"start_line":836,"start_character":16,"end_line":836,"end_character":21},"in_reply_to":"dae33548_db77a638","updated":"2016-02-16 10:06:08.000000000","message":"Done","commit_id":"05f6b425c239e11a7c2adf7332985abf168e5c91"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"0a1570eda7e1470fdb79ee21e8785a12a591573a","unresolved":false,"context_lines":[{"line_number":838,"context_line":"                    if temp_qos.get(key.upper()) !\u003d items.get(key.upper()):"},{"line_number":839,"context_line":"                        break"},{"line_number":840,"context_line":""},{"line_number":841,"context_line":"                else:"},{"line_number":842,"context_line":"                    fs_num \u003d len(items[\u0027FSLIST\u0027].split(\",\"))"},{"line_number":843,"context_line":"                    # We use this QoS only if the filesystems in it is less"},{"line_number":844,"context_line":"                    # than 64, else we cannot add filesystem to this QoS"}],"source_content_type":"text/x-python","patch_set":2,"id":"dae33548_fb9eeab6","line":841,"updated":"2016-02-16 08:41:18.000000000","message":"to which \"if\" is this else belonging to? For me it looks like there are some spaces missing? Strange that it worked this way.","commit_id":"05f6b425c239e11a7c2adf7332985abf168e5c91"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"3fc9f33bdf2d1cee7c8b33dbc3eb2c6e179d8bf2","unresolved":false,"context_lines":[{"line_number":838,"context_line":"                    if temp_qos.get(key.upper()) !\u003d items.get(key.upper()):"},{"line_number":839,"context_line":"                        break"},{"line_number":840,"context_line":""},{"line_number":841,"context_line":"                else:"},{"line_number":842,"context_line":"                    fs_num \u003d len(items[\u0027FSLIST\u0027].split(\",\"))"},{"line_number":843,"context_line":"                    # We use this QoS only if the filesystems in it is less"},{"line_number":844,"context_line":"                    # than 64, else we cannot add filesystem to this QoS"}],"source_content_type":"text/x-python","patch_set":2,"id":"dae33548_c1d32c37","line":841,"in_reply_to":"dae33548_273dd0bb","updated":"2016-02-16 11:54:46.000000000","message":"ok never saw this one. thanks :)","commit_id":"05f6b425c239e11a7c2adf7332985abf168e5c91"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"d331867f6d29154010859b33c9a1b628761cc84a","unresolved":false,"context_lines":[{"line_number":838,"context_line":"                    if temp_qos.get(key.upper()) !\u003d items.get(key.upper()):"},{"line_number":839,"context_line":"                        break"},{"line_number":840,"context_line":""},{"line_number":841,"context_line":"                else:"},{"line_number":842,"context_line":"                    fs_num \u003d len(items[\u0027FSLIST\u0027].split(\",\"))"},{"line_number":843,"context_line":"                    # We use this QoS only if the filesystems in it is less"},{"line_number":844,"context_line":"                    # than 64, else we cannot add filesystem to this QoS"}],"source_content_type":"text/x-python","patch_set":2,"id":"dae33548_273dd0bb","line":841,"in_reply_to":"dae33548_fb9eeab6","updated":"2016-02-16 10:06:08.000000000","message":"python\u0027s for/else statement.","commit_id":"05f6b425c239e11a7c2adf7332985abf168e5c91"}],"manila/share/drivers/huawei/v3/smartx.py":[{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"62e58b05b7e91993804d4b6fa4206c3d3923d7e4","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        lowerlimit \u003d constants.QOS_LOWER_LIMIT"},{"line_number":178,"context_line":"        upperlimit \u003d constants.QOS_UPPER_LIMIT"},{"line_number":179,"context_line":"        if (list(set(lowerlimit).intersection(set(qos)))"},{"line_number":180,"context_line":"                and list(set(upperlimit).intersection(set(qos)))):"},{"line_number":181,"context_line":"            msg \u003d (_(\u0027QoS policy conflict, both protection policy and \u0027"},{"line_number":182,"context_line":"                     \u0027restriction policy are set. \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"dae33548_4b011fae","line":179,"range":{"start_line":179,"start_character":12,"end_line":179,"end_character":17},"updated":"2016-02-15 16:32:14.000000000","message":"No need for this conversion, you can check if the set is not empty without converting it to a list.","commit_id":"850b24be45dedccd6149f4f2676119ecb9a13bea"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"56d61967add608821847277de66b539a7d75fb97","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        lowerlimit \u003d constants.QOS_LOWER_LIMIT"},{"line_number":178,"context_line":"        upperlimit \u003d constants.QOS_UPPER_LIMIT"},{"line_number":179,"context_line":"        if (list(set(lowerlimit).intersection(set(qos)))"},{"line_number":180,"context_line":"                and list(set(upperlimit).intersection(set(qos)))):"},{"line_number":181,"context_line":"            msg \u003d (_(\u0027QoS policy conflict, both protection policy and \u0027"},{"line_number":182,"context_line":"                     \u0027restriction policy are set. \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"dae33548_bfba9721","line":179,"range":{"start_line":179,"start_character":12,"end_line":179,"end_character":17},"in_reply_to":"dae33548_4b011fae","updated":"2016-02-16 02:22:46.000000000","message":"Done","commit_id":"850b24be45dedccd6149f4f2676119ecb9a13bea"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"62e58b05b7e91993804d4b6fa4206c3d3923d7e4","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        lowerlimit \u003d constants.QOS_LOWER_LIMIT"},{"line_number":178,"context_line":"        upperlimit \u003d constants.QOS_UPPER_LIMIT"},{"line_number":179,"context_line":"        if (list(set(lowerlimit).intersection(set(qos)))"},{"line_number":180,"context_line":"                and list(set(upperlimit).intersection(set(qos)))):"},{"line_number":181,"context_line":"            msg \u003d (_(\u0027QoS policy conflict, both protection policy and \u0027"},{"line_number":182,"context_line":"                     \u0027restriction policy are set. \u0027"},{"line_number":183,"context_line":"                     \u0027QoS policy: %(qos_policy)s \u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"dae33548_0bcc3788","line":180,"range":{"start_line":180,"start_character":20,"end_line":180,"end_character":25},"updated":"2016-02-15 16:32:14.000000000","message":"Same","commit_id":"850b24be45dedccd6149f4f2676119ecb9a13bea"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"56d61967add608821847277de66b539a7d75fb97","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        lowerlimit \u003d constants.QOS_LOWER_LIMIT"},{"line_number":178,"context_line":"        upperlimit \u003d constants.QOS_UPPER_LIMIT"},{"line_number":179,"context_line":"        if (list(set(lowerlimit).intersection(set(qos)))"},{"line_number":180,"context_line":"                and list(set(upperlimit).intersection(set(qos)))):"},{"line_number":181,"context_line":"            msg \u003d (_(\u0027QoS policy conflict, both protection policy and \u0027"},{"line_number":182,"context_line":"                     \u0027restriction policy are set. \u0027"},{"line_number":183,"context_line":"                     \u0027QoS policy: %(qos_policy)s \u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"dae33548_ff825f51","line":180,"range":{"start_line":180,"start_character":20,"end_line":180,"end_character":25},"in_reply_to":"dae33548_0bcc3788","updated":"2016-02-16 02:22:46.000000000","message":"Done","commit_id":"850b24be45dedccd6149f4f2676119ecb9a13bea"}]}
