)]}'
{"cinder/tests/unit/test_hitachi_hnas_backend.py":[{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"9f72e6abbe01b1d7b6bbdb255e2899d5a521c83d","unresolved":false,"context_lines":[{"line_number":249,"context_line":"                                                          \u0027 SSC connection\u0027),"},{"line_number":250,"context_line":"                      putils.ProcessExecutionError(stderr\u003d\u0027Connection reset\u0027),"},{"line_number":251,"context_line":"                      putils.ProcessExecutionError(stderr\u003d\u0027Connection reset\u0027),"},{"line_number":252,"context_line":"                      putils.ProcessExecutionError(stderr\u003d\u0027Connection reset\u0027)]"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        self.mock_object(os.path, \u0027isfile\u0027,"},{"line_number":255,"context_line":"                         mock.Mock(return_value\u003dTrue))"}],"source_content_type":"text/x-python","patch_set":32,"id":"7aa08908_145f4a42","line":252,"updated":"2016-06-06 15:16:57.000000000","message":"Why is this repeated?\nahhh..because connection is rest multiple times...very clever.","commit_id":"af9048d89f3268014eb29234a24ebe1df482c9c8"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"954c27e7a3ad3225cc94c1d5da14ece06ae4859b","unresolved":false,"context_lines":[{"line_number":249,"context_line":"                                                          \u0027 SSC connection\u0027),"},{"line_number":250,"context_line":"                      putils.ProcessExecutionError(stderr\u003d\u0027Connection reset\u0027),"},{"line_number":251,"context_line":"                      putils.ProcessExecutionError(stderr\u003d\u0027Connection reset\u0027),"},{"line_number":252,"context_line":"                      putils.ProcessExecutionError(stderr\u003d\u0027Connection reset\u0027)]"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        self.mock_object(os.path, \u0027isfile\u0027,"},{"line_number":255,"context_line":"                         mock.Mock(return_value\u003dTrue))"}],"source_content_type":"text/x-python","patch_set":32,"id":"7aa08908_b5ec9f2a","line":252,"in_reply_to":"7aa08908_145f4a42","updated":"2016-06-13 18:02:52.000000000","message":":)","commit_id":"af9048d89f3268014eb29234a24ebe1df482c9c8"}],"cinder/volume/drivers/hitachi/hnas_backend.py":[{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"5c52f61ed5cdd6cc08e1a138c1b5d3831e256079","unresolved":false,"context_lines":[{"line_number":461,"context_line":"        LOG.debug(\"del_iscsi_conn: LU: %(lu)s successfully deleted from \""},{"line_number":462,"context_line":"                  \"target %(iqn)s\", {\u0027lu\u0027: lu_id, \u0027iqn\u0027: iqn})"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"    def get_target_iqn(self, tgt_alias, fs_label, secret):"},{"line_number":465,"context_line":"        \"\"\"Obtains the target full iqn"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"        Returns the target\u0027s full iqn rather than its alias."}],"source_content_type":"text/x-python","patch_set":26,"id":"1a122d0e_fa77948b","line":464,"range":{"start_line":464,"start_character":50,"end_line":464,"end_character":56},"updated":"2016-05-05 16:42:24.000000000","message":"This parameter \u0027secret\u0027 is not used at all.","commit_id":"c606753ae29723470f2ccf5eae8d3038757fec9a"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"04ae57f370d8bd788cd864d214637fb7e367d198","unresolved":false,"context_lines":[{"line_number":461,"context_line":"        LOG.debug(\"del_iscsi_conn: LU: %(lu)s successfully deleted from \""},{"line_number":462,"context_line":"                  \"target %(iqn)s\", {\u0027lu\u0027: lu_id, \u0027iqn\u0027: iqn})"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"    def get_target_iqn(self, tgt_alias, fs_label, secret):"},{"line_number":465,"context_line":"        \"\"\"Obtains the target full iqn"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"        Returns the target\u0027s full iqn rather than its alias."}],"source_content_type":"text/x-python","patch_set":26,"id":"1a122d0e_3f83b904","line":464,"range":{"start_line":464,"start_character":50,"end_line":464,"end_character":56},"in_reply_to":"1a122d0e_fa77948b","updated":"2016-05-09 17:21:00.000000000","message":"Done","commit_id":"c606753ae29723470f2ccf5eae8d3038757fec9a"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"a73219523ce18037eb15df9f53d6714b77c8ae84","unresolved":false,"context_lines":[{"line_number":243,"context_line":""},{"line_number":244,"context_line":"        Gets the target list of an EVS. Optionally can return the information"},{"line_number":245,"context_line":"        of a specific target."},{"line_number":246,"context_line":"        :returns: Target list"},{"line_number":247,"context_line":"        \"\"\""},{"line_number":248,"context_line":"        LOG.debug(\"Getting target list for evs %(evs)s, tgtalias: %(tgt)s.\","},{"line_number":249,"context_line":"                  {\u0027evs\u0027: evs_id, \u0027tgt\u0027: tgt_alias})"}],"source_content_type":"text/x-python","patch_set":33,"id":"7aa08908_13bb40c5","line":246,"updated":"2016-06-14 13:30:54.000000000","message":"nit:\nreturns: Target list (only L#285?) or Target info (EVS id) or empty list","commit_id":"dde30bbd87e25ef6d6fb2624a8659e48a9cbeef4"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"315b6b3017403c115b566bcc032db28dad65cb07","unresolved":false,"context_lines":[{"line_number":243,"context_line":""},{"line_number":244,"context_line":"        Gets the target list of an EVS. Optionally can return the information"},{"line_number":245,"context_line":"        of a specific target."},{"line_number":246,"context_line":"        :returns: Target list"},{"line_number":247,"context_line":"        \"\"\""},{"line_number":248,"context_line":"        LOG.debug(\"Getting target list for evs %(evs)s, tgtalias: %(tgt)s.\","},{"line_number":249,"context_line":"                  {\u0027evs\u0027: evs_id, \u0027tgt\u0027: tgt_alias})"}],"source_content_type":"text/x-python","patch_set":33,"id":"7aa08908_79cf0529","line":246,"in_reply_to":"7aa08908_13bb40c5","updated":"2016-06-14 17:54:43.000000000","message":"Done","commit_id":"dde30bbd87e25ef6d6fb2624a8659e48a9cbeef4"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"a73219523ce18037eb15df9f53d6714b77c8ae84","unresolved":false,"context_lines":[{"line_number":282,"context_line":"                tgt[\u0027lus\u0027] \u003d lus"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"                if tgt_alias \u003d\u003d tgt[\u0027alias\u0027]:"},{"line_number":285,"context_line":"                    return [tgt]"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"                self.tgt_list[evs_id].append(tgt)"},{"line_number":288,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"7aa08908_1394e034","line":285,"updated":"2016-06-14 13:30:54.000000000","message":"Do you need these brackets around [tgt]? I would think not...","commit_id":"dde30bbd87e25ef6d6fb2624a8659e48a9cbeef4"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"315b6b3017403c115b566bcc032db28dad65cb07","unresolved":false,"context_lines":[{"line_number":282,"context_line":"                tgt[\u0027lus\u0027] \u003d lus"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"                if tgt_alias \u003d\u003d tgt[\u0027alias\u0027]:"},{"line_number":285,"context_line":"                    return [tgt]"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"                self.tgt_list[evs_id].append(tgt)"},{"line_number":288,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"7aa08908_b4d32403","line":285,"in_reply_to":"7aa08908_1394e034","updated":"2016-06-14 17:54:43.000000000","message":"You\u0027re right. Not needed if I change the way the caller uses the returned value.","commit_id":"dde30bbd87e25ef6d6fb2624a8659e48a9cbeef4"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"be2c606fe4af9a0d1d416951f9b57c955441b955","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        return self.storage_version"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def get_iscsi_info(self):"},{"line_number":128,"context_line":"        \"\"\"Gets IP addresses for EVSs, use EVSID as controller."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        :returns: dictionary with iSCSI information"}],"source_content_type":"text/x-python","patch_set":36,"id":"7aa08908_f9f367e5","line":127,"range":{"start_line":127,"start_character":8,"end_line":127,"end_character":22},"updated":"2016-06-17 12:01:05.000000000","message":"This function should be called get_evs_info() as it is not geting any iSCSI information. Only information about HNAS EVSs. The same for the related variables bellow.","commit_id":"ccbf071148e7d3e799f37a822fa1c2076be4b9fc"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"2944456079340d706a989c3b75da667efe5745a6","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        return self.storage_version"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def get_iscsi_info(self):"},{"line_number":128,"context_line":"        \"\"\"Gets IP addresses for EVSs, use EVSID as controller."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        :returns: dictionary with iSCSI information"}],"source_content_type":"text/x-python","patch_set":36,"id":"7aa08908_2f4bb6b2","line":127,"range":{"start_line":127,"start_character":8,"end_line":127,"end_character":22},"in_reply_to":"7aa08908_f9f367e5","updated":"2016-06-17 13:52:35.000000000","message":"Good point!\nget_evs_info() makes much more sense indeed.","commit_id":"ccbf071148e7d3e799f37a822fa1c2076be4b9fc"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"be2c606fe4af9a0d1d416951f9b57c955441b955","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        return self.storage_version"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def get_iscsi_info(self):"},{"line_number":128,"context_line":"        \"\"\"Gets IP addresses for EVSs, use EVSID as controller."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        :returns: dictionary with iSCSI information"},{"line_number":131,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":36,"id":"7aa08908_992503b0","line":128,"range":{"start_line":128,"start_character":7,"end_line":128,"end_character":63},"updated":"2016-06-17 12:01:05.000000000","message":"\"\"\"Gets IP addresses for all EVSs in HNAS.","commit_id":"ccbf071148e7d3e799f37a822fa1c2076be4b9fc"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"2944456079340d706a989c3b75da667efe5745a6","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        return self.storage_version"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def get_iscsi_info(self):"},{"line_number":128,"context_line":"        \"\"\"Gets IP addresses for EVSs, use EVSID as controller."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        :returns: dictionary with iSCSI information"},{"line_number":131,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":36,"id":"7aa08908_b4089d81","line":128,"range":{"start_line":128,"start_character":7,"end_line":128,"end_character":63},"in_reply_to":"7aa08908_992503b0","updated":"2016-06-17 13:52:35.000000000","message":"Done","commit_id":"ccbf071148e7d3e799f37a822fa1c2076be4b9fc"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"be2c606fe4af9a0d1d416951f9b57c955441b955","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    def get_iscsi_info(self):"},{"line_number":128,"context_line":"        \"\"\"Gets IP addresses for EVSs, use EVSID as controller."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        :returns: dictionary with iSCSI information"},{"line_number":131,"context_line":"        \"\"\""},{"line_number":132,"context_line":"        iscsi_info \u003d {}"},{"line_number":133,"context_line":"        out, err \u003d self._run_cmd(\"evsipaddr\", \"-l\")"}],"source_content_type":"text/x-python","patch_set":36,"id":"7aa08908_0de24da0","line":130,"range":{"start_line":130,"start_character":40,"end_line":130,"end_character":51},"updated":"2016-06-17 12:01:05.000000000","message":"EVS information","commit_id":"ccbf071148e7d3e799f37a822fa1c2076be4b9fc"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"be2c606fe4af9a0d1d416951f9b57c955441b955","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    def get_iscsi_info(self):"},{"line_number":128,"context_line":"        \"\"\"Gets IP addresses for EVSs, use EVSID as controller."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        :returns: dictionary with iSCSI information"},{"line_number":131,"context_line":"        \"\"\""},{"line_number":132,"context_line":"        iscsi_info \u003d {}"},{"line_number":133,"context_line":"        out, err \u003d self._run_cmd(\"evsipaddr\", \"-l\")"}],"source_content_type":"text/x-python","patch_set":36,"id":"7aa08908_4d31f50a","line":130,"range":{"start_line":130,"start_character":34,"end_line":130,"end_character":51},"updated":"2016-06-17 12:01:05.000000000","message":"evs_info\u003d{\n\u002710.0.0.1\u0027:{\n  \u0027evs_number\u0027:2\n }\n}","commit_id":"ccbf071148e7d3e799f37a822fa1c2076be4b9fc"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"2944456079340d706a989c3b75da667efe5745a6","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    def get_iscsi_info(self):"},{"line_number":128,"context_line":"        \"\"\"Gets IP addresses for EVSs, use EVSID as controller."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        :returns: dictionary with iSCSI information"},{"line_number":131,"context_line":"        \"\"\""},{"line_number":132,"context_line":"        iscsi_info \u003d {}"},{"line_number":133,"context_line":"        out, err \u003d self._run_cmd(\"evsipaddr\", \"-l\")"}],"source_content_type":"text/x-python","patch_set":36,"id":"7aa08908_747915fc","line":130,"range":{"start_line":130,"start_character":40,"end_line":130,"end_character":51},"in_reply_to":"7aa08908_0de24da0","updated":"2016-06-17 13:52:35.000000000","message":"Done","commit_id":"ccbf071148e7d3e799f37a822fa1c2076be4b9fc"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"2944456079340d706a989c3b75da667efe5745a6","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    def get_iscsi_info(self):"},{"line_number":128,"context_line":"        \"\"\"Gets IP addresses for EVSs, use EVSID as controller."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        :returns: dictionary with iSCSI information"},{"line_number":131,"context_line":"        \"\"\""},{"line_number":132,"context_line":"        iscsi_info \u003d {}"},{"line_number":133,"context_line":"        out, err \u003d self._run_cmd(\"evsipaddr\", \"-l\")"}],"source_content_type":"text/x-python","patch_set":36,"id":"7aa08908_7460f535","line":130,"range":{"start_line":130,"start_character":34,"end_line":130,"end_character":51},"in_reply_to":"7aa08908_4d31f50a","updated":"2016-06-17 13:52:35.000000000","message":"Done","commit_id":"ccbf071148e7d3e799f37a822fa1c2076be4b9fc"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"be2c606fe4af9a0d1d416951f9b57c955441b955","unresolved":false,"context_lines":[{"line_number":227,"context_line":"    def get_evs(self, fs_label):"},{"line_number":228,"context_line":"        \"\"\"Gets the EVSID for the named filesystem."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        :param fs_label: The file system label related to the EVS required"},{"line_number":231,"context_line":"        :returns: EVS id of the file system"},{"line_number":232,"context_line":"        \"\"\""},{"line_number":233,"context_line":"        if not self.fslist:"}],"source_content_type":"text/x-python","patch_set":36,"id":"7aa08908_b8925955","line":230,"range":{"start_line":230,"start_character":29,"end_line":230,"end_character":40},"updated":"2016-06-17 12:01:05.000000000","message":"filesystem","commit_id":"ccbf071148e7d3e799f37a822fa1c2076be4b9fc"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"2944456079340d706a989c3b75da667efe5745a6","unresolved":false,"context_lines":[{"line_number":227,"context_line":"    def get_evs(self, fs_label):"},{"line_number":228,"context_line":"        \"\"\"Gets the EVSID for the named filesystem."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        :param fs_label: The file system label related to the EVS required"},{"line_number":231,"context_line":"        :returns: EVS id of the file system"},{"line_number":232,"context_line":"        \"\"\""},{"line_number":233,"context_line":"        if not self.fslist:"}],"source_content_type":"text/x-python","patch_set":36,"id":"7aa08908_34e2eda0","line":230,"range":{"start_line":230,"start_character":29,"end_line":230,"end_character":40},"in_reply_to":"7aa08908_b8925955","updated":"2016-06-17 13:52:35.000000000","message":"Done","commit_id":"ccbf071148e7d3e799f37a822fa1c2076be4b9fc"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"be2c606fe4af9a0d1d416951f9b57c955441b955","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        \"\"\"Gets the EVSID for the named filesystem."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        :param fs_label: The file system label related to the EVS required"},{"line_number":231,"context_line":"        :returns: EVS id of the file system"},{"line_number":232,"context_line":"        \"\"\""},{"line_number":233,"context_line":"        if not self.fslist:"},{"line_number":234,"context_line":"            self._get_fs_list()"}],"source_content_type":"text/x-python","patch_set":36,"id":"7aa08908_189c4d69","line":231,"range":{"start_line":231,"start_character":32,"end_line":231,"end_character":43},"updated":"2016-06-17 12:01:05.000000000","message":"filesystem","commit_id":"ccbf071148e7d3e799f37a822fa1c2076be4b9fc"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"2944456079340d706a989c3b75da667efe5745a6","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        \"\"\"Gets the EVSID for the named filesystem."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        :param fs_label: The file system label related to the EVS required"},{"line_number":231,"context_line":"        :returns: EVS id of the file system"},{"line_number":232,"context_line":"        \"\"\""},{"line_number":233,"context_line":"        if not self.fslist:"},{"line_number":234,"context_line":"            self._get_fs_list()"}],"source_content_type":"text/x-python","patch_set":36,"id":"7aa08908_d4ff2932","line":231,"range":{"start_line":231,"start_character":32,"end_line":231,"end_character":43},"in_reply_to":"7aa08908_189c4d69","updated":"2016-06-17 13:52:35.000000000","message":"Done","commit_id":"ccbf071148e7d3e799f37a822fa1c2076be4b9fc"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"be2c606fe4af9a0d1d416951f9b57c955441b955","unresolved":false,"context_lines":[{"line_number":416,"context_line":"            lu_id \u003d self._get_unused_luid(tgt)"},{"line_number":417,"context_line":"            conn_info[\u0027lu_id\u0027] \u003d lu_id"},{"line_number":418,"context_line":"            conn_info[\u0027iqn\u0027] \u003d tgt[\u0027iqn\u0027]"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"            self._run_cmd(\"console-context\", \"--evs\", _evs_id, \u0027iscsi-target\u0027,"},{"line_number":421,"context_line":"                          \u0027addlu\u0027, tgt_alias, lu_name, six.text_type(lu_id))"},{"line_number":422,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":36,"id":"7aa08908_33a68ac1","line":419,"updated":"2016-06-17 12:01:05.000000000","message":"Add this:\n# In busy situations where 2 or more instances of the driver are trying to map an LU, 2 hosts can retrieve the same \u0027lu_id\u0027, and try to map the LU in the same LUN. To handle that we capture the ProcessExecutionError exception, backoff for some seconds and retry again.","commit_id":"ccbf071148e7d3e799f37a822fa1c2076be4b9fc"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"2944456079340d706a989c3b75da667efe5745a6","unresolved":false,"context_lines":[{"line_number":416,"context_line":"            lu_id \u003d self._get_unused_luid(tgt)"},{"line_number":417,"context_line":"            conn_info[\u0027lu_id\u0027] \u003d lu_id"},{"line_number":418,"context_line":"            conn_info[\u0027iqn\u0027] \u003d tgt[\u0027iqn\u0027]"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"            self._run_cmd(\"console-context\", \"--evs\", _evs_id, \u0027iscsi-target\u0027,"},{"line_number":421,"context_line":"                          \u0027addlu\u0027, tgt_alias, lu_name, six.text_type(lu_id))"},{"line_number":422,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":36,"id":"7aa08908_cf92f256","line":419,"in_reply_to":"7aa08908_33a68ac1","updated":"2016-06-17 13:52:35.000000000","message":"Done","commit_id":"ccbf071148e7d3e799f37a822fa1c2076be4b9fc"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"5717d42fa963048466b1bcf9d44fa46e897a7377","unresolved":false,"context_lines":[{"line_number":363,"context_line":"        :param src: source file"},{"line_number":364,"context_line":"        :param name: target path of the new created file"},{"line_number":365,"context_line":"        \"\"\""},{"line_number":366,"context_line":"        LOG.debug(\u0027file_clone: fs:%s %s/src: -\u003e %s/dst\u0027, fs_label, src, name)"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"        fs_list \u003d self._get_fs_list()"},{"line_number":369,"context_line":"        fs \u003d fs_list.get(fs_label)"}],"source_content_type":"text/x-python","patch_set":40,"id":"1aa78d24_c6f45ff2","line":366,"updated":"2016-07-12 22:38:50.000000000","message":"can we use the %(label)s  style here please?","commit_id":"cd3e93c950368bfe8644a942abcd4d7148637d95"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"9f24b58f9830a71cf4edc76c1922fd0574260a48","unresolved":false,"context_lines":[{"line_number":363,"context_line":"        :param src: source file"},{"line_number":364,"context_line":"        :param name: target path of the new created file"},{"line_number":365,"context_line":"        \"\"\""},{"line_number":366,"context_line":"        LOG.debug(\u0027file_clone: fs:%s %s/src: -\u003e %s/dst\u0027, fs_label, src, name)"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"        fs_list \u003d self._get_fs_list()"},{"line_number":369,"context_line":"        fs \u003d fs_list.get(fs_label)"}],"source_content_type":"text/x-python","patch_set":40,"id":"1aa78d24_57e1c4fb","line":366,"in_reply_to":"1aa78d24_c6f45ff2","updated":"2016-07-14 21:10:35.000000000","message":"We have a separated patch to correct all the log related issues. (https://review.openstack.org/#/c/310785)\nThis message will be removed there. So, I\u0027m going to remove it from this patch also, ok?","commit_id":"cd3e93c950368bfe8644a942abcd4d7148637d95"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"5717d42fa963048466b1bcf9d44fa46e897a7377","unresolved":false,"context_lines":[{"line_number":614,"context_line":"        to the name provided."},{"line_number":615,"context_line":""},{"line_number":616,"context_line":"        :param fs_label: label of the file system"},{"line_number":617,"context_line":"        :param lu_name: label of the Logical Unit"},{"line_number":618,"context_line":"        :param evs_id: ID of the EVS where the LU is located"},{"line_number":619,"context_line":"        :returns: dictionary (lu_info) with LU information"},{"line_number":620,"context_line":"        lu_info\u003d{"}],"source_content_type":"text/x-python","patch_set":40,"id":"1aa78d24_06c2e784","line":617,"updated":"2016-07-12 22:38:50.000000000","message":"these are out of order according to the signature.","commit_id":"cd3e93c950368bfe8644a942abcd4d7148637d95"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"9f24b58f9830a71cf4edc76c1922fd0574260a48","unresolved":false,"context_lines":[{"line_number":614,"context_line":"        to the name provided."},{"line_number":615,"context_line":""},{"line_number":616,"context_line":"        :param fs_label: label of the file system"},{"line_number":617,"context_line":"        :param lu_name: label of the Logical Unit"},{"line_number":618,"context_line":"        :param evs_id: ID of the EVS where the LU is located"},{"line_number":619,"context_line":"        :returns: dictionary (lu_info) with LU information"},{"line_number":620,"context_line":"        lu_info\u003d{"}],"source_content_type":"text/x-python","patch_set":40,"id":"1aa78d24_f210bead","line":617,"in_reply_to":"1aa78d24_06c2e784","updated":"2016-07-14 21:10:35.000000000","message":"Done","commit_id":"cd3e93c950368bfe8644a942abcd4d7148637d95"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"5717d42fa963048466b1bcf9d44fa46e897a7377","unresolved":false,"context_lines":[{"line_number":665,"context_line":""},{"line_number":666,"context_line":"        :param fs_label: label of the file system"},{"line_number":667,"context_line":"        :param new_name: new name to the existing volume"},{"line_number":668,"context_line":"        :param vol_name: current name of the existing volume"},{"line_number":669,"context_line":"        \"\"\""},{"line_number":670,"context_line":""},{"line_number":671,"context_line":"        new_name \u003d \"\u0027{}\u0027\".format(new_name)"}],"source_content_type":"text/x-python","patch_set":40,"id":"1aa78d24_46b86f11","line":668,"updated":"2016-07-12 22:38:50.000000000","message":"these are also out of order according to the method signature","commit_id":"cd3e93c950368bfe8644a942abcd4d7148637d95"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"9f24b58f9830a71cf4edc76c1922fd0574260a48","unresolved":false,"context_lines":[{"line_number":665,"context_line":""},{"line_number":666,"context_line":"        :param fs_label: label of the file system"},{"line_number":667,"context_line":"        :param new_name: new name to the existing volume"},{"line_number":668,"context_line":"        :param vol_name: current name of the existing volume"},{"line_number":669,"context_line":"        \"\"\""},{"line_number":670,"context_line":""},{"line_number":671,"context_line":"        new_name \u003d \"\u0027{}\u0027\".format(new_name)"}],"source_content_type":"text/x-python","patch_set":40,"id":"1aa78d24_5220b2f8","line":668,"in_reply_to":"1aa78d24_46b86f11","updated":"2016-07-14 21:10:35.000000000","message":"Done","commit_id":"cd3e93c950368bfe8644a942abcd4d7148637d95"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"5717d42fa963048466b1bcf9d44fa46e897a7377","unresolved":false,"context_lines":[{"line_number":782,"context_line":"        Clone primitive used to support all iSCSI snapshot/cloning functions."},{"line_number":783,"context_line":""},{"line_number":784,"context_line":"        :param fs_label: data pool of the Logical Unit"},{"line_number":785,"context_line":"        :param src_lu: id of the Logical Unit being deleted"},{"line_number":786,"context_line":"        :param clone_name: name of the snapshot"},{"line_number":787,"context_line":"        \"\"\""},{"line_number":788,"context_line":"        evs_id \u003d self.get_evs(fs_label)"}],"source_content_type":"text/x-python","patch_set":40,"id":"1aa78d24_c6429f0e","line":785,"updated":"2016-07-12 22:38:50.000000000","message":"out of order according to method signature","commit_id":"cd3e93c950368bfe8644a942abcd4d7148637d95"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"9f24b58f9830a71cf4edc76c1922fd0574260a48","unresolved":false,"context_lines":[{"line_number":782,"context_line":"        Clone primitive used to support all iSCSI snapshot/cloning functions."},{"line_number":783,"context_line":""},{"line_number":784,"context_line":"        :param fs_label: data pool of the Logical Unit"},{"line_number":785,"context_line":"        :param src_lu: id of the Logical Unit being deleted"},{"line_number":786,"context_line":"        :param clone_name: name of the snapshot"},{"line_number":787,"context_line":"        \"\"\""},{"line_number":788,"context_line":"        evs_id \u003d self.get_evs(fs_label)"}],"source_content_type":"text/x-python","patch_set":40,"id":"1aa78d24_92717a0f","line":785,"in_reply_to":"1aa78d24_c6429f0e","updated":"2016-07-14 21:10:35.000000000","message":"Done","commit_id":"cd3e93c950368bfe8644a942abcd4d7148637d95"},{"author":{"_account_id":17718,"name":"Lallana","email":"gaozhiqiang2@huawei.com","username":"Lallana"},"change_message_id":"9dd3f8b49c0e757d488438fcf2d6c3966b6b85a5","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        command \u003d \u0027 \u0027.join(args)"},{"line_number":65,"context_line":"        command \u003d command.replace(\u0027\"\u0027, \u0027\\\\\"\u0027)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        if not self.sshpool:"},{"line_number":68,"context_line":"            self.sshpool \u003d ssh_utils.SSHPool(ip\u003dself.mgmt_ip0,"},{"line_number":69,"context_line":"                                             port\u003dint(self.ssh_port),"},{"line_number":70,"context_line":"                                             conn_timeout\u003dNone,"}],"source_content_type":"text/x-python","patch_set":44,"id":"dada55a8_204277ae","line":67,"range":{"start_line":67,"start_character":8,"end_line":67,"end_character":28},"updated":"2016-07-27 08:52:33.000000000","message":"Maybe the variable self.sshpool is always none. So this judgment is no need here.","commit_id":"f2f66907ea5fbe2f0a967a56019c0ab1e05f8e1c"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"d8516af4d8128c38d86e6e7b00e7dd26fe0beac9","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        command \u003d \u0027 \u0027.join(args)"},{"line_number":65,"context_line":"        command \u003d command.replace(\u0027\"\u0027, \u0027\\\\\"\u0027)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        if not self.sshpool:"},{"line_number":68,"context_line":"            self.sshpool \u003d ssh_utils.SSHPool(ip\u003dself.mgmt_ip0,"},{"line_number":69,"context_line":"                                             port\u003dint(self.ssh_port),"},{"line_number":70,"context_line":"                                             conn_timeout\u003dNone,"}],"source_content_type":"text/x-python","patch_set":44,"id":"bacf61ea_2017d052","line":67,"range":{"start_line":67,"start_character":8,"end_line":67,"end_character":28},"in_reply_to":"dada55a8_204277ae","updated":"2016-07-27 20:23:50.000000000","message":"Actually, it\u0027s None only in the first time the function is called during the driver initialization. Then, the values are kept in the variable and this if statement is necessary to prevent the attribution to happen again every time the function is called.","commit_id":"f2f66907ea5fbe2f0a967a56019c0ab1e05f8e1c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c7b3915d520b782635a50930fa759746ee9c182a","unresolved":false,"context_lines":[{"line_number":110,"context_line":"            version_info[\u0027mac\u0027] \u003d mac"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"            out, err \u003d self._run_cmd(\"ver\")"},{"line_number":113,"context_line":"            model \u003d out.split(\u0027\\n\u0027)[1].split(\u0027:\u0027)[1].strip()"},{"line_number":114,"context_line":"            version \u003d out.split(\u0027\\n\u0027)[3].split()[1]"},{"line_number":115,"context_line":"            hardware \u003d out.split(\u0027\\n\u0027)[5].split(\u0027:\u0027)[1].strip()"},{"line_number":116,"context_line":"            serial \u003d out.split(\u0027\\n\u0027)[12].split()[2]"}],"source_content_type":"text/x-python","patch_set":44,"id":"dada55a8_8366e8ea","line":113,"updated":"2016-07-26 19:18:11.000000000","message":"Rather than repeatedly calling split on this same out string, it would be better to do that once up front and then use that result for parsing each of these.","commit_id":"f2f66907ea5fbe2f0a967a56019c0ab1e05f8e1c"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"d8516af4d8128c38d86e6e7b00e7dd26fe0beac9","unresolved":false,"context_lines":[{"line_number":110,"context_line":"            version_info[\u0027mac\u0027] \u003d mac"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"            out, err \u003d self._run_cmd(\"ver\")"},{"line_number":113,"context_line":"            model \u003d out.split(\u0027\\n\u0027)[1].split(\u0027:\u0027)[1].strip()"},{"line_number":114,"context_line":"            version \u003d out.split(\u0027\\n\u0027)[3].split()[1]"},{"line_number":115,"context_line":"            hardware \u003d out.split(\u0027\\n\u0027)[5].split(\u0027:\u0027)[1].strip()"},{"line_number":116,"context_line":"            serial \u003d out.split(\u0027\\n\u0027)[12].split()[2]"}],"source_content_type":"text/x-python","patch_set":44,"id":"dada55a8_c91abfc5","line":113,"in_reply_to":"dada55a8_8366e8ea","updated":"2016-07-27 20:23:50.000000000","message":"Done","commit_id":"f2f66907ea5fbe2f0a967a56019c0ab1e05f8e1c"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"f72b69d85c715370bd91c5179c9832a90c127e43","unresolved":false,"context_lines":[{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        invalid_outs \u003d [\u0027Not mounted\u0027, \u0027Not determined\u0027, \u0027not found\u0027]"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        for idx in range(0, len(invalid_outs)):"},{"line_number":171,"context_line":"            if invalid_outs[idx] in out:"},{"line_number":172,"context_line":"                return {}"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-python","patch_set":44,"id":"dada55a8_584f9b6a","line":170,"range":{"start_line":170,"start_character":8,"end_line":170,"end_character":47},"updated":"2016-07-27 11:51:58.000000000","message":"Since invalid_outs is a list, you could directly use \"for idx in invalid_outs:\"","commit_id":"f2f66907ea5fbe2f0a967a56019c0ab1e05f8e1c"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"d8516af4d8128c38d86e6e7b00e7dd26fe0beac9","unresolved":false,"context_lines":[{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        invalid_outs \u003d [\u0027Not mounted\u0027, \u0027Not determined\u0027, \u0027not found\u0027]"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        for idx in range(0, len(invalid_outs)):"},{"line_number":171,"context_line":"            if invalid_outs[idx] in out:"},{"line_number":172,"context_line":"                return {}"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-python","patch_set":44,"id":"dada55a8_e92ddf8f","line":170,"range":{"start_line":170,"start_character":8,"end_line":170,"end_character":47},"in_reply_to":"dada55a8_584f9b6a","updated":"2016-07-27 20:23:50.000000000","message":"Done","commit_id":"f2f66907ea5fbe2f0a967a56019c0ab1e05f8e1c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c7b3915d520b782635a50930fa759746ee9c182a","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            else:"},{"line_number":202,"context_line":"                fs_info[\u0027available_size\u0027] \u003d fs_data[12]"},{"line_number":203,"context_line":"        else:"},{"line_number":204,"context_line":"            fs_info[\u0027id\u0027] \u003d fs_data[0]"},{"line_number":205,"context_line":"            fs_info[\u0027label\u0027] \u003d fs_data[1]"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"            if fs_data[3] \u003d\u003d \u0027TB\u0027:"},{"line_number":208,"context_line":"                size \u003d float(fs_data[2]) * units.Mi"}],"source_content_type":"text/x-python","patch_set":44,"id":"dada55a8_e35244dd","line":205,"range":{"start_line":204,"start_character":12,"end_line":205,"end_character":41},"updated":"2016-07-26 19:18:11.000000000","message":"This part is the same between the two.\n\nBut I think this could be a little less verbose to just set variables with the index numbers based on the if statement, then just have the operations be performed in a common block of code using those variable to pull out the appropriate value from fs_info.","commit_id":"f2f66907ea5fbe2f0a967a56019c0ab1e05f8e1c"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"d8516af4d8128c38d86e6e7b00e7dd26fe0beac9","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            else:"},{"line_number":202,"context_line":"                fs_info[\u0027available_size\u0027] \u003d fs_data[12]"},{"line_number":203,"context_line":"        else:"},{"line_number":204,"context_line":"            fs_info[\u0027id\u0027] \u003d fs_data[0]"},{"line_number":205,"context_line":"            fs_info[\u0027label\u0027] \u003d fs_data[1]"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"            if fs_data[3] \u003d\u003d \u0027TB\u0027:"},{"line_number":208,"context_line":"                size \u003d float(fs_data[2]) * units.Mi"}],"source_content_type":"text/x-python","patch_set":44,"id":"dada55a8_d8b6073d","line":205,"range":{"start_line":204,"start_character":12,"end_line":205,"end_character":41},"in_reply_to":"dada55a8_e35244dd","updated":"2016-07-27 20:23:50.000000000","message":"Ok. I tried to make it more readable and pythonic. Hope it worked.","commit_id":"f2f66907ea5fbe2f0a967a56019c0ab1e05f8e1c"}],"cinder/volume/drivers/hitachi/hnas_iscsi.py":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"cd6f697c14cf9fbe5ed4312f7954df3534dd1ed5","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    Version 4.1.0: Fixed XML parser checks on blank options"},{"line_number":64,"context_line":"    Version 4.2.0: Fixed SSH and cluster_admin_ip0 verification"},{"line_number":65,"context_line":"    Version 4.3.0: Fixed attachment with os-brick 1.0.0"},{"line_number":66,"context_line":"    Version 5.0.0: Code cleaning up"},{"line_number":67,"context_line":"    \"\"\""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_8d2d9697","line":66,"range":{"start_line":66,"start_character":19,"end_line":66,"end_character":35},"updated":"2016-02-29 17:07:37.000000000","message":"Also implemented:New of communication interface between driver and HNAS backend.","commit_id":"606dcf9a3eec9e7323ace8d2c3bfe611709eb639"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"d369c587e0e42f776487c2cb4a92053d3f03ce21","unresolved":false,"context_lines":[{"line_number":33,"context_line":"from cinder.volume import utils"},{"line_number":34,"context_line":"from cinder.volume import volume_types"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"HDS_HNAS_ISCSI_VERSION \u003d \u00275.0.0\u0027"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7af24918_08a908e0","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":22},"updated":"2016-03-04 19:58:41.000000000","message":"HITACHI_HNAS_ISCSI_VERSION?","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"ea28ad137e3faa387a9de01dae606369aa55839e","unresolved":false,"context_lines":[{"line_number":33,"context_line":"from cinder.volume import utils"},{"line_number":34,"context_line":"from cinder.volume import volume_types"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"HDS_HNAS_ISCSI_VERSION \u003d \u00275.0.0\u0027"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_44a9b223","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":22},"in_reply_to":"7af24918_08a908e0","updated":"2016-03-11 14:05:05.000000000","message":"Done","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"d369c587e0e42f776487c2cb4a92053d3f03ce21","unresolved":false,"context_lines":[{"line_number":51,"context_line":"MAX_HNAS_ISCSI_TARGETS \u003d 32"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"class HDSISCSIDriver(driver.ISCSIDriver):"},{"line_number":55,"context_line":"    \"\"\"HDS HNAS volume driver."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    Version 1.0.0: Initial driver version"}],"source_content_type":"text/x-python","patch_set":6,"id":"7af24918_286de4cc","line":54,"range":{"start_line":54,"start_character":6,"end_line":54,"end_character":20},"updated":"2016-03-04 19:58:41.000000000","message":"Shoudn\u0027t this be named HitachiISCSIDriver?","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"ea28ad137e3faa387a9de01dae606369aa55839e","unresolved":false,"context_lines":[{"line_number":51,"context_line":"MAX_HNAS_ISCSI_TARGETS \u003d 32"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"class HDSISCSIDriver(driver.ISCSIDriver):"},{"line_number":55,"context_line":"    \"\"\"HDS HNAS volume driver."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    Version 1.0.0: Initial driver version"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_f784e40b","line":54,"range":{"start_line":54,"start_character":6,"end_line":54,"end_character":20},"in_reply_to":"7af24918_286de4cc","updated":"2016-03-11 14:05:05.000000000","message":"Done","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"536f0685381f83bb6b9f565db4b585c5fdc4b611","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                raise exception.ParameterNotFound(param\u003derr)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def _get_stats(self):"},{"line_number":137,"context_line":"        \"\"\"Get HDP stats from HNAS.\"\"\""},{"line_number":138,"context_line":"        hnas_stat \u003d {}"},{"line_number":139,"context_line":"        be_name \u003d self.configuration.safe_get(\u0027volume_backend_name\u0027)"},{"line_number":140,"context_line":"        hnas_stat[\"volume_backend_name\"] \u003d be_name or \u0027HDSISCSIDriver\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"7af24918_ea7a2287","line":137,"range":{"start_line":137,"start_character":11,"end_line":137,"end_character":35},"updated":"2016-03-07 12:38:40.000000000","message":"Add the :returns: information in docstring","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"ea28ad137e3faa387a9de01dae606369aa55839e","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                raise exception.ParameterNotFound(param\u003derr)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def _get_stats(self):"},{"line_number":137,"context_line":"        \"\"\"Get HDP stats from HNAS.\"\"\""},{"line_number":138,"context_line":"        hnas_stat \u003d {}"},{"line_number":139,"context_line":"        be_name \u003d self.configuration.safe_get(\u0027volume_backend_name\u0027)"},{"line_number":140,"context_line":"        hnas_stat[\"volume_backend_name\"] \u003d be_name or \u0027HDSISCSIDriver\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_859a866c","line":137,"range":{"start_line":137,"start_character":11,"end_line":137,"end_character":35},"in_reply_to":"7af24918_ea7a2287","updated":"2016-03-11 14:05:05.000000000","message":"Done","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"536f0685381f83bb6b9f565db4b585c5fdc4b611","unresolved":false,"context_lines":[{"line_number":150,"context_line":"                float(fs_info[\u0027total_size\u0027].split(\u0027 \u0027)[0]))"},{"line_number":151,"context_line":"            pool[\u0027free_capacity_gb\u0027] \u003d ("},{"line_number":152,"context_line":"                float(fs_info[\u0027total_size\u0027].split(\u0027 \u0027)[0]) -"},{"line_number":153,"context_line":"                float(fs_info[\u0027used_size\u0027].split(\u0027 \u0027)[0]))"},{"line_number":154,"context_line":"            pool[\u0027allocated_capacity_gb\u0027] \u003d ("},{"line_number":155,"context_line":"                float(fs_info[\u0027total_size\u0027].split(\u0027 \u0027)[0]))"},{"line_number":156,"context_line":"            pool[\u0027QoS_support\u0027] \u003d \u0027False\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"7af24918_f6832b54","line":153,"range":{"start_line":153,"start_character":50,"end_line":153,"end_character":51},"updated":"2016-03-07 12:38:40.000000000","message":"Just use .split()\nIn this case, split() uses spaces as the delimiter.","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"ea28ad137e3faa387a9de01dae606369aa55839e","unresolved":false,"context_lines":[{"line_number":150,"context_line":"                float(fs_info[\u0027total_size\u0027].split(\u0027 \u0027)[0]))"},{"line_number":151,"context_line":"            pool[\u0027free_capacity_gb\u0027] \u003d ("},{"line_number":152,"context_line":"                float(fs_info[\u0027total_size\u0027].split(\u0027 \u0027)[0]) -"},{"line_number":153,"context_line":"                float(fs_info[\u0027used_size\u0027].split(\u0027 \u0027)[0]))"},{"line_number":154,"context_line":"            pool[\u0027allocated_capacity_gb\u0027] \u003d ("},{"line_number":155,"context_line":"                float(fs_info[\u0027total_size\u0027].split(\u0027 \u0027)[0]))"},{"line_number":156,"context_line":"            pool[\u0027QoS_support\u0027] \u003d \u0027False\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_25cf322a","line":153,"range":{"start_line":153,"start_character":50,"end_line":153,"end_character":51},"in_reply_to":"7af24918_f6832b54","updated":"2016-03-11 14:05:05.000000000","message":"Done","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"d369c587e0e42f776487c2cb4a92053d3f03ce21","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        # from the first \u0027evs1-tgt0\u0027 until we find a target that is not already"},{"line_number":245,"context_line":"        # created in the BE or is created but have slots to place new targets."},{"line_number":246,"context_line":"        found_tgt \u003d False"},{"line_number":247,"context_line":"        for i in range(0, MAX_HNAS_ISCSI_TARGETS):"},{"line_number":248,"context_line":"            tgt_alias \u003d \u0027evs\u0027 + evs_id + \u0027-tgt\u0027 + six.text_type(i)"},{"line_number":249,"context_line":"            # TODO(erlon): we need to go to the BE 32 times here"},{"line_number":250,"context_line":"            tgt \u003d self.backend.check_target(hdp, tgt_alias)"},{"line_number":251,"context_line":"            if (tgt[\u0027found\u0027] and len(tgt[\u0027tgt\u0027][\u0027luns\u0027]) \u003c 32 or"},{"line_number":252,"context_line":"                    not tgt[\u0027mapped\u0027]):"},{"line_number":253,"context_line":"                # Target exists and has free space or, target does not exist"},{"line_number":254,"context_line":"                # yet. Proceed and use the target or create a target using this"},{"line_number":255,"context_line":"                # name."},{"line_number":256,"context_line":"                found_tgt \u003d True"},{"line_number":257,"context_line":"                break"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        # If we\u0027ve got here and found_tgt is not True, we run out of targets,"},{"line_number":260,"context_line":"        # raise and go away."},{"line_number":261,"context_line":"        if not found_tgt:"},{"line_number":262,"context_line":"            LOG.error(_LE(\"No more targets available.\"))"},{"line_number":263,"context_line":"            raise exception.NoMoreTargets(param\u003dtgt_alias)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        LOG.info(_LI(\"Using target label: %(tgt)s.\"), {\u0027tgt\u0027: tgt_alias})"},{"line_number":266,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7af24918_452139b4","line":263,"range":{"start_line":247,"start_character":0,"end_line":263,"end_character":58},"updated":"2016-03-04 19:58:41.000000000","message":"Suggestion: you can use python\u0027s for-else statement here and get rid of the found_tgt variable. But it\u0027s up to you to decide if for-else is more readable than the current implementation.","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"ea28ad137e3faa387a9de01dae606369aa55839e","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        # from the first \u0027evs1-tgt0\u0027 until we find a target that is not already"},{"line_number":245,"context_line":"        # created in the BE or is created but have slots to place new targets."},{"line_number":246,"context_line":"        found_tgt \u003d False"},{"line_number":247,"context_line":"        for i in range(0, MAX_HNAS_ISCSI_TARGETS):"},{"line_number":248,"context_line":"            tgt_alias \u003d \u0027evs\u0027 + evs_id + \u0027-tgt\u0027 + six.text_type(i)"},{"line_number":249,"context_line":"            # TODO(erlon): we need to go to the BE 32 times here"},{"line_number":250,"context_line":"            tgt \u003d self.backend.check_target(hdp, tgt_alias)"},{"line_number":251,"context_line":"            if (tgt[\u0027found\u0027] and len(tgt[\u0027tgt\u0027][\u0027luns\u0027]) \u003c 32 or"},{"line_number":252,"context_line":"                    not tgt[\u0027mapped\u0027]):"},{"line_number":253,"context_line":"                # Target exists and has free space or, target does not exist"},{"line_number":254,"context_line":"                # yet. Proceed and use the target or create a target using this"},{"line_number":255,"context_line":"                # name."},{"line_number":256,"context_line":"                found_tgt \u003d True"},{"line_number":257,"context_line":"                break"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        # If we\u0027ve got here and found_tgt is not True, we run out of targets,"},{"line_number":260,"context_line":"        # raise and go away."},{"line_number":261,"context_line":"        if not found_tgt:"},{"line_number":262,"context_line":"            LOG.error(_LE(\"No more targets available.\"))"},{"line_number":263,"context_line":"            raise exception.NoMoreTargets(param\u003dtgt_alias)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        LOG.info(_LI(\"Using target label: %(tgt)s.\"), {\u0027tgt\u0027: tgt_alias})"},{"line_number":266,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3afc51ec_2b3cc52e","line":263,"range":{"start_line":247,"start_character":0,"end_line":263,"end_character":58},"in_reply_to":"7af24918_452139b4","updated":"2016-03-11 14:05:05.000000000","message":"Done","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"536f0685381f83bb6b9f565db4b585c5fdc4b611","unresolved":false,"context_lines":[{"line_number":470,"context_line":""},{"line_number":471,"context_line":"        self.backend.create_lu(hdp, size, volume.name)"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"        LOG.info(_LI(\"LUN %(lun)s of size %(sz)s MB is created.\"),"},{"line_number":474,"context_line":"                 {\u0027lun\u0027: volume.name, \u0027sz\u0027: size})"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"        return {\u0027provider_location\u0027: self._get_provider_location(volume)}"}],"source_content_type":"text/x-python","patch_set":6,"id":"7af24918_912ab18e","line":473,"range":{"start_line":473,"start_character":49,"end_line":473,"end_character":51},"updated":"2016-03-07 12:38:40.000000000","message":"We should log it in GB, which is the same unit used in cinder create.","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"ea28ad137e3faa387a9de01dae606369aa55839e","unresolved":false,"context_lines":[{"line_number":470,"context_line":""},{"line_number":471,"context_line":"        self.backend.create_lu(hdp, size, volume.name)"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"        LOG.info(_LI(\"LUN %(lun)s of size %(sz)s MB is created.\"),"},{"line_number":474,"context_line":"                 {\u0027lun\u0027: volume.name, \u0027sz\u0027: size})"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"        return {\u0027provider_location\u0027: self._get_provider_location(volume)}"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_868e0cce","line":473,"range":{"start_line":473,"start_character":49,"end_line":473,"end_character":51},"in_reply_to":"7af24918_912ab18e","updated":"2016-03-11 14:05:05.000000000","message":"Done","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"536f0685381f83bb6b9f565db4b585c5fdc4b611","unresolved":false,"context_lines":[{"line_number":513,"context_line":""},{"line_number":514,"context_line":"        self.backend.create_cloned_lu(src[\u0027name\u0027], hdp, dst[\u0027name\u0027])"},{"line_number":515,"context_line":""},{"line_number":516,"context_line":"        LOG.debug(\"LUN %(lun)s of size %(size)s MB is cloned.\","},{"line_number":517,"context_line":"                  {\u0027lun\u0027: src[\u0027name\u0027], \u0027size\u0027: size})"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"        return {\u0027provider_location\u0027: self._get_provider_location(dst)}"}],"source_content_type":"text/x-python","patch_set":6,"id":"7af24918_e63d36c5","line":516,"range":{"start_line":516,"start_character":48,"end_line":516,"end_character":50},"updated":"2016-03-07 12:38:40.000000000","message":"We should log it in GB.","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"ea28ad137e3faa387a9de01dae606369aa55839e","unresolved":false,"context_lines":[{"line_number":513,"context_line":""},{"line_number":514,"context_line":"        self.backend.create_cloned_lu(src[\u0027name\u0027], hdp, dst[\u0027name\u0027])"},{"line_number":515,"context_line":""},{"line_number":516,"context_line":"        LOG.debug(\"LUN %(lun)s of size %(size)s MB is cloned.\","},{"line_number":517,"context_line":"                  {\u0027lun\u0027: src[\u0027name\u0027], \u0027size\u0027: size})"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"        return {\u0027provider_location\u0027: self._get_provider_location(dst)}"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_e632700f","line":516,"range":{"start_line":516,"start_character":48,"end_line":516,"end_character":50},"in_reply_to":"7af24918_e63d36c5","updated":"2016-03-11 14:05:05.000000000","message":"Done","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"536f0685381f83bb6b9f565db4b585c5fdc4b611","unresolved":false,"context_lines":[{"line_number":550,"context_line":"        self.backend.create_cloned_lu(snapshot.volume_name, hdp,"},{"line_number":551,"context_line":"                                      snapshot.name)"},{"line_number":552,"context_line":""},{"line_number":553,"context_line":"        LOG.debug(\"LUN %(lun)s of size %(size)s MB is created.\","},{"line_number":554,"context_line":"                  {\u0027lun\u0027: snapshot.name, \u0027size\u0027: size})"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":"        return {\u0027provider_location\u0027: self._get_provider_location(snapshot)}"}],"source_content_type":"text/x-python","patch_set":6,"id":"7af24918_e66b76b5","line":553,"range":{"start_line":553,"start_character":48,"end_line":553,"end_character":50},"updated":"2016-03-07 12:38:40.000000000","message":"We should log it in GB.","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"ea28ad137e3faa387a9de01dae606369aa55839e","unresolved":false,"context_lines":[{"line_number":550,"context_line":"        self.backend.create_cloned_lu(snapshot.volume_name, hdp,"},{"line_number":551,"context_line":"                                      snapshot.name)"},{"line_number":552,"context_line":""},{"line_number":553,"context_line":"        LOG.debug(\"LUN %(lun)s of size %(size)s MB is created.\","},{"line_number":554,"context_line":"                  {\u0027lun\u0027: snapshot.name, \u0027size\u0027: size})"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":"        return {\u0027provider_location\u0027: self._get_provider_location(snapshot)}"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_3ab10c48","line":553,"range":{"start_line":553,"start_character":48,"end_line":553,"end_character":50},"in_reply_to":"7af24918_e66b76b5","updated":"2016-03-11 14:05:05.000000000","message":"Done","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"50db626365e4c79fa27b7499a96386c72866300b","unresolved":false,"context_lines":[{"line_number":535,"context_line":"        \"\"\""},{"line_number":536,"context_line":"        vol_type \u003d {}"},{"line_number":537,"context_line":"        if snapshot.volume_type_id is not None:"},{"line_number":538,"context_line":"            vol_type \u003d volume_types.get_volume_type(self.context,"},{"line_number":539,"context_line":"                                                    snapshot.volume_type_id)"},{"line_number":540,"context_line":"        else:"},{"line_number":541,"context_line":"            vol_type[\u0027name\u0027] \u003d \u0027default\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"3afc51ec_98da7877","line":538,"range":{"start_line":538,"start_character":12,"end_line":538,"end_character":20},"updated":"2016-03-11 19:24:30.000000000","message":"It shouldn\u0027t be vol_type[\u0027name\u0027] receiving the volume type?\n\nBecause in the next usage, evs_id will receive the value inside field config[\u0027services\u0027][vol_type[\u0027name\u0027]][\u0027ctl\u0027] and vol_type will be only a string.","commit_id":"c02ef0b21b7f7762936dbc7944a5d8d79d075165"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"b92b4163b2b233e9bf4f177ad8bfb6c74a6ff5ce","unresolved":false,"context_lines":[{"line_number":535,"context_line":"        \"\"\""},{"line_number":536,"context_line":"        vol_type \u003d {}"},{"line_number":537,"context_line":"        if snapshot.volume_type_id is not None:"},{"line_number":538,"context_line":"            vol_type \u003d volume_types.get_volume_type(self.context,"},{"line_number":539,"context_line":"                                                    snapshot.volume_type_id)"},{"line_number":540,"context_line":"        else:"},{"line_number":541,"context_line":"            vol_type[\u0027name\u0027] \u003d \u0027default\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa0719c6_375981ff","line":538,"range":{"start_line":538,"start_character":12,"end_line":538,"end_character":20},"in_reply_to":"3afc51ec_98da7877","updated":"2016-03-22 13:24:49.000000000","message":"Done","commit_id":"c02ef0b21b7f7762936dbc7944a5d8d79d075165"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"15569626fa921e72892848f75ad006cd05e364fa","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        Verify that all HDPs specified in the configuration files actually"},{"line_number":125,"context_line":"        exists on the storage."},{"line_number":126,"context_line":"        \"\"\""},{"line_number":127,"context_line":"        hdp_lst \u003d self.config[\u0027hdp\u0027].keys()"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        for hdp in hdp_lst:"},{"line_number":130,"context_line":"            if not self.backend.get_hdp_info(hdp):"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa0719c6_d3630019","line":127,"range":{"start_line":127,"start_character":8,"end_line":127,"end_character":15},"updated":"2016-03-22 12:18:48.000000000","message":"Maybe you are going to change the \u0027hdp\u0027 name to another one, but if not, change this to hdp_list.","commit_id":"1fa94497f98d074a945923e0ea6883eff5f9e1c6"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"8d277c478fc09d9f639ab700c9e6462372d07bac","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        Verify that all HDPs specified in the configuration files actually"},{"line_number":125,"context_line":"        exists on the storage."},{"line_number":126,"context_line":"        \"\"\""},{"line_number":127,"context_line":"        hdp_lst \u003d self.config[\u0027hdp\u0027].keys()"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        for hdp in hdp_lst:"},{"line_number":130,"context_line":"            if not self.backend.get_hdp_info(hdp):"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa0719c6_da2f8c3c","line":127,"range":{"start_line":127,"start_character":8,"end_line":127,"end_character":15},"in_reply_to":"fa0719c6_d3630019","updated":"2016-03-24 17:43:00.000000000","message":"Done","commit_id":"1fa94497f98d074a945923e0ea6883eff5f9e1c6"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"15569626fa921e72892848f75ad006cd05e364fa","unresolved":false,"context_lines":[{"line_number":288,"context_line":""},{"line_number":289,"context_line":"                tgt_info[\u0027iscsi_secret\u0027] \u003d out"},{"line_number":290,"context_line":"                if tgt_info[\u0027iscsi_secret\u0027] \u003d\u003d \"\":"},{"line_number":291,"context_line":"                    randon_secret \u003d utils.generate_password()[0:15]"},{"line_number":292,"context_line":"                    tgt_info[\u0027iscsi_secret\u0027] \u003d randon_secret"},{"line_number":293,"context_line":"                    self.backend.set_targetsecret(tgt_alias, hdp,"},{"line_number":294,"context_line":"                                                  tgt_info[\u0027iscsi_secret\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa0719c6_f370c4de","line":291,"range":{"start_line":291,"start_character":20,"end_line":291,"end_character":27},"updated":"2016-03-22 12:18:48.000000000","message":"s/randon/random","commit_id":"1fa94497f98d074a945923e0ea6883eff5f9e1c6"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"8d277c478fc09d9f639ab700c9e6462372d07bac","unresolved":false,"context_lines":[{"line_number":288,"context_line":""},{"line_number":289,"context_line":"                tgt_info[\u0027iscsi_secret\u0027] \u003d out"},{"line_number":290,"context_line":"                if tgt_info[\u0027iscsi_secret\u0027] \u003d\u003d \"\":"},{"line_number":291,"context_line":"                    randon_secret \u003d utils.generate_password()[0:15]"},{"line_number":292,"context_line":"                    tgt_info[\u0027iscsi_secret\u0027] \u003d randon_secret"},{"line_number":293,"context_line":"                    self.backend.set_targetsecret(tgt_alias, hdp,"},{"line_number":294,"context_line":"                                                  tgt_info[\u0027iscsi_secret\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa0719c6_da2e6cf9","line":291,"range":{"start_line":291,"start_character":20,"end_line":291,"end_character":27},"in_reply_to":"fa0719c6_f370c4de","updated":"2016-03-24 17:43:00.000000000","message":"Done","commit_id":"1fa94497f98d074a945923e0ea6883eff5f9e1c6"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"15569626fa921e72892848f75ad006cd05e364fa","unresolved":false,"context_lines":[{"line_number":289,"context_line":"                tgt_info[\u0027iscsi_secret\u0027] \u003d out"},{"line_number":290,"context_line":"                if tgt_info[\u0027iscsi_secret\u0027] \u003d\u003d \"\":"},{"line_number":291,"context_line":"                    randon_secret \u003d utils.generate_password()[0:15]"},{"line_number":292,"context_line":"                    tgt_info[\u0027iscsi_secret\u0027] \u003d randon_secret"},{"line_number":293,"context_line":"                    self.backend.set_targetsecret(tgt_alias, hdp,"},{"line_number":294,"context_line":"                                                  tgt_info[\u0027iscsi_secret\u0027])"},{"line_number":295,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa0719c6_1345786f","line":292,"range":{"start_line":292,"start_character":47,"end_line":292,"end_character":53},"updated":"2016-03-22 12:18:48.000000000","message":"s/randon/random","commit_id":"1fa94497f98d074a945923e0ea6883eff5f9e1c6"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"8d277c478fc09d9f639ab700c9e6462372d07bac","unresolved":false,"context_lines":[{"line_number":289,"context_line":"                tgt_info[\u0027iscsi_secret\u0027] \u003d out"},{"line_number":290,"context_line":"                if tgt_info[\u0027iscsi_secret\u0027] \u003d\u003d \"\":"},{"line_number":291,"context_line":"                    randon_secret \u003d utils.generate_password()[0:15]"},{"line_number":292,"context_line":"                    tgt_info[\u0027iscsi_secret\u0027] \u003d randon_secret"},{"line_number":293,"context_line":"                    self.backend.set_targetsecret(tgt_alias, hdp,"},{"line_number":294,"context_line":"                                                  tgt_info[\u0027iscsi_secret\u0027])"},{"line_number":295,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa0719c6_3a368852","line":292,"range":{"start_line":292,"start_character":47,"end_line":292,"end_character":53},"in_reply_to":"fa0719c6_1345786f","updated":"2016-03-24 17:43:00.000000000","message":"Done","commit_id":"1fa94497f98d074a945923e0ea6883eff5f9e1c6"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"f930dacecee502f8746948b16941573f0ec149dc","unresolved":false,"context_lines":[{"line_number":333,"context_line":"        :param volume: dictionary volume reference"},{"line_number":334,"context_line":"        :returns: the pool related to the volume"},{"line_number":335,"context_line":"        \"\"\""},{"line_number":336,"context_line":"        if not volume.volume_type:"},{"line_number":337,"context_line":"            return \u0027default\u0027"},{"line_number":338,"context_line":"        else:"},{"line_number":339,"context_line":"            metadata \u003d {}"},{"line_number":340,"context_line":"            type_id \u003d volume.volume_type_id"},{"line_number":341,"context_line":"            if type_id is not None:"},{"line_number":342,"context_line":"                metadata \u003d volume_types.get_volume_type_extra_specs(type_id)"},{"line_number":343,"context_line":"            if not metadata.get(\u0027service_label\u0027):"},{"line_number":344,"context_line":"                return \u0027default\u0027"},{"line_number":345,"context_line":"            else:"},{"line_number":346,"context_line":"                if (metadata[\u0027service_label\u0027] not in"},{"line_number":347,"context_line":"                        self.config[\u0027services\u0027].keys()):"},{"line_number":348,"context_line":"                    return \u0027default\u0027"},{"line_number":349,"context_line":"                else:"},{"line_number":350,"context_line":"                    pass"},{"line_number":351,"context_line":"                return metadata[\u0027service_label\u0027]"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"    def do_setup(self, context):"},{"line_number":354,"context_line":"        \"\"\"Sets up and verify Hitachi HNAS storage connection.\"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"ba0121b8_f25085d6","line":351,"range":{"start_line":336,"start_character":0,"end_line":351,"end_character":48},"updated":"2016-03-30 18:02:10.000000000","message":"This function can be simplified by modifying the if statements, changing it is up to you :)\n\nif volume.volume_type:\n    metadata \u003d {}\n    type_id \u003d volume.volume_type_id\n    if type_id is not None:\n        metadata \u003d volume_types.get_volume_type_extra_specs(type_id)\n    if metadata.get(\u0027service_label\u0027):\n         # get_volume_type_extra_specs returned the service label, need to check if it exists in config \n        if(metadata[\u0027service_label\u0027] in self.config[\u0027services\u0027].keys()):\n            return metadata[\u0027service_label\u0027]\nreturn \u0027default\u0027","commit_id":"746fc2536aa976595d89a7cfbf317e8f2c900a4f"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"d84a511b46a9f28118093c587bdcee9695bf0e73","unresolved":false,"context_lines":[{"line_number":333,"context_line":"        :param volume: dictionary volume reference"},{"line_number":334,"context_line":"        :returns: the pool related to the volume"},{"line_number":335,"context_line":"        \"\"\""},{"line_number":336,"context_line":"        if not volume.volume_type:"},{"line_number":337,"context_line":"            return \u0027default\u0027"},{"line_number":338,"context_line":"        else:"},{"line_number":339,"context_line":"            metadata \u003d {}"},{"line_number":340,"context_line":"            type_id \u003d volume.volume_type_id"},{"line_number":341,"context_line":"            if type_id is not None:"},{"line_number":342,"context_line":"                metadata \u003d volume_types.get_volume_type_extra_specs(type_id)"},{"line_number":343,"context_line":"            if not metadata.get(\u0027service_label\u0027):"},{"line_number":344,"context_line":"                return \u0027default\u0027"},{"line_number":345,"context_line":"            else:"},{"line_number":346,"context_line":"                if (metadata[\u0027service_label\u0027] not in"},{"line_number":347,"context_line":"                        self.config[\u0027services\u0027].keys()):"},{"line_number":348,"context_line":"                    return \u0027default\u0027"},{"line_number":349,"context_line":"                else:"},{"line_number":350,"context_line":"                    pass"},{"line_number":351,"context_line":"                return metadata[\u0027service_label\u0027]"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"    def do_setup(self, context):"},{"line_number":354,"context_line":"        \"\"\"Sets up and verify Hitachi HNAS storage connection.\"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"ba0121b8_b001ba08","line":351,"range":{"start_line":336,"start_character":0,"end_line":351,"end_character":48},"in_reply_to":"ba0121b8_f25085d6","updated":"2016-03-31 13:59:34.000000000","message":"Nice catch! Also, it could be moved to hnas_utils as it uses the same code for NFS and iSCSI drivers.","commit_id":"746fc2536aa976595d89a7cfbf317e8f2c900a4f"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"303f921c7a4e524a16da38611a30e781f5d08f16","unresolved":false,"context_lines":[{"line_number":359,"context_line":"            else:"},{"line_number":360,"context_line":"                LOG.error(_LE(\"iSCSI portal not found \""},{"line_number":361,"context_line":"                              \"for service: %(svc)s\"), {\u0027svc\u0027: svc_ip})"},{"line_number":362,"context_line":"                raise exception.InvalidParameterValue(param\u003dsvc_ip)"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"    def check_for_setup_error(self):"},{"line_number":365,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a061dce_3561fea9","line":362,"range":{"start_line":362,"start_character":54,"end_line":362,"end_character":59},"updated":"2016-04-07 13:55:56.000000000","message":"You need to pass this as \u0027err\u0027 not \u0027param\u0027.","commit_id":"39d232de71a2b591f00fc4df2adb5652dd5be83f"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"5c52f61ed5cdd6cc08e1a138c1b5d3831e256079","unresolved":false,"context_lines":[{"line_number":204,"context_line":"                # Warns in the first time"},{"line_number":205,"context_line":"                LOG.info(_LI(\"CHAP authentication disabled.\"))"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"            tgt_info[\u0027iscsi_secret\u0027] \u003d \"\""},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        # If the target does not exist, it should be created"},{"line_number":210,"context_line":"        if not tgt[\u0027found\u0027]:"}],"source_content_type":"text/x-python","patch_set":26,"id":"1a122d0e_b5d24f32","line":207,"range":{"start_line":207,"start_character":39,"end_line":207,"end_character":41},"updated":"2016-05-05 16:42:24.000000000","message":"If you set iscsi_secret as \"\" and the target[\u0027found\u0027] is false, the driver will try to create a new target passing the secret as empty, it raises an exception in HNAS because its a mandatory parameter.","commit_id":"c606753ae29723470f2ccf5eae8d3038757fec9a"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"04ae57f370d8bd788cd864d214637fb7e367d198","unresolved":false,"context_lines":[{"line_number":204,"context_line":"                # Warns in the first time"},{"line_number":205,"context_line":"                LOG.info(_LI(\"CHAP authentication disabled.\"))"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"            tgt_info[\u0027iscsi_secret\u0027] \u003d \"\""},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        # If the target does not exist, it should be created"},{"line_number":210,"context_line":"        if not tgt[\u0027found\u0027]:"}],"source_content_type":"text/x-python","patch_set":26,"id":"1a122d0e_ff93014d","line":207,"range":{"start_line":207,"start_character":39,"end_line":207,"end_character":41},"in_reply_to":"1a122d0e_b5d24f32","updated":"2016-05-09 17:21:00.000000000","message":"Done","commit_id":"c606753ae29723470f2ccf5eae8d3038757fec9a"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"2942d8cf71c4eab419dae269e479ac59eae71a61","unresolved":false,"context_lines":[{"line_number":395,"context_line":"        :param src: dictionary source volume reference"},{"line_number":396,"context_line":"        :returns: the provider location of the extended volume"},{"line_number":397,"context_line":"        \"\"\""},{"line_number":398,"context_line":"        if src.size \u003e dst.size:"},{"line_number":399,"context_line":"            msg \u003d \u0027Clone volume size must not be smaller than source volume\u0027"},{"line_number":400,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        fs_label \u003d self._get_service(dst)"},{"line_number":403,"context_line":"        size \u003d six.text_type(src[\u0027size\u0027])"}],"source_content_type":"text/x-python","patch_set":31,"id":"9abb7d3a_84f55d58","line":400,"range":{"start_line":398,"start_character":7,"end_line":400,"end_character":63},"updated":"2016-06-01 12:18:45.000000000","message":"This condition is tested by API.","commit_id":"3869eba893eae76446e06e8bdbc3ced647840def"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"a07d846121956be2a04b4fccd14ffeafede57fd2","unresolved":false,"context_lines":[{"line_number":395,"context_line":"        :param src: dictionary source volume reference"},{"line_number":396,"context_line":"        :returns: the provider location of the extended volume"},{"line_number":397,"context_line":"        \"\"\""},{"line_number":398,"context_line":"        if src.size \u003e dst.size:"},{"line_number":399,"context_line":"            msg \u003d \u0027Clone volume size must not be smaller than source volume\u0027"},{"line_number":400,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        fs_label \u003d self._get_service(dst)"},{"line_number":403,"context_line":"        size \u003d six.text_type(src[\u0027size\u0027])"}],"source_content_type":"text/x-python","patch_set":31,"id":"7aa08908_5ee29604","line":400,"range":{"start_line":398,"start_character":7,"end_line":400,"end_character":63},"in_reply_to":"9abb7d3a_84f55d58","updated":"2016-06-06 12:37:58.000000000","message":"Code removed on the dependent patch https://review.openstack.org/#/c/294076/22/cinder/volume/drivers/hitachi/hnas_iscsi.py\nThanks!","commit_id":"3869eba893eae76446e06e8bdbc3ced647840def"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"9f72e6abbe01b1d7b6bbdb255e2899d5a521c83d","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        tgt_alias \u003d \u0027\u0027"},{"line_number":149,"context_line":"        for i in range(0, MAX_HNAS_ISCSI_TARGETS):"},{"line_number":150,"context_line":"            tgt_alias \u003d \u0027evs\u0027 + evs_id + \u0027-tgt\u0027 + six.text_type(i)"},{"line_number":151,"context_line":"            # TODO(erlon): we need to go to the BE 32 times here"},{"line_number":152,"context_line":"            tgt \u003d self.backend.check_target(fs_label, tgt_alias)"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"            if (tgt[\u0027found\u0027] and"}],"source_content_type":"text/x-python","patch_set":32,"id":"7aa08908_bd58d6fb","line":151,"updated":"2016-06-06 15:16:57.000000000","message":"Is this still a TODO?\nWhat does it mean that we need to go to BE 32 times, that we should not \u0027break\u0027in L#160, but should continue no matter what?","commit_id":"af9048d89f3268014eb29234a24ebe1df482c9c8"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"954c27e7a3ad3225cc94c1d5da14ece06ae4859b","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        tgt_alias \u003d \u0027\u0027"},{"line_number":149,"context_line":"        for i in range(0, MAX_HNAS_ISCSI_TARGETS):"},{"line_number":150,"context_line":"            tgt_alias \u003d \u0027evs\u0027 + evs_id + \u0027-tgt\u0027 + six.text_type(i)"},{"line_number":151,"context_line":"            # TODO(erlon): we need to go to the BE 32 times here"},{"line_number":152,"context_line":"            tgt \u003d self.backend.check_target(fs_label, tgt_alias)"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"            if (tgt[\u0027found\u0027] and"}],"source_content_type":"text/x-python","patch_set":32,"id":"7aa08908_8cd8dc1f","line":151,"in_reply_to":"7aa08908_bd58d6fb","updated":"2016-06-13 18:02:52.000000000","message":"Yes, it was still a pending issue. \nThe \"problem\" here is that the command to list the targets in the backend was run in every iteration, what means that if there were 32 targets that could not be used, this loop would call the backend (HNAS) 32 times.\nThe idea was to save the data and call the backend only when it is really necessary, what we implemented in the new patch.\nThanks for bringing this up :)","commit_id":"af9048d89f3268014eb29234a24ebe1df482c9c8"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"be2c606fe4af9a0d1d416951f9b57c955441b955","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                service_parameters,"},{"line_number":95,"context_line":"                optional_parameters)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        LOG.info(_LI(\"Backend type: HNAS\"))"},{"line_number":98,"context_line":"        super(HNASISCSIDriver, self).__init__(*args, **kwargs)"},{"line_number":99,"context_line":"        self.backend \u003d hnas_backend.HNASSSHBackend(self.config)"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"7aa08908_a5786d7f","line":97,"range":{"start_line":97,"start_character":8,"end_line":97,"end_character":43},"updated":"2016-06-17 12:01:05.000000000","message":"No need to log this here. We log on do_setup()","commit_id":"ccbf071148e7d3e799f37a822fa1c2076be4b9fc"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"2944456079340d706a989c3b75da667efe5745a6","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                service_parameters,"},{"line_number":95,"context_line":"                optional_parameters)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        LOG.info(_LI(\"Backend type: HNAS\"))"},{"line_number":98,"context_line":"        super(HNASISCSIDriver, self).__init__(*args, **kwargs)"},{"line_number":99,"context_line":"        self.backend \u003d hnas_backend.HNASSSHBackend(self.config)"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"7aa08908_d9ac84ef","line":97,"range":{"start_line":97,"start_character":8,"end_line":97,"end_character":43},"in_reply_to":"7aa08908_a5786d7f","updated":"2016-06-17 13:52:35.000000000","message":"Done","commit_id":"ccbf071148e7d3e799f37a822fa1c2076be4b9fc"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"be2c606fe4af9a0d1d416951f9b57c955441b955","unresolved":false,"context_lines":[{"line_number":338,"context_line":"        pass"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"    def do_setup(self, context):"},{"line_number":341,"context_line":"        \"\"\"Sets up and verify Hitachi HNAS storage connection.\"\"\""},{"line_number":342,"context_line":"        self.context \u003d context"},{"line_number":343,"context_line":"        self._check_fs_list()"},{"line_number":344,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"7aa08908_a5a18df9","line":341,"updated":"2016-06-17 12:01:05.000000000","message":"First thing before probe the driver:\n        version_info \u003d self.backend.get_version()\n        LOG.info(_LI(\"HNAS Array iSCSI driver\"))\n        LOG.info(_LI(\"HNAS model: %s\"), version_info[\u0027model\u0027])\n        LOG.info(_LI(\"HNAS version: %s\"), version_info[\u0027version\u0027])\n        LOG.info(_LI(\"HNAS hardware: %s\"), version_info[\u0027hardware\u0027])\n        LOG.info(_LI(\"HNAS S/N: %s\"), version_info[\u0027serial\u0027])","commit_id":"ccbf071148e7d3e799f37a822fa1c2076be4b9fc"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"2944456079340d706a989c3b75da667efe5745a6","unresolved":false,"context_lines":[{"line_number":338,"context_line":"        pass"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"    def do_setup(self, context):"},{"line_number":341,"context_line":"        \"\"\"Sets up and verify Hitachi HNAS storage connection.\"\"\""},{"line_number":342,"context_line":"        self.context \u003d context"},{"line_number":343,"context_line":"        self._check_fs_list()"},{"line_number":344,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"7aa08908_398dc87c","line":341,"in_reply_to":"7aa08908_0870783f","updated":"2016-06-17 13:52:35.000000000","message":"ok :)","commit_id":"ccbf071148e7d3e799f37a822fa1c2076be4b9fc"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"b8657fd7386ccbfcdd2abab482b5b30b830ad5c4","unresolved":false,"context_lines":[{"line_number":338,"context_line":"        pass"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"    def do_setup(self, context):"},{"line_number":341,"context_line":"        \"\"\"Sets up and verify Hitachi HNAS storage connection.\"\"\""},{"line_number":342,"context_line":"        self.context \u003d context"},{"line_number":343,"context_line":"        self._check_fs_list()"},{"line_number":344,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"7aa08908_0870783f","line":341,"in_reply_to":"7aa08908_a5a18df9","updated":"2016-06-17 12:07:51.000000000","message":"Never mind. This is fixed in the next patch series.","commit_id":"ccbf071148e7d3e799f37a822fa1c2076be4b9fc"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c7b3915d520b782635a50930fa759746ee9c182a","unresolved":false,"context_lines":[{"line_number":274,"context_line":"            if not self.backend.get_fs_info(fs):"},{"line_number":275,"context_line":"                LOG.error(_LE(\"File system not found or not mounted: %(fs)s\"),"},{"line_number":276,"context_line":"                          {\u0027fs\u0027: fs})"},{"line_number":277,"context_line":"                err \u003d fs + \": File system not found or not mounted: \""},{"line_number":278,"context_line":"                raise exception.ParameterNotFound(param\u003derr)"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    def _check_pool_and_fs(self, volume, fs_label):"}],"source_content_type":"text/x-python","patch_set":44,"id":"dada55a8_633814ef","line":277,"updated":"2016-07-26 19:18:11.000000000","message":"This should have the _() translation marker.\n\nIt would probably be better to come up with one common string to use for both the error log and the exception since these two strings are basically the same information formatted differently.","commit_id":"f2f66907ea5fbe2f0a967a56019c0ab1e05f8e1c"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"d8516af4d8128c38d86e6e7b00e7dd26fe0beac9","unresolved":false,"context_lines":[{"line_number":274,"context_line":"            if not self.backend.get_fs_info(fs):"},{"line_number":275,"context_line":"                LOG.error(_LE(\"File system not found or not mounted: %(fs)s\"),"},{"line_number":276,"context_line":"                          {\u0027fs\u0027: fs})"},{"line_number":277,"context_line":"                err \u003d fs + \": File system not found or not mounted: \""},{"line_number":278,"context_line":"                raise exception.ParameterNotFound(param\u003derr)"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    def _check_pool_and_fs(self, volume, fs_label):"}],"source_content_type":"text/x-python","patch_set":44,"id":"dada55a8_64b116e0","line":277,"in_reply_to":"dada55a8_633814ef","updated":"2016-07-27 20:23:50.000000000","message":"We have a dependent patch (https://review.openstack.org/#/c/310785) to improve all the log messages. So, I\u0027m just copying the message from there.","commit_id":"f2f66907ea5fbe2f0a967a56019c0ab1e05f8e1c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c7b3915d520b782635a50930fa759746ee9c182a","unresolved":false,"context_lines":[{"line_number":402,"context_line":"        :returns: the provider location of the extended volume"},{"line_number":403,"context_line":"        \"\"\""},{"line_number":404,"context_line":"        fs_label \u003d self._get_service(dst)"},{"line_number":405,"context_line":"        size \u003d six.text_type(src[\u0027size\u0027])"},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"        self.backend.create_cloned_lu(src.name, fs_label, dst.name)"},{"line_number":408,"context_line":""}],"source_content_type":"text/x-python","patch_set":44,"id":"dada55a8_863f16b3","line":405,"updated":"2016-07-26 19:18:11.000000000","message":"It doesn\u0027t look like this conversion to a string is needed here as it\u0027s just redeclared below if it\u0027s needed.","commit_id":"f2f66907ea5fbe2f0a967a56019c0ab1e05f8e1c"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"d8516af4d8128c38d86e6e7b00e7dd26fe0beac9","unresolved":false,"context_lines":[{"line_number":402,"context_line":"        :returns: the provider location of the extended volume"},{"line_number":403,"context_line":"        \"\"\""},{"line_number":404,"context_line":"        fs_label \u003d self._get_service(dst)"},{"line_number":405,"context_line":"        size \u003d six.text_type(src[\u0027size\u0027])"},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"        self.backend.create_cloned_lu(src.name, fs_label, dst.name)"},{"line_number":408,"context_line":""}],"source_content_type":"text/x-python","patch_set":44,"id":"dada55a8_c460c203","line":405,"in_reply_to":"dada55a8_863f16b3","updated":"2016-07-27 20:23:50.000000000","message":"Done","commit_id":"f2f66907ea5fbe2f0a967a56019c0ab1e05f8e1c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c7b3915d520b782635a50930fa759746ee9c182a","unresolved":false,"context_lines":[{"line_number":513,"context_line":"        :param snapshot: dictionary snapshot reference"},{"line_number":514,"context_line":"        :returns: the provider location of the snapshot"},{"line_number":515,"context_line":"        \"\"\""},{"line_number":516,"context_line":"        size \u003d int(snapshot.volume_size) * units.Ki"},{"line_number":517,"context_line":"        fs \u003d self._get_service(volume)"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"        self.backend.create_cloned_lu(snapshot.name, fs, volume.name)"}],"source_content_type":"text/x-python","patch_set":44,"id":"dada55a8_46435e13","line":516,"range":{"start_line":516,"start_character":8,"end_line":516,"end_character":12},"updated":"2016-07-26 19:18:11.000000000","message":"Doesn\u0027t look like this is being used anywhere other than the logging. This call needs to make sure the new volume is at the requested size.","commit_id":"f2f66907ea5fbe2f0a967a56019c0ab1e05f8e1c"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"d8516af4d8128c38d86e6e7b00e7dd26fe0beac9","unresolved":false,"context_lines":[{"line_number":513,"context_line":"        :param snapshot: dictionary snapshot reference"},{"line_number":514,"context_line":"        :returns: the provider location of the snapshot"},{"line_number":515,"context_line":"        \"\"\""},{"line_number":516,"context_line":"        size \u003d int(snapshot.volume_size) * units.Ki"},{"line_number":517,"context_line":"        fs \u003d self._get_service(volume)"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"        self.backend.create_cloned_lu(snapshot.name, fs, volume.name)"}],"source_content_type":"text/x-python","patch_set":44,"id":"dada55a8_7beb7413","line":516,"range":{"start_line":516,"start_character":8,"end_line":516,"end_character":12},"in_reply_to":"dada55a8_46435e13","updated":"2016-07-27 20:23:50.000000000","message":"Done","commit_id":"f2f66907ea5fbe2f0a967a56019c0ab1e05f8e1c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c7b3915d520b782635a50930fa759746ee9c182a","unresolved":false,"context_lines":[{"line_number":531,"context_line":"        \"\"\""},{"line_number":532,"context_line":"        fs \u003d self._get_service(snapshot.volume)"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"        size \u003d six.text_type(snapshot.volume_size)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"        self.backend.create_cloned_lu(snapshot.volume_name, fs, snapshot.name)"},{"line_number":537,"context_line":""}],"source_content_type":"text/x-python","patch_set":44,"id":"dada55a8_46119e03","line":534,"range":{"start_line":534,"start_character":8,"end_line":534,"end_character":12},"updated":"2016-07-26 19:18:11.000000000","message":"Not used here either, but for just snapshot creation there is no need to modify the size anyway.","commit_id":"f2f66907ea5fbe2f0a967a56019c0ab1e05f8e1c"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"d8516af4d8128c38d86e6e7b00e7dd26fe0beac9","unresolved":false,"context_lines":[{"line_number":531,"context_line":"        \"\"\""},{"line_number":532,"context_line":"        fs \u003d self._get_service(snapshot.volume)"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"        size \u003d six.text_type(snapshot.volume_size)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"        self.backend.create_cloned_lu(snapshot.volume_name, fs, snapshot.name)"},{"line_number":537,"context_line":""}],"source_content_type":"text/x-python","patch_set":44,"id":"dada55a8_3bc3bc39","line":534,"range":{"start_line":534,"start_character":8,"end_line":534,"end_character":12},"in_reply_to":"dada55a8_46119e03","updated":"2016-07-27 20:23:50.000000000","message":"Done","commit_id":"f2f66907ea5fbe2f0a967a56019c0ab1e05f8e1c"}],"cinder/volume/drivers/hitachi/hnas_nfs.py":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"cd6f697c14cf9fbe5ed4312f7954df3534dd1ed5","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    Version 3.0.0: Added pool aware scheduling"},{"line_number":65,"context_line":"    Version 4.0.0: Added manage/unmanage features"},{"line_number":66,"context_line":"    Version 5.0.0: Remove looping in driver initialization"},{"line_number":67,"context_line":"                   Code cleaning up"},{"line_number":68,"context_line":"                   Deprecates XML option file"},{"line_number":69,"context_line":"    \"\"\""},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_2a153e3f","line":67,"updated":"2016-02-29 17:07:37.000000000","message":"Also implemented:New of communication interface between driver and HNAS backend.","commit_id":"606dcf9a3eec9e7323ace8d2c3bfe611709eb639"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"cd6f697c14cf9fbe5ed4312f7954df3534dd1ed5","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    Version 4.0.0: Added manage/unmanage features"},{"line_number":66,"context_line":"    Version 5.0.0: Remove looping in driver initialization"},{"line_number":67,"context_line":"                   Code cleaning up"},{"line_number":68,"context_line":"                   Deprecates XML option file"},{"line_number":69,"context_line":"    \"\"\""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_97cd9333","line":68,"range":{"start_line":68,"start_character":19,"end_line":68,"end_character":45},"updated":"2016-02-29 17:07:37.000000000","message":"This is not implemented in this patch.","commit_id":"606dcf9a3eec9e7323ace8d2c3bfe611709eb639"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"d369c587e0e42f776487c2cb4a92053d3f03ce21","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    Version 2.2.0: Added support to SSH authentication"},{"line_number":64,"context_line":"    Version 3.0.0: Added pool aware scheduling"},{"line_number":65,"context_line":"    Version 4.0.0: Added manage/unmanage features"},{"line_number":66,"context_line":"    Version 5.0.0: Remove looping in driver initialization"},{"line_number":67,"context_line":"                   Code cleaning up"},{"line_number":68,"context_line":"                   New communication interface between the driver and HNAS"},{"line_number":69,"context_line":"                   Updated to use versioned objects"}],"source_content_type":"text/x-python","patch_set":6,"id":"7af24918_b250480c","line":66,"range":{"start_line":66,"start_character":4,"end_line":66,"end_character":58},"updated":"2016-03-04 19:58:41.000000000","message":"You removed version 4.1.0 from history. Maybe keep it?","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"ea28ad137e3faa387a9de01dae606369aa55839e","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    Version 2.2.0: Added support to SSH authentication"},{"line_number":64,"context_line":"    Version 3.0.0: Added pool aware scheduling"},{"line_number":65,"context_line":"    Version 4.0.0: Added manage/unmanage features"},{"line_number":66,"context_line":"    Version 5.0.0: Remove looping in driver initialization"},{"line_number":67,"context_line":"                   Code cleaning up"},{"line_number":68,"context_line":"                   New communication interface between the driver and HNAS"},{"line_number":69,"context_line":"                   Updated to use versioned objects"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_7a9d5465","line":66,"range":{"start_line":66,"start_character":4,"end_line":66,"end_character":58},"in_reply_to":"7af24918_b250480c","updated":"2016-03-11 14:05:05.000000000","message":"Done","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"536f0685381f83bb6b9f565db4b585c5fdc4b611","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                optional_parameters)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        super(HDSNFSDriver, self).__init__(*args, **kwargs)"},{"line_number":88,"context_line":"        self.bend \u003d hnas_ssh_backend.HNASSSHBackend(self.config)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def _get_service(self, volume):"},{"line_number":91,"context_line":"        \"\"\"Get service parameters."}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_b0db191b","line":88,"range":{"start_line":88,"start_character":13,"end_line":88,"end_character":17},"updated":"2016-03-07 12:38:40.000000000","message":"Change this to \u0027backend\u0027 to be consistent to hnas_iscsi file.","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"ea28ad137e3faa387a9de01dae606369aa55839e","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                optional_parameters)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        super(HDSNFSDriver, self).__init__(*args, **kwargs)"},{"line_number":88,"context_line":"        self.bend \u003d hnas_ssh_backend.HNASSSHBackend(self.config)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def _get_service(self, volume):"},{"line_number":91,"context_line":"        \"\"\"Get service parameters."}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_5a717843","line":88,"range":{"start_line":88,"start_character":13,"end_line":88,"end_character":17},"in_reply_to":"5aef4532_b0db191b","updated":"2016-03-11 14:05:05.000000000","message":"Done","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"536f0685381f83bb6b9f565db4b585c5fdc4b611","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        its type."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        :param volume: dictionary volume reference"},{"line_number":97,"context_line":"        \"\"\""},{"line_number":98,"context_line":"        LOG.debug(\"_get_service: volume: %(vol)s\", {\u0027vol\u0027: volume})"},{"line_number":99,"context_line":"        label \u003d utils.extract_host(volume.host, level\u003d\u0027pool\u0027)"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_9046ddbd","line":97,"range":{"start_line":97,"start_character":8,"end_line":97,"end_character":11},"updated":"2016-03-07 12:38:40.000000000","message":"Missing :returns: in docstring.","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"ea28ad137e3faa387a9de01dae606369aa55839e","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        its type."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        :param volume: dictionary volume reference"},{"line_number":97,"context_line":"        \"\"\""},{"line_number":98,"context_line":"        LOG.debug(\"_get_service: volume: %(vol)s\", {\u0027vol\u0027: volume})"},{"line_number":99,"context_line":"        label \u003d utils.extract_host(volume.host, level\u003d\u0027pool\u0027)"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_fae5e4a3","line":97,"range":{"start_line":97,"start_character":8,"end_line":97,"end_character":11},"in_reply_to":"5aef4532_9046ddbd","updated":"2016-03-11 14:05:05.000000000","message":"Done","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"536f0685381f83bb6b9f565db4b585c5fdc4b611","unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        :param nfs_share string, example 172.18.194.100:/var/nfs"},{"line_number":136,"context_line":"        :param volume_name string,"},{"line_number":137,"context_line":"            example volume-91ee65ec-c473-4391-8c09-162b00c68a8c"},{"line_number":138,"context_line":"        \"\"\""},{"line_number":139,"context_line":"        return os.path.join(self._get_mount_point_for_share(nfs_share),"},{"line_number":140,"context_line":"                            volume_name)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_505bb554","line":137,"range":{"start_line":137,"start_character":8,"end_line":137,"end_character":12},"updated":"2016-03-07 12:38:40.000000000","message":"Delete this tab and add :returns:","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"ea28ad137e3faa387a9de01dae606369aa55839e","unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        :param nfs_share string, example 172.18.194.100:/var/nfs"},{"line_number":136,"context_line":"        :param volume_name string,"},{"line_number":137,"context_line":"            example volume-91ee65ec-c473-4391-8c09-162b00c68a8c"},{"line_number":138,"context_line":"        \"\"\""},{"line_number":139,"context_line":"        return os.path.join(self._get_mount_point_for_share(nfs_share),"},{"line_number":140,"context_line":"                            volume_name)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_9a502034","line":137,"range":{"start_line":137,"start_character":8,"end_line":137,"end_character":12},"in_reply_to":"5aef4532_505bb554","updated":"2016-03-11 14:05:05.000000000","message":"Done","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"536f0685381f83bb6b9f565db4b585c5fdc4b611","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        Convert that to an IP address and then restore the entire path."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        :param vol_ref:  driver-specific information used to identify a volume"},{"line_number":201,"context_line":"        :returns:         a volume reference where share is in IP format"},{"line_number":202,"context_line":"        \"\"\""},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        # First strip out share and convert to IP format."}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_d01ce579","line":201,"range":{"start_line":201,"start_character":17,"end_line":201,"end_character":26},"updated":"2016-03-07 12:38:40.000000000","message":"Delete this spaces.","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"ea28ad137e3faa387a9de01dae606369aa55839e","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        Convert that to an IP address and then restore the entire path."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        :param vol_ref:  driver-specific information used to identify a volume"},{"line_number":201,"context_line":"        :returns:         a volume reference where share is in IP format"},{"line_number":202,"context_line":"        \"\"\""},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        # First strip out share and convert to IP format."}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_5a2a1891","line":201,"range":{"start_line":201,"start_character":17,"end_line":201,"end_character":26},"in_reply_to":"5aef4532_d01ce579","updated":"2016-03-11 14:05:05.000000000","message":"Done","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"d369c587e0e42f776487c2cb4a92053d3f03ce21","unresolved":false,"context_lines":[{"line_number":338,"context_line":""},{"line_number":339,"context_line":"            export_list \u003d out.split(\u0027\\n\u0027)[1:]"},{"line_number":340,"context_line":"            export_list.pop()"},{"line_number":341,"context_line":"            if (len(export_list) \u003c 1 or"},{"line_number":342,"context_line":"               mountpoint not in map(lambda x: x.split()[0], export_list) or"},{"line_number":343,"context_line":"               not export_configured):"},{"line_number":344,"context_line":"                LOG.error(_LE(\"Configured share %(share)s is not present\""},{"line_number":345,"context_line":"                          \"in %(srv)s.\"), {\u0027share\u0027: mountpoint,"},{"line_number":346,"context_line":"                                           \u0027srv\u0027: server_ip})"}],"source_content_type":"text/x-python","patch_set":6,"id":"7af24918_ad6109ab","line":343,"range":{"start_line":341,"start_character":0,"end_line":343,"end_character":37},"updated":"2016-03-04 19:58:41.000000000","message":"This condition seems overly complicated. Try breaking it into smaller parts. The map should definitely be extracted into a variable.","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"ea28ad137e3faa387a9de01dae606369aa55839e","unresolved":false,"context_lines":[{"line_number":338,"context_line":""},{"line_number":339,"context_line":"            export_list \u003d out.split(\u0027\\n\u0027)[1:]"},{"line_number":340,"context_line":"            export_list.pop()"},{"line_number":341,"context_line":"            if (len(export_list) \u003c 1 or"},{"line_number":342,"context_line":"               mountpoint not in map(lambda x: x.split()[0], export_list) or"},{"line_number":343,"context_line":"               not export_configured):"},{"line_number":344,"context_line":"                LOG.error(_LE(\"Configured share %(share)s is not present\""},{"line_number":345,"context_line":"                          \"in %(srv)s.\"), {\u0027share\u0027: mountpoint,"},{"line_number":346,"context_line":"                                           \u0027srv\u0027: server_ip})"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_f006a51a","line":343,"range":{"start_line":341,"start_character":0,"end_line":343,"end_character":37},"in_reply_to":"7af24918_ad6109ab","updated":"2016-03-11 14:05:05.000000000","message":"Done","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"536f0685381f83bb6b9f565db4b585c5fdc4b611","unresolved":false,"context_lines":[{"line_number":363,"context_line":"        LOG.info(_LI(\"Configured pools: %(pool)s\"), {\u0027pool\u0027: self.pools})"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"    def create_volume(self, volume):"},{"line_number":366,"context_line":"        \"\"\"Creates a volume."},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"        :param volume: volume reference"},{"line_number":369,"context_line":"        \"\"\""},{"line_number":370,"context_line":"        self._ensure_shares_mounted()"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"        (hdp, path, fslabel) \u003d self._get_service(volume)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_0b5d7ce9","line":369,"range":{"start_line":366,"start_character":8,"end_line":369,"end_character":11},"updated":"2016-03-07 12:38:40.000000000","message":"Add :returns: here and in all functions below this one.","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"ea28ad137e3faa387a9de01dae606369aa55839e","unresolved":false,"context_lines":[{"line_number":363,"context_line":"        LOG.info(_LI(\"Configured pools: %(pool)s\"), {\u0027pool\u0027: self.pools})"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"    def create_volume(self, volume):"},{"line_number":366,"context_line":"        \"\"\"Creates a volume."},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"        :param volume: volume reference"},{"line_number":369,"context_line":"        \"\"\""},{"line_number":370,"context_line":"        self._ensure_shares_mounted()"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"        (hdp, path, fslabel) \u003d self._get_service(volume)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_b04edd6c","line":369,"range":{"start_line":366,"start_character":8,"end_line":369,"end_character":11},"in_reply_to":"5aef4532_0b5d7ce9","updated":"2016-03-11 14:05:05.000000000","message":"Done","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"536f0685381f83bb6b9f565db4b585c5fdc4b611","unresolved":false,"context_lines":[{"line_number":508,"context_line":"        # Resize the image file on share to new size."},{"line_number":509,"context_line":"        LOG.debug(\"Checking file for resize\")"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"        if self._is_file_size_equal(path, new_size):"},{"line_number":512,"context_line":"            return"},{"line_number":513,"context_line":"        else:"},{"line_number":514,"context_line":"            LOG.info(_LI(\"Resizing file to %(sz)sG\"), {\u0027sz\u0027: new_size})"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_5093b5a3","line":511,"range":{"start_line":511,"start_character":8,"end_line":511,"end_character":52},"updated":"2016-03-07 12:38:40.000000000","message":"Wouldn\u0027t be better change to \u0027if not ...\u0027 and then suppress the use of else?","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"ea28ad137e3faa387a9de01dae606369aa55839e","unresolved":false,"context_lines":[{"line_number":508,"context_line":"        # Resize the image file on share to new size."},{"line_number":509,"context_line":"        LOG.debug(\"Checking file for resize\")"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"        if self._is_file_size_equal(path, new_size):"},{"line_number":512,"context_line":"            return"},{"line_number":513,"context_line":"        else:"},{"line_number":514,"context_line":"            LOG.info(_LI(\"Resizing file to %(sz)sG\"), {\u0027sz\u0027: new_size})"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_046cafce","line":511,"range":{"start_line":511,"start_character":8,"end_line":511,"end_character":52},"in_reply_to":"5aef4532_5093b5a3","updated":"2016-03-11 14:05:05.000000000","message":"Done","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"536f0685381f83bb6b9f565db4b585c5fdc4b611","unresolved":false,"context_lines":[{"line_number":516,"context_line":"            if self._is_file_size_equal(path, new_size):"},{"line_number":517,"context_line":"                LOG.info(_LI(\"LUN %(id)s extended to %(size)s GB.\"),"},{"line_number":518,"context_line":"                         {\u0027id\u0027: volume.id, \u0027size\u0027: new_size})"},{"line_number":519,"context_line":"                return"},{"line_number":520,"context_line":"            else:"},{"line_number":521,"context_line":"                raise exception.InvalidResults("},{"line_number":522,"context_line":"                    _(\"Resizing image file failed.\"))"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_1073edb2","line":519,"range":{"start_line":519,"start_character":16,"end_line":519,"end_character":22},"updated":"2016-03-07 12:38:40.000000000","message":"You can delete this \u0027return\u0027 since you are not returning anything.","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"ea28ad137e3faa387a9de01dae606369aa55839e","unresolved":false,"context_lines":[{"line_number":516,"context_line":"            if self._is_file_size_equal(path, new_size):"},{"line_number":517,"context_line":"                LOG.info(_LI(\"LUN %(id)s extended to %(size)s GB.\"),"},{"line_number":518,"context_line":"                         {\u0027id\u0027: volume.id, \u0027size\u0027: new_size})"},{"line_number":519,"context_line":"                return"},{"line_number":520,"context_line":"            else:"},{"line_number":521,"context_line":"                raise exception.InvalidResults("},{"line_number":522,"context_line":"                    _(\"Resizing image file failed.\"))"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_a4885b72","line":519,"range":{"start_line":519,"start_character":16,"end_line":519,"end_character":22},"in_reply_to":"5aef4532_1073edb2","updated":"2016-03-11 14:05:05.000000000","message":"Done","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"3fa580fabdb60668dbf561246e39d00d91892727","unresolved":false,"context_lines":[{"line_number":320,"context_line":"        elist \u003d self.backend.get_export_list()"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"        # Check for all configured exports"},{"line_number":323,"context_line":"        for svc_name, svc_info in self.config[\u0027services\u0027].iteritems():"},{"line_number":324,"context_line":"            server_ip \u003d svc_info[\u0027hdp\u0027].split(\u0027:\u0027)[0]"},{"line_number":325,"context_line":"            mountpoint \u003d svc_info[\u0027hdp\u0027].split(\u0027:\u0027)[1]"},{"line_number":326,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa0719c6_bfff2d00","line":323,"range":{"start_line":323,"start_character":58,"end_line":323,"end_character":67},"updated":"2016-03-22 12:40:01.000000000","message":"Replace dict.iteritems() with dict.items() for python 3.4","commit_id":"1fa94497f98d074a945923e0ea6883eff5f9e1c6"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"8d277c478fc09d9f639ab700c9e6462372d07bac","unresolved":false,"context_lines":[{"line_number":320,"context_line":"        elist \u003d self.backend.get_export_list()"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"        # Check for all configured exports"},{"line_number":323,"context_line":"        for svc_name, svc_info in self.config[\u0027services\u0027].iteritems():"},{"line_number":324,"context_line":"            server_ip \u003d svc_info[\u0027hdp\u0027].split(\u0027:\u0027)[0]"},{"line_number":325,"context_line":"            mountpoint \u003d svc_info[\u0027hdp\u0027].split(\u0027:\u0027)[1]"},{"line_number":326,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa0719c6_cd3a3498","line":323,"range":{"start_line":323,"start_character":58,"end_line":323,"end_character":67},"in_reply_to":"fa0719c6_bfff2d00","updated":"2016-03-24 17:43:00.000000000","message":"Done","commit_id":"1fa94497f98d074a945923e0ea6883eff5f9e1c6"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"15569626fa921e72892848f75ad006cd05e364fa","unresolved":false,"context_lines":[{"line_number":335,"context_line":"            try:"},{"line_number":336,"context_line":"                out, err \u003d self._execute(\u0027showmount\u0027, \u0027-e\u0027, server_ip)"},{"line_number":337,"context_line":"            except processutils.ProcessExecutionError:"},{"line_number":338,"context_line":"                LOG.error(_LE(\"NFS server %(srv)s not reacheable!\"),"},{"line_number":339,"context_line":"                          {\u0027srv\u0027: server_ip})"},{"line_number":340,"context_line":"                raise"},{"line_number":341,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa0719c6_9607b61b","line":338,"range":{"start_line":338,"start_character":54,"end_line":338,"end_character":64},"updated":"2016-03-22 12:18:48.000000000","message":"s/reacheable/reachable","commit_id":"1fa94497f98d074a945923e0ea6883eff5f9e1c6"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"8d277c478fc09d9f639ab700c9e6462372d07bac","unresolved":false,"context_lines":[{"line_number":335,"context_line":"            try:"},{"line_number":336,"context_line":"                out, err \u003d self._execute(\u0027showmount\u0027, \u0027-e\u0027, server_ip)"},{"line_number":337,"context_line":"            except processutils.ProcessExecutionError:"},{"line_number":338,"context_line":"                LOG.error(_LE(\"NFS server %(srv)s not reacheable!\"),"},{"line_number":339,"context_line":"                          {\u0027srv\u0027: server_ip})"},{"line_number":340,"context_line":"                raise"},{"line_number":341,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa0719c6_2db5b0ed","line":338,"range":{"start_line":338,"start_character":54,"end_line":338,"end_character":64},"in_reply_to":"fa0719c6_9607b61b","updated":"2016-03-24 17:43:00.000000000","message":"Done","commit_id":"1fa94497f98d074a945923e0ea6883eff5f9e1c6"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"58631a2d3810efce0094b7ff93853e59c7773eaf","unresolved":false,"context_lines":[{"line_number":217,"context_line":""},{"line_number":218,"context_line":"        return False"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    def _try_execute(self, *command, **kwargs):"},{"line_number":221,"context_line":"        # NOTE(vish): Volume commands can partially fail due to timing, but"},{"line_number":222,"context_line":"        #             running them a second time on failure will usually"},{"line_number":223,"context_line":"        #             recover nicely."}],"source_content_type":"text/x-python","patch_set":28,"id":"dab17558_1f4b385a","line":220,"updated":"2016-05-11 14:37:22.000000000","message":"This method shouldn\u0027t be in here, just use _try_execute from driver.py\u0027s BaseVD.","commit_id":"ae80a71465a5f7309bac5adcaacf0c42c0013033"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"8fc3f233aba6eb63c49d976b307f412628b906c4","unresolved":false,"context_lines":[{"line_number":217,"context_line":""},{"line_number":218,"context_line":"        return False"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    def _try_execute(self, *command, **kwargs):"},{"line_number":221,"context_line":"        # NOTE(vish): Volume commands can partially fail due to timing, but"},{"line_number":222,"context_line":"        #             running them a second time on failure will usually"},{"line_number":223,"context_line":"        #             recover nicely."}],"source_content_type":"text/x-python","patch_set":28,"id":"dab17558_99ac1a37","line":220,"in_reply_to":"dab17558_1f4b385a","updated":"2016-05-12 19:47:28.000000000","message":"Done","commit_id":"ae80a71465a5f7309bac5adcaacf0c42c0013033"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"9f72e6abbe01b1d7b6bbdb255e2899d5a521c83d","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        :param volume: dictionary volume reference"},{"line_number":102,"context_line":"        :returns: Tuple containing the service parameters (label,"},{"line_number":103,"context_line":"        export path and export file system)"},{"line_number":104,"context_line":"        \"\"\""},{"line_number":105,"context_line":"        LOG.debug(\"_get_service: volume: %(vol)s\", {\u0027vol\u0027: volume})"},{"line_number":106,"context_line":"        label \u003d utils.extract_host(volume.host, level\u003d\u0027pool\u0027)"}],"source_content_type":"text/x-python","patch_set":32,"id":"7aa08908_60eec123","line":103,"updated":"2016-06-06 15:16:57.000000000","message":"or raise error","commit_id":"af9048d89f3268014eb29234a24ebe1df482c9c8"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"954c27e7a3ad3225cc94c1d5da14ece06ae4859b","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        :param volume: dictionary volume reference"},{"line_number":102,"context_line":"        :returns: Tuple containing the service parameters (label,"},{"line_number":103,"context_line":"        export path and export file system)"},{"line_number":104,"context_line":"        \"\"\""},{"line_number":105,"context_line":"        LOG.debug(\"_get_service: volume: %(vol)s\", {\u0027vol\u0027: volume})"},{"line_number":106,"context_line":"        label \u003d utils.extract_host(volume.host, level\u003d\u0027pool\u0027)"}],"source_content_type":"text/x-python","patch_set":32,"id":"7aa08908_98a9da27","line":103,"in_reply_to":"7aa08908_60eec123","updated":"2016-06-13 18:02:52.000000000","message":"Done","commit_id":"af9048d89f3268014eb29234a24ebe1df482c9c8"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"9f72e6abbe01b1d7b6bbdb255e2899d5a521c83d","unresolved":false,"context_lines":[{"line_number":202,"context_line":"                      run_as_root\u003dTrue)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    def _volume_not_present(self, nfs_mount, volume_name):"},{"line_number":205,"context_line":"        \"\"\"Check if volume exists."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        :param volume_name: string volume name"},{"line_number":208,"context_line":"        :returns: boolean (true for volume not present and false otherwise)"}],"source_content_type":"text/x-python","patch_set":32,"id":"7aa08908_dd2202b9","line":205,"updated":"2016-06-06 15:16:57.000000000","message":"Nit:\nActually, Check if volume not exists.\n:)","commit_id":"af9048d89f3268014eb29234a24ebe1df482c9c8"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"954c27e7a3ad3225cc94c1d5da14ece06ae4859b","unresolved":false,"context_lines":[{"line_number":202,"context_line":"                      run_as_root\u003dTrue)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    def _volume_not_present(self, nfs_mount, volume_name):"},{"line_number":205,"context_line":"        \"\"\"Check if volume exists."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        :param volume_name: string volume name"},{"line_number":208,"context_line":"        :returns: boolean (true for volume not present and false otherwise)"}],"source_content_type":"text/x-python","patch_set":32,"id":"7aa08908_f870dede","line":205,"in_reply_to":"7aa08908_dd2202b9","updated":"2016-06-13 18:02:52.000000000","message":"Done","commit_id":"af9048d89f3268014eb29234a24ebe1df482c9c8"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"9f72e6abbe01b1d7b6bbdb255e2899d5a521c83d","unresolved":false,"context_lines":[{"line_number":553,"context_line":""},{"line_number":554,"context_line":"        :param volume: cinder volume to manage"},{"line_number":555,"context_line":"        :param existing_vol_ref: existing volume to take under management"},{"line_number":556,"context_line":"        :returns: the size of the volume"},{"line_number":557,"context_line":"        \"\"\""},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"        # Attempt to find NFS share, NFS mount, and volume path from vol_ref."}],"source_content_type":"text/x-python","patch_set":32,"id":"7aa08908_c041750d","line":556,"updated":"2016-06-06 15:16:57.000000000","message":"or raise error","commit_id":"af9048d89f3268014eb29234a24ebe1df482c9c8"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"954c27e7a3ad3225cc94c1d5da14ece06ae4859b","unresolved":false,"context_lines":[{"line_number":553,"context_line":""},{"line_number":554,"context_line":"        :param volume: cinder volume to manage"},{"line_number":555,"context_line":"        :param existing_vol_ref: existing volume to take under management"},{"line_number":556,"context_line":"        :returns: the size of the volume"},{"line_number":557,"context_line":"        \"\"\""},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"        # Attempt to find NFS share, NFS mount, and volume path from vol_ref."}],"source_content_type":"text/x-python","patch_set":32,"id":"7aa08908_6eeee4b5","line":556,"in_reply_to":"7aa08908_c041750d","updated":"2016-06-13 18:02:52.000000000","message":"Done","commit_id":"af9048d89f3268014eb29234a24ebe1df482c9c8"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"a73219523ce18037eb15df9f53d6714b77c8ae84","unresolved":false,"context_lines":[{"line_number":392,"context_line":""},{"line_number":393,"context_line":"        :param vol_ref: driver-specific information used to identify a volume"},{"line_number":394,"context_line":"        :returns: a volume reference where share is in IP format or raise error"},{"line_number":395,"context_line":"        \"\"\""},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"        # First strip out share and convert to IP format."},{"line_number":398,"context_line":"        share_split \u003d vol_ref.split(\u0027:\u0027)"}],"source_content_type":"text/x-python","patch_set":33,"id":"7aa08908_53b78884","line":395,"updated":"2016-06-14 13:30:54.000000000","message":"nit: raises error\nPerhaps if you want to be consistent","commit_id":"dde30bbd87e25ef6d6fb2624a8659e48a9cbeef4"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"315b6b3017403c115b566bcc032db28dad65cb07","unresolved":false,"context_lines":[{"line_number":392,"context_line":""},{"line_number":393,"context_line":"        :param vol_ref: driver-specific information used to identify a volume"},{"line_number":394,"context_line":"        :returns: a volume reference where share is in IP format or raise error"},{"line_number":395,"context_line":"        \"\"\""},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"        # First strip out share and convert to IP format."},{"line_number":398,"context_line":"        share_split \u003d vol_ref.split(\u0027:\u0027)"}],"source_content_type":"text/x-python","patch_set":33,"id":"7aa08908_0f94a134","line":395,"in_reply_to":"7aa08908_53b78884","updated":"2016-06-14 17:54:43.000000000","message":"Done","commit_id":"dde30bbd87e25ef6d6fb2624a8659e48a9cbeef4"}],"cinder/volume/drivers/hitachi/hnas_ssh_backend.py":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"cd6f697c14cf9fbe5ed4312f7954df3534dd1ed5","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        except putils.ProcessExecutionError as e:"},{"line_number":108,"context_line":"            LOG.error(_LE(\u0027Error getting iSCSI target info \u0027"},{"line_number":109,"context_line":"                          \u0027from EVS %(evs)s.\u0027), {\u0027evs\u0027: evsid})"},{"line_number":110,"context_line":"            LOG.debug(\"_get_targets out: %(out)s, err: %(err)s.\","},{"line_number":111,"context_line":"                      {\u0027out\u0027: e.stdout, \u0027err\u0027: e.stderr})"},{"line_number":112,"context_line":"            return []"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        tgt_list \u003d []"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_cfae6e80","line":111,"range":{"start_line":110,"start_character":12,"end_line":111,"end_character":57},"updated":"2016-02-29 17:07:37.000000000","message":"Not needed. This outputs are printed inside _run_cmd()","commit_id":"606dcf9a3eec9e7323ace8d2c3bfe611709eb639"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"d369c587e0e42f776487c2cb4a92053d3f03ce21","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2014 Hitachi Data Systems, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":6,"id":"7af24918_ed479175","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"updated":"2016-03-04 19:58:41.000000000","message":"2016","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"ea28ad137e3faa387a9de01dae606369aa55839e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2014 Hitachi Data Systems, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afc51ec_ebd5bdb9","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"in_reply_to":"7af24918_ed479175","updated":"2016-03-11 14:05:05.000000000","message":"Done","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"d369c587e0e42f776487c2cb4a92053d3f03ce21","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        evslist \u003d self._get_evs_list()"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        export_list \u003d []"},{"line_number":277,"context_line":"        i \u003d 0"},{"line_number":278,"context_line":"        for export_raw_data in nfs_export_out.split(\"Export name:\")[1:]:"},{"line_number":279,"context_line":"            i +\u003d 1"},{"line_number":280,"context_line":"            export_info \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"7af24918_05861113","line":277,"range":{"start_line":277,"start_character":8,"end_line":277,"end_character":13},"updated":"2016-03-04 19:58:41.000000000","message":"Is this variable being used?","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"ea28ad137e3faa387a9de01dae606369aa55839e","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        evslist \u003d self._get_evs_list()"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        export_list \u003d []"},{"line_number":277,"context_line":"        i \u003d 0"},{"line_number":278,"context_line":"        for export_raw_data in nfs_export_out.split(\"Export name:\")[1:]:"},{"line_number":279,"context_line":"            i +\u003d 1"},{"line_number":280,"context_line":"            export_info \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_04e5cfda","line":277,"range":{"start_line":277,"start_character":8,"end_line":277,"end_character":13},"in_reply_to":"7af24918_05861113","updated":"2016-03-11 14:05:05.000000000","message":"Done","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"d369c587e0e42f776487c2cb4a92053d3f03ce21","unresolved":false,"context_lines":[{"line_number":325,"context_line":"        if not fs:"},{"line_number":326,"context_line":"            LOG.error(_LE(\"Can\u0027t find file %(file)s in FS %(label)s\"),"},{"line_number":327,"context_line":"                      {\u0027file\u0027: src, \u0027label\u0027: fslabel})"},{"line_number":328,"context_line":"            raise exception.InvalidParameterValue"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"        _, _ \u003d self._run_cmd(\"console-context\", \"--evs\", fs[\u0027evsid\u0027],"},{"line_number":331,"context_line":"                             \u0027file-clone-create\u0027, \u0027-f\u0027, fslabel, src, name)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7af24918_c5070980","line":328,"range":{"start_line":328,"start_character":18,"end_line":328,"end_character":49},"updated":"2016-03-04 19:58:41.000000000","message":"Shouldn\u0027t this receive something on its constructor?","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"ea28ad137e3faa387a9de01dae606369aa55839e","unresolved":false,"context_lines":[{"line_number":325,"context_line":"        if not fs:"},{"line_number":326,"context_line":"            LOG.error(_LE(\"Can\u0027t find file %(file)s in FS %(label)s\"),"},{"line_number":327,"context_line":"                      {\u0027file\u0027: src, \u0027label\u0027: fslabel})"},{"line_number":328,"context_line":"            raise exception.InvalidParameterValue"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"        _, _ \u003d self._run_cmd(\"console-context\", \"--evs\", fs[\u0027evsid\u0027],"},{"line_number":331,"context_line":"                             \u0027file-clone-create\u0027, \u0027-f\u0027, fslabel, src, name)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_7ca7e20a","line":328,"range":{"start_line":328,"start_character":18,"end_line":328,"end_character":49},"in_reply_to":"7af24918_c5070980","updated":"2016-03-11 14:05:05.000000000","message":"Done","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"d369c587e0e42f776487c2cb4a92053d3f03ce21","unresolved":false,"context_lines":[{"line_number":327,"context_line":"                      {\u0027file\u0027: src, \u0027label\u0027: fslabel})"},{"line_number":328,"context_line":"            raise exception.InvalidParameterValue"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"        _, _ \u003d self._run_cmd(\"console-context\", \"--evs\", fs[\u0027evsid\u0027],"},{"line_number":331,"context_line":"                             \u0027file-clone-create\u0027, \u0027-f\u0027, fslabel, src, name)"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"    def get_iscsi_info(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7af24918_a5f11d98","line":330,"range":{"start_line":330,"start_character":8,"end_line":330,"end_character":15},"updated":"2016-03-04 19:58:41.000000000","message":"Not needed.","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"ea28ad137e3faa387a9de01dae606369aa55839e","unresolved":false,"context_lines":[{"line_number":327,"context_line":"                      {\u0027file\u0027: src, \u0027label\u0027: fslabel})"},{"line_number":328,"context_line":"            raise exception.InvalidParameterValue"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"        _, _ \u003d self._run_cmd(\"console-context\", \"--evs\", fs[\u0027evsid\u0027],"},{"line_number":331,"context_line":"                             \u0027file-clone-create\u0027, \u0027-f\u0027, fslabel, src, name)"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"    def get_iscsi_info(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_dc239654","line":330,"range":{"start_line":330,"start_character":8,"end_line":330,"end_character":15},"in_reply_to":"7af24918_a5f11d98","updated":"2016-03-11 14:05:05.000000000","message":"Done","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"536f0685381f83bb6b9f565db4b585c5fdc4b611","unresolved":false,"context_lines":[{"line_number":376,"context_line":"            # The size is always given in GB"},{"line_number":377,"context_line":"            if fs_data[4] \u003d\u003d \u0027TB\u0027:"},{"line_number":378,"context_line":"                size \u003d float(fs_data[3]) * units.Mi"},{"line_number":379,"context_line":"                fs_info[\u0027total_size\u0027] \u003d six.text_type(size) + \u0027 GB\u0027"},{"line_number":380,"context_line":"            else:"},{"line_number":381,"context_line":"                fs_info[\u0027total_size\u0027] \u003d fs_data[3] + \u0027 GB\u0027"},{"line_number":382,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7af24918_bd6066d0","line":379,"range":{"start_line":379,"start_character":59,"end_line":379,"end_character":67},"updated":"2016-03-07 12:38:40.000000000","message":"Why concatenate \u0027 GB\u0027 here if you have to split it later? It is not used at all.","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"ea28ad137e3faa387a9de01dae606369aa55839e","unresolved":false,"context_lines":[{"line_number":376,"context_line":"            # The size is always given in GB"},{"line_number":377,"context_line":"            if fs_data[4] \u003d\u003d \u0027TB\u0027:"},{"line_number":378,"context_line":"                size \u003d float(fs_data[3]) * units.Mi"},{"line_number":379,"context_line":"                fs_info[\u0027total_size\u0027] \u003d six.text_type(size) + \u0027 GB\u0027"},{"line_number":380,"context_line":"            else:"},{"line_number":381,"context_line":"                fs_info[\u0027total_size\u0027] \u003d fs_data[3] + \u0027 GB\u0027"},{"line_number":382,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_df570856","line":379,"range":{"start_line":379,"start_character":59,"end_line":379,"end_character":67},"in_reply_to":"7af24918_bd6066d0","updated":"2016-03-11 14:05:05.000000000","message":"Done","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"536f0685381f83bb6b9f565db4b585c5fdc4b611","unresolved":false,"context_lines":[{"line_number":438,"context_line":"                  {\u0027size\u0027: size, \u0027name\u0027: name, \u0027hdp\u0027: hdp})"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"    def delete_lu(self, hdp, lun):"},{"line_number":441,"context_line":"        \"\"\"Deletes a logical unit."},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"        :param hdp: data pool of the logical unit"},{"line_number":444,"context_line":"        :param lun: id of the logical unit being deleted"}],"source_content_type":"text/x-python","patch_set":6,"id":"7af24918_2c6c22cf","line":441,"range":{"start_line":441,"start_character":21,"end_line":441,"end_character":33},"updated":"2016-03-07 12:38:40.000000000","message":"We should use Logical Unit or logical unit in every statement to keep a pattern.\nI think Logical Unit is better :)","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"ea28ad137e3faa387a9de01dae606369aa55839e","unresolved":false,"context_lines":[{"line_number":438,"context_line":"                  {\u0027size\u0027: size, \u0027name\u0027: name, \u0027hdp\u0027: hdp})"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"    def delete_lu(self, hdp, lun):"},{"line_number":441,"context_line":"        \"\"\"Deletes a logical unit."},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"        :param hdp: data pool of the logical unit"},{"line_number":444,"context_line":"        :param lun: id of the logical unit being deleted"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_bf003c35","line":441,"range":{"start_line":441,"start_character":21,"end_line":441,"end_character":33},"in_reply_to":"7af24918_2c6c22cf","updated":"2016-03-11 14:05:05.000000000","message":"Done","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"50db626365e4c79fa27b7499a96386c72866300b","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    def __init__(self, backend_opts):"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        self.mgmt_ip0 \u003d backend_opts.get(\u0027mgmt_ip0\u0027)"},{"line_number":39,"context_line":"        self.hnas_cmd \u003d backend_opts.get(\u0027hnas_cmd\u0027) or \u0027ssc\u0027"},{"line_number":40,"context_line":"        self.cluster_admin_ip0 \u003d backend_opts.get(\u0027cluster_admin_ip0\u0027)"},{"line_number":41,"context_line":"        self.ssh_port \u003d backend_opts.get(\u0027ssh_port\u0027) or \u002722\u0027"},{"line_number":42,"context_line":"        self.ssh_username \u003d backend_opts.get(\u0027username\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3afc51ec_78b4ccf1","line":39,"range":{"start_line":39,"start_character":24,"end_line":39,"end_character":61},"updated":"2016-03-11 19:24:30.000000000","message":"The get() method has a \u0027default\u0027 parameter. That is the value to be returned in case key does not exist.\nIt can be used here as:\nbackend_opts.get(\u0027hnas_cmd\u0027, \"ssc\")","commit_id":"c02ef0b21b7f7762936dbc7944a5d8d79d075165"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"b92b4163b2b233e9bf4f177ad8bfb6c74a6ff5ce","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    def __init__(self, backend_opts):"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        self.mgmt_ip0 \u003d backend_opts.get(\u0027mgmt_ip0\u0027)"},{"line_number":39,"context_line":"        self.hnas_cmd \u003d backend_opts.get(\u0027hnas_cmd\u0027) or \u0027ssc\u0027"},{"line_number":40,"context_line":"        self.cluster_admin_ip0 \u003d backend_opts.get(\u0027cluster_admin_ip0\u0027)"},{"line_number":41,"context_line":"        self.ssh_port \u003d backend_opts.get(\u0027ssh_port\u0027) or \u002722\u0027"},{"line_number":42,"context_line":"        self.ssh_username \u003d backend_opts.get(\u0027username\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa0719c6_fce2859e","line":39,"range":{"start_line":39,"start_character":24,"end_line":39,"end_character":61},"in_reply_to":"3afc51ec_78b4ccf1","updated":"2016-03-22 13:24:49.000000000","message":"Done","commit_id":"c02ef0b21b7f7762936dbc7944a5d8d79d075165"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"50db626365e4c79fa27b7499a96386c72866300b","unresolved":false,"context_lines":[{"line_number":361,"context_line":""},{"line_number":362,"context_line":"        if \u0027Not mounted\u0027 in out or \u0027Not determined\u0027 in out:"},{"line_number":363,"context_line":"            return {}"},{"line_number":364,"context_line":"        if \u0027not\u0027 not in out and \u0027EVS\u0027 in out:"},{"line_number":365,"context_line":"            single_evs \u003d False"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"        fs_data \u003d out.split(\u0027\\n\u0027)[3].split()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3afc51ec_4e5dcae8","line":364,"range":{"start_line":364,"start_character":8,"end_line":364,"end_character":45},"updated":"2016-03-11 19:24:30.000000000","message":"What if we have a filesystem named \u0027notebooks\u0027, \u0027nottingham\u0027 or \u0027not-OnlyToBreakYourParser\u0027 and configure our driver to use it? This filesystems contains \u0027not\u0027 in the name.","commit_id":"c02ef0b21b7f7762936dbc7944a5d8d79d075165"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"b92b4163b2b233e9bf4f177ad8bfb6c74a6ff5ce","unresolved":false,"context_lines":[{"line_number":361,"context_line":""},{"line_number":362,"context_line":"        if \u0027Not mounted\u0027 in out or \u0027Not determined\u0027 in out:"},{"line_number":363,"context_line":"            return {}"},{"line_number":364,"context_line":"        if \u0027not\u0027 not in out and \u0027EVS\u0027 in out:"},{"line_number":365,"context_line":"            single_evs \u003d False"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"        fs_data \u003d out.split(\u0027\\n\u0027)[3].split()"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa0719c6_b6b0218d","line":364,"range":{"start_line":364,"start_character":8,"end_line":364,"end_character":45},"in_reply_to":"3afc51ec_4e5dcae8","updated":"2016-03-22 13:24:49.000000000","message":"Done","commit_id":"c02ef0b21b7f7762936dbc7944a5d8d79d075165"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"50db626365e4c79fa27b7499a96386c72866300b","unresolved":false,"context_lines":[{"line_number":487,"context_line":"        :param fslabel: label of the file system"},{"line_number":488,"context_line":"        :param lu_name: label of the Logical Unit"},{"line_number":489,"context_line":"        :param evs_id: ID of the EVS where the LU is located"},{"line_number":490,"context_line":"        :returns: dictionary with Logical Unit information"},{"line_number":491,"context_line":"        \"\"\""},{"line_number":492,"context_line":"        lu_info \u003d {}"},{"line_number":493,"context_line":"        if evs_id is None:"}],"source_content_type":"text/x-python","patch_set":7,"id":"3afc51ec_0e52a213","line":490,"range":{"start_line":490,"start_character":8,"end_line":490,"end_character":58},"updated":"2016-03-11 19:24:30.000000000","message":"Maybe we can describe every information returned in the dictionary, it can be better for understanding each function. E.g.:\n:returns: a dictionary (lu_info) which contains:\nlu_info\u003d{\n    \u0027name\u0027: A Logical Unit name,\n    \u0027comment\u0027: A comment about the LU, not used for Cinder,\n    \u0027path\u0027: Path to LU inside filesystem,\n    \u0027size\u0027: Logical Unit size returned always in GB (volume size),\n    \u0027filesystem\u0027: Filesystem where the Logical Unit was created (hdp?),\n    \u0027fs_mounted\u0027: Information about the state of filesystem (mounted or not),\n    \u0027lu_mount\u0027: Information about the state of Logical Unit (mounted or not)\n}","commit_id":"c02ef0b21b7f7762936dbc7944a5d8d79d075165"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"b92b4163b2b233e9bf4f177ad8bfb6c74a6ff5ce","unresolved":false,"context_lines":[{"line_number":487,"context_line":"        :param fslabel: label of the file system"},{"line_number":488,"context_line":"        :param lu_name: label of the Logical Unit"},{"line_number":489,"context_line":"        :param evs_id: ID of the EVS where the LU is located"},{"line_number":490,"context_line":"        :returns: dictionary with Logical Unit information"},{"line_number":491,"context_line":"        \"\"\""},{"line_number":492,"context_line":"        lu_info \u003d {}"},{"line_number":493,"context_line":"        if evs_id is None:"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa0719c6_a4baa4df","line":490,"range":{"start_line":490,"start_character":8,"end_line":490,"end_character":58},"in_reply_to":"3afc51ec_0e52a213","updated":"2016-03-22 13:24:49.000000000","message":"Done","commit_id":"c02ef0b21b7f7762936dbc7944a5d8d79d075165"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"15569626fa921e72892848f75ad006cd05e364fa","unresolved":false,"context_lines":[{"line_number":478,"context_line":""},{"line_number":479,"context_line":"        LOG.debug(\u0027LUN %(lun)s cloned.\u0027, {\u0027lun\u0027: clone_name})"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"    def get_existing_lu_info(self, lu_name, fslabel\u003dNone, evs_id\u003dNone):"},{"line_number":482,"context_line":"        \"\"\"Returns the information for the specified Logical Unit."},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"        Returns the information of an existing Logical Unit on HNAS, according"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa0719c6_d6312e0d","line":481,"range":{"start_line":481,"start_character":35,"end_line":481,"end_character":42},"updated":"2016-03-22 12:18:48.000000000","message":"Some functions uses the logical unit name as just \u0027name\u0027, other places as \u0027lu_name\u0027, or \u0027lun_name\u0027, or \u0027h-lun\u0027. We should use just one name to the same object.","commit_id":"1fa94497f98d074a945923e0ea6883eff5f9e1c6"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"8d277c478fc09d9f639ab700c9e6462372d07bac","unresolved":false,"context_lines":[{"line_number":478,"context_line":""},{"line_number":479,"context_line":"        LOG.debug(\u0027LUN %(lun)s cloned.\u0027, {\u0027lun\u0027: clone_name})"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"    def get_existing_lu_info(self, lu_name, fslabel\u003dNone, evs_id\u003dNone):"},{"line_number":482,"context_line":"        \"\"\"Returns the information for the specified Logical Unit."},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"        Returns the information of an existing Logical Unit on HNAS, according"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa0719c6_393164ed","line":481,"range":{"start_line":481,"start_character":35,"end_line":481,"end_character":42},"in_reply_to":"fa0719c6_d6312e0d","updated":"2016-03-24 17:43:00.000000000","message":"Done","commit_id":"1fa94497f98d074a945923e0ea6883eff5f9e1c6"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"15569626fa921e72892848f75ad006cd05e364fa","unresolved":false,"context_lines":[{"line_number":737,"context_line":"        if \"does not exist\" in out:"},{"line_number":738,"context_line":"            if secret \u003d\u003d \"\":"},{"line_number":739,"context_line":"                secret \u003d \u0027\"\"\u0027"},{"line_number":740,"context_line":"                out, err \u003d self._run_cmd(\"console-context\", \"--evs\", _evs_id,"},{"line_number":741,"context_line":"                                         \u0027iscsi-target\u0027, \u0027add\u0027, targetalias,"},{"line_number":742,"context_line":"                                         secret)"},{"line_number":743,"context_line":"            else:"},{"line_number":744,"context_line":"                out, err \u003d self._run_cmd(\"console-context\", \"--evs\", _evs_id,"},{"line_number":745,"context_line":"                                         \u0027iscsi-target\u0027, \u0027add\u0027, targetalias,"},{"line_number":746,"context_line":"                                         secret)"},{"line_number":747,"context_line":"            if \"success\" in out:"},{"line_number":748,"context_line":"                return targetalias"},{"line_number":749,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa0719c6_d62beee9","line":746,"range":{"start_line":740,"start_character":16,"end_line":746,"end_character":48},"updated":"2016-03-22 12:18:48.000000000","message":"This commands does exactly the same thing. You can put it out of the if statement.","commit_id":"1fa94497f98d074a945923e0ea6883eff5f9e1c6"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"8d277c478fc09d9f639ab700c9e6462372d07bac","unresolved":false,"context_lines":[{"line_number":737,"context_line":"        if \"does not exist\" in out:"},{"line_number":738,"context_line":"            if secret \u003d\u003d \"\":"},{"line_number":739,"context_line":"                secret \u003d \u0027\"\"\u0027"},{"line_number":740,"context_line":"                out, err \u003d self._run_cmd(\"console-context\", \"--evs\", _evs_id,"},{"line_number":741,"context_line":"                                         \u0027iscsi-target\u0027, \u0027add\u0027, targetalias,"},{"line_number":742,"context_line":"                                         secret)"},{"line_number":743,"context_line":"            else:"},{"line_number":744,"context_line":"                out, err \u003d self._run_cmd(\"console-context\", \"--evs\", _evs_id,"},{"line_number":745,"context_line":"                                         \u0027iscsi-target\u0027, \u0027add\u0027, targetalias,"},{"line_number":746,"context_line":"                                         secret)"},{"line_number":747,"context_line":"            if \"success\" in out:"},{"line_number":748,"context_line":"                return targetalias"},{"line_number":749,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa0719c6_57077c17","line":746,"range":{"start_line":740,"start_character":16,"end_line":746,"end_character":48},"in_reply_to":"fa0719c6_d62beee9","updated":"2016-03-24 17:43:00.000000000","message":"Done","commit_id":"1fa94497f98d074a945923e0ea6883eff5f9e1c6"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"15569626fa921e72892848f75ad006cd05e364fa","unresolved":false,"context_lines":[{"line_number":747,"context_line":"            if \"success\" in out:"},{"line_number":748,"context_line":"                return targetalias"},{"line_number":749,"context_line":""},{"line_number":750,"context_line":"        lines \u003d out.split(\u0027\\n\u0027)"},{"line_number":751,"context_line":"        # returns the first iqn"},{"line_number":752,"context_line":"        for line in lines:"},{"line_number":753,"context_line":"            if \u0027Alias\u0027 in line:"},{"line_number":754,"context_line":"                fulliqn \u003d line.split()[2]"},{"line_number":755,"context_line":"                return fulliqn"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa0719c6_56cb5e53","line":755,"range":{"start_line":750,"start_character":8,"end_line":755,"end_character":30},"updated":"2016-03-22 12:18:48.000000000","message":"This function is returning the target alias, not the full iqn. In this lines, variable \u0027out\u0027 has the value: \nAlias               : filesystem-alias                                  \nGlobally unique name: iqn.2014-12.10.10.10.10:evs1.filesystem \nComment             :                                                 \nSecret              : 123456\n\nTo return the full iqn you should get the line with \u0027Globally unique name\u0027, not the \u0027Alias\u0027.","commit_id":"1fa94497f98d074a945923e0ea6883eff5f9e1c6"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"8d277c478fc09d9f639ab700c9e6462372d07bac","unresolved":false,"context_lines":[{"line_number":747,"context_line":"            if \"success\" in out:"},{"line_number":748,"context_line":"                return targetalias"},{"line_number":749,"context_line":""},{"line_number":750,"context_line":"        lines \u003d out.split(\u0027\\n\u0027)"},{"line_number":751,"context_line":"        # returns the first iqn"},{"line_number":752,"context_line":"        for line in lines:"},{"line_number":753,"context_line":"            if \u0027Alias\u0027 in line:"},{"line_number":754,"context_line":"                fulliqn \u003d line.split()[2]"},{"line_number":755,"context_line":"                return fulliqn"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa0719c6_b193595a","line":755,"range":{"start_line":750,"start_character":8,"end_line":755,"end_character":30},"in_reply_to":"fa0719c6_56cb5e53","updated":"2016-03-24 17:43:00.000000000","message":"Done","commit_id":"1fa94497f98d074a945923e0ea6883eff5f9e1c6"}],"cinder/volume/drivers/hitachi/hnas_utils.py":[{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"d369c587e0e42f776487c2cb4a92053d3f03ce21","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2014 Hitachi Data Systems, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":6,"id":"7af24918_4d7685d9","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"updated":"2016-03-04 19:58:41.000000000","message":"2016","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"ea28ad137e3faa387a9de01dae606369aa55839e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2014 Hitachi Data Systems, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afc51ec_2bd845ef","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"in_reply_to":"7af24918_4d7685d9","updated":"2016-03-11 14:05:05.000000000","message":"Done","commit_id":"56f6730519dfbae9b8901520c1f312950e35f8de"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"bf603aa38e3eea4c9ee34af1ded180f8788b7bc7","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    config[\u0027password\u0027] \u003d _xml_read(root, \u0027password\u0027)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    if config[\u0027ssh_private_key\u0027] is None and config[\u0027password\u0027] is None:"},{"line_number":107,"context_line":"        msg \u003d (_(\"Missing authentication option (passw or private key file)\")"},{"line_number":108,"context_line":"               % xml_config_file)"},{"line_number":109,"context_line":"        raise exception.ConfigNotFound(message\u003dmsg)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    config[\u0027ssh_port\u0027] \u003d _xml_read(root, \u0027ssh_port\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"7a1b2928_dcb69389","line":108,"range":{"start_line":107,"start_character":1,"end_line":108,"end_character":33},"updated":"2016-04-11 19:33:55.000000000","message":"It\u0027s missing the %s in the string to correct formation. But I think it\u0027s not necessarily print the whole xml file here, only the message about the missing parameters.","commit_id":"f91a0e50e261b8ba0187feb659f320f43a0937cd"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"bf603aa38e3eea4c9ee34af1ded180f8788b7bc7","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        config[\u0027fs\u0027][service[\u0027hdp\u0027]] \u003d service[\u0027hdp\u0027]"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    # at least one service required!"},{"line_number":131,"context_line":"    if config[\u0027services\u0027].keys() is None:"},{"line_number":132,"context_line":"        raise exception.ParameterNotFound(param\u003d\"No service found\")"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    return config"}],"source_content_type":"text/x-python","patch_set":19,"id":"7a1b2928_bcd637c3","line":131,"range":{"start_line":131,"start_character":4,"end_line":131,"end_character":41},"updated":"2016-04-11 19:33:55.000000000","message":"Use \u0027not dict\u0027 to test if it is empty. Since you initialized it on line 116 it will never be none.","commit_id":"f91a0e50e261b8ba0187feb659f320f43a0937cd"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c7b3915d520b782635a50930fa759746ee9c182a","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    # at least one service required!"},{"line_number":130,"context_line":"    if not config[\u0027services\u0027].keys():"},{"line_number":131,"context_line":"        raise exception.ParameterNotFound(param\u003d\"No service found\")"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    return config"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":44,"id":"dada55a8_e6f9b24f","line":131,"updated":"2016-07-26 19:18:11.000000000","message":"Any exception strings should be translated with _().","commit_id":"f2f66907ea5fbe2f0a967a56019c0ab1e05f8e1c"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"d8516af4d8128c38d86e6e7b00e7dd26fe0beac9","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    # at least one service required!"},{"line_number":130,"context_line":"    if not config[\u0027services\u0027].keys():"},{"line_number":131,"context_line":"        raise exception.ParameterNotFound(param\u003d\"No service found\")"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    return config"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":44,"id":"bacf61ea_c8170453","line":131,"in_reply_to":"dada55a8_e6f9b24f","updated":"2016-07-27 20:23:50.000000000","message":"Done","commit_id":"f2f66907ea5fbe2f0a967a56019c0ab1e05f8e1c"}],"cinder/volume/manager.py":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"031ca6baf5e0b46fa1f13dbe1699cfc20ab8adfe","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    \u0027cinder.volume.drivers.fujitsu.eternus_dx_fc.FJDXFCDriver\u0027,"},{"line_number":140,"context_line":"    \u0027cinder.volume.drivers.fujitsu_eternus_dx_iscsi.FJDXISCSIDriver\u0027:"},{"line_number":141,"context_line":"    \u0027cinder.volume.drivers.fujitsu.eternus_dx_iscsi.FJDXISCSIDriver\u0027,"},{"line_number":142,"context_line":"    \u0027cinder.volume.drivers.hitachi.hnas_nfs.HDSNFSDriver\u0027:"},{"line_number":143,"context_line":"    \u0027cinder.volume.drivers.hitachi.hnas_nfs.HNASNFSDriver\u0027,"},{"line_number":144,"context_line":"    \u0027cinder.volume.drivers.hitachi.hnas_iscsi.HDSISCSIDriver\u0027:"},{"line_number":145,"context_line":"    \u0027cinder.volume.drivers.hitachi.hnas_iscsi.HNASISCSIDriver\u0027,"}],"source_content_type":"text/x-python","patch_set":39,"id":"1aa78d24_3fe28a2f","line":142,"updated":"2016-07-07 03:02:38.000000000","message":"I believe these mappings are incorrect.  The old mapping of hds.nfs.* still need to stick around so it still works pointing to the new location, as well as adding another mapping for the new HNASNFSDriver location","commit_id":"867779705c749c37612f063d80ce47c37e4989ba"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"f08ec342fa7c54175916a4becba3ff9370f7b45e","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    \u0027cinder.volume.drivers.fujitsu.eternus_dx_fc.FJDXFCDriver\u0027,"},{"line_number":140,"context_line":"    \u0027cinder.volume.drivers.fujitsu_eternus_dx_iscsi.FJDXISCSIDriver\u0027:"},{"line_number":141,"context_line":"    \u0027cinder.volume.drivers.fujitsu.eternus_dx_iscsi.FJDXISCSIDriver\u0027,"},{"line_number":142,"context_line":"    \u0027cinder.volume.drivers.hitachi.hnas_nfs.HDSNFSDriver\u0027:"},{"line_number":143,"context_line":"    \u0027cinder.volume.drivers.hitachi.hnas_nfs.HNASNFSDriver\u0027,"},{"line_number":144,"context_line":"    \u0027cinder.volume.drivers.hitachi.hnas_iscsi.HDSISCSIDriver\u0027:"},{"line_number":145,"context_line":"    \u0027cinder.volume.drivers.hitachi.hnas_iscsi.HNASISCSIDriver\u0027,"}],"source_content_type":"text/x-python","patch_set":39,"id":"1aa78d24_5ada164c","line":142,"in_reply_to":"1aa78d24_2f88e170","updated":"2016-07-12 15:13:43.000000000","message":"Does this explicitly mean that we need to support Liberty\u0027s configs in Newton\u0027s deployments? Looks like point 4 in [1] presents a very similar case and says that option can get removed in N if it was deprecated in L\u0027s timeframe.\n\n[1] https://governance.openstack.org/reference/tags/assert_follows-standard-deprecation.html#requirements","commit_id":"867779705c749c37612f063d80ce47c37e4989ba"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"3ae540257394dfa82cf2a2de8f6dd8eddd38ed15","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    \u0027cinder.volume.drivers.fujitsu.eternus_dx_fc.FJDXFCDriver\u0027,"},{"line_number":140,"context_line":"    \u0027cinder.volume.drivers.fujitsu_eternus_dx_iscsi.FJDXISCSIDriver\u0027:"},{"line_number":141,"context_line":"    \u0027cinder.volume.drivers.fujitsu.eternus_dx_iscsi.FJDXISCSIDriver\u0027,"},{"line_number":142,"context_line":"    \u0027cinder.volume.drivers.hitachi.hnas_nfs.HDSNFSDriver\u0027:"},{"line_number":143,"context_line":"    \u0027cinder.volume.drivers.hitachi.hnas_nfs.HNASNFSDriver\u0027,"},{"line_number":144,"context_line":"    \u0027cinder.volume.drivers.hitachi.hnas_iscsi.HDSISCSIDriver\u0027:"},{"line_number":145,"context_line":"    \u0027cinder.volume.drivers.hitachi.hnas_iscsi.HNASISCSIDriver\u0027,"}],"source_content_type":"text/x-python","patch_set":39,"id":"1aa78d24_e04decc4","line":142,"in_reply_to":"1aa78d24_3fe28a2f","updated":"2016-07-07 13:25:07.000000000","message":"This old path we are removing (hds.*) is deprecated since liberty release. So, we think that makes sense to remove this now (Newton release). What do you think?","commit_id":"867779705c749c37612f063d80ce47c37e4989ba"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"bdac68dac3f7b7f845f2c038383e7d1e68b2664d","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    \u0027cinder.volume.drivers.fujitsu.eternus_dx_fc.FJDXFCDriver\u0027,"},{"line_number":140,"context_line":"    \u0027cinder.volume.drivers.fujitsu_eternus_dx_iscsi.FJDXISCSIDriver\u0027:"},{"line_number":141,"context_line":"    \u0027cinder.volume.drivers.fujitsu.eternus_dx_iscsi.FJDXISCSIDriver\u0027,"},{"line_number":142,"context_line":"    \u0027cinder.volume.drivers.hitachi.hnas_nfs.HDSNFSDriver\u0027:"},{"line_number":143,"context_line":"    \u0027cinder.volume.drivers.hitachi.hnas_nfs.HNASNFSDriver\u0027,"},{"line_number":144,"context_line":"    \u0027cinder.volume.drivers.hitachi.hnas_iscsi.HDSISCSIDriver\u0027:"},{"line_number":145,"context_line":"    \u0027cinder.volume.drivers.hitachi.hnas_iscsi.HNASISCSIDriver\u0027,"}],"source_content_type":"text/x-python","patch_set":39,"id":"1aa78d24_e8232f03","line":142,"in_reply_to":"1aa78d24_5ada164c","updated":"2016-07-12 19:57:21.000000000","message":"This is a good point. We are OK with the idea of keeping the old path as deprecated for more releases. Just wondering if there was a convention of how much time these deprecated configs should be kept.","commit_id":"867779705c749c37612f063d80ce47c37e4989ba"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"601e945b6688f141c3daa3d829dc6451349775cf","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    \u0027cinder.volume.drivers.fujitsu.eternus_dx_fc.FJDXFCDriver\u0027,"},{"line_number":140,"context_line":"    \u0027cinder.volume.drivers.fujitsu_eternus_dx_iscsi.FJDXISCSIDriver\u0027:"},{"line_number":141,"context_line":"    \u0027cinder.volume.drivers.fujitsu.eternus_dx_iscsi.FJDXISCSIDriver\u0027,"},{"line_number":142,"context_line":"    \u0027cinder.volume.drivers.hitachi.hnas_nfs.HDSNFSDriver\u0027:"},{"line_number":143,"context_line":"    \u0027cinder.volume.drivers.hitachi.hnas_nfs.HNASNFSDriver\u0027,"},{"line_number":144,"context_line":"    \u0027cinder.volume.drivers.hitachi.hnas_iscsi.HDSISCSIDriver\u0027:"},{"line_number":145,"context_line":"    \u0027cinder.volume.drivers.hitachi.hnas_iscsi.HNASISCSIDriver\u0027,"}],"source_content_type":"text/x-python","patch_set":39,"id":"1aa78d24_2f88e170","line":142,"in_reply_to":"1aa78d24_e04decc4","updated":"2016-07-11 18:25:15.000000000","message":"Liberty is still supported.","commit_id":"867779705c749c37612f063d80ce47c37e4989ba"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"73e6d484aca285764698141149e943eca09caac8","unresolved":false,"context_lines":[{"line_number":3017,"context_line":"                try:"},{"line_number":3018,"context_line":"                    self.db.volume_glance_metadata_copy_to_snapshot("},{"line_number":3019,"context_line":"                        context, snapshot_id, volume_id)"},{"line_number":3020,"context_line":"                except exception.GlanceMetadataNotFound:"},{"line_number":3021,"context_line":"                    # If volume is not created from image, No glance metadata"},{"line_number":3022,"context_line":"                    # would be available for that volume in"},{"line_number":3023,"context_line":"                    # volume glance metadata table"},{"line_number":3024,"context_line":"                    pass"},{"line_number":3025,"context_line":"                except exception.CinderException as ex:"},{"line_number":3026,"context_line":"                    LOG.error(_LE(\"Failed updating %(snapshot_id)s\""},{"line_number":3027,"context_line":"                                  \" metadata using the provided volumes\""}],"source_content_type":"text/x-python","patch_set":41,"id":"1aa78d24_5dd7234f","line":3024,"range":{"start_line":3020,"start_character":16,"end_line":3024,"end_character":24},"updated":"2016-07-14 21:14:17.000000000","message":"This shouldn\u0027t be in this patch.","commit_id":"5d3e7e3c821903f1f849bf09f0e478de778c28a2"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"1b3658c346298f22f92d561af02fc74e98fc88c6","unresolved":false,"context_lines":[{"line_number":3017,"context_line":"                try:"},{"line_number":3018,"context_line":"                    self.db.volume_glance_metadata_copy_to_snapshot("},{"line_number":3019,"context_line":"                        context, snapshot_id, volume_id)"},{"line_number":3020,"context_line":"                except exception.GlanceMetadataNotFound:"},{"line_number":3021,"context_line":"                    # If volume is not created from image, No glance metadata"},{"line_number":3022,"context_line":"                    # would be available for that volume in"},{"line_number":3023,"context_line":"                    # volume glance metadata table"},{"line_number":3024,"context_line":"                    pass"},{"line_number":3025,"context_line":"                except exception.CinderException as ex:"},{"line_number":3026,"context_line":"                    LOG.error(_LE(\"Failed updating %(snapshot_id)s\""},{"line_number":3027,"context_line":"                                  \" metadata using the provided volumes\""}],"source_content_type":"text/x-python","patch_set":41,"id":"1aa78d24_9deb4bdc","line":3024,"range":{"start_line":3020,"start_character":16,"end_line":3024,"end_character":24},"in_reply_to":"1aa78d24_5dd7234f","updated":"2016-07-14 21:19:03.000000000","message":"Never mind. Got confused with the diff between patches 40..41.","commit_id":"5d3e7e3c821903f1f849bf09f0e478de778c28a2"}],"releasenotes/notes/hnas-drivers-refactoring-9dbe297ffecced21.yaml":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"d89274334198eee9087bc7755c345ac7ab1e2ceb","unresolved":false,"context_lines":[{"line_number":1,"context_line":"upgrade:"},{"line_number":2,"context_line":"  - HNAS drivers have new configuration paths. Users should now use"},{"line_number":3,"context_line":"  \u0027cinder.volume.drivers.hitachi.hnas_nfs.HNASNFSDriver\u0027 for HNAS NFS driver"},{"line_number":4,"context_line":"  and \u0027cinder.volume.drivers.hitachi.hnas_iscsi.HNASISCSIDriver\u0027 for HNAS"},{"line_number":5,"context_line":"  iSCSI driver."},{"line_number":6,"context_line":"deprecations:"},{"line_number":7,"context_line":"  - The old HNAS drivers configuration paths have been marked for deprecation."}],"source_content_type":"text/x-yaml","patch_set":46,"id":"bacf61ea_dc083f2b","line":5,"range":{"start_line":3,"start_character":0,"end_line":5,"end_character":15},"updated":"2016-08-03 08:00:18.000000000","message":"You need to indent that with 2 more spaces - to match indentation of H on line above.\n\nAlso please switch \u0027 characters to `` (double), so driver modules will be highlighted as code. So correct version is something like:\n\n upgrade:\n  - HNAS drivers have new configuration paths. Users should now use\n    ``cinder.volume.drivers.hitachi.hnas_nfs.HNASNFSDriver`` for HNAS NFS driver\n    and ``cinder.volume.drivers.hitachi.hnas_iscsi.HNASISCSIDriver`` for HNAS\n    iSCSI driver.","commit_id":"c2700ef867e39c096b04259440723180a002384e"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"2d3fbb752ae0c1a599f5375a471e0e28089b7540","unresolved":false,"context_lines":[{"line_number":1,"context_line":"upgrade:"},{"line_number":2,"context_line":"  - HNAS drivers have new configuration paths. Users should now use"},{"line_number":3,"context_line":"  \u0027cinder.volume.drivers.hitachi.hnas_nfs.HNASNFSDriver\u0027 for HNAS NFS driver"},{"line_number":4,"context_line":"  and \u0027cinder.volume.drivers.hitachi.hnas_iscsi.HNASISCSIDriver\u0027 for HNAS"},{"line_number":5,"context_line":"  iSCSI driver."},{"line_number":6,"context_line":"deprecations:"},{"line_number":7,"context_line":"  - The old HNAS drivers configuration paths have been marked for deprecation."}],"source_content_type":"text/x-yaml","patch_set":46,"id":"bacf61ea_d9d5df1b","line":5,"range":{"start_line":3,"start_character":0,"end_line":5,"end_character":15},"in_reply_to":"bacf61ea_dc083f2b","updated":"2016-08-03 13:10:21.000000000","message":"Done","commit_id":"c2700ef867e39c096b04259440723180a002384e"}]}
