)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"13ca830d6f59221b1be450a93fe93570d0d8ba6b","unresolved":false,"context_lines":[{"line_number":12,"context_line":"on upgrades."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch adds on to the volume update mechanism and"},{"line_number":15,"context_line":"gives a driver the opporunity to set provider_id coluns"},{"line_number":16,"context_line":"that aren\u0027t set on snapshots just as it does for volumes."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: Ie6585e4f0d2a4a511e5fbe35b91186d8ad7e9874"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"da20952f_74ca411c","line":15,"updated":"2015-09-02 20:43:40.000000000","message":"Typo column","commit_id":"fab07343902a704f63dc01165e67c5657a3f216d"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"fa66aafeb5b6f7767ada4add0297a6964a7394ef","unresolved":false,"context_lines":[{"line_number":9,"context_line":"During the L release we added the ability to store"},{"line_number":10,"context_line":"provider_id info for volumes and snapshots.  We did"},{"line_number":11,"context_line":"not however add a mechanism for this info to be updated"},{"line_number":12,"context_line":"on upgrades."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch adds on to the volume update mechanism and"},{"line_number":15,"context_line":"gives a driver the opportunity to set provider_id columns"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"da20952f_190e398c","line":12,"updated":"2015-09-04 19:29:08.000000000","message":"to be updated on upgrades for snapshots?\nbecause i think volume update mechanism was present earlier and below line also says that it is adds on to the volume update mechanism.","commit_id":"6eb7d08aa72786c9494fb039f81e9810d494ab87"}],"cinder/volume/manager.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"0c9432fbbd034f53ec9a3c046978900bd67a63fd","unresolved":false,"context_lines":[{"line_number":324,"context_line":"                    if update:"},{"line_number":325,"context_line":"                        self.db.snapshot_update("},{"line_number":326,"context_line":"                            ctxt,"},{"line_number":327,"context_line":"                            u[\u0027id\u0027],"},{"line_number":328,"context_line":"                            {\u0027provider_id\u0027: u[\u0027provider_id\u0027]})"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"    def init_host(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_99aa7c18","line":327,"updated":"2015-09-03 18:13:34.000000000","message":"I prefer to use \u0027update\u0027 variable instead of \u0027u\u0027 here to make code more readable (explicit is better than implicit) but I won\u0027t bloc patch for it","commit_id":"88e1655ee769affdbe0c13b553309e84fafe5a63"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"7a97525cf70b5b06f2dc54b2612608410c9bf215","unresolved":false,"context_lines":[{"line_number":324,"context_line":"                    if update:"},{"line_number":325,"context_line":"                        self.db.snapshot_update("},{"line_number":326,"context_line":"                            ctxt,"},{"line_number":327,"context_line":"                            u[\u0027id\u0027],"},{"line_number":328,"context_line":"                            {\u0027provider_id\u0027: u[\u0027provider_id\u0027]})"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"    def init_host(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_a8311eef","line":327,"in_reply_to":"da20952f_99aa7c18","updated":"2015-09-03 22:11:09.000000000","message":"Sure, went ahead and replaced s with snap as well.\n\nThanks!","commit_id":"88e1655ee769affdbe0c13b553309e84fafe5a63"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"98eb3928037f92be28e0885ed3518498612574c1","unresolved":false,"context_lines":[{"line_number":324,"context_line":"                    if update:"},{"line_number":325,"context_line":"                        self.db.snapshot_update("},{"line_number":326,"context_line":"                            ctxt,"},{"line_number":327,"context_line":"                            u[\u0027id\u0027],"},{"line_number":328,"context_line":"                            {\u0027provider_id\u0027: u[\u0027provider_id\u0027]})"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"    def init_host(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_c3d1c758","line":327,"in_reply_to":"da20952f_a8311eef","updated":"2015-09-04 09:18:28.000000000","message":"Thank you, John.","commit_id":"88e1655ee769affdbe0c13b553309e84fafe5a63"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"98fa4fb0695900b7f033b8d9d77f6d3c6d8e4924","unresolved":false,"context_lines":[{"line_number":315,"context_line":"        # all by host, so we use a get_all and bounce our"},{"line_number":316,"context_line":"        # response off of it"},{"line_number":317,"context_line":"        if snapshot_updates:"},{"line_number":318,"context_line":"            cinder_snaps \u003d self.db.snapshot_get_all(ctxt)"},{"line_number":319,"context_line":"            for snap in cinder_snaps:"},{"line_number":320,"context_line":"                # NOTE(jdg): For now we only update those that have no entry"},{"line_number":321,"context_line":"                if not snap.get(\u0027provider_id\u0027, None):"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_e07406ff","line":318,"updated":"2015-09-04 05:38:59.000000000","message":"We probably should use snapshot objects here because they are used in other places in this file already.","commit_id":"7fea9f5cf5ce830005abc6aed151e22cfd21f205"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"98fa4fb0695900b7f033b8d9d77f6d3c6d8e4924","unresolved":false,"context_lines":[{"line_number":323,"context_line":"                        [updt for updt in snapshot_updates if updt[\u0027id\u0027] \u003d\u003d"},{"line_number":324,"context_line":"                            snap[\u0027id\u0027]][0])"},{"line_number":325,"context_line":"                    if update:"},{"line_number":326,"context_line":"                        self.db.snapshot_update("},{"line_number":327,"context_line":"                            ctxt,"},{"line_number":328,"context_line":"                            updt[\u0027id\u0027],"},{"line_number":329,"context_line":"                            {\u0027provider_id\u0027: updt[\u0027provider_id\u0027]})"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_0049fab6","line":326,"updated":"2015-09-04 05:38:59.000000000","message":"Same here.","commit_id":"7fea9f5cf5ce830005abc6aed151e22cfd21f205"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"081131b72ade0ed917b1faa9955e056c7f3b7a97","unresolved":false,"context_lines":[{"line_number":2301,"context_line":"                                     \"not in a valid state. Valid states are: \""},{"line_number":2302,"context_line":"                                     \"%(valid)s.\") %"},{"line_number":2303,"context_line":"                                   {\u0027group\u0027: group.id,"},{"line_number":2304,"context_line":"                                    \u0027snap\u0027: snap[\u0027id\u0027],"},{"line_number":2305,"context_line":"                                    \u0027valid\u0027: VALID_CREATE_CG_SRC_SNAP_STATUS})"},{"line_number":2306,"context_line":"                            raise exception.InvalidConsistencyGroup(reason\u003dmsg)"},{"line_number":2307,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_cb432cae","line":2304,"updated":"2015-09-03 23:10:57.000000000","message":"Just curious, with the move to versioned objects, is there a reason to retreat from object style attribute to dictionary here?","commit_id":"7fea9f5cf5ce830005abc6aed151e22cfd21f205"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"98fa4fb0695900b7f033b8d9d77f6d3c6d8e4924","unresolved":false,"context_lines":[{"line_number":2301,"context_line":"                                     \"not in a valid state. Valid states are: \""},{"line_number":2302,"context_line":"                                     \"%(valid)s.\") %"},{"line_number":2303,"context_line":"                                   {\u0027group\u0027: group.id,"},{"line_number":2304,"context_line":"                                    \u0027snap\u0027: snap[\u0027id\u0027],"},{"line_number":2305,"context_line":"                                    \u0027valid\u0027: VALID_CREATE_CG_SRC_SNAP_STATUS})"},{"line_number":2306,"context_line":"                            raise exception.InvalidConsistencyGroup(reason\u003dmsg)"},{"line_number":2307,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_c018e2d5","line":2304,"in_reply_to":"da20952f_cb432cae","updated":"2015-09-04 05:38:59.000000000","message":"I wonder if this is a rebase issue.  It should be snap.id on the left.","commit_id":"7fea9f5cf5ce830005abc6aed151e22cfd21f205"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"081131b72ade0ed917b1faa9955e056c7f3b7a97","unresolved":false,"context_lines":[{"line_number":2417,"context_line":"        sorted_snapshots \u003d []"},{"line_number":2418,"context_line":"        for vol in volumes:"},{"line_number":2419,"context_line":"            found_snaps \u003d filter("},{"line_number":2420,"context_line":"                lambda snap: snap[\u0027id\u0027] \u003d\u003d vol[\u0027snapshot_id\u0027], snapshots)"},{"line_number":2421,"context_line":"            if not found_snaps:"},{"line_number":2422,"context_line":"                LOG.error(_LE(\"Source snapshot cannot be found for target \""},{"line_number":2423,"context_line":"                              \"volume %(volume_id)s.\"),"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_8b18d4d4","line":2420,"updated":"2015-09-03 23:10:57.000000000","message":"ditto","commit_id":"7fea9f5cf5ce830005abc6aed151e22cfd21f205"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"98fa4fb0695900b7f033b8d9d77f6d3c6d8e4924","unresolved":false,"context_lines":[{"line_number":2417,"context_line":"        sorted_snapshots \u003d []"},{"line_number":2418,"context_line":"        for vol in volumes:"},{"line_number":2419,"context_line":"            found_snaps \u003d filter("},{"line_number":2420,"context_line":"                lambda snap: snap[\u0027id\u0027] \u003d\u003d vol[\u0027snapshot_id\u0027], snapshots)"},{"line_number":2421,"context_line":"            if not found_snaps:"},{"line_number":2422,"context_line":"                LOG.error(_LE(\"Source snapshot cannot be found for target \""},{"line_number":2423,"context_line":"                              \"volume %(volume_id)s.\"),"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_6009d683","line":2420,"in_reply_to":"da20952f_8b18d4d4","updated":"2015-09-04 05:38:59.000000000","message":"Same","commit_id":"7fea9f5cf5ce830005abc6aed151e22cfd21f205"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"99b5d7ea7b421a502f3b6e01176ad7d86373d066","unresolved":false,"context_lines":[{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    def _sync_provider_info(self, ctxt, volumes):"},{"line_number":321,"context_line":"        # NOTE(jdg): For now this just updates provider_id, we can add more"},{"line_number":322,"context_line":"        # add more items to the update if theyr\u0027e releveant but we need"},{"line_number":323,"context_line":"        # to be safe in what we allow and add a list of allowed keys"},{"line_number":324,"context_line":"        # things that make sense are provider_*, replication_status etc"},{"line_number":325,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_9966c9b9","line":322,"updated":"2015-09-04 19:15:35.000000000","message":"not relevant but \u0027add more\u0027 repeated two times.","commit_id":"6eb7d08aa72786c9494fb039f81e9810d494ab87"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"e4fe86c7045332ffd3b89a2eeb16a1dbc11101d7","unresolved":false,"context_lines":[{"line_number":2379,"context_line":"                                     \"not in a valid state. Valid states are: \""},{"line_number":2380,"context_line":"                                     \"%(valid)s.\") %"},{"line_number":2381,"context_line":"                                   {\u0027group\u0027: group.id,"},{"line_number":2382,"context_line":"                                    \u0027snap\u0027: snap[\u0027id\u0027],"},{"line_number":2383,"context_line":"                                    \u0027valid\u0027: VALID_CREATE_CG_SRC_SNAP_STATUS})"},{"line_number":2384,"context_line":"                            raise exception.InvalidConsistencyGroup(reason\u003dmsg)"},{"line_number":2385,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_9340eb60","line":2382,"updated":"2015-09-04 18:09:55.000000000","message":"I don\u0027t know what to tell ya, this is what\u0027s in master","commit_id":"6eb7d08aa72786c9494fb039f81e9810d494ab87"}]}
