)]}'
{"cinder/tests/volume/drivers/netapp/dataontap/__init__.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"72a791fe21d3d568db7569d4c5fa8b9b4ab2b9e3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"__author__ \u003d \u0027clinton\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_b1494690","line":1,"updated":"2014-12-02 08:28:52.000000000","message":"Please, remove __author__ variable from all files","commit_id":"76f4d94d3215c8d87f9551125a460cddd97fcf9b"}],"cinder/volume/drivers/netapp/dataontap/block_7mode.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"5700f61d918e895bdfbaa688a8bfc2330a3747cc","unresolved":false,"context_lines":[{"line_number":333,"context_line":"    def _check_volume_type_for_lun(self, volume, lun, existing_ref):"},{"line_number":334,"context_line":"        \"\"\"Check if lun satisfies volume type.\"\"\""},{"line_number":335,"context_line":"        extra_specs \u003d na_utils.get_volume_extra_specs(volume)"},{"line_number":336,"context_line":"        qos_policy_group \u003d extra_specs.pop(\u0027netapp:qos_policy_group\u0027, None) \\"},{"line_number":337,"context_line":"            if extra_specs else None"},{"line_number":338,"context_line":"        if qos_policy_group:"},{"line_number":339,"context_line":"            raise exception.ManageExistingVolumeTypeMismatch("}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_f6ab77d3","line":336,"updated":"2015-02-18 23:06:05.000000000","message":"Please don\u0027t use \\ for line continuation.","commit_id":"012b012386a4512d0d1042c6b32f2d33fe185747"}],"cinder/volume/drivers/netapp/dataontap/block_base.py":[{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"431ba0fb27ded2f071445fb84ed1c67208c12270","unresolved":false,"context_lines":[{"line_number":596,"context_line":"        backend storage object."},{"line_number":597,"context_line":"        \"\"\""},{"line_number":598,"context_line":"        managed_lun \u003d self._get_lun_from_table(volume[\u0027name\u0027])"},{"line_number":599,"context_line":"        admin_metadata \u003d volume_utils.get_volume_admin_metadata("},{"line_number":600,"context_line":"            volume, self.db)"},{"line_number":601,"context_line":"        LOG.info(_LI(\"Unmanaged lun with original path %(ps)s,\""},{"line_number":602,"context_line":"                     \" current path %(path)s and uuid %(uuid)s.\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_e479b031","line":599,"updated":"2014-12-26 09:40:31.000000000","message":"admin_metadata is only logged, and nothing else is done with it. Is this intentional?","commit_id":"4b0a7cb3705adffaaceb9020a23ae914df5f22ce"},{"author":{"_account_id":9186,"name":"Bob Callaway","email":"bcallawa@redhat.com","username":"rcallawa"},"change_message_id":"118e13ad4977532dbcc5648e1d16e5ce7fdff7a1","unresolved":false,"context_lines":[{"line_number":596,"context_line":"        backend storage object."},{"line_number":597,"context_line":"        \"\"\""},{"line_number":598,"context_line":"        managed_lun \u003d self._get_lun_from_table(volume[\u0027name\u0027])"},{"line_number":599,"context_line":"        admin_metadata \u003d volume_utils.get_volume_admin_metadata("},{"line_number":600,"context_line":"            volume, self.db)"},{"line_number":601,"context_line":"        LOG.info(_LI(\"Unmanaged lun with original path %(ps)s,\""},{"line_number":602,"context_line":"                     \" current path %(path)s and uuid %(uuid)s.\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_8b71c246","line":599,"in_reply_to":"3a961159_e479b031","updated":"2014-12-29 16:18:58.000000000","message":"yes, this is intentional. it could be a very common use case that the admin would want to know the original name/ID of the LUN/file when they are unmanaging the Cinder vol - so we put the original name/ID into the admin metadata table when a volume is managed. \n\ngiven the relative frequency of unmanage calls, the addition of a DB call here doesn\u0027t introduce much overhead.","commit_id":"4b0a7cb3705adffaaceb9020a23ae914df5f22ce"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"5700f61d918e895bdfbaa688a8bfc2330a3747cc","unresolved":false,"context_lines":[{"line_number":525,"context_line":"        self._check_volume_type_for_lun(volume, lun, existing_ref)"},{"line_number":526,"context_line":"        path \u003d lun.get_metadata_property(\u0027Path\u0027)"},{"line_number":527,"context_line":"        if lun.name \u003d\u003d volume[\u0027name\u0027]:"},{"line_number":528,"context_line":"            LOG.info(_LI(\u0027LUN with given ref %s need not be renamed.\u0027),"},{"line_number":529,"context_line":"                     existing_ref)"},{"line_number":530,"context_line":"        else:"},{"line_number":531,"context_line":"            (rest, splitter, name) \u003d path.rpartition(\u0027/\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_b6de5f3c","line":528,"updated":"2015-02-18 23:06:05.000000000","message":"This isn\u0027t terribly helpful without some context.  How about:  \"LUN with given ref %s need not be renamed during manage operation.\"","commit_id":"012b012386a4512d0d1042c6b32f2d33fe185747"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"15ddb6b6a084e737ab4507662177c73dab94f445","unresolved":false,"context_lines":[{"line_number":525,"context_line":"        self._check_volume_type_for_lun(volume, lun, existing_ref)"},{"line_number":526,"context_line":"        path \u003d lun.get_metadata_property(\u0027Path\u0027)"},{"line_number":527,"context_line":"        if lun.name \u003d\u003d volume[\u0027name\u0027]:"},{"line_number":528,"context_line":"            LOG.info(_LI(\u0027LUN with given ref %s need not be renamed.\u0027),"},{"line_number":529,"context_line":"                     existing_ref)"},{"line_number":530,"context_line":"        else:"},{"line_number":531,"context_line":"            (rest, splitter, name) \u003d path.rpartition(\u0027/\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_60596ffc","line":528,"in_reply_to":"da86d52c_b6de5f3c","updated":"2015-02-19 08:06:38.000000000","message":"done.","commit_id":"012b012386a4512d0d1042c6b32f2d33fe185747"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"5700f61d918e895bdfbaa688a8bfc2330a3747cc","unresolved":false,"context_lines":[{"line_number":551,"context_line":"        \"\"\"Get the corresponding lun from the storage server.\"\"\""},{"line_number":552,"context_line":"        uuid \u003d existing_ref.get(\u0027source-id\u0027)"},{"line_number":553,"context_line":"        path \u003d existing_ref.get(\u0027source-name\u0027)"},{"line_number":554,"context_line":"        if not (uuid or path):"},{"line_number":555,"context_line":"            reason \u003d _(\u0027Reference must contain either source-id\u0027"},{"line_number":556,"context_line":"                       \u0027 or source-name element.\u0027)"},{"line_number":557,"context_line":"            raise exception.ManageExistingInvalidReference("}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_f62297ff","line":554,"updated":"2015-02-18 23:06:05.000000000","message":"Am I missing something here?  It seems to me that the uuid always needs to be set.  If you have just the path, this is eventually going to fail at line 574.  Right?","commit_id":"012b012386a4512d0d1042c6b32f2d33fe185747"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"15ddb6b6a084e737ab4507662177c73dab94f445","unresolved":false,"context_lines":[{"line_number":551,"context_line":"        \"\"\"Get the corresponding lun from the storage server.\"\"\""},{"line_number":552,"context_line":"        uuid \u003d existing_ref.get(\u0027source-id\u0027)"},{"line_number":553,"context_line":"        path \u003d existing_ref.get(\u0027source-name\u0027)"},{"line_number":554,"context_line":"        if not (uuid or path):"},{"line_number":555,"context_line":"            reason \u003d _(\u0027Reference must contain either source-id\u0027"},{"line_number":556,"context_line":"                       \u0027 or source-name element.\u0027)"},{"line_number":557,"context_line":"            raise exception.ManageExistingInvalidReference("}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_60decf3f","line":554,"in_reply_to":"da86d52c_f62297ff","updated":"2015-02-19 08:06:38.000000000","message":"No its different. You can manage with either uuid or path. Note that in query we only get luns with path (if path specified) at line 560. Now if uuid is also specified then only we validate against lun uuid else not.","commit_id":"012b012386a4512d0d1042c6b32f2d33fe185747"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"5700f61d918e895bdfbaa688a8bfc2330a3747cc","unresolved":false,"context_lines":[{"line_number":565,"context_line":"            for lun in luns:"},{"line_number":566,"context_line":"                netapp_lun \u003d self._extract_lun_info(lun)"},{"line_number":567,"context_line":"                storage_valid \u003d self._is_lun_valid_on_storage(netapp_lun)"},{"line_number":568,"context_line":"                uuid_valid \u003d True"},{"line_number":569,"context_line":"                if uuid:"},{"line_number":570,"context_line":"                    if netapp_lun.get_metadata_property(\u0027UUID\u0027) \u003d\u003d uuid:"},{"line_number":571,"context_line":"                        uuid_valid \u003d True"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_76bb07c4","line":568,"updated":"2015-02-18 23:06:05.000000000","message":"This is confusing.  You set uuid_valid\u003dTrue and then potentially set it again on line 571.\n\nWould be cleaner to do:\nif not netapp_lun.get_metadata_property(\u0027UUID\u0027) \u003d\u003d uuid:\n    uuid_valid \u003d False","commit_id":"012b012386a4512d0d1042c6b32f2d33fe185747"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"81bc40737711f0ae79aeadb6b790eb06b095b238","unresolved":false,"context_lines":[{"line_number":565,"context_line":"            for lun in luns:"},{"line_number":566,"context_line":"                netapp_lun \u003d self._extract_lun_info(lun)"},{"line_number":567,"context_line":"                storage_valid \u003d self._is_lun_valid_on_storage(netapp_lun)"},{"line_number":568,"context_line":"                uuid_valid \u003d True"},{"line_number":569,"context_line":"                if uuid:"},{"line_number":570,"context_line":"                    if netapp_lun.get_metadata_property(\u0027UUID\u0027) \u003d\u003d uuid:"},{"line_number":571,"context_line":"                        uuid_valid \u003d True"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_6321799d","line":568,"in_reply_to":"da86d52c_40970b3a","updated":"2015-02-19 08:25:05.000000000","message":"I take my words back. The current logic is fine though may seem confusing.\n\nThis is a common function for both cmode and 7mode. In cmode note that we set query param uuid at line 562. But for 7mode this will return all luns. If you loop through luns then there are chances that right lun is at the end of iteration, and hence its important that we set the uuid_valid back to True when we find it which was set to False for previous luns.","commit_id":"012b012386a4512d0d1042c6b32f2d33fe185747"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"15ddb6b6a084e737ab4507662177c73dab94f445","unresolved":false,"context_lines":[{"line_number":565,"context_line":"            for lun in luns:"},{"line_number":566,"context_line":"                netapp_lun \u003d self._extract_lun_info(lun)"},{"line_number":567,"context_line":"                storage_valid \u003d self._is_lun_valid_on_storage(netapp_lun)"},{"line_number":568,"context_line":"                uuid_valid \u003d True"},{"line_number":569,"context_line":"                if uuid:"},{"line_number":570,"context_line":"                    if netapp_lun.get_metadata_property(\u0027UUID\u0027) \u003d\u003d uuid:"},{"line_number":571,"context_line":"                        uuid_valid \u003d True"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_40970b3a","line":568,"in_reply_to":"da86d52c_76bb07c4","updated":"2015-02-19 08:06:38.000000000","message":"we can shorten it as suggested.","commit_id":"012b012386a4512d0d1042c6b32f2d33fe185747"}],"cinder/volume/drivers/netapp/dataontap/block_cmode.py":[{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"f82d5f1cbd86c2aba2084adb5516d34fd735938d","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        retry_count \u003d 0"},{"line_number":252,"context_line":"        match_read \u003d False"},{"line_number":253,"context_line":"        match_write \u003d False"},{"line_number":254,"context_line":"        while retry_count \u003c\u003d retries:"},{"line_number":255,"context_line":"            if retry_count:"},{"line_number":256,"context_line":"                ssc_cmode.get_cluster_latest_ssc("},{"line_number":257,"context_line":"                    self, self.zapi_client.get_connection(), self.vserver)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_d6e67315","line":254,"updated":"2015-02-18 22:54:49.000000000","message":"Consider retry decorator?\n\nhttps://github.com/openstack/cinder/blob/master/cinder/utils.py#L750","commit_id":"012b012386a4512d0d1042c6b32f2d33fe185747"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"5700f61d918e895bdfbaa688a8bfc2330a3747cc","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        retry_count \u003d 0"},{"line_number":252,"context_line":"        match_read \u003d False"},{"line_number":253,"context_line":"        match_write \u003d False"},{"line_number":254,"context_line":"        while retry_count \u003c\u003d retries:"},{"line_number":255,"context_line":"            if retry_count:"},{"line_number":256,"context_line":"                ssc_cmode.get_cluster_latest_ssc("},{"line_number":257,"context_line":"                    self, self.zapi_client.get_connection(), self.vserver)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_b65bbf84","line":254,"in_reply_to":"da86d52c_d6e67315","updated":"2015-02-18 23:06:05.000000000","message":"+1","commit_id":"012b012386a4512d0d1042c6b32f2d33fe185747"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"15ddb6b6a084e737ab4507662177c73dab94f445","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        retry_count \u003d 0"},{"line_number":252,"context_line":"        match_read \u003d False"},{"line_number":253,"context_line":"        match_write \u003d False"},{"line_number":254,"context_line":"        while retry_count \u003c\u003d retries:"},{"line_number":255,"context_line":"            if retry_count:"},{"line_number":256,"context_line":"                ssc_cmode.get_cluster_latest_ssc("},{"line_number":257,"context_line":"                    self, self.zapi_client.get_connection(), self.vserver)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_60cb2fa4","line":254,"in_reply_to":"da86d52c_d6e67315","updated":"2015-02-19 08:06:38.000000000","message":"Looked at the function. It seems like its not suitable for us here as we dont expect any exception/its a mandatory param. Also we just want to make sure that proper vol is returned back and thats the end of retry.\n\nI guess the current one works for us.","commit_id":"012b012386a4512d0d1042c6b32f2d33fe185747"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"f82d5f1cbd86c2aba2084adb5516d34fd735938d","unresolved":false,"context_lines":[{"line_number":272,"context_line":"                    self.zapi_client.set_lun_qos_policy_group(path,"},{"line_number":273,"context_line":"                                                              qos_policy_group)"},{"line_number":274,"context_line":"                    match_write \u003d True"},{"line_number":275,"context_line":"                except Exception as ex:"},{"line_number":276,"context_line":"                    LOG.error(_(\"Failure setting qos policy group. %s\"), ex)"},{"line_number":277,"context_line":"        else:"},{"line_number":278,"context_line":"            match_write \u003d True"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_16ff2bac","line":275,"updated":"2015-02-18 22:54:49.000000000","message":"Do we really need this broad of an exception caught? Can we at least bring this to CinderException?","commit_id":"012b012386a4512d0d1042c6b32f2d33fe185747"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"15ddb6b6a084e737ab4507662177c73dab94f445","unresolved":false,"context_lines":[{"line_number":272,"context_line":"                    self.zapi_client.set_lun_qos_policy_group(path,"},{"line_number":273,"context_line":"                                                              qos_policy_group)"},{"line_number":274,"context_line":"                    match_write \u003d True"},{"line_number":275,"context_line":"                except Exception as ex:"},{"line_number":276,"context_line":"                    LOG.error(_(\"Failure setting qos policy group. %s\"), ex)"},{"line_number":277,"context_line":"        else:"},{"line_number":278,"context_line":"            match_write \u003d True"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_804ca343","line":275,"in_reply_to":"da86d52c_16ff2bac","updated":"2015-02-19 08:06:38.000000000","message":"Will move specific exception.","commit_id":"012b012386a4512d0d1042c6b32f2d33fe185747"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"f82d5f1cbd86c2aba2084adb5516d34fd735938d","unresolved":false,"context_lines":[{"line_number":273,"context_line":"                                                              qos_policy_group)"},{"line_number":274,"context_line":"                    match_write \u003d True"},{"line_number":275,"context_line":"                except Exception as ex:"},{"line_number":276,"context_line":"                    LOG.error(_(\"Failure setting qos policy group. %s\"), ex)"},{"line_number":277,"context_line":"        else:"},{"line_number":278,"context_line":"            match_write \u003d True"},{"line_number":279,"context_line":"        if not (match_read and match_write):"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_f66e1795","line":276,"updated":"2015-02-18 22:54:49.000000000","message":"use markers http://docs.openstack.org/developer/oslo.i18n/usage.html","commit_id":"012b012386a4512d0d1042c6b32f2d33fe185747"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"15ddb6b6a084e737ab4507662177c73dab94f445","unresolved":false,"context_lines":[{"line_number":273,"context_line":"                                                              qos_policy_group)"},{"line_number":274,"context_line":"                    match_write \u003d True"},{"line_number":275,"context_line":"                except Exception as ex:"},{"line_number":276,"context_line":"                    LOG.error(_(\"Failure setting qos policy group. %s\"), ex)"},{"line_number":277,"context_line":"        else:"},{"line_number":278,"context_line":"            match_write \u003d True"},{"line_number":279,"context_line":"        if not (match_read and match_write):"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_0060b3a3","line":276,"in_reply_to":"da86d52c_f66e1795","updated":"2015-02-19 08:06:38.000000000","message":"done","commit_id":"012b012386a4512d0d1042c6b32f2d33fe185747"}],"cinder/volume/utils.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"72a791fe21d3d568db7569d4c5fa8b9b4ab2b9e3","unresolved":false,"context_lines":[{"line_number":508,"context_line":""},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"def get_volume_admin_metadata(volume, db):"},{"line_number":511,"context_line":"    \"\"\"Provides admin metadata associated with volume.\"\"\""},{"line_number":512,"context_line":"    ctxt \u003d context.get_admin_context()"},{"line_number":513,"context_line":"    return db.volume_admin_metadata_get(ctxt, volume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_51066222","line":511,"updated":"2014-12-02 08:28:52.000000000","message":"I don\u0027t think that it\u0027s a right place for it","commit_id":"76f4d94d3215c8d87f9551125a460cddd97fcf9b"}]}
