)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"1aa13ecc2b18990479f0babf622381e32925bebb","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add enough notification for QoS"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In order to meet the needs of users, The following interfaces are"},{"line_number":10,"context_line":"modified: create, update, delete, delete_keys,"},{"line_number":11,"context_line":"associations (List all associations of given QoS specs.),"},{"line_number":12,"context_line":"associate (Associate a QoS specs with a volume type.),"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"df87a7cf_9beca32a","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":35},"updated":"2017-12-13 00:53:05.000000000","message":"Better to explain what information been added in notification exactly: \u0027created_at\u0027 and \u0027updated_at\u0027 .","commit_id":"cefe3754214e914310acfe61ebf28638c1139ee0"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ab00534b6f85c5d943b0c0a18e11bf79f36344ab","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add enough notification for QoS"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In order to meet the needs of users, The following interfaces are"},{"line_number":10,"context_line":"modified: create, update, delete, delete_keys,"},{"line_number":11,"context_line":"associations (List all associations of given QoS specs.),"},{"line_number":12,"context_line":"associate (Associate a QoS specs with a volume type.),"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"df87a7cf_562592aa","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":35},"in_reply_to":"df87a7cf_9beca32a","updated":"2017-12-14 04:33:43.000000000","message":"You are right, but this should not be the reason for -1.","commit_id":"cefe3754214e914310acfe61ebf28638c1139ee0"}],"cinder/api/contrib/qos_specs_manage.py":[{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"7b1b9ecbabfc4d2d9a1dd1f8bc50de780919e9a6","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            spec \u003d qos_specs.create(context, name, specs)"},{"line_number":93,"context_line":"            notifier_info \u003d dict(name\u003dname,"},{"line_number":94,"context_line":"                                 created_at\u003dspec.created_at,"},{"line_number":95,"context_line":"                                 updated_at\u003dspec.updated_at,"},{"line_number":96,"context_line":"                                 specs\u003dspecs)"},{"line_number":97,"context_line":"            rpc.get_notifier(\u0027QoSSpecs\u0027).info(context,"},{"line_number":98,"context_line":"                                              \u0027qos_specs.create\u0027,"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_932c8c9a","line":95,"range":{"start_line":95,"start_character":32,"end_line":95,"end_character":60},"updated":"2017-12-28 08:10:38.000000000","message":"Don\u0027t need to add \u0027updated_at\u0027 attribute here as it should always be empty.","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ba33601f2f08c55d604c9b51539339794400ef3d","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            spec \u003d qos_specs.create(context, name, specs)"},{"line_number":93,"context_line":"            notifier_info \u003d dict(name\u003dname,"},{"line_number":94,"context_line":"                                 created_at\u003dspec.created_at,"},{"line_number":95,"context_line":"                                 updated_at\u003dspec.updated_at,"},{"line_number":96,"context_line":"                                 specs\u003dspecs)"},{"line_number":97,"context_line":"            rpc.get_notifier(\u0027QoSSpecs\u0027).info(context,"},{"line_number":98,"context_line":"                                              \u0027qos_specs.create\u0027,"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_f3a15897","line":95,"range":{"start_line":95,"start_character":32,"end_line":95,"end_character":60},"in_reply_to":"9f91af0f_932c8c9a","updated":"2017-12-28 10:17:04.000000000","message":"Year, it should be removed here, thank you.","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"7b1b9ecbabfc4d2d9a1dd1f8bc50de780919e9a6","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        self.assert_valid_body(body, \u0027qos_specs\u0027)"},{"line_number":126,"context_line":"        specs \u003d body[\u0027qos_specs\u0027]"},{"line_number":127,"context_line":"        try:"},{"line_number":128,"context_line":"            # Not found exception will be handled at the wsgi level"},{"line_number":129,"context_line":"            spec \u003d qos_specs.get_qos_specs(context, id)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"            qos_specs.update(context, id, specs)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_7336a8b7","line":128,"range":{"start_line":128,"start_character":11,"end_line":128,"end_character":67},"updated":"2017-12-28 08:10:38.000000000","message":"Remove this.","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ba33601f2f08c55d604c9b51539339794400ef3d","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        self.assert_valid_body(body, \u0027qos_specs\u0027)"},{"line_number":126,"context_line":"        specs \u003d body[\u0027qos_specs\u0027]"},{"line_number":127,"context_line":"        try:"},{"line_number":128,"context_line":"            # Not found exception will be handled at the wsgi level"},{"line_number":129,"context_line":"            spec \u003d qos_specs.get_qos_specs(context, id)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"            qos_specs.update(context, id, specs)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_79fe8706","line":128,"range":{"start_line":128,"start_character":11,"end_line":128,"end_character":67},"in_reply_to":"9f91af0f_7336a8b7","updated":"2017-12-28 10:17:04.000000000","message":"Done","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"7b1b9ecbabfc4d2d9a1dd1f8bc50de780919e9a6","unresolved":false,"context_lines":[{"line_number":131,"context_line":"            qos_specs.update(context, id, specs)"},{"line_number":132,"context_line":"            notifier_info \u003d dict(id\u003did,"},{"line_number":133,"context_line":"                                 created_at\u003dspec.created_at,"},{"line_number":134,"context_line":"                                 updated_at\u003dspec.updated_at,"},{"line_number":135,"context_line":"                                 specs\u003dspecs)"},{"line_number":136,"context_line":"            rpc.get_notifier(\u0027QoSSpecs\u0027).info(context,"},{"line_number":137,"context_line":"                                              \u0027qos_specs.update\u0027,"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_335900fe","line":134,"range":{"start_line":134,"start_character":32,"end_line":134,"end_character":60},"updated":"2017-12-28 08:10:38.000000000","message":"You will not get a correct update time if you just insert an new qos spec into database because the corresponding child update_at column is empy. I prefer to remove this or use this below：\n```\nupdate_at \u003d timeutils.utcnow()\n```","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ba33601f2f08c55d604c9b51539339794400ef3d","unresolved":false,"context_lines":[{"line_number":131,"context_line":"            qos_specs.update(context, id, specs)"},{"line_number":132,"context_line":"            notifier_info \u003d dict(id\u003did,"},{"line_number":133,"context_line":"                                 created_at\u003dspec.created_at,"},{"line_number":134,"context_line":"                                 updated_at\u003dspec.updated_at,"},{"line_number":135,"context_line":"                                 specs\u003dspecs)"},{"line_number":136,"context_line":"            rpc.get_notifier(\u0027QoSSpecs\u0027).info(context,"},{"line_number":137,"context_line":"                                              \u0027qos_specs.update\u0027,"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_1324fc0c","line":134,"range":{"start_line":134,"start_character":32,"end_line":134,"end_character":60},"in_reply_to":"9f91af0f_335900fe","updated":"2017-12-28 10:17:04.000000000","message":"Thank you very much, create at the generated code has been processed, update time is neglected, I will deal with it","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"7b1b9ecbabfc4d2d9a1dd1f8bc50de780919e9a6","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        LOG.debug(\"Delete qos_spec: %(id)s, force: %(force)s\","},{"line_number":174,"context_line":"                  {\u0027id\u0027: id, \u0027force\u0027: force})"},{"line_number":175,"context_line":"        try:"},{"line_number":176,"context_line":"            # Not found exception will be handled at the wsgi level"},{"line_number":177,"context_line":"            spec \u003d qos_specs.get_qos_specs(context, id)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"            qos_specs.delete(context, id, force)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_535e04e7","line":176,"range":{"start_line":176,"start_character":11,"end_line":176,"end_character":67},"updated":"2017-12-28 08:10:38.000000000","message":"Remove this","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ba33601f2f08c55d604c9b51539339794400ef3d","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        LOG.debug(\"Delete qos_spec: %(id)s, force: %(force)s\","},{"line_number":174,"context_line":"                  {\u0027id\u0027: id, \u0027force\u0027: force})"},{"line_number":175,"context_line":"        try:"},{"line_number":176,"context_line":"            # Not found exception will be handled at the wsgi level"},{"line_number":177,"context_line":"            spec \u003d qos_specs.get_qos_specs(context, id)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"            qos_specs.delete(context, id, force)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_590dc335","line":176,"range":{"start_line":176,"start_character":11,"end_line":176,"end_character":67},"in_reply_to":"9f91af0f_535e04e7","updated":"2017-12-28 10:17:04.000000000","message":"Done","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"7b1b9ecbabfc4d2d9a1dd1f8bc50de780919e9a6","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"            qos_specs.delete(context, id, force)"},{"line_number":180,"context_line":"            notifier_info \u003d dict(id\u003did,"},{"line_number":181,"context_line":"                                 created_at\u003dspec.created_at,"},{"line_number":182,"context_line":"                                 updated_at\u003dspec.updated_at)"},{"line_number":183,"context_line":"            rpc.get_notifier(\u0027QoSSpecs\u0027).info(context,"},{"line_number":184,"context_line":"                                              \u0027qos_specs.delete\u0027,"},{"line_number":185,"context_line":"                                              notifier_info)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_133ddcba","line":182,"range":{"start_line":181,"start_character":25,"end_line":182,"end_character":60},"updated":"2017-12-28 08:10:38.000000000","message":"You have to refresh the spec object in order to get the correct time. Also should we add \u0027deleted_at\u0027 here?","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ba33601f2f08c55d604c9b51539339794400ef3d","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"            qos_specs.delete(context, id, force)"},{"line_number":180,"context_line":"            notifier_info \u003d dict(id\u003did,"},{"line_number":181,"context_line":"                                 created_at\u003dspec.created_at,"},{"line_number":182,"context_line":"                                 updated_at\u003dspec.updated_at)"},{"line_number":183,"context_line":"            rpc.get_notifier(\u0027QoSSpecs\u0027).info(context,"},{"line_number":184,"context_line":"                                              \u0027qos_specs.delete\u0027,"},{"line_number":185,"context_line":"                                              notifier_info)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_6ed23f37","line":182,"range":{"start_line":181,"start_character":25,"end_line":182,"end_character":60},"in_reply_to":"9f91af0f_133ddcba","updated":"2017-12-28 10:17:04.000000000","message":"I think \"updated_at\" is meaningless here,I will remove it. In addition，add \"deleted_at\" here.","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"7b1b9ecbabfc4d2d9a1dd1f8bc50de780919e9a6","unresolved":false,"context_lines":[{"line_number":217,"context_line":"                  {\u0027id\u0027: id, \u0027keys\u0027: keys})"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        try:"},{"line_number":220,"context_line":"            # Not found exception will be handled at the wsgi level"},{"line_number":221,"context_line":"            spec \u003d qos_specs.get_qos_specs(context, id)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"            qos_specs.delete_keys(context, id, keys)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_f372b87c","line":220,"range":{"start_line":220,"start_character":10,"end_line":220,"end_character":67},"updated":"2017-12-28 08:10:38.000000000","message":"Remove this.","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ba33601f2f08c55d604c9b51539339794400ef3d","unresolved":false,"context_lines":[{"line_number":217,"context_line":"                  {\u0027id\u0027: id, \u0027keys\u0027: keys})"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        try:"},{"line_number":220,"context_line":"            # Not found exception will be handled at the wsgi level"},{"line_number":221,"context_line":"            spec \u003d qos_specs.get_qos_specs(context, id)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"            qos_specs.delete_keys(context, id, keys)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_2e3af7e6","line":220,"range":{"start_line":220,"start_character":10,"end_line":220,"end_character":67},"in_reply_to":"9f91af0f_f372b87c","updated":"2017-12-28 10:17:04.000000000","message":"Done","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"7b1b9ecbabfc4d2d9a1dd1f8bc50de780919e9a6","unresolved":false,"context_lines":[{"line_number":221,"context_line":"            spec \u003d qos_specs.get_qos_specs(context, id)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"            qos_specs.delete_keys(context, id, keys)"},{"line_number":224,"context_line":"            notifier_info \u003d dict(id\u003did,"},{"line_number":225,"context_line":"                                 created_at\u003dspec.created_at,"},{"line_number":226,"context_line":"                                 updated_at\u003dspec.updated_at)"},{"line_number":227,"context_line":"            rpc.get_notifier(\u0027QoSSpecs\u0027).info(context, \u0027qos_specs.delete_keys\u0027,"},{"line_number":228,"context_line":"                                              notifier_info)"},{"line_number":229,"context_line":"        except exception.NotFound as err:"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_b36c309d","line":226,"range":{"start_line":224,"start_character":12,"end_line":226,"end_character":60},"updated":"2017-12-28 08:10:38.000000000","message":"You have to refresh the object in order to get the correct time.","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ba33601f2f08c55d604c9b51539339794400ef3d","unresolved":false,"context_lines":[{"line_number":221,"context_line":"            spec \u003d qos_specs.get_qos_specs(context, id)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"            qos_specs.delete_keys(context, id, keys)"},{"line_number":224,"context_line":"            notifier_info \u003d dict(id\u003did,"},{"line_number":225,"context_line":"                                 created_at\u003dspec.created_at,"},{"line_number":226,"context_line":"                                 updated_at\u003dspec.updated_at)"},{"line_number":227,"context_line":"            rpc.get_notifier(\u0027QoSSpecs\u0027).info(context, \u0027qos_specs.delete_keys\u0027,"},{"line_number":228,"context_line":"                                              notifier_info)"},{"line_number":229,"context_line":"        except exception.NotFound as err:"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_ee0c0f44","line":226,"range":{"start_line":224,"start_character":12,"end_line":226,"end_character":60},"in_reply_to":"9f91af0f_b36c309d","updated":"2017-12-28 10:17:04.000000000","message":"After it \"delete_keys\", I get qos spec information, so the time it gets is correct.","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"7b1b9ecbabfc4d2d9a1dd1f8bc50de780919e9a6","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        LOG.debug(\"Get associations for qos_spec id: %s\", id)"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        try:"},{"line_number":247,"context_line":"            # Not found exception will be handled at the wsgi level"},{"line_number":248,"context_line":"            spec \u003d qos_specs.get_qos_specs(context, id)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"            associates \u003d qos_specs.get_associations(context, id)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_13663cef","line":247,"range":{"start_line":247,"start_character":12,"end_line":247,"end_character":67},"updated":"2017-12-28 08:10:38.000000000","message":"The comment looks unreasonable as you will catch the exception below.","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ba33601f2f08c55d604c9b51539339794400ef3d","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        LOG.debug(\"Get associations for qos_spec id: %s\", id)"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        try:"},{"line_number":247,"context_line":"            # Not found exception will be handled at the wsgi level"},{"line_number":248,"context_line":"            spec \u003d qos_specs.get_qos_specs(context, id)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"            associates \u003d qos_specs.get_associations(context, id)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_33e6e0ea","line":247,"range":{"start_line":247,"start_character":12,"end_line":247,"end_character":67},"in_reply_to":"9f91af0f_13663cef","updated":"2017-12-28 10:17:04.000000000","message":"Year, it should be removed here, thank you.","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"7b1b9ecbabfc4d2d9a1dd1f8bc50de780919e9a6","unresolved":false,"context_lines":[{"line_number":248,"context_line":"            spec \u003d qos_specs.get_qos_specs(context, id)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"            associates \u003d qos_specs.get_associations(context, id)"},{"line_number":251,"context_line":"            notifier_info \u003d dict(id\u003did,"},{"line_number":252,"context_line":"                                 created_at\u003dspec.created_at,"},{"line_number":253,"context_line":"                                 updated_at\u003dspec.updated_at)"},{"line_number":254,"context_line":"            rpc.get_notifier(\u0027QoSSpecs\u0027).info(context,"},{"line_number":255,"context_line":"                                              \u0027qos_specs.associations\u0027,"},{"line_number":256,"context_line":"                                              notifier_info)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_5313640e","line":253,"range":{"start_line":251,"start_character":10,"end_line":253,"end_character":60},"updated":"2017-12-28 08:10:38.000000000","message":"I guess we don\u0027t need \u0027update_at\u0027 here","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ba33601f2f08c55d604c9b51539339794400ef3d","unresolved":false,"context_lines":[{"line_number":248,"context_line":"            spec \u003d qos_specs.get_qos_specs(context, id)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"            associates \u003d qos_specs.get_associations(context, id)"},{"line_number":251,"context_line":"            notifier_info \u003d dict(id\u003did,"},{"line_number":252,"context_line":"                                 created_at\u003dspec.created_at,"},{"line_number":253,"context_line":"                                 updated_at\u003dspec.updated_at)"},{"line_number":254,"context_line":"            rpc.get_notifier(\u0027QoSSpecs\u0027).info(context,"},{"line_number":255,"context_line":"                                              \u0027qos_specs.associations\u0027,"},{"line_number":256,"context_line":"                                              notifier_info)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_ce734b4d","line":253,"range":{"start_line":251,"start_character":10,"end_line":253,"end_character":60},"in_reply_to":"9f91af0f_5313640e","updated":"2017-12-28 10:17:04.000000000","message":"Done","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"7b1b9ecbabfc4d2d9a1dd1f8bc50de780919e9a6","unresolved":false,"context_lines":[{"line_number":289,"context_line":"                  {\u0027id\u0027: id, \u0027type_id\u0027: type_id})"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        try:"},{"line_number":292,"context_line":"            # Not found exception will be handled at the wsgi level"},{"line_number":293,"context_line":"            spec \u003d qos_specs.get_qos_specs(context, id)"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"            qos_specs.associate_qos_with_type(context, id, type_id)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_d35f740c","line":292,"range":{"start_line":292,"start_character":12,"end_line":292,"end_character":67},"updated":"2017-12-28 08:10:38.000000000","message":"ditto","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ba33601f2f08c55d604c9b51539339794400ef3d","unresolved":false,"context_lines":[{"line_number":289,"context_line":"                  {\u0027id\u0027: id, \u0027type_id\u0027: type_id})"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        try:"},{"line_number":292,"context_line":"            # Not found exception will be handled at the wsgi level"},{"line_number":293,"context_line":"            spec \u003d qos_specs.get_qos_specs(context, id)"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"            qos_specs.associate_qos_with_type(context, id, type_id)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_8e50e334","line":292,"range":{"start_line":292,"start_character":12,"end_line":292,"end_character":67},"in_reply_to":"9f91af0f_d35f740c","updated":"2017-12-28 10:17:04.000000000","message":"Done","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"7b1b9ecbabfc4d2d9a1dd1f8bc50de780919e9a6","unresolved":false,"context_lines":[{"line_number":295,"context_line":"            qos_specs.associate_qos_with_type(context, id, type_id)"},{"line_number":296,"context_line":"            notifier_info \u003d dict(id\u003did, type_id\u003dtype_id,"},{"line_number":297,"context_line":"                                 created_at\u003dspec.created_at,"},{"line_number":298,"context_line":"                                 updated_at\u003dspec.updated_at)"},{"line_number":299,"context_line":"            rpc.get_notifier(\u0027QoSSpecs\u0027).info(context,"},{"line_number":300,"context_line":"                                              \u0027qos_specs.associate\u0027,"},{"line_number":301,"context_line":"                                              notifier_info)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_3327c067","line":298,"range":{"start_line":298,"start_character":32,"end_line":298,"end_character":60},"updated":"2017-12-28 08:10:38.000000000","message":"We don\u0027t need \u0027update_at\u0027 here.","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ba33601f2f08c55d604c9b51539339794400ef3d","unresolved":false,"context_lines":[{"line_number":295,"context_line":"            qos_specs.associate_qos_with_type(context, id, type_id)"},{"line_number":296,"context_line":"            notifier_info \u003d dict(id\u003did, type_id\u003dtype_id,"},{"line_number":297,"context_line":"                                 created_at\u003dspec.created_at,"},{"line_number":298,"context_line":"                                 updated_at\u003dspec.updated_at)"},{"line_number":299,"context_line":"            rpc.get_notifier(\u0027QoSSpecs\u0027).info(context,"},{"line_number":300,"context_line":"                                              \u0027qos_specs.associate\u0027,"},{"line_number":301,"context_line":"                                              notifier_info)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_4e4adb80","line":298,"range":{"start_line":298,"start_character":32,"end_line":298,"end_character":60},"in_reply_to":"9f91af0f_3327c067","updated":"2017-12-28 10:17:04.000000000","message":"Done","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"7b1b9ecbabfc4d2d9a1dd1f8bc50de780919e9a6","unresolved":false,"context_lines":[{"line_number":343,"context_line":"                  {\u0027id\u0027: id, \u0027type_id\u0027: type_id})"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"        try:"},{"line_number":346,"context_line":"            # Not found exception will be handled at the wsgi level"},{"line_number":347,"context_line":"            spec \u003d qos_specs.get_qos_specs(context, id)"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"            qos_specs.disassociate_qos_specs(context, id, type_id)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_33a4a008","line":346,"range":{"start_line":346,"start_character":12,"end_line":346,"end_character":67},"updated":"2017-12-28 08:10:38.000000000","message":"ditto","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ba33601f2f08c55d604c9b51539339794400ef3d","unresolved":false,"context_lines":[{"line_number":343,"context_line":"                  {\u0027id\u0027: id, \u0027type_id\u0027: type_id})"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"        try:"},{"line_number":346,"context_line":"            # Not found exception will be handled at the wsgi level"},{"line_number":347,"context_line":"            spec \u003d qos_specs.get_qos_specs(context, id)"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"            qos_specs.disassociate_qos_specs(context, id, type_id)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_53604433","line":346,"range":{"start_line":346,"start_character":12,"end_line":346,"end_character":67},"in_reply_to":"9f91af0f_33a4a008","updated":"2017-12-28 10:17:04.000000000","message":"Done","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"7b1b9ecbabfc4d2d9a1dd1f8bc50de780919e9a6","unresolved":false,"context_lines":[{"line_number":349,"context_line":"            qos_specs.disassociate_qos_specs(context, id, type_id)"},{"line_number":350,"context_line":"            notifier_info \u003d dict(id\u003did, type_id\u003dtype_id,"},{"line_number":351,"context_line":"                                 created_at\u003dspec.created_at,"},{"line_number":352,"context_line":"                                 updated_at\u003dspec.updated_at)"},{"line_number":353,"context_line":"            rpc.get_notifier(\u0027QoSSpecs\u0027).info(context,"},{"line_number":354,"context_line":"                                              \u0027qos_specs.disassociate\u0027,"},{"line_number":355,"context_line":"                                              notifier_info)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_532cc446","line":352,"range":{"start_line":352,"start_character":31,"end_line":352,"end_character":60},"updated":"2017-12-28 08:10:38.000000000","message":"ditto","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ba33601f2f08c55d604c9b51539339794400ef3d","unresolved":false,"context_lines":[{"line_number":349,"context_line":"            qos_specs.disassociate_qos_specs(context, id, type_id)"},{"line_number":350,"context_line":"            notifier_info \u003d dict(id\u003did, type_id\u003dtype_id,"},{"line_number":351,"context_line":"                                 created_at\u003dspec.created_at,"},{"line_number":352,"context_line":"                                 updated_at\u003dspec.updated_at)"},{"line_number":353,"context_line":"            rpc.get_notifier(\u0027QoSSpecs\u0027).info(context,"},{"line_number":354,"context_line":"                                              \u0027qos_specs.disassociate\u0027,"},{"line_number":355,"context_line":"                                              notifier_info)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_f354f856","line":352,"range":{"start_line":352,"start_character":31,"end_line":352,"end_character":60},"in_reply_to":"9f91af0f_532cc446","updated":"2017-12-28 10:17:04.000000000","message":"Done","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"7b1b9ecbabfc4d2d9a1dd1f8bc50de780919e9a6","unresolved":false,"context_lines":[{"line_number":378,"context_line":"        LOG.debug(\"Disassociate qos_spec: %s from all.\", id)"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"        try:"},{"line_number":381,"context_line":"            # Not found exception will be handled at the wsgi level"},{"line_number":382,"context_line":"            spec \u003d qos_specs.get_qos_specs(context, id)"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"            qos_specs.disassociate_all(context, id)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_f320784c","line":381,"range":{"start_line":381,"start_character":11,"end_line":381,"end_character":67},"updated":"2017-12-28 08:10:38.000000000","message":"ditto","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ba33601f2f08c55d604c9b51539339794400ef3d","unresolved":false,"context_lines":[{"line_number":378,"context_line":"        LOG.debug(\"Disassociate qos_spec: %s from all.\", id)"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"        try:"},{"line_number":381,"context_line":"            # Not found exception will be handled at the wsgi level"},{"line_number":382,"context_line":"            spec \u003d qos_specs.get_qos_specs(context, id)"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"            qos_specs.disassociate_all(context, id)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_1352bc68","line":381,"range":{"start_line":381,"start_character":11,"end_line":381,"end_character":67},"in_reply_to":"9f91af0f_f320784c","updated":"2017-12-28 10:17:04.000000000","message":"Done","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"7b1b9ecbabfc4d2d9a1dd1f8bc50de780919e9a6","unresolved":false,"context_lines":[{"line_number":384,"context_line":"            qos_specs.disassociate_all(context, id)"},{"line_number":385,"context_line":"            notifier_info \u003d dict(id\u003did,"},{"line_number":386,"context_line":"                                 created_at\u003dspec.created_at,"},{"line_number":387,"context_line":"                                 updated_at\u003dspec.updated_at)"},{"line_number":388,"context_line":"            rpc.get_notifier(\u0027QoSSpecs\u0027).info(context,"},{"line_number":389,"context_line":"                                              \u0027qos_specs.disassociate_all\u0027,"},{"line_number":390,"context_line":"                                              notifier_info)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_b31af014","line":387,"range":{"start_line":387,"start_character":31,"end_line":387,"end_character":59},"updated":"2017-12-28 08:10:38.000000000","message":"ditto","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ba33601f2f08c55d604c9b51539339794400ef3d","unresolved":false,"context_lines":[{"line_number":384,"context_line":"            qos_specs.disassociate_all(context, id)"},{"line_number":385,"context_line":"            notifier_info \u003d dict(id\u003did,"},{"line_number":386,"context_line":"                                 created_at\u003dspec.created_at,"},{"line_number":387,"context_line":"                                 updated_at\u003dspec.updated_at)"},{"line_number":388,"context_line":"            rpc.get_notifier(\u0027QoSSpecs\u0027).info(context,"},{"line_number":389,"context_line":"                                              \u0027qos_specs.disassociate_all\u0027,"},{"line_number":390,"context_line":"                                              notifier_info)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f91af0f_eecacf4d","line":387,"range":{"start_line":387,"start_character":31,"end_line":387,"end_character":59},"in_reply_to":"9f91af0f_b31af014","updated":"2017-12-28 10:17:04.000000000","message":"Done","commit_id":"a3094ff15bb2cde8d2a49e6092526d29d79390a8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"8381b423efe17856f4c2a03c250a386f4afd4de3","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from cinder import rpc"},{"line_number":31,"context_line":"from cinder import utils"},{"line_number":32,"context_line":"from cinder.volume import qos_specs"},{"line_number":33,"context_line":"from oslo_utils import timeutils"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":17,"id":"7f96bb07_b970ec09","line":33,"updated":"2018-01-17 01:20:04.000000000","message":"This needs to be in the third party imports group before the local cinder imports.","commit_id":"a1880b45e30c7cbfe8b20ce0815cecb8f47c6640"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f369d0c7102c25435452430d734278449c43dc62","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from cinder import rpc"},{"line_number":31,"context_line":"from cinder import utils"},{"line_number":32,"context_line":"from cinder.volume import qos_specs"},{"line_number":33,"context_line":"from oslo_utils import timeutils"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":17,"id":"7f96bb07_dcccc66b","line":33,"in_reply_to":"7f96bb07_b970ec09","updated":"2018-01-17 01:59:13.000000000","message":"Yes, I\u0027ll fix it.","commit_id":"a1880b45e30c7cbfe8b20ce0815cecb8f47c6640"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"257bb0b27e1ed273f70445c168f6e2857ebccd04","unresolved":false,"context_lines":[{"line_number":287,"context_line":""},{"line_number":288,"context_line":"            qos_specs.associate_qos_with_type(context, id, type_id)"},{"line_number":289,"context_line":"            notifier_info \u003d dict(id\u003did, type_id\u003dtype_id,"},{"line_number":290,"context_line":"                                 created_at\u003dspec.created_at)"},{"line_number":291,"context_line":"            rpc.get_notifier(\u0027QoSSpecs\u0027).info(context,"},{"line_number":292,"context_line":"                                              \u0027qos_specs.associate\u0027,"},{"line_number":293,"context_line":"                                              notifier_info)"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f91af0f_12694dbd","line":290,"range":{"start_line":290,"start_character":33,"end_line":290,"end_character":60},"updated":"2017-12-29 01:17:08.000000000","message":"I\u0027m sorry I didn\u0027t think this change makes sense. I know Tommy what want to say, but there is more reasonable to left update_at only here.  Since this qos_spec has been created before we associate it to a volume type, so this action should be an updating action. That\u0027s why I think \"update_at\" be here is better.","commit_id":"a1880b45e30c7cbfe8b20ce0815cecb8f47c6640"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"5eb158d900b636218fa06052ed6dc514e05589b2","unresolved":false,"context_lines":[{"line_number":287,"context_line":""},{"line_number":288,"context_line":"            qos_specs.associate_qos_with_type(context, id, type_id)"},{"line_number":289,"context_line":"            notifier_info \u003d dict(id\u003did, type_id\u003dtype_id,"},{"line_number":290,"context_line":"                                 created_at\u003dspec.created_at)"},{"line_number":291,"context_line":"            rpc.get_notifier(\u0027QoSSpecs\u0027).info(context,"},{"line_number":292,"context_line":"                                              \u0027qos_specs.associate\u0027,"},{"line_number":293,"context_line":"                                              notifier_info)"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f91af0f_922d5d48","line":290,"range":{"start_line":290,"start_character":33,"end_line":290,"end_character":60},"in_reply_to":"9f91af0f_12694dbd","updated":"2017-12-29 01:54:07.000000000","message":"I\u0027m sorry, I don\u0027t think so.\nWhen the user to find the log, it is through the \"update ()\" log, see the qos update time, so associated with the volume type does not need to print the update time, Just need to know created_at on it.","commit_id":"a1880b45e30c7cbfe8b20ce0815cecb8f47c6640"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"257bb0b27e1ed273f70445c168f6e2857ebccd04","unresolved":false,"context_lines":[{"line_number":339,"context_line":""},{"line_number":340,"context_line":"            qos_specs.disassociate_qos_specs(context, id, type_id)"},{"line_number":341,"context_line":"            notifier_info \u003d dict(id\u003did, type_id\u003dtype_id,"},{"line_number":342,"context_line":"                                 created_at\u003dspec.created_at)"},{"line_number":343,"context_line":"            rpc.get_notifier(\u0027QoSSpecs\u0027).info(context,"},{"line_number":344,"context_line":"                                              \u0027qos_specs.disassociate\u0027,"},{"line_number":345,"context_line":"                                              notifier_info)"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f91af0f_d26205d9","line":342,"range":{"start_line":342,"start_character":33,"end_line":342,"end_character":60},"updated":"2017-12-29 01:17:08.000000000","message":"ditto","commit_id":"a1880b45e30c7cbfe8b20ce0815cecb8f47c6640"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"5eb158d900b636218fa06052ed6dc514e05589b2","unresolved":false,"context_lines":[{"line_number":339,"context_line":""},{"line_number":340,"context_line":"            qos_specs.disassociate_qos_specs(context, id, type_id)"},{"line_number":341,"context_line":"            notifier_info \u003d dict(id\u003did, type_id\u003dtype_id,"},{"line_number":342,"context_line":"                                 created_at\u003dspec.created_at)"},{"line_number":343,"context_line":"            rpc.get_notifier(\u0027QoSSpecs\u0027).info(context,"},{"line_number":344,"context_line":"                                              \u0027qos_specs.disassociate\u0027,"},{"line_number":345,"context_line":"                                              notifier_info)"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f91af0f_92bb1de4","line":342,"range":{"start_line":342,"start_character":33,"end_line":342,"end_character":60},"in_reply_to":"9f91af0f_d26205d9","updated":"2017-12-29 01:54:07.000000000","message":"ditto","commit_id":"a1880b45e30c7cbfe8b20ce0815cecb8f47c6640"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"257bb0b27e1ed273f70445c168f6e2857ebccd04","unresolved":false,"context_lines":[{"line_number":372,"context_line":""},{"line_number":373,"context_line":"            qos_specs.disassociate_all(context, id)"},{"line_number":374,"context_line":"            notifier_info \u003d dict(id\u003did,"},{"line_number":375,"context_line":"                                 created_at\u003dspec.created_at)"},{"line_number":376,"context_line":"            rpc.get_notifier(\u0027QoSSpecs\u0027).info(context,"},{"line_number":377,"context_line":"                                              \u0027qos_specs.disassociate_all\u0027,"},{"line_number":378,"context_line":"                                              notifier_info)"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f91af0f_929a3dc3","line":375,"range":{"start_line":375,"start_character":33,"end_line":375,"end_character":59},"updated":"2017-12-29 01:17:08.000000000","message":"ditto","commit_id":"a1880b45e30c7cbfe8b20ce0815cecb8f47c6640"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"5eb158d900b636218fa06052ed6dc514e05589b2","unresolved":false,"context_lines":[{"line_number":372,"context_line":""},{"line_number":373,"context_line":"            qos_specs.disassociate_all(context, id)"},{"line_number":374,"context_line":"            notifier_info \u003d dict(id\u003did,"},{"line_number":375,"context_line":"                                 created_at\u003dspec.created_at)"},{"line_number":376,"context_line":"            rpc.get_notifier(\u0027QoSSpecs\u0027).info(context,"},{"line_number":377,"context_line":"                                              \u0027qos_specs.disassociate_all\u0027,"},{"line_number":378,"context_line":"                                              notifier_info)"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f91af0f_d2ef65e7","line":375,"range":{"start_line":375,"start_character":33,"end_line":375,"end_character":59},"in_reply_to":"9f91af0f_929a3dc3","updated":"2017-12-29 01:54:07.000000000","message":"ditto","commit_id":"a1880b45e30c7cbfe8b20ce0815cecb8f47c6640"}],"cinder/db/sqlalchemy/api.py":[{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"9a2a21f5fb509213587dc28d31ee320a6d306c6b","unresolved":false,"context_lines":[{"line_number":4785,"context_line":"            value \u003d dict(id\u003did, key\u003dkey, value\u003dspecs[key],"},{"line_number":4786,"context_line":"                         specs_id\u003dqos_specs_id,"},{"line_number":4787,"context_line":"                         deleted\u003dFalse)"},{"line_number":4788,"context_line":"            spec_ref.save(session\u003dsession)"},{"line_number":4789,"context_line":"            LOG.debug(\u0027qos_specs_update() value: %s\u0027, value)"},{"line_number":4790,"context_line":"            spec_ref.update(value)"},{"line_number":4791,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_56c0cd7b","line":4788,"range":{"start_line":4788,"start_character":11,"end_line":4788,"end_character":42},"updated":"2017-11-23 09:16:39.000000000","message":"why adding this?","commit_id":"95eb8884d27d2fb191d99288c964e436824b720c"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"9a2a21f5fb509213587dc28d31ee320a6d306c6b","unresolved":false,"context_lines":[{"line_number":4792,"context_line":"        try:"},{"line_number":4793,"context_line":"            spec_name \u003d _qos_specs_get_name(context, qos_specs_id,"},{"line_number":4794,"context_line":"                                            \u0027QoS_Specs_Name\u0027, session)"},{"line_number":4795,"context_line":"            LOG.debug(\"update updated_at in quality_of_service_specs\""},{"line_number":4796,"context_line":"                      \" of %s.\", qos_specs_id)"},{"line_number":4797,"context_line":"        except exception.QoSSpecsKeyNotFound:"},{"line_number":4798,"context_line":"            spec_name \u003d models.QualityOfServiceSpecs()"},{"line_number":4799,"context_line":"        spec_name[\u0027updated_at\u0027] \u003d timeutils.utcnow()"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_1661e5a9","line":4796,"range":{"start_line":4795,"start_character":10,"end_line":4796,"end_character":46},"updated":"2017-11-23 09:16:39.000000000","message":"Don\u0027t need to log this out","commit_id":"95eb8884d27d2fb191d99288c964e436824b720c"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"9a2a21f5fb509213587dc28d31ee320a6d306c6b","unresolved":false,"context_lines":[{"line_number":4794,"context_line":"                                            \u0027QoS_Specs_Name\u0027, session)"},{"line_number":4795,"context_line":"            LOG.debug(\"update updated_at in quality_of_service_specs\""},{"line_number":4796,"context_line":"                      \" of %s.\", qos_specs_id)"},{"line_number":4797,"context_line":"        except exception.QoSSpecsKeyNotFound:"},{"line_number":4798,"context_line":"            spec_name \u003d models.QualityOfServiceSpecs()"},{"line_number":4799,"context_line":"        spec_name[\u0027updated_at\u0027] \u003d timeutils.utcnow()"},{"line_number":4800,"context_line":"        spec_name.save(session\u003dsession)"},{"line_number":4801,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_b6f4b9d0","line":4798,"range":{"start_line":4797,"start_character":7,"end_line":4798,"end_character":54},"updated":"2017-11-23 09:16:39.000000000","message":"I guess we should raise out the exception If the corresponding record does not exist.","commit_id":"95eb8884d27d2fb191d99288c964e436824b720c"},{"author":{"_account_id":19853,"name":"Nguyen Hung Phuong","email":"phuongnh@vn.fujitsu.com","username":"phuongnh"},"change_message_id":"13a052fae4824fc1fdf534f19f954d92252dcfb5","unresolved":false,"context_lines":[{"line_number":4715,"context_line":"            update(updated_values)"},{"line_number":4716,"context_line":"    del updated_values[\u0027updated_at\u0027]"},{"line_number":4717,"context_line":"    return updated_values"},{"line_number":4718,"context_line":""},{"line_number":4719,"context_line":"@require_admin_context"},{"line_number":4720,"context_line":"def _qos_specs_get_name(context, qos_specs_id, key, session\u003dNone):"},{"line_number":4721,"context_line":"    result \u003d model_query(context, models.QualityOfServiceSpecs,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff82abbf_11180f7f","line":4718,"updated":"2017-11-23 10:12:08.000000000","message":"Please add a blank line.","commit_id":"82173f17d45e3c7d707bc329365b82be2e1a2f8a"},{"author":{"_account_id":19853,"name":"Nguyen Hung Phuong","email":"phuongnh@vn.fujitsu.com","username":"phuongnh"},"change_message_id":"13a052fae4824fc1fdf534f19f954d92252dcfb5","unresolved":false,"context_lines":[{"line_number":4730,"context_line":"            specs_id\u003dqos_specs_id)"},{"line_number":4731,"context_line":""},{"line_number":4732,"context_line":"    return result"},{"line_number":4733,"context_line":""},{"line_number":4734,"context_line":"@require_admin_context"},{"line_number":4735,"context_line":"def _qos_specs_get_item(context, qos_specs_id, key, session\u003dNone):"},{"line_number":4736,"context_line":"    result \u003d model_query(context, models.QualityOfServiceSpecs,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff82abbf_d1094731","line":4733,"updated":"2017-11-23 10:12:08.000000000","message":"ditto.","commit_id":"82173f17d45e3c7d707bc329365b82be2e1a2f8a"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"0cdb675b9ce0eef9f39f3232922662a5dd05a9a7","unresolved":false,"context_lines":[{"line_number":4770,"context_line":"            LOG.debug(\u0027qos_specs_update() value: %s\u0027, value)"},{"line_number":4771,"context_line":"            spec_ref.update(value)"},{"line_number":4772,"context_line":"            spec_ref.save(session\u003dsession)"},{"line_number":4773,"context_line":""},{"line_number":4774,"context_line":"        return specs"},{"line_number":4775,"context_line":""},{"line_number":4776,"context_line":""},{"line_number":4777,"context_line":"####################"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff82abbf_da6070a8","side":"PARENT","line":4774,"range":{"start_line":4773,"start_character":0,"end_line":4774,"end_character":20},"updated":"2017-11-24 01:16:27.000000000","message":"Why this line was removed?","commit_id":"5d0816b0d827aa74128531c0aa0eb4147fe1fdf2"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"d8de5eef7cec3c5184d58b10b329aa1daa8d939b","unresolved":false,"context_lines":[{"line_number":4539,"context_line":"        if not spec[\u0027deleted\u0027]:"},{"line_number":4540,"context_line":"            # Add update time to specs list, in order to get the keyword"},{"line_number":4541,"context_line":"            # \u0027updated_at\u0027 in specs info when printing logs."},{"line_number":4542,"context_line":"            # Reference Bug: #1569150"},{"line_number":4543,"context_line":"            if not update_time and spec[\u0027updated_at\u0027]:"},{"line_number":4544,"context_line":"                update_time \u003d spec[\u0027updated_at\u0027]"},{"line_number":4545,"context_line":"            elif update_time and spec[\u0027updated_at\u0027]:"}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_cd8b5fbd","line":4542,"range":{"start_line":4542,"start_character":14,"end_line":4542,"end_character":37},"updated":"2017-12-12 13:09:33.000000000","message":"This is not useful information in code comments -- please include info instead of a reference to a bug.","commit_id":"a3f9c3a9c47aa7e6572378542579a7f3746fed56"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ab00534b6f85c5d943b0c0a18e11bf79f36344ab","unresolved":false,"context_lines":[{"line_number":4539,"context_line":"        if not spec[\u0027deleted\u0027]:"},{"line_number":4540,"context_line":"            # Add update time to specs list, in order to get the keyword"},{"line_number":4541,"context_line":"            # \u0027updated_at\u0027 in specs info when printing logs."},{"line_number":4542,"context_line":"            # Reference Bug: #1569150"},{"line_number":4543,"context_line":"            if not update_time and spec[\u0027updated_at\u0027]:"},{"line_number":4544,"context_line":"                update_time \u003d spec[\u0027updated_at\u0027]"},{"line_number":4545,"context_line":"            elif update_time and spec[\u0027updated_at\u0027]:"}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_3039f6f1","line":4542,"range":{"start_line":4542,"start_character":14,"end_line":4542,"end_character":37},"in_reply_to":"df87a7cf_cd8b5fbd","updated":"2017-12-14 04:33:43.000000000","message":"Thank you for your review. It has been corrected.","commit_id":"a3f9c3a9c47aa7e6572378542579a7f3746fed56"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"d8de5eef7cec3c5184d58b10b329aa1daa8d939b","unresolved":false,"context_lines":[{"line_number":4565,"context_line":"        if row[\u0027key\u0027] \u003d\u003d \u0027QoS_Specs_Name\u0027:"},{"line_number":4566,"context_line":"            # Add create time for member, in order to get the keyword"},{"line_number":4567,"context_line":"            # \u0027created_at\u0027 in the specs info when printing logs."},{"line_number":4568,"context_line":"            # Reference Bug: #1569150"},{"line_number":4569,"context_line":"            member \u003d {\u0027name\u0027: row[\u0027value\u0027], \u0027id\u0027: row[\u0027id\u0027],"},{"line_number":4570,"context_line":"                      \u0027created_at\u0027: row[\u0027created_at\u0027]}"},{"line_number":4571,"context_line":"            if row.specs:"}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_0d8627ba","line":4568,"range":{"start_line":4568,"start_character":14,"end_line":4568,"end_character":37},"updated":"2017-12-12 13:09:33.000000000","message":"This is not useful information in code comments -- please include info instead of a reference to a bug.","commit_id":"a3f9c3a9c47aa7e6572378542579a7f3746fed56"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ab00534b6f85c5d943b0c0a18e11bf79f36344ab","unresolved":false,"context_lines":[{"line_number":4565,"context_line":"        if row[\u0027key\u0027] \u003d\u003d \u0027QoS_Specs_Name\u0027:"},{"line_number":4566,"context_line":"            # Add create time for member, in order to get the keyword"},{"line_number":4567,"context_line":"            # \u0027created_at\u0027 in the specs info when printing logs."},{"line_number":4568,"context_line":"            # Reference Bug: #1569150"},{"line_number":4569,"context_line":"            member \u003d {\u0027name\u0027: row[\u0027value\u0027], \u0027id\u0027: row[\u0027id\u0027],"},{"line_number":4570,"context_line":"                      \u0027created_at\u0027: row[\u0027created_at\u0027]}"},{"line_number":4571,"context_line":"            if row.specs:"}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_f022aeba","line":4568,"range":{"start_line":4568,"start_character":14,"end_line":4568,"end_character":37},"in_reply_to":"df87a7cf_0d8627ba","updated":"2017-12-14 04:33:43.000000000","message":"Thank you for your review. It has been corrected.","commit_id":"a3f9c3a9c47aa7e6572378542579a7f3746fed56"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"d8de5eef7cec3c5184d58b10b329aa1daa8d939b","unresolved":false,"context_lines":[{"line_number":4789,"context_line":"            spec_ref.save(session\u003dsession)"},{"line_number":4790,"context_line":""},{"line_number":4791,"context_line":"        return specs"},{"line_number":4792,"context_line":""},{"line_number":4793,"context_line":"####################"},{"line_number":4794,"context_line":""},{"line_number":4795,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_4db98f76","line":4792,"updated":"2017-12-12 13:09:33.000000000","message":"???","commit_id":"a3f9c3a9c47aa7e6572378542579a7f3746fed56"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ab00534b6f85c5d943b0c0a18e11bf79f36344ab","unresolved":false,"context_lines":[{"line_number":4789,"context_line":"            spec_ref.save(session\u003dsession)"},{"line_number":4790,"context_line":""},{"line_number":4791,"context_line":"        return specs"},{"line_number":4792,"context_line":""},{"line_number":4793,"context_line":"####################"},{"line_number":4794,"context_line":""},{"line_number":4795,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_50a27a4d","line":4792,"in_reply_to":"df87a7cf_4db98f76","updated":"2017-12-14 04:33:43.000000000","message":"It\u0027s normal.","commit_id":"a3f9c3a9c47aa7e6572378542579a7f3746fed56"}],"cinder/objects/qos_specs.py":[{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"9a2a21f5fb509213587dc28d31ee320a6d306c6b","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        for name, field in qos_spec.fields.items():"},{"line_number":122,"context_line":"            if name not in cls.OPTIONAL_FIELDS:"},{"line_number":123,"context_line":"                value \u003d db_qos_spec.get(name)"},{"line_number":124,"context_line":"                LOG.debug(\"\u003e\u003e\u003e\u003e####name\u003d%(name)s, db_qos_spec\u003d%(db_qos)s,\""},{"line_number":125,"context_line":"                          \"value\u003d%(value)s\","},{"line_number":126,"context_line":"                          {\u0027name\u0027: name, \u0027db_qos_spec\u0027: db_qos_spec,"},{"line_number":127,"context_line":"                           \u0027value\u0027: value})"},{"line_number":128,"context_line":"                # \u0027specs\u0027 could be null if only a consumer is given, so make"},{"line_number":129,"context_line":"                # it an empty dict instead of None"},{"line_number":130,"context_line":"                if not value and isinstance(field, fields.DictOfStringsField):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_f644811d","line":127,"range":{"start_line":124,"start_character":15,"end_line":127,"end_character":43},"updated":"2017-11-23 09:16:39.000000000","message":"Remove this:)","commit_id":"95eb8884d27d2fb191d99288c964e436824b720c"}],"cinder/tests/unit/test_qos_specs.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"8381b423efe17856f4c2a03c250a386f4afd4de3","unresolved":false,"context_lines":[{"line_number":367,"context_line":"                                     \u0027key3\u0027: \u0027value3\u0027,"},{"line_number":368,"context_line":"                                     \u0027key4\u0027: \u0027value4\u0027}}]"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"        for index, qos_specs_dict in enumerate(qos_specs_list):"},{"line_number":371,"context_line":"            qos_specs_id \u003d self._create_qos_specs("},{"line_number":372,"context_line":"                qos_specs_dict[\u0027name\u0027],"},{"line_number":373,"context_line":"                qos_specs_dict[\u0027consumer\u0027],"}],"source_content_type":"text/x-python","patch_set":17,"id":"7f96bb07_99fad040","line":370,"range":{"start_line":370,"start_character":37,"end_line":370,"end_character":46},"updated":"2018-01-17 01:20:04.000000000","message":"Can you explain why this was added?","commit_id":"a1880b45e30c7cbfe8b20ce0815cecb8f47c6640"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f369d0c7102c25435452430d734278449c43dc62","unresolved":false,"context_lines":[{"line_number":367,"context_line":"                                     \u0027key3\u0027: \u0027value3\u0027,"},{"line_number":368,"context_line":"                                     \u0027key4\u0027: \u0027value4\u0027}}]"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"        for index, qos_specs_dict in enumerate(qos_specs_list):"},{"line_number":371,"context_line":"            qos_specs_id \u003d self._create_qos_specs("},{"line_number":372,"context_line":"                qos_specs_dict[\u0027name\u0027],"},{"line_number":373,"context_line":"                qos_specs_dict[\u0027consumer\u0027],"}],"source_content_type":"text/x-python","patch_set":17,"id":"7f96bb07_bc4e9a35","line":370,"range":{"start_line":370,"start_character":37,"end_line":370,"end_character":46},"in_reply_to":"7f96bb07_99fad040","updated":"2018-01-17 01:59:13.000000000","message":"There are many qos_specs, in order to update updated time in every qos_spec, we need to traverse qos_specs_list.","commit_id":"a1880b45e30c7cbfe8b20ce0815cecb8f47c6640"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"8381b423efe17856f4c2a03c250a386f4afd4de3","unresolved":false,"context_lines":[{"line_number":374,"context_line":"                qos_specs_dict[\u0027specs\u0027])"},{"line_number":375,"context_line":"            qos_specs_dict[\u0027id\u0027] \u003d qos_specs_id"},{"line_number":376,"context_line":"            specs \u003d db.qos_specs_get(self.ctxt, qos_specs_id)"},{"line_number":377,"context_line":"            qos_specs_list[index][\u0027created_at\u0027] \u003d \\"},{"line_number":378,"context_line":"                utils.time_format(specs[\u0027created_at\u0027])"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"        res \u003d qos_specs.get_all_specs(self.ctxt)"}],"source_content_type":"text/x-python","patch_set":17,"id":"7f96bb07_19e7a0ae","line":377,"range":{"start_line":377,"start_character":50,"end_line":377,"end_character":51},"updated":"2018-01-17 01:20:04.000000000","message":"Please don\u0027t use \\ to span multiple lines. Either wrap the assignment in (), or it looks like there should be enough room to break after the opening ( from time_format.","commit_id":"a1880b45e30c7cbfe8b20ce0815cecb8f47c6640"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f369d0c7102c25435452430d734278449c43dc62","unresolved":false,"context_lines":[{"line_number":374,"context_line":"                qos_specs_dict[\u0027specs\u0027])"},{"line_number":375,"context_line":"            qos_specs_dict[\u0027id\u0027] \u003d qos_specs_id"},{"line_number":376,"context_line":"            specs \u003d db.qos_specs_get(self.ctxt, qos_specs_id)"},{"line_number":377,"context_line":"            qos_specs_list[index][\u0027created_at\u0027] \u003d \\"},{"line_number":378,"context_line":"                utils.time_format(specs[\u0027created_at\u0027])"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"        res \u003d qos_specs.get_all_specs(self.ctxt)"}],"source_content_type":"text/x-python","patch_set":17,"id":"7f96bb07_dc228652","line":377,"range":{"start_line":377,"start_character":50,"end_line":377,"end_character":51},"in_reply_to":"7f96bb07_19e7a0ae","updated":"2018-01-17 01:59:13.000000000","message":"Ok, I\u0027ll fix it. Thanks.","commit_id":"a1880b45e30c7cbfe8b20ce0815cecb8f47c6640"}],"cinder/utils.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"8381b423efe17856f4c2a03c250a386f4afd4de3","unresolved":false,"context_lines":[{"line_number":271,"context_line":"    return (begin, end)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"def time_format(at\u003dNone):"},{"line_number":275,"context_line":"    \"\"\"Format datetime string to date."},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    :param at: Type is datetime.datetime (example"}],"source_content_type":"text/x-python","patch_set":17,"id":"7f96bb07_998f30cc","line":274,"updated":"2018-01-17 01:20:04.000000000","message":"Please use existing oslo.utils time formatting methods.\n\nhttps://github.com/openstack/oslo.utils/blob/master/oslo_utils/timeutils.py","commit_id":"a1880b45e30c7cbfe8b20ce0815cecb8f47c6640"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"c038d4e2fab80c8ad606636730f71fbcbbbe0dd8","unresolved":false,"context_lines":[{"line_number":271,"context_line":"    return (begin, end)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"def time_format(at\u003dNone):"},{"line_number":275,"context_line":"    \"\"\"Format datetime string to date."},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    :param at: Type is datetime.datetime (example"}],"source_content_type":"text/x-python","patch_set":17,"id":"7f96bb07_1430bae7","line":274,"in_reply_to":"7f96bb07_998f30cc","updated":"2018-01-17 09:50:30.000000000","message":"Hi Sean,this function is about to be removed, can not be detected by pep8, it can not be used. After investigation there is no better function suitable for use, so keep the first 17 patch update.","commit_id":"a1880b45e30c7cbfe8b20ce0815cecb8f47c6640"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f369d0c7102c25435452430d734278449c43dc62","unresolved":false,"context_lines":[{"line_number":271,"context_line":"    return (begin, end)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"def time_format(at\u003dNone):"},{"line_number":275,"context_line":"    \"\"\"Format datetime string to date."},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    :param at: Type is datetime.datetime (example"}],"source_content_type":"text/x-python","patch_set":17,"id":"7f96bb07_7c68121c","line":274,"in_reply_to":"7f96bb07_998f30cc","updated":"2018-01-17 01:59:13.000000000","message":"Ok, I will remove this function, thanks.","commit_id":"a1880b45e30c7cbfe8b20ce0815cecb8f47c6640"}]}
