)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"aa50eb58216847414b500d785898fc2d39793cdc","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds the ability to get manageable snapshots to RBD driver."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Partial-Implements: blueprint list-manage-existing"},{"line_number":12,"context_line":"Change-Id: I2f979f445aeb2664c93c6810dcf2e82aed92a8cf"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9f6a8fd7_4e514036","line":11,"updated":"2018-04-17 16:38:02.000000000","message":"Not ceph-list-manageable-volumes-and-snapshots ?","commit_id":"e5c3931ee2be951a6e178bebeec51ad33488c78e"},{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"c66c63b3b80672e1eef338e14bf1b7092366b6ba","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds the ability to get manageable snapshots to RBD driver."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Partial-Implements: blueprint list-manage-existing"},{"line_number":12,"context_line":"Change-Id: I2f979f445aeb2664c93c6810dcf2e82aed92a8cf"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9f6a8fd7_f7bb33c1","line":11,"in_reply_to":"9f6a8fd7_4e514036","updated":"2018-04-18 10:39:25.000000000","message":"Done","commit_id":"e5c3931ee2be951a6e178bebeec51ad33488c78e"}],"cinder/volume/drivers/rbd.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"2320ebaeed263381c90707ff3f0e663a52de0b1b","unresolved":false,"context_lines":[{"line_number":1721,"context_line":"            volume.rename_snap(utils.convert_str(snapshot_name),"},{"line_number":1722,"context_line":"                               utils.convert_str(snapshot.name))"},{"line_number":1723,"context_line":""},{"line_number":1724,"context_line":"    def get_manageable_snapshots(self, cinder_snapshots, marker, limit, offset,"},{"line_number":1725,"context_line":"                                 sort_keys, sort_dirs):"},{"line_number":1726,"context_line":"        manageable_snapshots \u003d []"},{"line_number":1727,"context_line":"        cinder_snapshot_ids \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_141adc15","line":1724,"updated":"2018-03-15 13:44:40.000000000","message":"This should have a docstring like the other functions please.","commit_id":"bd9898aae6226cf9fcf0e59fd5ab95a1befdc589"},{"author":{"_account_id":10439,"name":"Xi Yang","email":"yang.xi@99cloud.net","username":"phenom"},"change_message_id":"0660ae2b35a62332f867af5a8896367cb6d15a68","unresolved":false,"context_lines":[{"line_number":1731,"context_line":"            for image_name in self.RBDProxy().list(client.ioctx):"},{"line_number":1732,"context_line":"                with RBDVolumeProxy(self, image_name, read_only\u003dTrue) as image:"},{"line_number":1733,"context_line":"                    try:"},{"line_number":1734,"context_line":"                        for snapshot in image.list_snaps():"},{"line_number":1735,"context_line":"                            snapshot_id \u003d \\"},{"line_number":1736,"context_line":"                                volume_utils.extract_id_from_snapshot_name("},{"line_number":1737,"context_line":"                                    snapshot[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"df7087c5_503a6434","line":1734,"updated":"2018-03-19 03:54:45.000000000","message":"Some temp snaps may be created while creating clone volume. I think these temp snaps should be skipped here.","commit_id":"0b7028cc7a9d655c4bcdf3989d149d79cbcff329"},{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"bee40c1725edd2dd3a1c2b3a343c33b96b503b47","unresolved":false,"context_lines":[{"line_number":1731,"context_line":"            for image_name in self.RBDProxy().list(client.ioctx):"},{"line_number":1732,"context_line":"                with RBDVolumeProxy(self, image_name, read_only\u003dTrue) as image:"},{"line_number":1733,"context_line":"                    try:"},{"line_number":1734,"context_line":"                        for snapshot in image.list_snaps():"},{"line_number":1735,"context_line":"                            snapshot_id \u003d \\"},{"line_number":1736,"context_line":"                                volume_utils.extract_id_from_snapshot_name("},{"line_number":1737,"context_line":"                                    snapshot[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"df7087c5_1bf72dd7","line":1734,"in_reply_to":"df7087c5_503a6434","updated":"2018-03-19 04:45:22.000000000","message":"Hi, Yang, thanks for your review.\n\nYeah, Some intermediate snapshots will be created while clone/backup volume, etc. But I think these temp snapshots can also be manageable, just like the normal snapshots created on the Cinder volume. I will appericate to know the reason why these temp snapshots should be skipped, :)","commit_id":"0b7028cc7a9d655c4bcdf3989d149d79cbcff329"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a9b4007deef22e27ee7d818017d8c2b141791167","unresolved":false,"context_lines":[{"line_number":1743,"context_line":"                with RBDVolumeProxy(self, image_name, read_only\u003dTrue) as image:"},{"line_number":1744,"context_line":"                    try:"},{"line_number":1745,"context_line":"                        for snapshot in image.list_snaps():"},{"line_number":1746,"context_line":"                            snapshot_id \u003d \\"},{"line_number":1747,"context_line":"                                volume_utils.extract_id_from_snapshot_name("},{"line_number":1748,"context_line":"                                    snapshot[\u0027name\u0027])"},{"line_number":1749,"context_line":"                            snapshot_info \u003d {"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_49803b47","line":1746,"updated":"2018-03-21 05:21:22.000000000","message":"Can we avoid use of \\ here please?","commit_id":"edaad39399ed7bdddb0e965afdddb4009739a853"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a9b4007deef22e27ee7d818017d8c2b141791167","unresolved":false,"context_lines":[{"line_number":1756,"context_line":""},{"line_number":1757,"context_line":"                            if snapshot_id in cinder_snapshot_ids:"},{"line_number":1758,"context_line":"                                snapshot_info[\u0027safe_to_manage\u0027] \u003d False"},{"line_number":1759,"context_line":"                                snapshot_info[\u0027reason_not_safe\u0027] \u003d \\"},{"line_number":1760,"context_line":"                                    \u0027already managed\u0027"},{"line_number":1761,"context_line":"                                snapshot_info[\u0027cinder_id\u0027] \u003d snapshot_id"},{"line_number":1762,"context_line":"                            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_099243a0","line":1759,"updated":"2018-03-21 05:21:22.000000000","message":"Same here","commit_id":"edaad39399ed7bdddb0e965afdddb4009739a853"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a9b4007deef22e27ee7d818017d8c2b141791167","unresolved":false,"context_lines":[{"line_number":1765,"context_line":"                                snapshot_info[\u0027cinder_id\u0027] \u003d None"},{"line_number":1766,"context_line":"                            manageable_snapshots.append(snapshot_info)"},{"line_number":1767,"context_line":"                    except self.rbd.ImageNotFound:"},{"line_number":1768,"context_line":"                        LOG.debug(\"Image %s is not found.\", image_name)"},{"line_number":1769,"context_line":""},{"line_number":1770,"context_line":"        return volume_utils.paginate_entries_list("},{"line_number":1771,"context_line":"            manageable_snapshots, marker, limit, offset, sort_keys, sort_dirs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_c98beb65","line":1768,"range":{"start_line":1768,"start_character":44,"end_line":1768,"end_character":46},"updated":"2018-03-21 05:21:22.000000000","message":"was","commit_id":"edaad39399ed7bdddb0e965afdddb4009739a853"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"9fdbc8afb4d7bfeff167a181333cae9d2944f1ac","unresolved":false,"context_lines":[{"line_number":1748,"context_line":"                                    snapshot[\u0027name\u0027]))"},{"line_number":1749,"context_line":"                            snapshot_info \u003d {"},{"line_number":1750,"context_line":"                                \u0027reference\u0027: {\u0027source-name\u0027: snapshot[\u0027name\u0027]},"},{"line_number":1751,"context_line":"                                \u0027size\u0027: int(math.ceil("},{"line_number":1752,"context_line":"                                    float(snapshot[\u0027size\u0027]) / units.Gi)),"},{"line_number":1753,"context_line":"                                \u0027cinder_id\u0027: None,"},{"line_number":1754,"context_line":"                                \u0027extra_info\u0027: None,"},{"line_number":1755,"context_line":"                                \u0027source_reference\u0027: {\u0027source-name\u0027: image_name}"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f6a8fd7_aef9fc80","line":1752,"range":{"start_line":1751,"start_character":0,"end_line":1752,"end_character":73},"updated":"2018-04-17 16:27:39.000000000","message":"This may be introducing a bug similar to https://bugs.launchpad.net/cinder/+bug/1764795 .\n\nWe should make sure that bug is well understood before landing this.","commit_id":"e5c3931ee2be951a6e178bebeec51ad33488c78e"},{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"c66c63b3b80672e1eef338e14bf1b7092366b6ba","unresolved":false,"context_lines":[{"line_number":1748,"context_line":"                                    snapshot[\u0027name\u0027]))"},{"line_number":1749,"context_line":"                            snapshot_info \u003d {"},{"line_number":1750,"context_line":"                                \u0027reference\u0027: {\u0027source-name\u0027: snapshot[\u0027name\u0027]},"},{"line_number":1751,"context_line":"                                \u0027size\u0027: int(math.ceil("},{"line_number":1752,"context_line":"                                    float(snapshot[\u0027size\u0027]) / units.Gi)),"},{"line_number":1753,"context_line":"                                \u0027cinder_id\u0027: None,"},{"line_number":1754,"context_line":"                                \u0027extra_info\u0027: None,"},{"line_number":1755,"context_line":"                                \u0027source_reference\u0027: {\u0027source-name\u0027: image_name}"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f6a8fd7_77e2c303","line":1752,"range":{"start_line":1751,"start_character":0,"end_line":1752,"end_character":73},"in_reply_to":"9f6a8fd7_aef9fc80","updated":"2018-04-18 10:39:25.000000000","message":"The bug may not be introduced by the method for getting backend size of rbd image.","commit_id":"e5c3931ee2be951a6e178bebeec51ad33488c78e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"9fdbc8afb4d7bfeff167a181333cae9d2944f1ac","unresolved":false,"context_lines":[{"line_number":1756,"context_line":"                            }"},{"line_number":1757,"context_line":""},{"line_number":1758,"context_line":"                            if snapshot_id in cinder_snapshot_ids:"},{"line_number":1759,"context_line":"                                snapshot_info[\u0027safe_to_manage\u0027] \u003d False"},{"line_number":1760,"context_line":"                                snapshot_info[\u0027reason_not_safe\u0027] \u003d ("},{"line_number":1761,"context_line":"                                    \u0027already managed\u0027)"},{"line_number":1762,"context_line":"                                snapshot_info[\u0027cinder_id\u0027] \u003d snapshot_id"},{"line_number":1763,"context_line":"                            elif snapshot[\u0027name\u0027].endswith(\u0027.clone_snap\u0027):"},{"line_number":1764,"context_line":"                                snapshot_info[\u0027safe_to_manage\u0027] \u003d False"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f6a8fd7_cecd505e","line":1761,"range":{"start_line":1759,"start_character":32,"end_line":1761,"end_character":54},"updated":"2018-04-17 16:27:39.000000000","message":"IMO we shouldn\u0027t list snapshots that are already owned by Cinder.  This is just confusing and doesn\u0027t serve any real purpose.","commit_id":"e5c3931ee2be951a6e178bebeec51ad33488c78e"},{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"c66c63b3b80672e1eef338e14bf1b7092366b6ba","unresolved":false,"context_lines":[{"line_number":1756,"context_line":"                            }"},{"line_number":1757,"context_line":""},{"line_number":1758,"context_line":"                            if snapshot_id in cinder_snapshot_ids:"},{"line_number":1759,"context_line":"                                snapshot_info[\u0027safe_to_manage\u0027] \u003d False"},{"line_number":1760,"context_line":"                                snapshot_info[\u0027reason_not_safe\u0027] \u003d ("},{"line_number":1761,"context_line":"                                    \u0027already managed\u0027)"},{"line_number":1762,"context_line":"                                snapshot_info[\u0027cinder_id\u0027] \u003d snapshot_id"},{"line_number":1763,"context_line":"                            elif snapshot[\u0027name\u0027].endswith(\u0027.clone_snap\u0027):"},{"line_number":1764,"context_line":"                                snapshot_info[\u0027safe_to_manage\u0027] \u003d False"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f6a8fd7_77f403d0","line":1761,"range":{"start_line":1759,"start_character":32,"end_line":1761,"end_character":54},"in_reply_to":"9f6a8fd7_cecd505e","updated":"2018-04-18 10:39:25.000000000","message":"According to the comments of `get_manageable_volumes`[1] or `get_manageable_snapshots`[2]. The `cinder_id` should be returned if it has been managed.\n[1]https://github.com/openstack/cinder/blob/master/cinder/volume/driver.py#L1982\n[2] https://github.com/openstack/cinder/blob/master/cinder/volume/driver.py#L2074","commit_id":"e5c3931ee2be951a6e178bebeec51ad33488c78e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"a0ce58d5611d5087ae1459511e9bc60967c3e101","unresolved":false,"context_lines":[{"line_number":1784,"context_line":"                                \u0027extra_info\u0027: None,"},{"line_number":1785,"context_line":"                                \u0027source_reference\u0027: {\u0027source-name\u0027: image_name}"},{"line_number":1786,"context_line":"                            }"},{"line_number":1787,"context_line":""},{"line_number":1788,"context_line":"                            if snapshot_id in cinder_snapshot_ids:"},{"line_number":1789,"context_line":"                                snapshot_info[\u0027safe_to_manage\u0027] \u003d False"},{"line_number":1790,"context_line":"                                snapshot_info[\u0027reason_not_safe\u0027] \u003d ("}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_1330fe9e","line":1787,"updated":"2018-05-10 18:04:21.000000000","message":"You also need to exclude snapshots created by the Ceph backup driver here.\n\nSee\n    https://git.openstack.org/cgit/openstack/cinder/tree/cinder/backup/drivers/ceph.py?h\u003d12.0.1#n810\n    https://git.openstack.org/cgit/openstack/cinder/tree/cinder/backup/drivers/ceph.py?h\u003d12.0.1#n689","commit_id":"c9d0d34f8c039512970b1a89b4a84492a937088a"},{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"24a1710d48a109b3dd7c2c8ed578ae7710c961da","unresolved":false,"context_lines":[{"line_number":1784,"context_line":"                                \u0027extra_info\u0027: None,"},{"line_number":1785,"context_line":"                                \u0027source_reference\u0027: {\u0027source-name\u0027: image_name}"},{"line_number":1786,"context_line":"                            }"},{"line_number":1787,"context_line":""},{"line_number":1788,"context_line":"                            if snapshot_id in cinder_snapshot_ids:"},{"line_number":1789,"context_line":"                                snapshot_info[\u0027safe_to_manage\u0027] \u003d False"},{"line_number":1790,"context_line":"                                snapshot_info[\u0027reason_not_safe\u0027] \u003d ("}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_a000a502","line":1787,"in_reply_to":"5f7c97a3_1330fe9e","updated":"2018-05-14 03:46:22.000000000","message":"The snapshot created by Ceph backup driver is independent of the volume backup, and also it is unprotected. So I think it can be manageable.","commit_id":"c9d0d34f8c039512970b1a89b4a84492a937088a"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"e89d053172d830abaec4d98788084868d04f721a","unresolved":false,"context_lines":[{"line_number":1791,"context_line":""},{"line_number":1792,"context_line":"                            if snapshot_id in cinder_snapshot_ids:"},{"line_number":1793,"context_line":"                                # Exclude snapshots already managed."},{"line_number":1794,"context_line":"                                snapshot_info[\u0027safe_to_manage\u0027] \u003d False"},{"line_number":1795,"context_line":"                                snapshot_info[\u0027reason_not_safe\u0027] \u003d ("},{"line_number":1796,"context_line":"                                    \u0027already managed\u0027)"},{"line_number":1797,"context_line":"                                snapshot_info[\u0027cinder_id\u0027] \u003d snapshot_id"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_3c0e0ce4","line":1794,"updated":"2018-06-22 19:44:17.000000000","message":"nit: we can set \" snapshot_info[\u0027safe_to_manage\u0027] \u003d False\" on the line #1791 and set it to True only if needed get get code more clean","commit_id":"33ba92da5e34cc9096a9b4ae3967088d0b37d69c"},{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"18c12337c0b8cf357d55434ae0e8271c0a57441d","unresolved":false,"context_lines":[{"line_number":1791,"context_line":""},{"line_number":1792,"context_line":"                            if snapshot_id in cinder_snapshot_ids:"},{"line_number":1793,"context_line":"                                # Exclude snapshots already managed."},{"line_number":1794,"context_line":"                                snapshot_info[\u0027safe_to_manage\u0027] \u003d False"},{"line_number":1795,"context_line":"                                snapshot_info[\u0027reason_not_safe\u0027] \u003d ("},{"line_number":1796,"context_line":"                                    \u0027already managed\u0027)"},{"line_number":1797,"context_line":"                                snapshot_info[\u0027cinder_id\u0027] \u003d snapshot_id"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_46bda001","line":1794,"in_reply_to":"5f7c97a3_3c0e0ce4","updated":"2018-06-29 18:47:53.000000000","message":"Done, thanks.","commit_id":"33ba92da5e34cc9096a9b4ae3967088d0b37d69c"}]}
