)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b38d010e45d45a886cf00709770e5c422695c7e5","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Standardize logging in volume.manager.py"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We now have resource tag support in oslo logging,"},{"line_number":10,"context_line":"and our loging is pretty inconsistent and down right"},{"line_number":11,"context_line":"ugly in places.  Let\u0027s clean things up based on the"},{"line_number":12,"context_line":"standard logging guidelines and use the fancy new"},{"line_number":13,"context_line":"resource tag."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"dac4157f_1f1d8bbd","line":10,"updated":"2015-04-18 23:07:05.000000000","message":"/loging/logging/","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"}],"cinder/volume/drivers/san/hp/hp_3par_common.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6859bd6dd9782480f13fe565848ed75ea948cc85","unresolved":false,"context_lines":[{"line_number":281,"context_line":"            self.API_VERSION \u003d wsapi_version[\u0027build\u0027]"},{"line_number":282,"context_line":"        except hpexceptions.UnsupportedVersion as ex:"},{"line_number":283,"context_line":"            raise exception.InvalidInput(ex)"},{"line_number":284,"context_line":"        LOG.info(_LI(\"HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s\","},{"line_number":285,"context_line":"                     \"HP3PARDriver %(driver_ver)s\"),"},{"line_number":286,"context_line":"                 {\"common_ver\": self.VERSION,"},{"line_number":287,"context_line":"                  \"rest_ver\": hp3parclient.get_version_string(),"}],"source_content_type":"text/x-python","patch_set":9,"id":"bab921fb_8c4bb72b","line":284,"updated":"2015-04-22 18:59:12.000000000","message":"There\u0027s an extra \",\" at the end of the above line that caused pep8 errors. You should either remove it or move it inside the quote.","commit_id":"6b6e5e13fa3f6bbe4e21d1924e542bf958500233"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"55418440a2376c169564517fb341c808f3b3ad64","unresolved":false,"context_lines":[{"line_number":285,"context_line":"                     \"HP3PARDriver %(driver_ver)s\"),"},{"line_number":286,"context_line":"                 {\"common_ver\": self.VERSION,"},{"line_number":287,"context_line":"                  \"rest_ver\": hp3parclient.get_version_string(),"},{"line_number":288,"context_line":"                  \"driver_ver\": self.get_version()})"},{"line_number":289,"context_line":"        if self.config.hp3par_debug:"},{"line_number":290,"context_line":"            self.client.debug_rest(True)"},{"line_number":291,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bab921fb_1ea7cd50","line":288,"updated":"2015-04-22 18:18:42.000000000","message":"this will output the version of the common class, not the driver.","commit_id":"6b6e5e13fa3f6bbe4e21d1924e542bf958500233"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"3716334457901e40741d4edf8c4ed1a375bdcacc","unresolved":false,"context_lines":[{"line_number":285,"context_line":"                     \"HP3PARDriver %(driver_ver)s\"),"},{"line_number":286,"context_line":"                 {\"common_ver\": self.VERSION,"},{"line_number":287,"context_line":"                  \"rest_ver\": hp3parclient.get_version_string(),"},{"line_number":288,"context_line":"                  \"driver_ver\": self.get_version()})"},{"line_number":289,"context_line":"        if self.config.hp3par_debug:"},{"line_number":290,"context_line":"            self.client.debug_rest(True)"},{"line_number":291,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bab921fb_4c06bf21","line":288,"in_reply_to":"bab921fb_1ea7cd50","updated":"2015-04-22 19:17:05.000000000","message":"Huh... the manager call in question calls \"driver.get_version\"; how many driver layers with duplicate methods are there?\n\nLet me know what needs to be called here if you can.","commit_id":"6b6e5e13fa3f6bbe4e21d1924e542bf958500233"}],"cinder/volume/drivers/san/hp/hp_3par_fc.py":[{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"9953cf5f0de9f4c1dc5edee6a83ddfe46c017f27","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        super(HP3PARFCDriver, self).__init__(*args, **kwargs)"},{"line_number":88,"context_line":"        self.configuration.append_config_values(hpcommon.hp3par_opts)"},{"line_number":89,"context_line":"        self.configuration.append_config_values(san.san_opts)"},{"line_number":90,"context_line":"        self.lookupfczm_utils.create_lookup_service()"},{"line_number":91,"context_line":"        LOG.info(_LI(\"Initializing hp_3par_fc driver version: %s\"),"},{"line_number":92,"context_line":"                 self.VERSION)"},{"line_number":93,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"bab921fb_7ff6c0d8","line":90,"updated":"2015-04-22 20:36:56.000000000","message":"bahh","commit_id":"de00a528bd1afa8c080d057511e2cb2f8948678f"}],"cinder/volume/manager.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b38d010e45d45a886cf00709770e5c422695c7e5","unresolved":false,"context_lines":[{"line_number":330,"context_line":"                                              volume[\u0027id\u0027],"},{"line_number":331,"context_line":"                                              {\u0027status\u0027: \u0027error\u0027})"},{"line_number":332,"context_line":"                elif volume[\u0027status\u0027] in (\u0027downloading\u0027, \u0027creating\u0027):"},{"line_number":333,"context_line":"                    LOG.warn(_LW(\"Detected volume stuck in %s(curr_status)s \""},{"line_number":334,"context_line":"                                 \"status, setting to ERROR.\"),"},{"line_number":335,"context_line":"                             {\u0027curr_status\u0027: volume[\u0027status\u0027]},"},{"line_number":336,"context_line":"                             resource\u003dvolume)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_df7dd3e8","line":333,"updated":"2015-04-18 23:07:05.000000000","message":"LOG.warn is deprecated, please us LOG.warning.","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"5c5231020404d05db11cb74c14aa6448b7525010","unresolved":false,"context_lines":[{"line_number":330,"context_line":"                                              volume[\u0027id\u0027],"},{"line_number":331,"context_line":"                                              {\u0027status\u0027: \u0027error\u0027})"},{"line_number":332,"context_line":"                elif volume[\u0027status\u0027] in (\u0027downloading\u0027, \u0027creating\u0027):"},{"line_number":333,"context_line":"                    LOG.warn(_LW(\"Detected volume stuck in %s(curr_status)s \""},{"line_number":334,"context_line":"                                 \"status, setting to ERROR.\"),"},{"line_number":335,"context_line":"                             {\u0027curr_status\u0027: volume[\u0027status\u0027]},"},{"line_number":336,"context_line":"                             resource\u003dvolume)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_bf6c5f09","line":333,"in_reply_to":"dac4157f_df7dd3e8","updated":"2015-04-18 23:44:32.000000000","message":"Done","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b38d010e45d45a886cf00709770e5c422695c7e5","unresolved":false,"context_lines":[{"line_number":340,"context_line":"                    self.db.volume_update(ctxt,"},{"line_number":341,"context_line":"                                          volume[\u0027id\u0027],"},{"line_number":342,"context_line":"                                          {\u0027status\u0027: \u0027error\u0027})"},{"line_number":343,"context_line":"                else:"},{"line_number":344,"context_line":"                    pass"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"            snapshots \u003d self.db.snapshot_get_by_host(ctxt,"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_bf821fc7","line":343,"updated":"2015-04-18 23:07:05.000000000","message":"My preference would be to just remove this else statement since it just passes, but that is just my preference and I know others seem to prefer having explicit else statement. I defer to your opinion on this one.","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b38d010e45d45a886cf00709770e5c422695c7e5","unresolved":false,"context_lines":[{"line_number":347,"context_line":"                                                     self.host,"},{"line_number":348,"context_line":"                                                     {\u0027status\u0027: \u0027creating\u0027})"},{"line_number":349,"context_line":"            for snapshot in snapshots:"},{"line_number":350,"context_line":"                LOG.warn(_LW(\"Detected snapshot stuck in creating \""},{"line_number":351,"context_line":"                             \"status, setting to ERROR.\"), resource\u003dsnapshot)"},{"line_number":352,"context_line":"                self.db.snapshot_update(ctxt,"},{"line_number":353,"context_line":"                                        snapshot[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_9f875bd7","line":350,"updated":"2015-04-18 23:07:05.000000000","message":"Change warn to warning.","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"5c5231020404d05db11cb74c14aa6448b7525010","unresolved":false,"context_lines":[{"line_number":347,"context_line":"                                                     self.host,"},{"line_number":348,"context_line":"                                                     {\u0027status\u0027: \u0027creating\u0027})"},{"line_number":349,"context_line":"            for snapshot in snapshots:"},{"line_number":350,"context_line":"                LOG.warn(_LW(\"Detected snapshot stuck in creating \""},{"line_number":351,"context_line":"                             \"status, setting to ERROR.\"), resource\u003dsnapshot)"},{"line_number":352,"context_line":"                self.db.snapshot_update(ctxt,"},{"line_number":353,"context_line":"                                        snapshot[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_7f77e7d4","line":350,"in_reply_to":"dac4157f_9f875bd7","updated":"2015-04-18 23:44:32.000000000","message":"Done","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b38d010e45d45a886cf00709770e5c422695c7e5","unresolved":false,"context_lines":[{"line_number":389,"context_line":"                self._update_replication_relationship_status(ctxt)"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"            self.add_periodic_task(run_replication_task)"},{"line_number":392,"context_line":"        LOG.info(_LI(\"successfully initialized driver.\"),"},{"line_number":393,"context_line":"                 resource\u003d{\u0027type\u0027: \u0027driver\u0027,"},{"line_number":394,"context_line":"                           \u0027id\u0027: self.driver.__class__.__name__})"},{"line_number":395,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_5f6ae31b","line":392,"updated":"2015-04-18 23:07:05.000000000","message":"Would prefer starting uppercase.","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"5c5231020404d05db11cb74c14aa6448b7525010","unresolved":false,"context_lines":[{"line_number":389,"context_line":"                self._update_replication_relationship_status(ctxt)"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"            self.add_periodic_task(run_replication_task)"},{"line_number":392,"context_line":"        LOG.info(_LI(\"successfully initialized driver.\"),"},{"line_number":393,"context_line":"                 resource\u003d{\u0027type\u0027: \u0027driver\u0027,"},{"line_number":394,"context_line":"                           \u0027id\u0027: self.driver.__class__.__name__})"},{"line_number":395,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_5f7423ce","line":392,"in_reply_to":"dac4157f_5f6ae31b","updated":"2015-04-18 23:44:32.000000000","message":"Done","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b38d010e45d45a886cf00709770e5c422695c7e5","unresolved":false,"context_lines":[{"line_number":426,"context_line":"                consistencygroup_id\u003dconsistencygroup_id,"},{"line_number":427,"context_line":"                cgsnapshot_id\u003dcgsnapshot_id)"},{"line_number":428,"context_line":"        except Exception:"},{"line_number":429,"context_line":"            LOG.exception(_LE(\"Failed to create manager volume flow\"),"},{"line_number":430,"context_line":"                          resource\u003dvolume)"},{"line_number":431,"context_line":"            raise exception.CinderException("},{"line_number":432,"context_line":"                _(\"Failed to create manager volume flow.\"))"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_ff5f7773","line":429,"updated":"2015-04-18 23:07:05.000000000","message":"Outside the scope of this patch, but this would be better to have one string to be translated to be used by both the logger and the exception.","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"5c5231020404d05db11cb74c14aa6448b7525010","unresolved":false,"context_lines":[{"line_number":426,"context_line":"                consistencygroup_id\u003dconsistencygroup_id,"},{"line_number":427,"context_line":"                cgsnapshot_id\u003dcgsnapshot_id)"},{"line_number":428,"context_line":"        except Exception:"},{"line_number":429,"context_line":"            LOG.exception(_LE(\"Failed to create manager volume flow\"),"},{"line_number":430,"context_line":"                          resource\u003dvolume)"},{"line_number":431,"context_line":"            raise exception.CinderException("},{"line_number":432,"context_line":"                _(\"Failed to create manager volume flow.\"))"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_3f816f90","line":429,"in_reply_to":"dac4157f_ff5f7773","updated":"2015-04-18 23:44:32.000000000","message":"Done","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b38d010e45d45a886cf00709770e5c422695c7e5","unresolved":false,"context_lines":[{"line_number":508,"context_line":"        except exception.VolumeNotFound:"},{"line_number":509,"context_line":"            # NOTE(thingee): It could be possible for a volume to"},{"line_number":510,"context_line":"            # be deleted when resuming deletes from init_host()."},{"line_number":511,"context_line":"            LOG.debug((\"Delete non-existent volume completed successfully.\"),"},{"line_number":512,"context_line":"                      resource\u003dvolume_ref)"},{"line_number":513,"context_line":"            return True"},{"line_number":514,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_df64b34a","line":511,"updated":"2015-04-18 23:07:05.000000000","message":"Extra parentheses.","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"5c5231020404d05db11cb74c14aa6448b7525010","unresolved":false,"context_lines":[{"line_number":508,"context_line":"        except exception.VolumeNotFound:"},{"line_number":509,"context_line":"            # NOTE(thingee): It could be possible for a volume to"},{"line_number":510,"context_line":"            # be deleted when resuming deletes from init_host()."},{"line_number":511,"context_line":"            LOG.debug((\"Delete non-existent volume completed successfully.\"),"},{"line_number":512,"context_line":"                      resource\u003dvolume_ref)"},{"line_number":513,"context_line":"            return True"},{"line_number":514,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_1f7eabae","line":511,"in_reply_to":"dac4157f_df64b34a","updated":"2015-04-18 23:44:32.000000000","message":"Done","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b38d010e45d45a886cf00709770e5c422695c7e5","unresolved":false,"context_lines":[{"line_number":664,"context_line":"            except exception.CinderException as ex:"},{"line_number":665,"context_line":"                LOG.exception(_LE(\"Failed updating snapshot\""},{"line_number":666,"context_line":"                                  \" metadata using the provided volumes\""},{"line_number":667,"context_line":"                                  \" %(volume_id)s metadata\") %"},{"line_number":668,"context_line":"                              {\u0027volume_id\u0027: volume_id}, resource\u003dsnapshot)"},{"line_number":669,"context_line":"                snapshot.status \u003d \u0027error\u0027"},{"line_number":670,"context_line":"                snapshot.save(context)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_bf59ff90","line":667,"updated":"2015-04-18 23:07:05.000000000","message":"While updating, please change % to ,.","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"5c5231020404d05db11cb74c14aa6448b7525010","unresolved":false,"context_lines":[{"line_number":664,"context_line":"            except exception.CinderException as ex:"},{"line_number":665,"context_line":"                LOG.exception(_LE(\"Failed updating snapshot\""},{"line_number":666,"context_line":"                                  \" metadata using the provided volumes\""},{"line_number":667,"context_line":"                                  \" %(volume_id)s metadata\") %"},{"line_number":668,"context_line":"                              {\u0027volume_id\u0027: volume_id}, resource\u003dsnapshot)"},{"line_number":669,"context_line":"                snapshot.status \u003d \u0027error\u0027"},{"line_number":670,"context_line":"                snapshot.save(context)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_df4ef395","line":667,"in_reply_to":"dac4157f_bf59ff90","updated":"2015-04-18 23:44:32.000000000","message":"Done","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b38d010e45d45a886cf00709770e5c422695c7e5","unresolved":false,"context_lines":[{"line_number":675,"context_line":"        snapshot.save(context)"},{"line_number":676,"context_line":""},{"line_number":677,"context_line":"        self._notify_about_snapshot_usage(context, snapshot, \"create.end\")"},{"line_number":678,"context_line":"        LOG.info(_(\"Create snapshot completed successfully\"),"},{"line_number":679,"context_line":"                 resource\u003dsnapshot)"},{"line_number":680,"context_line":"        return snapshot.id"},{"line_number":681,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_9f5e3b75","line":678,"updated":"2015-04-18 23:07:05.000000000","message":"Needs _LI().","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"5c5231020404d05db11cb74c14aa6448b7525010","unresolved":false,"context_lines":[{"line_number":675,"context_line":"        snapshot.save(context)"},{"line_number":676,"context_line":""},{"line_number":677,"context_line":"        self._notify_about_snapshot_usage(context, snapshot, \"create.end\")"},{"line_number":678,"context_line":"        LOG.info(_(\"Create snapshot completed successfully\"),"},{"line_number":679,"context_line":"                 resource\u003dsnapshot)"},{"line_number":680,"context_line":"        return snapshot.id"},{"line_number":681,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_bf433f6c","line":678,"in_reply_to":"dac4157f_9f5e3b75","updated":"2015-04-18 23:44:32.000000000","message":"Done","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b38d010e45d45a886cf00709770e5c422695c7e5","unresolved":false,"context_lines":[{"line_number":738,"context_line":"        # Commit the reservations"},{"line_number":739,"context_line":"        if reservations:"},{"line_number":740,"context_line":"            QUOTAS.commit(context, reservations, project_id\u003dproject_id)"},{"line_number":741,"context_line":"        LOG.info(_(\"Delete snapshot completed successfully\"),"},{"line_number":742,"context_line":"                 resource\u003dsnapshot)"},{"line_number":743,"context_line":"        return True"},{"line_number":744,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_7f548753","line":741,"updated":"2015-04-18 23:07:05.000000000","message":"Needs _LI().","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"5c5231020404d05db11cb74c14aa6448b7525010","unresolved":false,"context_lines":[{"line_number":738,"context_line":"        # Commit the reservations"},{"line_number":739,"context_line":"        if reservations:"},{"line_number":740,"context_line":"            QUOTAS.commit(context, reservations, project_id\u003dproject_id)"},{"line_number":741,"context_line":"        LOG.info(_(\"Delete snapshot completed successfully\"),"},{"line_number":742,"context_line":"                 resource\u003dsnapshot)"},{"line_number":743,"context_line":"        return True"},{"line_number":744,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_9f487b89","line":741,"in_reply_to":"dac4157f_7f548753","updated":"2015-04-18 23:44:32.000000000","message":"Done","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b38d010e45d45a886cf00709770e5c422695c7e5","unresolved":false,"context_lines":[{"line_number":964,"context_line":"            image_meta \u003d image_service.show(context, image_id)"},{"line_number":965,"context_line":"            image_status \u003d image_meta.get(\u0027status\u0027)"},{"line_number":966,"context_line":"            if image_status \u003d\u003d \u0027queued\u0027 or image_status \u003d\u003d \u0027saving\u0027:"},{"line_number":967,"context_line":"                LOG.warn(_LW(\"Deleting image in unexpected status: \""},{"line_number":968,"context_line":"                             \"%(image_status)s.\"),"},{"line_number":969,"context_line":"                         {\u0027image_status\u0027: image_status},"},{"line_number":970,"context_line":"                         resource\u003d{\u0027type\u0027: \u0027image\u0027, \u0027id\u0027: image_id})"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_3f4e0fc2","line":967,"updated":"2015-04-18 23:07:05.000000000","message":"/warn/warning/","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"5c5231020404d05db11cb74c14aa6448b7525010","unresolved":false,"context_lines":[{"line_number":964,"context_line":"            image_meta \u003d image_service.show(context, image_id)"},{"line_number":965,"context_line":"            image_status \u003d image_meta.get(\u0027status\u0027)"},{"line_number":966,"context_line":"            if image_status \u003d\u003d \u0027queued\u0027 or image_status \u003d\u003d \u0027saving\u0027:"},{"line_number":967,"context_line":"                LOG.warn(_LW(\"Deleting image in unexpected status: \""},{"line_number":968,"context_line":"                             \"%(image_status)s.\"),"},{"line_number":969,"context_line":"                         {\u0027image_status\u0027: image_status},"},{"line_number":970,"context_line":"                         resource\u003d{\u0027type\u0027: \u0027image\u0027, \u0027id\u0027: image_id})"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_7f5ec746","line":967,"in_reply_to":"dac4157f_3f4e0fc2","updated":"2015-04-18 23:44:32.000000000","message":"Done","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b38d010e45d45a886cf00709770e5c422695c7e5","unresolved":false,"context_lines":[{"line_number":970,"context_line":"                         resource\u003d{\u0027type\u0027: \u0027image\u0027, \u0027id\u0027: image_id})"},{"line_number":971,"context_line":"                image_service.delete(context, image_id)"},{"line_number":972,"context_line":"        except Exception:"},{"line_number":973,"context_line":"            LOG.warn(_LW(\"Image delete encountered an error.\"),"},{"line_number":974,"context_line":"                     exc_info\u003dTrue, resource\u003d{\u0027type\u0027: \u0027image\u0027, \u0027id\u0027: image_id})"},{"line_number":975,"context_line":""},{"line_number":976,"context_line":"    def _driver_data_namespace(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_1f4b4bb2","line":973,"updated":"2015-04-18 23:07:05.000000000","message":"/warn/warning/","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"5c5231020404d05db11cb74c14aa6448b7525010","unresolved":false,"context_lines":[{"line_number":970,"context_line":"                         resource\u003d{\u0027type\u0027: \u0027image\u0027, \u0027id\u0027: image_id})"},{"line_number":971,"context_line":"                image_service.delete(context, image_id)"},{"line_number":972,"context_line":"        except Exception:"},{"line_number":973,"context_line":"            LOG.warn(_LW(\"Image delete encountered an error.\"),"},{"line_number":974,"context_line":"                     exc_info\u003dTrue, resource\u003d{\u0027type\u0027: \u0027image\u0027, \u0027id\u0027: image_id})"},{"line_number":975,"context_line":""},{"line_number":976,"context_line":"    def _driver_data_namespace(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_5f5b0355","line":973,"in_reply_to":"dac4157f_1f4b4bb2","updated":"2015-04-18 23:44:32.000000000","message":"Done","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b38d010e45d45a886cf00709770e5c422695c7e5","unresolved":false,"context_lines":[{"line_number":1063,"context_line":"            raise exception.InvalidInput(reason\u003derr)"},{"line_number":1064,"context_line":"        except Exception as err:"},{"line_number":1065,"context_line":"            err_msg \u003d (_(\"Validate volume connection failed \""},{"line_number":1066,"context_line":"                         \"(error: %(err)).\"), {\u0027err\u0027: err})"},{"line_number":1067,"context_line":"            LOG.error(err_msg, resource\u003dvolume)"},{"line_number":1068,"context_line":"            raise exception.VolumeBackendAPIException(data\u003derr_msg)"},{"line_number":1069,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_ffc65715","line":1066,"updated":"2015-04-18 23:07:05.000000000","message":"err needs six.text_type(), but I believe that is probably being addressed in another patch, so can probably be skipped here.","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"5c5231020404d05db11cb74c14aa6448b7525010","unresolved":false,"context_lines":[{"line_number":1063,"context_line":"            raise exception.InvalidInput(reason\u003derr)"},{"line_number":1064,"context_line":"        except Exception as err:"},{"line_number":1065,"context_line":"            err_msg \u003d (_(\"Validate volume connection failed \""},{"line_number":1066,"context_line":"                         \"(error: %(err)).\"), {\u0027err\u0027: err})"},{"line_number":1067,"context_line":"            LOG.error(err_msg, resource\u003dvolume)"},{"line_number":1068,"context_line":"            raise exception.VolumeBackendAPIException(data\u003derr_msg)"},{"line_number":1069,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_1f558b1c","line":1066,"in_reply_to":"dac4157f_ffc65715","updated":"2015-04-18 23:44:32.000000000","message":"Done","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b38d010e45d45a886cf00709770e5c422695c7e5","unresolved":false,"context_lines":[{"line_number":1096,"context_line":"                                                              connector)"},{"line_number":1097,"context_line":"        except Exception as err:"},{"line_number":1098,"context_line":"            err_msg \u003d (_(\"Driver initialize connection failed \""},{"line_number":1099,"context_line":"                         \"(error: %(err)s).\"), {\u0027err\u0027: err})"},{"line_number":1100,"context_line":"            LOG.error(err_msg, resource\u003dvolume)"},{"line_number":1101,"context_line":""},{"line_number":1102,"context_line":"            self.driver.remove_export(context.elevated(), volume)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_dfcb931d","line":1099,"updated":"2015-04-18 23:07:05.000000000","message":"Again, need six.text_type() but can probably be addressed in another patch.","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"5c5231020404d05db11cb74c14aa6448b7525010","unresolved":false,"context_lines":[{"line_number":1096,"context_line":"                                                              connector)"},{"line_number":1097,"context_line":"        except Exception as err:"},{"line_number":1098,"context_line":"            err_msg \u003d (_(\"Driver initialize connection failed \""},{"line_number":1099,"context_line":"                         \"(error: %(err)s).\"), {\u0027err\u0027: err})"},{"line_number":1100,"context_line":"            LOG.error(err_msg, resource\u003dvolume)"},{"line_number":1101,"context_line":""},{"line_number":1102,"context_line":"            self.driver.remove_export(context.elevated(), volume)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_ff309709","line":1099,"in_reply_to":"dac4157f_dfcb931d","updated":"2015-04-18 23:44:32.000000000","message":"Done","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b38d010e45d45a886cf00709770e5c422695c7e5","unresolved":false,"context_lines":[{"line_number":1155,"context_line":"                                             force\u003dforce)"},{"line_number":1156,"context_line":"        except Exception as err:"},{"line_number":1157,"context_line":"            err_msg \u003d (_(\u0027Terminate volume connection failed: %(err)s\u0027)"},{"line_number":1158,"context_line":"                       % {\u0027err\u0027: err})"},{"line_number":1159,"context_line":"            LOG.error(err_msg, resource\u003dvolume_ref)"},{"line_number":1160,"context_line":"            raise exception.VolumeBackendAPIException(data\u003derr_msg)"},{"line_number":1161,"context_line":"        LOG.info(_LI(\"Terminate volume connection completed successfully.\"),"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_9fd51bbb","line":1158,"updated":"2015-04-18 23:07:05.000000000","message":"six","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"5c5231020404d05db11cb74c14aa6448b7525010","unresolved":false,"context_lines":[{"line_number":1155,"context_line":"                                             force\u003dforce)"},{"line_number":1156,"context_line":"        except Exception as err:"},{"line_number":1157,"context_line":"            err_msg \u003d (_(\u0027Terminate volume connection failed: %(err)s\u0027)"},{"line_number":1158,"context_line":"                       % {\u0027err\u0027: err})"},{"line_number":1159,"context_line":"            LOG.error(err_msg, resource\u003dvolume_ref)"},{"line_number":1160,"context_line":"            raise exception.VolumeBackendAPIException(data\u003derr_msg)"},{"line_number":1161,"context_line":"        LOG.info(_LI(\"Terminate volume connection completed successfully.\"),"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_df35d3f7","line":1158,"in_reply_to":"dac4157f_9fd51bbb","updated":"2015-04-18 23:44:32.000000000","message":"Done","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b38d010e45d45a886cf00709770e5c422695c7e5","unresolved":false,"context_lines":[{"line_number":1365,"context_line":"                    self.detach_volume(ctxt, volume_id, attachment[\u0027id\u0027])"},{"line_number":1366,"context_line":"            self.delete_volume(ctxt, volume_id)"},{"line_number":1367,"context_line":"        except Exception as ex:"},{"line_number":1368,"context_line":"            msg \u003d _(\"Delete migration source volume failed:  %(err)s\")"},{"line_number":1369,"context_line":"            LOG.error(msg % {\u0027err\u0027: ex}, resource\u003dvolume)"},{"line_number":1370,"context_line":""},{"line_number":1371,"context_line":"        # Give driver (new_volume) a chance to update things as needed"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_5fd8a3ef","line":1368,"updated":"2015-04-18 23:07:05.000000000","message":"Only used for LOG.error, so should have _LE().","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"7c5d4fdd66630329decf1d1fc706cd17fb228cd7","unresolved":false,"context_lines":[{"line_number":1365,"context_line":"                    self.detach_volume(ctxt, volume_id, attachment[\u0027id\u0027])"},{"line_number":1366,"context_line":"            self.delete_volume(ctxt, volume_id)"},{"line_number":1367,"context_line":"        except Exception as ex:"},{"line_number":1368,"context_line":"            msg \u003d _(\"Delete migration source volume failed:  %(err)s\")"},{"line_number":1369,"context_line":"            LOG.error(msg % {\u0027err\u0027: ex}, resource\u003dvolume)"},{"line_number":1370,"context_line":""},{"line_number":1371,"context_line":"        # Give driver (new_volume) a chance to update things as needed"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_ae71cbe2","line":1368,"in_reply_to":"dac4157f_3f584f56","updated":"2015-04-19 15:01:41.000000000","message":"Looking back at the guidelines here seems just using \"_(\" is still the appropriate way to go.  In fact, hacking will find this and flag it apparently.","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"5c5231020404d05db11cb74c14aa6448b7525010","unresolved":false,"context_lines":[{"line_number":1365,"context_line":"                    self.detach_volume(ctxt, volume_id, attachment[\u0027id\u0027])"},{"line_number":1366,"context_line":"            self.delete_volume(ctxt, volume_id)"},{"line_number":1367,"context_line":"        except Exception as ex:"},{"line_number":1368,"context_line":"            msg \u003d _(\"Delete migration source volume failed:  %(err)s\")"},{"line_number":1369,"context_line":"            LOG.error(msg % {\u0027err\u0027: ex}, resource\u003dvolume)"},{"line_number":1370,"context_line":""},{"line_number":1371,"context_line":"        # Give driver (new_volume) a chance to update things as needed"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_3f584f56","line":1368,"in_reply_to":"dac4157f_5fd8a3ef","updated":"2015-04-18 23:44:32.000000000","message":"Done","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"25d113a29978cac153355130b9a80ffb6961704a","unresolved":false,"context_lines":[{"line_number":1365,"context_line":"                    self.detach_volume(ctxt, volume_id, attachment[\u0027id\u0027])"},{"line_number":1366,"context_line":"            self.delete_volume(ctxt, volume_id)"},{"line_number":1367,"context_line":"        except Exception as ex:"},{"line_number":1368,"context_line":"            msg \u003d _(\"Delete migration source volume failed:  %(err)s\")"},{"line_number":1369,"context_line":"            LOG.error(msg % {\u0027err\u0027: ex}, resource\u003dvolume)"},{"line_number":1370,"context_line":""},{"line_number":1371,"context_line":"        # Give driver (new_volume) a chance to update things as needed"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_82cedb58","line":1368,"in_reply_to":"dac4157f_ae71cbe2","updated":"2015-04-19 16:20:44.000000000","message":"If the message is being used for both logging and for an exception, then it should just be _(). Otherwise if it\u0027s just being used for LOG.error it should be _LE(). Does the guideline indicate something else somewhere?","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b38d010e45d45a886cf00709770e5c422695c7e5","unresolved":false,"context_lines":[{"line_number":1366,"context_line":"            self.delete_volume(ctxt, volume_id)"},{"line_number":1367,"context_line":"        except Exception as ex:"},{"line_number":1368,"context_line":"            msg \u003d _(\"Delete migration source volume failed:  %(err)s\")"},{"line_number":1369,"context_line":"            LOG.error(msg % {\u0027err\u0027: ex}, resource\u003dvolume)"},{"line_number":1370,"context_line":""},{"line_number":1371,"context_line":"        # Give driver (new_volume) a chance to update things as needed"},{"line_number":1372,"context_line":"        # Note this needs to go through rpc to the host of the new volume"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_3fe5efa7","line":1369,"updated":"2015-04-18 23:07:05.000000000","message":"Need to change % to , or wrap ex in six.text_type().","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"5c5231020404d05db11cb74c14aa6448b7525010","unresolved":false,"context_lines":[{"line_number":1366,"context_line":"            self.delete_volume(ctxt, volume_id)"},{"line_number":1367,"context_line":"        except Exception as ex:"},{"line_number":1368,"context_line":"            msg \u003d _(\"Delete migration source volume failed:  %(err)s\")"},{"line_number":1369,"context_line":"            LOG.error(msg % {\u0027err\u0027: ex}, resource\u003dvolume)"},{"line_number":1370,"context_line":""},{"line_number":1371,"context_line":"        # Give driver (new_volume) a chance to update things as needed"},{"line_number":1372,"context_line":"        # Note this needs to go through rpc to the host of the new volume"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_bf3a1fe6","line":1369,"in_reply_to":"dac4157f_3fe5efa7","updated":"2015-04-18 23:44:32.000000000","message":"Done","commit_id":"71410fe7d67d7bc6191f89c4abbf5a8efcc3fb09"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"e87a570f70740bb1cdca110f0a94c15164265695","unresolved":false,"context_lines":[{"line_number":428,"context_line":"                cgsnapshot_id\u003dcgsnapshot_id)"},{"line_number":429,"context_line":"        except Exception:"},{"line_number":430,"context_line":"            msg \u003d _(\"Create manager volume flow failed.\")"},{"line_number":431,"context_line":"            LOG.exception(_LE(msg),"},{"line_number":432,"context_line":"                          resource\u003dvolume)"},{"line_number":433,"context_line":"            raise exception.CinderException(msg)"},{"line_number":434,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dac4157f_222b8fed","line":431,"updated":"2015-04-19 16:25:30.000000000","message":"This was the cause of the pep8 error. _LE shouldn\u0027t be around the msg variable. Just _() around the actual string, then msg passed in to both LOG.exception and the CinderException initialization.","commit_id":"bbdd42970838cadb3053e6fccb249a5f0e616cf2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ce148e99dd687f8b030c91712e81ac1316efc553","unresolved":false,"context_lines":[{"line_number":428,"context_line":"                cgsnapshot_id\u003dcgsnapshot_id)"},{"line_number":429,"context_line":"        except Exception:"},{"line_number":430,"context_line":"            msg \u003d _(\"Create manager volume flow failed.\")"},{"line_number":431,"context_line":"            LOG.exception((msg),"},{"line_number":432,"context_line":"                          resource\u003dvolume)"},{"line_number":433,"context_line":"            raise exception.CinderException(msg)"},{"line_number":434,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_823c9b30","line":431,"updated":"2015-04-19 16:32:39.000000000","message":"The () around msg could (should?) be removed.","commit_id":"97c23c1f1f2aeb2bca4cf3126edbd04944a86d1a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ce148e99dd687f8b030c91712e81ac1316efc553","unresolved":false,"context_lines":[{"line_number":1368,"context_line":"            self.delete_volume(ctxt, volume_id)"},{"line_number":1369,"context_line":"        except Exception as ex:"},{"line_number":1370,"context_line":"            msg \u003d _LE(\"Delete migration source volume failed:  %(err)s\")"},{"line_number":1371,"context_line":"            LOG.error(msg, {\u0027err\u0027: six.text_type(ex)}, resource\u003dvolume)"},{"line_number":1372,"context_line":""},{"line_number":1373,"context_line":"        # Give driver (new_volume) a chance to update things as needed"},{"line_number":1374,"context_line":"        # Note this needs to go through rpc to the host of the new volume"}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_c28733d6","line":1371,"updated":"2015-04-19 16:32:39.000000000","message":"six.text_type not needed here since it is being passed in as an argument to the logger. The logger will take care of the conversion if/when needed. No harm, just a little redundant.","commit_id":"97c23c1f1f2aeb2bca4cf3126edbd04944a86d1a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"24987f603f6fea4f1089ca3deb79699775132c5b","unresolved":false,"context_lines":[{"line_number":1368,"context_line":"            self.delete_volume(ctxt, volume_id)"},{"line_number":1369,"context_line":"        except Exception as ex:"},{"line_number":1370,"context_line":"            msg \u003d _LE(\"Delete migration source volume failed:  %(err)s\")"},{"line_number":1371,"context_line":"            LOG.error(msg, {\u0027err\u0027: six.text_type(ex)}, resource\u003dvolume)"},{"line_number":1372,"context_line":""},{"line_number":1373,"context_line":"        # Give driver (new_volume) a chance to update things as needed"},{"line_number":1374,"context_line":"        # Note this needs to go through rpc to the host of the new volume"}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_7fe46c3a","line":1371,"in_reply_to":"dac4157f_c2161355","updated":"2015-04-20 13:12:35.000000000","message":"Yeah, I wouldn\u0027t complain (maybe just grumble a little) if this is left as it is. It really doesn\u0027t harm anything.\n\nReally it comes down to:\n\nPerforming string formatting directly - six.text_type needed.\nLetting logger perform string formatting - six.text_type not needed.","commit_id":"97c23c1f1f2aeb2bca4cf3126edbd04944a86d1a"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"5829708e2feec522629f728af155fd75c9eb2aad","unresolved":false,"context_lines":[{"line_number":1368,"context_line":"            self.delete_volume(ctxt, volume_id)"},{"line_number":1369,"context_line":"        except Exception as ex:"},{"line_number":1370,"context_line":"            msg \u003d _LE(\"Delete migration source volume failed:  %(err)s\")"},{"line_number":1371,"context_line":"            LOG.error(msg, {\u0027err\u0027: six.text_type(ex)}, resource\u003dvolume)"},{"line_number":1372,"context_line":""},{"line_number":1373,"context_line":"        # Give driver (new_volume) a chance to update things as needed"},{"line_number":1374,"context_line":"        # Note this needs to go through rpc to the host of the new volume"}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_c2161355","line":1371,"in_reply_to":"dac4157f_c28733d6","updated":"2015-04-19 17:22:34.000000000","message":"Hmm... interpretted your comment in set 2 that you preferred I explicitly wrap it.  Might be good to just keep it for consistency ya think?  IMHO this is part of why the logging stuff is rather confusing for people \"options sometimes, mandatory others\".  So maybe just using it explicitly and consistently would help with some of that.  What do you think?","commit_id":"97c23c1f1f2aeb2bca4cf3126edbd04944a86d1a"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"5ae5951b0526123b40464045362a03ecec72e4ef","unresolved":false,"context_lines":[{"line_number":241,"context_line":"            # knowledge and update the DB."},{"line_number":242,"context_line":"            try:"},{"line_number":243,"context_line":"                pool \u003d self.driver.get_pool(volume)"},{"line_number":244,"context_line":"            except Exception as err:"},{"line_number":245,"context_line":"                LOG.error(_LE(\u0027Failed to fetch pool name for volume: %s\u0027),"},{"line_number":246,"context_line":"                          volume[\u0027id\u0027])"},{"line_number":247,"context_line":"                LOG.exception(err)"}],"source_content_type":"text/x-python","patch_set":5,"id":"dac4157f_61d8581e","line":244,"updated":"2015-04-20 10:41:33.000000000","message":"+1","commit_id":"012cca67526e01a9b5b9dd4cdd10d8fcb2505455"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"e72da134459a06fb5e52cb84fe78f25a2b60f251","unresolved":false,"context_lines":[{"line_number":241,"context_line":"            # knowledge and update the DB."},{"line_number":242,"context_line":"            try:"},{"line_number":243,"context_line":"                pool \u003d self.driver.get_pool(volume)"},{"line_number":244,"context_line":"            except Exception as err:"},{"line_number":245,"context_line":"                LOG.error(_LE(\u0027Failed to fetch pool name for volume: %s\u0027),"},{"line_number":246,"context_line":"                          volume[\u0027id\u0027])"},{"line_number":247,"context_line":"                LOG.exception(err)"}],"source_content_type":"text/x-python","patch_set":5,"id":"dac4157f_b6ca414e","line":244,"updated":"2015-04-20 04:11:23.000000000","message":"The volume can be the resource?","commit_id":"012cca67526e01a9b5b9dd4cdd10d8fcb2505455"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"16c045c098cf8f1252a1f1b63b7135b769f250b4","unresolved":false,"context_lines":[{"line_number":241,"context_line":"            # knowledge and update the DB."},{"line_number":242,"context_line":"            try:"},{"line_number":243,"context_line":"                pool \u003d self.driver.get_pool(volume)"},{"line_number":244,"context_line":"            except Exception as err:"},{"line_number":245,"context_line":"                LOG.error(_LE(\u0027Failed to fetch pool name for volume: %s\u0027),"},{"line_number":246,"context_line":"                          volume[\u0027id\u0027])"},{"line_number":247,"context_line":"                LOG.exception(err)"}],"source_content_type":"text/x-python","patch_set":5,"id":"dac4157f_b53ea5b6","line":244,"in_reply_to":"dac4157f_61d8581e","updated":"2015-04-20 14:00:59.000000000","message":"Done","commit_id":"012cca67526e01a9b5b9dd4cdd10d8fcb2505455"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"e72da134459a06fb5e52cb84fe78f25a2b60f251","unresolved":false,"context_lines":[{"line_number":845,"context_line":"                attachment \u003d self.db.volume_attachment_get(context,"},{"line_number":846,"context_line":"                                                           attachment_id)"},{"line_number":847,"context_line":"            except exception.VolumeAttachmentNotFound:"},{"line_number":848,"context_line":"                LOG.error(_LE(\"We couldn\u0027t find the volume attachment\""},{"line_number":849,"context_line":"                              \" for volume %(volume_id)s and\""},{"line_number":850,"context_line":"                              \" attachment id %(id)s\"),"},{"line_number":851,"context_line":"                          {\"volume_id\": volume_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"dac4157f_76c4a93f","line":848,"updated":"2015-04-20 04:11:23.000000000","message":"No resource.","commit_id":"012cca67526e01a9b5b9dd4cdd10d8fcb2505455"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"5ae5951b0526123b40464045362a03ecec72e4ef","unresolved":false,"context_lines":[{"line_number":845,"context_line":"                attachment \u003d self.db.volume_attachment_get(context,"},{"line_number":846,"context_line":"                                                           attachment_id)"},{"line_number":847,"context_line":"            except exception.VolumeAttachmentNotFound:"},{"line_number":848,"context_line":"                LOG.error(_LE(\"We couldn\u0027t find the volume attachment\""},{"line_number":849,"context_line":"                              \" for volume %(volume_id)s and\""},{"line_number":850,"context_line":"                              \" attachment id %(id)s\"),"},{"line_number":851,"context_line":"                          {\"volume_id\": volume_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"dac4157f_a1c79044","line":848,"updated":"2015-04-20 10:41:33.000000000","message":"resource\u003dvolume","commit_id":"012cca67526e01a9b5b9dd4cdd10d8fcb2505455"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"8b95c754d86c0bdbb419ab13186422d1a031880c","unresolved":false,"context_lines":[{"line_number":845,"context_line":"                attachment \u003d self.db.volume_attachment_get(context,"},{"line_number":846,"context_line":"                                                           attachment_id)"},{"line_number":847,"context_line":"            except exception.VolumeAttachmentNotFound:"},{"line_number":848,"context_line":"                LOG.error(_LE(\"We couldn\u0027t find the volume attachment\""},{"line_number":849,"context_line":"                              \" for volume %(volume_id)s and\""},{"line_number":850,"context_line":"                              \" attachment id %(id)s\"),"},{"line_number":851,"context_line":"                          {\"volume_id\": volume_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"dac4157f_169a0d15","line":848,"in_reply_to":"dac4157f_76c4a93f","updated":"2015-04-20 05:00:05.000000000","message":"I think volume_id is the resource here.","commit_id":"012cca67526e01a9b5b9dd4cdd10d8fcb2505455"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"16c045c098cf8f1252a1f1b63b7135b769f250b4","unresolved":false,"context_lines":[{"line_number":845,"context_line":"                attachment \u003d self.db.volume_attachment_get(context,"},{"line_number":846,"context_line":"                                                           attachment_id)"},{"line_number":847,"context_line":"            except exception.VolumeAttachmentNotFound:"},{"line_number":848,"context_line":"                LOG.error(_LE(\"We couldn\u0027t find the volume attachment\""},{"line_number":849,"context_line":"                              \" for volume %(volume_id)s and\""},{"line_number":850,"context_line":"                              \" attachment id %(id)s\"),"},{"line_number":851,"context_line":"                          {\"volume_id\": volume_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"dac4157f_55e98919","line":848,"in_reply_to":"dac4157f_a1c79044","updated":"2015-04-20 14:00:59.000000000","message":"Done","commit_id":"012cca67526e01a9b5b9dd4cdd10d8fcb2505455"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"5ae5951b0526123b40464045362a03ecec72e4ef","unresolved":false,"context_lines":[{"line_number":863,"context_line":"                msg \u003d _(\"Volume %(id)s is attached to more than one instance\""},{"line_number":864,"context_line":"                        \".  A valid attachment_id must be passed to detach\""},{"line_number":865,"context_line":"                        \" this volume\") % {\u0027id\u0027: volume_id}"},{"line_number":866,"context_line":"                LOG.error(msg)"},{"line_number":867,"context_line":"                raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":868,"context_line":"            elif len(attachments) \u003d\u003d 1:"},{"line_number":869,"context_line":"                attachment \u003d attachments[0]"}],"source_content_type":"text/x-python","patch_set":5,"id":"dac4157f_61aa9872","line":866,"updated":"2015-04-20 10:41:33.000000000","message":"+1","commit_id":"012cca67526e01a9b5b9dd4cdd10d8fcb2505455"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"e72da134459a06fb5e52cb84fe78f25a2b60f251","unresolved":false,"context_lines":[{"line_number":863,"context_line":"                msg \u003d _(\"Volume %(id)s is attached to more than one instance\""},{"line_number":864,"context_line":"                        \".  A valid attachment_id must be passed to detach\""},{"line_number":865,"context_line":"                        \" this volume\") % {\u0027id\u0027: volume_id}"},{"line_number":866,"context_line":"                LOG.error(msg)"},{"line_number":867,"context_line":"                raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":868,"context_line":"            elif len(attachments) \u003d\u003d 1:"},{"line_number":869,"context_line":"                attachment \u003d attachments[0]"}],"source_content_type":"text/x-python","patch_set":5,"id":"dac4157f_56aac571","line":866,"updated":"2015-04-20 04:11:23.000000000","message":"I saw you added resource to some LOG.error, but not to others, for example, this line.\nAre you also targeting to fix all the LOG.error? Or it depends?","commit_id":"012cca67526e01a9b5b9dd4cdd10d8fcb2505455"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"16c045c098cf8f1252a1f1b63b7135b769f250b4","unresolved":false,"context_lines":[{"line_number":863,"context_line":"                msg \u003d _(\"Volume %(id)s is attached to more than one instance\""},{"line_number":864,"context_line":"                        \".  A valid attachment_id must be passed to detach\""},{"line_number":865,"context_line":"                        \" this volume\") % {\u0027id\u0027: volume_id}"},{"line_number":866,"context_line":"                LOG.error(msg)"},{"line_number":867,"context_line":"                raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":868,"context_line":"            elif len(attachments) \u003d\u003d 1:"},{"line_number":869,"context_line":"                attachment \u003d attachments[0]"}],"source_content_type":"text/x-python","patch_set":5,"id":"dac4157f_fabaca6d","line":866,"in_reply_to":"dac4157f_61aa9872","updated":"2015-04-20 14:00:59.000000000","message":"I just missed this one :)\n\nReplication and Migration were another story, the logging is kinda crazy between which volume to log so I left those alone.","commit_id":"012cca67526e01a9b5b9dd4cdd10d8fcb2505455"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"5ae5951b0526123b40464045362a03ecec72e4ef","unresolved":false,"context_lines":[{"line_number":874,"context_line":"                LOG.error(msg, resource\u003dvolume)"},{"line_number":875,"context_line":"                raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":876,"context_line":""},{"line_number":877,"context_line":"        volume \u003d self.db.volume_get(context, volume_id)"},{"line_number":878,"context_line":"        self._notify_about_volume_usage(context, volume, \"detach.start\")"},{"line_number":879,"context_line":"        try:"},{"line_number":880,"context_line":"            # NOTE(flaper87): Verify the driver is enabled"}],"source_content_type":"text/x-python","patch_set":5,"id":"dac4157f_e19d885a","line":877,"updated":"2015-04-20 10:41:33.000000000","message":"Do you still need this line given that you\u0027ve added line 841?","commit_id":"012cca67526e01a9b5b9dd4cdd10d8fcb2505455"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"16c045c098cf8f1252a1f1b63b7135b769f250b4","unresolved":false,"context_lines":[{"line_number":874,"context_line":"                LOG.error(msg, resource\u003dvolume)"},{"line_number":875,"context_line":"                raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":876,"context_line":""},{"line_number":877,"context_line":"        volume \u003d self.db.volume_get(context, volume_id)"},{"line_number":878,"context_line":"        self._notify_about_volume_usage(context, volume, \"detach.start\")"},{"line_number":879,"context_line":"        try:"},{"line_number":880,"context_line":"            # NOTE(flaper87): Verify the driver is enabled"}],"source_content_type":"text/x-python","patch_set":5,"id":"dac4157f_15267168","line":877,"in_reply_to":"dac4157f_e19d885a","updated":"2015-04-20 14:00:59.000000000","message":"Done","commit_id":"012cca67526e01a9b5b9dd4cdd10d8fcb2505455"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"673336de27b9bb26dad623696a8c8ad5d0acf7f5","unresolved":false,"context_lines":[{"line_number":296,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":297,"context_line":"        LOG.info(_LI(\"Starting volume driver %(driver_name)s (%(version)s)\") %"},{"line_number":298,"context_line":"                 {\u0027driver_name\u0027: self.driver.__class__.__name__,"},{"line_number":299,"context_line":"                  \u0027version\u0027: self.driver.get_version()})"},{"line_number":300,"context_line":"        try:"},{"line_number":301,"context_line":"            self.driver.do_setup(ctxt)"},{"line_number":302,"context_line":"            self.driver.check_for_setup_error()"}],"source_content_type":"text/x-python","patch_set":8,"id":"dac4157f_5be2bc04","side":"PARENT","line":299,"updated":"2015-04-21 05:10:38.000000000","message":"Please don\u0027t remove this.   I rely upon this output for getting driver names and versions for customer escalations all the time.","commit_id":"c6ccf2fc346d7033a0147752b77c0a916f3413ea"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"7f7e61506a14223fa6d1cd9982e417a33a612bd0","unresolved":false,"context_lines":[{"line_number":296,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":297,"context_line":"        LOG.info(_LI(\"Starting volume driver %(driver_name)s (%(version)s)\") %"},{"line_number":298,"context_line":"                 {\u0027driver_name\u0027: self.driver.__class__.__name__,"},{"line_number":299,"context_line":"                  \u0027version\u0027: self.driver.get_version()})"},{"line_number":300,"context_line":"        try:"},{"line_number":301,"context_line":"            self.driver.do_setup(ctxt)"},{"line_number":302,"context_line":"            self.driver.check_for_setup_error()"}],"source_content_type":"text/x-python","patch_set":8,"id":"dac4157f_127ad4f1","side":"PARENT","line":299,"in_reply_to":"dac4157f_5be2bc04","updated":"2015-04-21 14:34:22.000000000","message":"Use the completion Log message at the end, that\u0027s what it\u0027s for.  As per logging guidelines, \u0027don\u0027t do entering/leaving\u0027.","commit_id":"c6ccf2fc346d7033a0147752b77c0a916f3413ea"},{"author":{"_account_id":16062,"name":"Joshua Huber","inactive":true},"change_message_id":"9aa72f58db2d2ec290e375b8ebeae28fc8c321b7","unresolved":false,"context_lines":[{"line_number":1460,"context_line":"                                self.driver.configuration.config_group)"},{"line_number":1461,"context_line":""},{"line_number":1462,"context_line":"            LOG.warning(_LW(\"Update driver status failed: %(config_group)s \""},{"line_number":1463,"context_line":"                            \"is uninitialize.\"),"},{"line_number":1464,"context_line":"                        {\u0027config_group\u0027: config_group},"},{"line_number":1465,"context_line":"                        resource\u003d{\u0027type\u0027: \u0027driver\u0027,"},{"line_number":1466,"context_line":"                                  \u0027id\u0027: self.driver.__class__.__name__})"}],"source_content_type":"text/x-python","patch_set":8,"id":"dac4157f_98216350","line":1463,"updated":"2015-04-21 15:08:18.000000000","message":"missing \"d\" in \"uninitialized\".","commit_id":"6c666ec226003d95b642421760770a3618b2d46b"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"149e563b4e6fef86d6d0e659d3ca468599dbc151","unresolved":false,"context_lines":[{"line_number":296,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":297,"context_line":"        LOG.info(_LI(\"Starting volume driver %(driver_name)s (%(version)s)\") %"},{"line_number":298,"context_line":"                 {\u0027driver_name\u0027: self.driver.__class__.__name__,"},{"line_number":299,"context_line":"                  \u0027version\u0027: self.driver.get_version()})"},{"line_number":300,"context_line":"        try:"},{"line_number":301,"context_line":"            self.driver.do_setup(ctxt)"},{"line_number":302,"context_line":"            self.driver.check_for_setup_error()"}],"source_content_type":"text/x-python","patch_set":9,"id":"bab921fb_019bf0ca","side":"PARENT","line":299,"updated":"2015-04-22 18:28:59.000000000","message":"Any reason why this is removed?  This seems to be very useful information.","commit_id":"c6ccf2fc346d7033a0147752b77c0a916f3413ea"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"fe725ffebff83859341e03fd4523c091c0ee1c17","unresolved":false,"context_lines":[{"line_number":296,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":297,"context_line":"        LOG.info(_LI(\"Starting volume driver %(driver_name)s (%(version)s)\") %"},{"line_number":298,"context_line":"                 {\u0027driver_name\u0027: self.driver.__class__.__name__,"},{"line_number":299,"context_line":"                  \u0027version\u0027: self.driver.get_version()})"},{"line_number":300,"context_line":"        try:"},{"line_number":301,"context_line":"            self.driver.do_setup(ctxt)"},{"line_number":302,"context_line":"            self.driver.check_for_setup_error()"}],"source_content_type":"text/x-python","patch_set":12,"id":"bab921fb_15ee838b","side":"PARENT","line":299,"updated":"2015-04-22 21:41:15.000000000","message":"Thanks for trying to accommodate 3PAR here john, but I still think having this log output here for all drivers is consistent. \nIt\u0027s a valuable way to ensure that no matter the cinder deployment, that the log shows what drivers and their versions are being started.\n\nI don\u0027t see this as log noise, but valuable information for admins.\nIt only happens once at startup.","commit_id":"cbcbc90cf64d91a33b7bcfb826c59d4b69697486"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"a52223a6f6dc7e6c7a0560dd043dea5f82ee46cf","unresolved":false,"context_lines":[{"line_number":296,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":297,"context_line":"        LOG.info(_LI(\"Starting volume driver %(driver_name)s (%(version)s)\") %"},{"line_number":298,"context_line":"                 {\u0027driver_name\u0027: self.driver.__class__.__name__,"},{"line_number":299,"context_line":"                  \u0027version\u0027: self.driver.get_version()})"},{"line_number":300,"context_line":"        try:"},{"line_number":301,"context_line":"            self.driver.do_setup(ctxt)"},{"line_number":302,"context_line":"            self.driver.check_for_setup_error()"}],"source_content_type":"text/x-python","patch_set":12,"id":"bab921fb_f82f86f4","side":"PARENT","line":299,"in_reply_to":"bab921fb_15ee838b","updated":"2015-04-22 22:00:41.000000000","message":"+1.\n\nI look for this message myself when troubleshooting, and, as Walt says, it only prints at startup, so really can\u0027t be considered spam.","commit_id":"cbcbc90cf64d91a33b7bcfb826c59d4b69697486"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"006495e15bfd0cce27549e430eb0d9aef5e7b516","unresolved":false,"context_lines":[{"line_number":1068,"context_line":"            LOG.error(err_msg, resource\u003dvolume)"},{"line_number":1069,"context_line":"            raise exception.VolumeBackendAPIException(data\u003derr_msg)"},{"line_number":1070,"context_line":""},{"line_number":1071,"context_line":"        model_update \u003d None"},{"line_number":1072,"context_line":"        try:"},{"line_number":1073,"context_line":"            model_update \u003d self.driver.create_export(context.elevated(),"},{"line_number":1074,"context_line":"                                                     volume)"}],"source_content_type":"text/x-python","patch_set":13,"id":"bab921fb_0ae77de5","line":1071,"updated":"2015-04-23 01:52:36.000000000","message":"is this still needed here now that its defined up on line 1060?","commit_id":"59ccedfb265bc4f195f15407d7397df137277968"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"0077755a9854e5f3453a686ef73a3ec7e82c2c35","unresolved":false,"context_lines":[{"line_number":1068,"context_line":"            LOG.error(err_msg, resource\u003dvolume)"},{"line_number":1069,"context_line":"            raise exception.VolumeBackendAPIException(data\u003derr_msg)"},{"line_number":1070,"context_line":""},{"line_number":1071,"context_line":"        model_update \u003d None"},{"line_number":1072,"context_line":"        try:"},{"line_number":1073,"context_line":"            model_update \u003d self.driver.create_export(context.elevated(),"},{"line_number":1074,"context_line":"                                                     volume)"}],"source_content_type":"text/x-python","patch_set":13,"id":"bab921fb_9003bab8","line":1071,"in_reply_to":"bab921fb_0ae77de5","updated":"2015-04-23 03:09:57.000000000","message":"Nope, thanks","commit_id":"59ccedfb265bc4f195f15407d7397df137277968"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4d390b97284a6a65e56a84d9afde7f784d0f9c7c","unresolved":false,"context_lines":[{"line_number":1863,"context_line":"                if model_update:"},{"line_number":1864,"context_line":"                    self.db.volume_update(ctxt, vol[\u0027id\u0027], model_update)"},{"line_number":1865,"context_line":"            except Exception:"},{"line_number":1866,"context_line":"                LOG.exception(_LE(\"Get replciation status for volume failed.\"),"},{"line_number":1867,"context_line":"                              resource\u003dvol)"},{"line_number":1868,"context_line":""},{"line_number":1869,"context_line":"    def create_consistencygroup(self, context, group_id):"}],"source_content_type":"text/x-python","patch_set":14,"id":"bab921fb_f3b440d2","line":1866,"updated":"2015-04-23 04:24:02.000000000","message":"Typo: replciation -\u003e replication\n\nPlease fix this if you need to upload another patch set.","commit_id":"57a82d837ee598c4e9e2d8015a2d9bc6bf68d8dc"}]}
