)]}'
{"cinder/api/v3/messages.py":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"389863414d5199edceeca4d338837ac4679f5cdf","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def _build_user_message(self, message):"},{"line_number":53,"context_line":"        # NOTE(tommylikehu): if the `action_id` is empty, we use \u0027event_id\u0027"},{"line_number":54,"context_line":"        # to translate the user message."},{"line_number":55,"context_line":"        if message[\u0027action_id\u0027] is None and message[\u0027event_id\u0027] is not None:"},{"line_number":56,"context_line":"            message[\u0027user_message\u0027] \u003d defined_messages.get_message_text("},{"line_number":57,"context_line":"                message[\u0027event_id\u0027])"}],"source_content_type":"text/x-python","patch_set":19,"id":"df140735_b2b79bf5","line":54,"updated":"2017-06-05 19:39:25.000000000","message":"probably need to account for message\u003dNone","commit_id":"ef15f3edbfab1c9ac12fc4ce20e45a86bae12098"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"2172aec55c575e1336269b3dd302fa9358883c68","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def _build_user_message(self, message):"},{"line_number":53,"context_line":"        # NOTE(tommylikehu): if the `action_id` is empty, we use \u0027event_id\u0027"},{"line_number":54,"context_line":"        # to translate the user message."},{"line_number":55,"context_line":"        if message[\u0027action_id\u0027] is None and message[\u0027event_id\u0027] is not None:"},{"line_number":56,"context_line":"            message[\u0027user_message\u0027] \u003d defined_messages.get_message_text("},{"line_number":57,"context_line":"                message[\u0027event_id\u0027])"}],"source_content_type":"text/x-python","patch_set":19,"id":"df140735_00e5bf37","line":54,"in_reply_to":"df140735_b2b79bf5","updated":"2017-06-06 08:57:58.000000000","message":"done","commit_id":"ef15f3edbfab1c9ac12fc4ce20e45a86bae12098"}],"cinder/db/sqlalchemy/migrate_repo/versions/100_message_action_detail_column.py":[{"author":{"_account_id":7582,"name":"Jan Provaznik","email":"jan.provaznik@gmail.com","username":"jprovazn"},"change_message_id":"2b76f50bbb1f9944ecd9f791d8da7517c7876100","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    meta \u003d MetaData(migrate_engine)"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"    messages \u003d Table(\u0027messages\u0027, meta, autoload\u003dTrue)"},{"line_number":20,"context_line":"    detail_id \u003d Column(\u0027detail_id\u0027, String(255), nullable\u003dTrue)"},{"line_number":21,"context_line":"    action_id \u003d Column(\u0027action_id\u0027, String(255), nullable\u003dTrue)"},{"line_number":22,"context_line":"    messages.create_column(detail_id)"},{"line_number":23,"context_line":"    messages.create_column(action_id)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5ff73747_d587600f","line":20,"updated":"2017-05-03 11:00:50.000000000","message":"Because IDs are represented by \u0027xxx\u0027 strings, it would be sufficient to use shorter strings (I switched to 10 in manila).","commit_id":"908997f086ae824bc77722d1931ee3df664dd7c8"}],"cinder/db/sqlalchemy/models.py":[{"author":{"_account_id":7582,"name":"Jan Provaznik","email":"jan.provaznik@gmail.com","username":"jprovazn"},"change_message_id":"681ef8eea40770a37acfe2e0dab7ceb7952f2e33","unresolved":false,"context_lines":[{"line_number":822,"context_line":"    # After this time the message may no longer exist"},{"line_number":823,"context_line":"    expires_at \u003d Column(DateTime, nullable\u003dTrue)"},{"line_number":824,"context_line":"    # Message detail"},{"line_number":825,"context_line":"    detail \u003d Column(String(255), nullable\u003dTrue)"},{"line_number":826,"context_line":""},{"line_number":827,"context_line":""},{"line_number":828,"context_line":"class ImageVolumeCacheEntry(BASE, models.ModelBase):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a1ced50_81a16d96","line":825,"updated":"2017-03-23 08:04:34.000000000","message":"A migration will be needed for this DB change.","commit_id":"17d290b6094e1d6ff0b7ff52f2b93b8d3bd56408"}],"cinder/message/api.py":[{"author":{"_account_id":7582,"name":"Jan Provaznik","email":"jan.provaznik@gmail.com","username":"jprovazn"},"change_message_id":"681ef8eea40770a37acfe2e0dab7ceb7952f2e33","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                          \u0027expires_at\u0027: expires_at}"},{"line_number":54,"context_line":"        if isinstance(detail, str):"},{"line_number":55,"context_line":"            message_record[\u0027detail\u0027] \u003d detail"},{"line_number":56,"context_line":"        if isinstance(detail, exception.CinderException):"},{"line_number":57,"context_line":"            message_record[\u0027detail\u0027] \u003d detail.get_user_message()"},{"line_number":58,"context_line":"        try:"},{"line_number":59,"context_line":"            self.db.message_create(context, message_record)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a1ced50_01c01d4f","line":56,"updated":"2017-03-23 08:04:34.000000000","message":"s/if/elif/","commit_id":"17d290b6094e1d6ff0b7ff52f2b93b8d3bd56408"},{"author":{"_account_id":7582,"name":"Jan Provaznik","email":"jan.provaznik@gmail.com","username":"jprovazn"},"change_message_id":"f74a9f13ac90a381ab18416ed71322dace4edc33","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                          \u0027action\u0027: action,"},{"line_number":52,"context_line":"                          \u0027message_level\u0027: level,"},{"line_number":53,"context_line":"                          \u0027expires_at\u0027: expires_at}"},{"line_number":54,"context_line":"        if isinstance(detail, str):"},{"line_number":55,"context_line":"            message_record[\u0027detail\u0027] \u003d detail"},{"line_number":56,"context_line":"        elif isinstance(detail, exception.CinderException):"},{"line_number":57,"context_line":"            message_record[\u0027detail\u0027] \u003d detail.get_user_message()"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfeb2761_e4463e50","line":54,"range":{"start_line":54,"start_character":30,"end_line":54,"end_character":33},"updated":"2017-03-31 08:20:55.000000000","message":"six.string_types would be better to assure compatibility with python versions and translated messages.","commit_id":"a31dd0740accd0f46d06d68b391e26803c277cfa"}],"cinder/message/message_field.py":[{"author":{"_account_id":7582,"name":"Jan Provaznik","email":"jan.provaznik@gmail.com","username":"jprovazn"},"change_message_id":"8d582535f466efec909a9004c355e213cd984596","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class Action(fields.Enum):"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    SCHEDULE_ALLOCATE_VOLUME \u003d (\u0027001\u0027, _(\u0027schedule allocate volume\u0027))"},{"line_number":35,"context_line":"    ATTACH_VOLUME \u003d (\u0027002\u0027, _(\u0027attach volume\u0027))"},{"line_number":36,"context_line":"    COPY_VOLUME_TO_IMAGE \u003d (\u0027003\u0027, _(\u0027copy volume to image\u0027))"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"5ff73747_d85d10ea","line":34,"updated":"2017-04-26 11:07:28.000000000","message":"It would be better to use dict instead of constants to avoid keeping duplicit listing, .e.g:\n\nActions \u003d {\n  SCHEDULE_ALLOCATE_VOLUME: xxx\n}\n\nI would also lean toward using the constant instead of keeping additional ID (IOW I would keep \"SCHEDULE_ALLOCATE_VOLUME\" in action_id instead of \"001\". I don\u0027t see much benefit in this translation (except it\u0027s little bit shorter), \"SCHEDULE_ALLOCATE_VOLUME\" would be also more descriptive.\n\n\nAlso in manila event_id won\u0027t be part of messages model (argument was that event_id is redundant information included in action_id, detail_id and resource_id) so simpler representation can be used there.","commit_id":"908997f086ae824bc77722d1931ee3df664dd7c8"},{"author":{"_account_id":7582,"name":"Jan Provaznik","email":"jan.provaznik@gmail.com","username":"jprovazn"},"change_message_id":"fc623a46500111e58ef78ae948a627c2163c84e5","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class Action(fields.Enum):"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    SCHEDULE_ALLOCATE_VOLUME \u003d (\u0027001\u0027, _(\u0027schedule allocate volume\u0027))"},{"line_number":35,"context_line":"    ATTACH_VOLUME \u003d (\u0027002\u0027, _(\u0027attach volume\u0027))"},{"line_number":36,"context_line":"    COPY_VOLUME_TO_IMAGE \u003d (\u0027003\u0027, _(\u0027copy volume to image\u0027))"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"5ff73747_3b850e5b","line":34,"in_reply_to":"5ff73747_d85d10ea","updated":"2017-04-26 11:24:40.000000000","message":"Ignore this comment ^ (too rushed) :)","commit_id":"908997f086ae824bc77722d1931ee3df664dd7c8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5b77cff106a38f23010d7efbd0a14371018cf205","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"\"\"\"Message Resource, Action, Detail and user visible message."},{"line_number":14,"context_line":"Use Resource, Action and Detail\u0027s combination to indicate the Event"},{"line_number":15,"context_line":"in the format of:"},{"line_number":16,"context_line":"    EVENT: VOLUME_RESOURCE_ACTION_DETAIL"},{"line_number":17,"context_line":"Also, use exception-to-detail mapping to decrease the workload of"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f044301_5bf91cc6","line":14,"updated":"2017-05-05 19:44:28.000000000","message":"Add a blank line after the docstring summary line.","commit_id":"35312481292f869052bf65b88541a9e9334c4dce"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5b77cff106a38f23010d7efbd0a14371018cf205","unresolved":false,"context_lines":[{"line_number":16,"context_line":"    EVENT: VOLUME_RESOURCE_ACTION_DETAIL"},{"line_number":17,"context_line":"Also, use exception-to-detail mapping to decrease the workload of"},{"line_number":18,"context_line":"classifying event in cinder\u0027s task code."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"\"\"\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from oslo_versionedobjects import fields"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f044301_3bf410cf","line":19,"updated":"2017-05-05 19:44:28.000000000","message":"And remove this extra line.","commit_id":"35312481292f869052bf65b88541a9e9334c4dce"},{"author":{"_account_id":7582,"name":"Jan Provaznik","email":"jan.provaznik@gmail.com","username":"jprovazn"},"change_message_id":"46bc4b24dd7cdb81e0004d4ac7b971a170c6f933","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            if exception.__class__.__name__ in value:"},{"line_number":95,"context_line":"                return key[0]"},{"line_number":96,"context_line":"    if (detail in Detail.ALL and"},{"line_number":97,"context_line":"            detail is not Detail.EXCEPTION_DETAIL_MAPPINGS):"},{"line_number":98,"context_line":"        return detail[0]"},{"line_number":99,"context_line":"    return Detail.UNKNOWN_ERROR[0]"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f044301_f57afaee","line":97,"range":{"start_line":97,"start_character":12,"end_line":97,"end_character":59},"updated":"2017-05-10 06:48:40.000000000","message":"One more minor nit I cam across when updating manila patch:\nI think this check can be removed, just checking that detail is in Detail.ALL should be sufficient.","commit_id":"69139579afdb659a13a375b48bbf035cdc1a044c"}],"cinder/tests/unit/message/test_message_field.py":[{"author":{"_account_id":25720,"name":"Ngo Quoc Cuong","email":"cuongngo.ict@gmail.com","username":"cuongnq"},"change_message_id":"2243101d481df929ada051fecf52f1b3ade1b309","unresolved":false,"context_lines":[{"line_number":9,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":"import ddt"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"from oslo_config import cfg"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"3f044301_a131ff0d","line":12,"updated":"2017-05-08 06:59:48.000000000","message":"Should it have a blank line here?","commit_id":"364b0373e705781eefe24c50ea3b1416e50d5f8f"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"681f0093e0ffa6f4fdba0f43598c18e6657114cf","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"@ddt.ddt"},{"line_number":25,"context_line":"class MessageFieldTest(test.TestCase):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @ddt.data({\u0027id\u0027: \u0027001\u0027, \u0027content\u0027: \u0027schedule allocate volume\u0027},"},{"line_number":28,"context_line":"              {\u0027id\u0027: \u0027002\u0027, \u0027content\u0027: \u0027attach volume\u0027},"}],"source_content_type":"text/x-python","patch_set":22,"id":"7f231b9d_ed708242","line":25,"updated":"2017-06-19 08:16:21.000000000","message":"Thank for these tests","commit_id":"848ff3ad86d03368ed3d1ce361bc55f5b10d3bd8"}],"cinder/tests/unit/utils.py":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"389863414d5199edceeca4d338837ac4679f5cdf","unresolved":false,"context_lines":[{"line_number":347,"context_line":"                      \u0027request_id\u0027: request_id,"},{"line_number":348,"context_line":"                      \u0027resource_type\u0027: resource_type,"},{"line_number":349,"context_line":"                      \u0027resource_uuid\u0027: resource_uuid,"},{"line_number":350,"context_line":"                      \u0027action_id\u0027: action[0],"},{"line_number":351,"context_line":"                      \u0027event_id\u0027: \"VOLUME_VOLUME_%s_002\" % action[0],"},{"line_number":352,"context_line":"                      \u0027message_level\u0027: message_level,"},{"line_number":353,"context_line":"                      \u0027expires_at\u0027: expires_at}"}],"source_content_type":"text/x-python","patch_set":19,"id":"df140735_d2db2f4c","line":350,"updated":"2017-06-05 19:39:25.000000000","message":"if action is None, this will puke.","commit_id":"ef15f3edbfab1c9ac12fc4ce20e45a86bae12098"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"2172aec55c575e1336269b3dd302fa9358883c68","unresolved":false,"context_lines":[{"line_number":347,"context_line":"                      \u0027request_id\u0027: request_id,"},{"line_number":348,"context_line":"                      \u0027resource_type\u0027: resource_type,"},{"line_number":349,"context_line":"                      \u0027resource_uuid\u0027: resource_uuid,"},{"line_number":350,"context_line":"                      \u0027action_id\u0027: action[0],"},{"line_number":351,"context_line":"                      \u0027event_id\u0027: \"VOLUME_VOLUME_%s_002\" % action[0],"},{"line_number":352,"context_line":"                      \u0027message_level\u0027: message_level,"},{"line_number":353,"context_line":"                      \u0027expires_at\u0027: expires_at}"}],"source_content_type":"text/x-python","patch_set":19,"id":"df140735_60291b35","line":350,"in_reply_to":"df140735_d2db2f4c","updated":"2017-06-06 08:57:58.000000000","message":"Done","commit_id":"ef15f3edbfab1c9ac12fc4ce20e45a86bae12098"}],"cinder/volume/manager.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"afd538ce13cb1ade64712d821478ead2dacb8317","unresolved":false,"context_lines":[{"line_number":3951,"context_line":""},{"line_number":3952,"context_line":"        if volume_metadata.get(\u0027readonly\u0027) \u003d\u003d \u0027True\u0027 and mode !\u003d \u0027ro\u0027:"},{"line_number":3953,"context_line":"            self.db.volume_update(context, vref.id,"},{"line_number":3954,"context_line":"                                  {\u0027status\u0027: \u0027error_attaching\u0027})"},{"line_number":3955,"context_line":"            raise exception.InvalidVolumeAttachMode(mode\u003dmode,"},{"line_number":3956,"context_line":"                                                    volume_id\u003dvref.id)"},{"line_number":3957,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":14,"id":"5ff73747_cd31b95c","line":3954,"updated":"2017-04-26 20:20:34.000000000","message":"I think we still need a message generated here?","commit_id":"908997f086ae824bc77722d1931ee3df664dd7c8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"4a93ec518fb95df19f1cbff50d31ea9536aba0b1","unresolved":false,"context_lines":[{"line_number":1363,"context_line":"            self.message_api.create("},{"line_number":1364,"context_line":"                context,"},{"line_number":1365,"context_line":"                message_field.Action.COPY_VOLUME_TO_IMAGE,"},{"line_number":1366,"context_line":"                context.project_id,"},{"line_number":1367,"context_line":"                resource_type\u003dmessage_field.Resource.VOLUME,"},{"line_number":1368,"context_line":"                resource_uuid\u003dvolume_id,"},{"line_number":1369,"context_line":"                exception\u003derror,"}],"source_content_type":"text/x-python","patch_set":18,"id":"ff0f0b1f_8d203f4a","line":1366,"updated":"2017-05-22 22:47:55.000000000","message":"can\u0027t we extract the project_id from the context already passed in?  We shouldn\u0027t need to explicitly pass this in.","commit_id":"3644368dc532914ba394b07b089b60d7a7572981"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"389863414d5199edceeca4d338837ac4679f5cdf","unresolved":false,"context_lines":[{"line_number":3935,"context_line":"                                      connector.get(\u0027mountpoint\u0027, \u0027na\u0027))"},{"line_number":3936,"context_line":"        except Exception as err:"},{"line_number":3937,"context_line":"            self.message_api.create("},{"line_number":3938,"context_line":"                context, message_field.Action.ATTACH_VOLUME,"},{"line_number":3939,"context_line":"                resource_uuid\u003dvref.id,"},{"line_number":3940,"context_line":"                exception\u003derr,"},{"line_number":3941,"context_line":"                detail\u003dmessage_field.Detail.FAILED_TO_ATTACH_VOLUME)"}],"source_content_type":"text/x-python","patch_set":19,"id":"df140735_1231a7a3","line":3938,"updated":"2017-06-05 19:39:25.000000000","message":"I believe this should be for update attachment, not attach volume.","commit_id":"ef15f3edbfab1c9ac12fc4ce20e45a86bae12098"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"2172aec55c575e1336269b3dd302fa9358883c68","unresolved":false,"context_lines":[{"line_number":3935,"context_line":"                                      connector.get(\u0027mountpoint\u0027, \u0027na\u0027))"},{"line_number":3936,"context_line":"        except Exception as err:"},{"line_number":3937,"context_line":"            self.message_api.create("},{"line_number":3938,"context_line":"                context, message_field.Action.ATTACH_VOLUME,"},{"line_number":3939,"context_line":"                resource_uuid\u003dvref.id,"},{"line_number":3940,"context_line":"                exception\u003derr,"},{"line_number":3941,"context_line":"                detail\u003dmessage_field.Detail.FAILED_TO_ATTACH_VOLUME)"}],"source_content_type":"text/x-python","patch_set":19,"id":"df140735_a0bdf3b7","line":3938,"in_reply_to":"df140735_1231a7a3","updated":"2017-06-06 08:57:58.000000000","message":"Oh, silly one, thanks","commit_id":"ef15f3edbfab1c9ac12fc4ce20e45a86bae12098"}],"releasenotes/notes/explicit-user-message-45rtujv989uj8834.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5b77cff106a38f23010d7efbd0a14371018cf205","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Use \u0027action\u0027, \u0027resource\u0027, \u0027detail\u0027 to replace \u0027event\u0027 in user message."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"3f044301_bb0820d9","line":3,"updated":"2017-05-05 19:44:28.000000000","message":"I think this will be confusing. The main consumers of the release notes are deployers and consumers of the cloud, so this is an internal detail without much context that I think most will not understand.\n\nI think the release note should either be removed, or it needs a more verbose description of what the change is and how it affects users of the OpenStack cloud.","commit_id":"35312481292f869052bf65b88541a9e9334c4dce"}]}
