)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7593,"name":"Haomai Wang","email":"haomaiwang@gmail.com","username":"HaomaiWang"},"change_message_id":"a3016301508a28c1a825b0bac9ca0c2341a13e23","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Updates instance status if GA stacks at BUILD status"},{"line_number":10,"context_line":"after poll_until"},{"line_number":11,"context_line":"Change-Id: I581f67d1be9f8e9b2080daa86d51d89326840c5c"},{"line_number":12,"context_line":"Implements: blueprint complete-rollback-if-instance-stucks-at-build-status"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"AAAAS3%2F%2Fejg%3D","line":12,"updated":"2013-09-26 02:34:16.000000000","message":"Incorrect link","commit_id":"004c9e8db9ab370194e8788ed82bcdb145d5ef6f"}],"etc/trove/trove-taskmanager.conf.sample":[{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"0927b887b5477c47b928af51c3c1ce8946e5b82f","unresolved":false,"context_lines":[{"line_number":5,"context_line":"# Show debugging output in logs (sets DEBUG log level output)"},{"line_number":6,"context_line":"debug \u003d True"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"# Updates status if instance failed become active"},{"line_number":9,"context_line":"update_status_on_fail \u003d False"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# AMQP Connection info"}],"source_content_type":"application/octet-stream","patch_set":21,"id":"AAAATH%2F%2F8MM%3D","line":8,"updated":"2013-10-07 18:26:38.000000000","message":"Considering all of the time spent in IRC discussing whether this should be optional or not, it would have been nice to have the blueprint or the commit message explain why this behavior is opt-in vs. opt-out, because for the uninitiated, it\u0027ll look a bit silly.\n\nI\u0027d also consider update_statuses_on_fail (plural) considering multiple states are involved. Long term, I\u0027d like to see a consensus on how to properly document these fields considering the information in cfg.py for this property is more verbose than this terse hint.","commit_id":"0f40995e4a3a384bf02f5fb142636e6b21524865"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"622ab72a1df7c32982435cabb35b7f0e54f42fdc","unresolved":false,"context_lines":[{"line_number":5,"context_line":"# Show debugging output in logs (sets DEBUG log level output)"},{"line_number":6,"context_line":"debug \u003d True"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"# Updates status if instance failed become active"},{"line_number":9,"context_line":"update_status_on_fail \u003d False"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# AMQP Connection info"}],"source_content_type":"application/octet-stream","patch_set":21,"id":"AAAATH%2F%2F72o%3D","line":8,"in_reply_to":"AAAATH%2F%2F8MM%3D","updated":"2013-10-07 19:59:50.000000000","message":"Agreed with this. I\u0027ll try to make it as-it-use-to-be.","commit_id":"0f40995e4a3a384bf02f5fb142636e6b21524865"}],"trove/common/cfg.py":[{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"045d9ddf575fe23714c3788fb8c0628db14a8aae","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                default\u003dTrue,"},{"line_number":47,"context_line":"                help\u003d\u0027File name for the paste.deploy config for trove-api\u0027),"},{"line_number":48,"context_line":"    cfg.ListOpt(\u0027admin_roles\u0027, default\u003d[\u0027admin\u0027]),"},{"line_number":49,"context_line":"    cfg.BoolOpt(\u0027instance_rollback_on_failure_with_error\u0027, default\u003dTrue,"},{"line_number":50,"context_line":"                help\u003d\u0027Writes error status to db if instance stucks \u0027"},{"line_number":51,"context_line":"                     \u0027at BUILD status\u0027),"},{"line_number":52,"context_line":"    cfg.StrOpt(\u0027remote_implementation\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAS3%2F%2FOhU%3D","line":49,"updated":"2013-10-01 22:22:22.000000000","message":"The sample conf has \u0027update_status_on_ga_timeout\u0027? Which one is it?","commit_id":"e1f7e81721fb99f89b0612c73e42f66b311d342f"},{"author":{"_account_id":7593,"name":"Haomai Wang","email":"haomaiwang@gmail.com","username":"HaomaiWang"},"change_message_id":"5c7d5f44851266cf0cc70bdae58af33151397289","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                help\u003d\u0027File name for the paste.deploy config for trove-api\u0027),"},{"line_number":48,"context_line":"    cfg.ListOpt(\u0027admin_roles\u0027, default\u003d[\u0027admin\u0027]),"},{"line_number":49,"context_line":"    cfg.BoolOpt(\u0027update_status_on_fail\u0027, default\u003dFalse,"},{"line_number":50,"context_line":"                help\u003d\u0027Updates status if instance failing on becoming ACTIVE\u0027),"},{"line_number":51,"context_line":"    cfg.StrOpt(\u0027remote_implementation\u0027,"},{"line_number":52,"context_line":"               default\u003d\"real\","},{"line_number":53,"context_line":"               help\u003d\u0027Remote implementation for using fake integration code\u0027),"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAS3%2F%2FDuo%3D","line":50,"updated":"2013-10-05 14:14:34.000000000","message":"IMO, this option will confuse users. It really export details too fragmentized","commit_id":"dc0b0c3c196e46b900170d3f1776694ce4f81c2d"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"6ee4cba40b7c6a9c0fd91bc257ae7ace41d7ba26","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                help\u003d\u0027File name for the paste.deploy config for trove-api\u0027),"},{"line_number":48,"context_line":"    cfg.ListOpt(\u0027admin_roles\u0027, default\u003d[\u0027admin\u0027]),"},{"line_number":49,"context_line":"    cfg.BoolOpt(\u0027update_status_on_fail\u0027, default\u003dFalse,"},{"line_number":50,"context_line":"                help\u003d\u0027Updates status if instance failing on becoming ACTIVE\u0027),"},{"line_number":51,"context_line":"    cfg.StrOpt(\u0027remote_implementation\u0027,"},{"line_number":52,"context_line":"               default\u003d\"real\","},{"line_number":53,"context_line":"               help\u003d\u0027Remote implementation for using fake integration code\u0027),"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATH%2F%2F%2F1I%3D","line":50,"in_reply_to":"AAAAS3%2F%2FDuo%3D","updated":"2013-10-05 18:44:57.000000000","message":"What do you want to type here ?","commit_id":"dc0b0c3c196e46b900170d3f1776694ce4f81c2d"}],"trove/common/instance.py":[{"author":{"_account_id":1925,"name":"Vipul Sabhaya","email":"vipuls@gmail.com","username":"vipuls"},"change_message_id":"c9d0f8821d99510e1061b3b042a4484a183d2a73","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    DELETED \u003d ServiceStatus(0x05, \u0027deleted\u0027, \u0027DELETED\u0027)"},{"line_number":98,"context_line":"    FAILED_TIMEOUT_GUESTAGENT \u003d ServiceStatus(0x18, \u0027failed\u0027,"},{"line_number":99,"context_line":"                                              \u0027FAILED DUE TO GUESTAGENT \u0027"},{"line_number":100,"context_line":"                                              \u0027TIMEOUT ON BECAOMING ACTIVE\u0027)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"# Dissuade further additions at run-time."}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAS3%2F%2Faxk%3D","line":100,"updated":"2013-09-27 04:09:58.000000000","message":"Seems like you have the status, and description backwards.  I don\u0027t know if this type of status is really that meaningful to the user, since they don\u0027t care there was a GuestAgent timeout.\n\nWhy can\u0027t we re-use the FAILED status?","commit_id":"0d8df640e5ca4f97230d670a43b66db7fd051ca6"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"2b2bb25af6284efd927d39edce3f3d4c6d72f3ff","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    DELETED \u003d ServiceStatus(0x05, \u0027deleted\u0027, \u0027DELETED\u0027)"},{"line_number":98,"context_line":"    FAILED_TIMEOUT_GUESTAGENT \u003d ServiceStatus(0x18, \u0027failed\u0027,"},{"line_number":99,"context_line":"                                              \u0027FAILED DUE TO GUESTAGENT \u0027"},{"line_number":100,"context_line":"                                              \u0027TIMEOUT ON BECAOMING ACTIVE\u0027)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"# Dissuade further additions at run-time."}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAS3%2F%2FaiQ%3D","line":100,"in_reply_to":"AAAAS3%2F%2Faxk%3D","updated":"2013-09-27 06:17:30.000000000","message":"For the first time i thought the same as you now. But with what kind of error customer would come to cloud provider? Only \u0027FAILED? Seems not so meaningful. In this way administrator will examine logs and it would take a while if log is big enough.\nOnly change that i would like to do here to change a bit description on \u0027FAILED DUE TO INSTANCE CANNOT BECOME ACTIVE\u0027 because end-user doesn\u0027t know anything abot GA.","commit_id":"0d8df640e5ca4f97230d670a43b66db7fd051ca6"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"ea677dac00dcc15bd975081e71b3de3110ae8ad4","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    DELETED \u003d ServiceStatus(0x05, \u0027deleted\u0027, \u0027DELETED\u0027)"},{"line_number":98,"context_line":"    FAILED_TIMEOUT_GUESTAGENT \u003d ServiceStatus(0x18, \u0027failed, instance cannot \u0027"},{"line_number":99,"context_line":"                                                    \u0027reach active status\u0027,"},{"line_number":100,"context_line":"                                              \u0027FAILED\u0027)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"# Dissuade further additions at run-time."}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAS3%2F%2FLgM%3D","line":100,"updated":"2013-10-02 20:37:08.000000000","message":"error, not failed","commit_id":"794b30c85a5e4d808eccb862734e1c1c44e320fc"},{"author":{"_account_id":7593,"name":"Haomai Wang","email":"haomaiwang@gmail.com","username":"HaomaiWang"},"change_message_id":"5c7d5f44851266cf0cc70bdae58af33151397289","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    UNKNOWN \u003d ServiceStatus(0x16, \u0027unknown\u0027, \u0027ERROR\u0027)"},{"line_number":96,"context_line":"    NEW \u003d ServiceStatus(0x17, \u0027new\u0027, \u0027NEW\u0027)"},{"line_number":97,"context_line":"    DELETED \u003d ServiceStatus(0x05, \u0027deleted\u0027, \u0027DELETED\u0027)"},{"line_number":98,"context_line":"    FAILED_TIMEOUT_GUESTAGENT \u003d ServiceStatus(0x18, \u0027error, instance cannot \u0027"},{"line_number":99,"context_line":"                                                    \u0027reach active status\u0027,"},{"line_number":100,"context_line":"                                              \u0027ERROR\u0027)"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAS3%2F%2FDu4%3D","line":98,"updated":"2013-10-05 14:14:34.000000000","message":"According status above, a word maybe better. More words will  break display style for client","commit_id":"dc0b0c3c196e46b900170d3f1776694ce4f81c2d"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"6ee4cba40b7c6a9c0fd91bc257ae7ace41d7ba26","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    UNKNOWN \u003d ServiceStatus(0x16, \u0027unknown\u0027, \u0027ERROR\u0027)"},{"line_number":96,"context_line":"    NEW \u003d ServiceStatus(0x17, \u0027new\u0027, \u0027NEW\u0027)"},{"line_number":97,"context_line":"    DELETED \u003d ServiceStatus(0x05, \u0027deleted\u0027, \u0027DELETED\u0027)"},{"line_number":98,"context_line":"    FAILED_TIMEOUT_GUESTAGENT \u003d ServiceStatus(0x18, \u0027error, instance cannot \u0027"},{"line_number":99,"context_line":"                                                    \u0027reach active status\u0027,"},{"line_number":100,"context_line":"                                              \u0027ERROR\u0027)"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATH%2F%2F%2F1E%3D","line":98,"in_reply_to":"AAAAS3%2F%2FDu4%3D","updated":"2013-10-05 18:44:57.000000000","message":"I could change it to \u0027guestagent error\u0027, but not less.","commit_id":"dc0b0c3c196e46b900170d3f1776694ce4f81c2d"}],"trove/instance/models.py":[{"author":{"_account_id":1925,"name":"Vipul Sabhaya","email":"vipuls@gmail.com","username":"vipuls"},"change_message_id":"1d6c1f83bc0f450f8085d473b23d83cebb7b703e","unresolved":false,"context_lines":[{"line_number":843,"context_line":"    UNKNOWN \u003d ServiceStatus(0x16, \u0027unknown\u0027, \u0027ERROR\u0027)"},{"line_number":844,"context_line":"    NEW \u003d ServiceStatus(0x17, \u0027new\u0027, \u0027NEW\u0027)"},{"line_number":845,"context_line":"    DELETED \u003d ServiceStatus(0x05, \u0027deleted\u0027, \u0027DELETED\u0027)"},{"line_number":846,"context_line":"    FAILED_TIMEOUT_GA \u003d ServiceStatus(0x18, \u0027guestagent timeout\u0027, \u0027GA_ERROR\u0027)"},{"line_number":847,"context_line":""},{"line_number":848,"context_line":""},{"line_number":849,"context_line":"MYSQL_RESPONSIVE_STATUSES \u003d [ServiceStatuses.RUNNING]"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAS3%2F%2F0%2BY%3D","line":846,"updated":"2013-09-18 16:04:52.000000000","message":"I am not sure we need a new status here.  Service status is something that\u0027s reported to the User, and a user should not know about \u0027ga\u0027","commit_id":"023dcfcdf31fb5e006f5a1ccd941cb40c7df9fc5"}],"trove/instance/tasks.py":[{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"3a25572577cfbe7c4cff70847ec318dd875d391a","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                                         \u0027Build error: Volume.\u0027,"},{"line_number":81,"context_line":"                                         is_error\u003dTrue)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    BUILDING_ERROR_TIMEOUT_GA \u003d InstanceTask(0x54, \u0027ERROR\u0027,"},{"line_number":84,"context_line":"                                             \u0027Build error: \u0027"},{"line_number":85,"context_line":"                                             \u0027guestagent timeout.\u0027,"},{"line_number":86,"context_line":"                                             is_error\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAASn%2F%2B%2Flk%3D","line":83,"updated":"2013-09-13 22:35:40.000000000","message":"The rest of these are \"BUILDING\" why is this ERROR?","commit_id":"2a67b0717aeda4656be32c9db2563222e3cf0cd5"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"147a07e7452f8e6f68d1803716c22cb072fd41da","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                                         \u0027Build error: Volume.\u0027,"},{"line_number":81,"context_line":"                                         is_error\u003dTrue)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    BUILDING_ERROR_TIMEOUT_GA \u003d InstanceTask(0x54, \u0027ERROR\u0027,"},{"line_number":84,"context_line":"                                             \u0027Build error: \u0027"},{"line_number":85,"context_line":"                                             \u0027guestagent timeout.\u0027,"},{"line_number":86,"context_line":"                                             is_error\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAASn%2F%2B%2FkM%3D","line":83,"in_reply_to":"AAAASn%2F%2B%2Flk%3D","updated":"2013-09-13 22:49:25.000000000","message":"Because main perpose of provisioning is to get server up, and if it fails to start, it means that instance build failed, and status should be ERROR, but not building.","commit_id":"2a67b0717aeda4656be32c9db2563222e3cf0cd5"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"0927b887b5477c47b928af51c3c1ce8946e5b82f","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    BUILDING_ERROR_VOLUME \u003d InstanceTask(0x52, \u0027BUILDING\u0027,"},{"line_number":80,"context_line":"                                         \u0027Build error: Volume.\u0027,"},{"line_number":81,"context_line":"                                         is_error\u003dTrue)"},{"line_number":82,"context_line":"    BUILDING_ERROR_TIMEOUT_GA \u003d InstanceTask(0x54, \u0027ERROR\u0027,"},{"line_number":83,"context_line":"                                             \u0027Build error: \u0027"},{"line_number":84,"context_line":"                                             \u0027guestagent timeout.\u0027,"},{"line_number":85,"context_line":"                                             is_error\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATH%2F%2F8NU%3D","line":82,"updated":"2013-10-07 18:26:38.000000000","message":"Reasoning behind \u0027ERROR\u0027 vs. \u0027BUILDING\u0027 considering all other build failures use \u0027BUILDING\u0027? And if you\u0027re considering initialization not a part of building, can you explain the need to differentiate between the two?\n\nAlso, why 0x54 when 0x53 is free?","commit_id":"0f40995e4a3a384bf02f5fb142636e6b21524865"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"622ab72a1df7c32982435cabb35b7f0e54f42fdc","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    BUILDING_ERROR_VOLUME \u003d InstanceTask(0x52, \u0027BUILDING\u0027,"},{"line_number":80,"context_line":"                                         \u0027Build error: Volume.\u0027,"},{"line_number":81,"context_line":"                                         is_error\u003dTrue)"},{"line_number":82,"context_line":"    BUILDING_ERROR_TIMEOUT_GA \u003d InstanceTask(0x54, \u0027ERROR\u0027,"},{"line_number":83,"context_line":"                                             \u0027Build error: \u0027"},{"line_number":84,"context_line":"                                             \u0027guestagent timeout.\u0027,"},{"line_number":85,"context_line":"                                             is_error\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATH%2F%2F73Y%3D","line":82,"in_reply_to":"AAAATH%2F%2F8NU%3D","updated":"2013-10-07 19:59:50.000000000","message":"About code. Security groups review uses code 53, so i\u0027ve used next one.\nAbout naming. I name this attribute with \"building\" prefix because  guestagent error caused by building problems, and timeout is a consequence of building error","commit_id":"0f40995e4a3a384bf02f5fb142636e6b21524865"}],"trove/taskmanager/models.py":[{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"3a25572577cfbe7c4cff70847ec318dd875d391a","unresolved":false,"context_lines":[{"line_number":199,"context_line":"                db_info.save()"},{"line_number":200,"context_line":"                if CONF.instance_rollback_on_failure_with_delete:"},{"line_number":201,"context_line":"                    if server:"},{"line_number":202,"context_line":"                        self._nova_client.servers.delete(server)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        except Exception:"},{"line_number":205,"context_line":"            LOG.exception(\"Error during create-event call.\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAASn%2F%2B%2Flc%3D","line":202,"updated":"2013-09-13 22:35:40.000000000","message":"If the server failed to be created, its possible it might fail to delete too. We should probably catch that here.","commit_id":"2a67b0717aeda4656be32c9db2563222e3cf0cd5"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"059233a69a21c478cf56c1a5e28163c19c4e392a","unresolved":false,"context_lines":[{"line_number":35,"context_line":"from swiftclient.client import ClientException"},{"line_number":36,"context_line":"from trove.common.utils import poll_until"},{"line_number":37,"context_line":"from trove.instance import models as inst_models"},{"line_number":38,"context_line":"from trove.instance.models import BuiltInstance, DBInstance"},{"line_number":39,"context_line":"from trove.instance.models import FreshInstance"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"from trove.instance.models import InstanceStatus"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAS3%2F%2F8kU%3D","line":38,"updated":"2013-09-16 18:54:17.000000000","message":"one import per line please","commit_id":"d1a440a7fee6d2fed8e3d666de4f3bde59c0e412"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"ccd8aeee822841edfe5b6d47be2b75bfcbc00b6e","unresolved":false,"context_lines":[{"line_number":35,"context_line":"from swiftclient.client import ClientException"},{"line_number":36,"context_line":"from trove.common.utils import poll_until"},{"line_number":37,"context_line":"from trove.instance import models as inst_models"},{"line_number":38,"context_line":"from trove.instance.models import BuiltInstance, DBInstance"},{"line_number":39,"context_line":"from trove.instance.models import FreshInstance"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"from trove.instance.models import InstanceStatus"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAS3%2F%2F8UM%3D","line":38,"in_reply_to":"AAAAS3%2F%2F8kU%3D","updated":"2013-09-16 20:16:41.000000000","message":"ok, sorry missed that \u003d/","commit_id":"d1a440a7fee6d2fed8e3d666de4f3bde59c0e412"},{"author":{"_account_id":1925,"name":"Vipul Sabhaya","email":"vipuls@gmail.com","username":"vipuls"},"change_message_id":"0a17d8154832ce465838d11e06d32b93c080d36c","unresolved":false,"context_lines":[{"line_number":198,"context_line":"                db_info.set_task_status(InstanceTasks."},{"line_number":199,"context_line":"                                        BUILDING_ERROR_TIMEOUT_GA)"},{"line_number":200,"context_line":"                db_info.save()"},{"line_number":201,"context_line":"                if CONF.instance_rollback_on_failure_with_delete:"},{"line_number":202,"context_line":"                    if server:"},{"line_number":203,"context_line":"                        self._nova_client.servers.delete(server)"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAS3%2F%2F24c%3D","line":201,"updated":"2013-09-18 06:36:23.000000000","message":"I am conflicted by this one.  I am ok with marking the service status and task status as \u0027failed\u0027 or \u0027error\u0027.  However, deleting the instance from Nova seems like a mistake.\n\n1. You will have a Trove instance record that\u0027s not marked \u0027deleted\u0027\n\n2. You will have other resources left around like security groups, volumes, etc.\n\n3. It will be confusing to the user as to why the instance doesn\u0027t exist anymore.","commit_id":"eba478fce243825c00f3783cdb9a2c5da17347ea"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"6384ab9ebb03b59c3e3116ba4e0a4cbbb09ef394","unresolved":false,"context_lines":[{"line_number":203,"context_line":"            service.set_status(ServiceStatuses."},{"line_number":204,"context_line":"                               FAILED_TIMEOUT_GUESTAGENT)"},{"line_number":205,"context_line":"            service.save()"},{"line_number":206,"context_line":"            LOG.error(_(\"Service status: %s\" %"},{"line_number":207,"context_line":"                        ServiceStatuses."},{"line_number":208,"context_line":"                        FAILED_TIMEOUT_GUESTAGENT.api_status))"},{"line_number":209,"context_line":"            LOG.error(_(\"Service error description: %s\" %"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAS3%2F%2FFoA%3D","line":206,"updated":"2013-10-04 16:13:11.000000000","message":"Shouldn\u0027t these be of the form\n\n_(\"format string with %s\") % (format_param)\n\notherwise _() wouldn\u0027t work as that string would never match","commit_id":"dc0b0c3c196e46b900170d3f1776694ce4f81c2d"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"6ee4cba40b7c6a9c0fd91bc257ae7ace41d7ba26","unresolved":false,"context_lines":[{"line_number":203,"context_line":"            service.set_status(ServiceStatuses."},{"line_number":204,"context_line":"                               FAILED_TIMEOUT_GUESTAGENT)"},{"line_number":205,"context_line":"            service.save()"},{"line_number":206,"context_line":"            LOG.error(_(\"Service status: %s\" %"},{"line_number":207,"context_line":"                        ServiceStatuses."},{"line_number":208,"context_line":"                        FAILED_TIMEOUT_GUESTAGENT.api_status))"},{"line_number":209,"context_line":"            LOG.error(_(\"Service error description: %s\" %"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATH%2F%2F%2F04%3D","line":206,"in_reply_to":"AAAAS3%2F%2FFD4%3D","updated":"2013-10-05 18:44:57.000000000","message":"Thanks for that.","commit_id":"dc0b0c3c196e46b900170d3f1776694ce4f81c2d"},{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"450edd1a0935323d8c147de66ddc5bb5c0aa856c","unresolved":false,"context_lines":[{"line_number":203,"context_line":"            service.set_status(ServiceStatuses."},{"line_number":204,"context_line":"                               FAILED_TIMEOUT_GUESTAGENT)"},{"line_number":205,"context_line":"            service.save()"},{"line_number":206,"context_line":"            LOG.error(_(\"Service status: %s\" %"},{"line_number":207,"context_line":"                        ServiceStatuses."},{"line_number":208,"context_line":"                        FAILED_TIMEOUT_GUESTAGENT.api_status))"},{"line_number":209,"context_line":"            LOG.error(_(\"Service error description: %s\" %"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAS3%2F%2FFD4%3D","line":206,"in_reply_to":"AAAAS3%2F%2FFoA%3D","updated":"2013-10-04 19:00:48.000000000","message":"https://review.openstack.org/#/c/46799/","commit_id":"dc0b0c3c196e46b900170d3f1776694ce4f81c2d"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"0927b887b5477c47b928af51c3c1ce8946e5b82f","unresolved":false,"context_lines":[{"line_number":36,"context_line":"from trove.instance.models import BuiltInstance"},{"line_number":37,"context_line":"from trove.instance.models import DBInstance"},{"line_number":38,"context_line":"from trove.instance.models import FreshInstance"},{"line_number":39,"context_line":"from trove.instance.tasks import InstanceTasks"},{"line_number":40,"context_line":"from trove.instance.models import InstanceStatus"},{"line_number":41,"context_line":"from trove.instance.models import InstanceServiceStatus"},{"line_number":42,"context_line":"from trove.common.instance import ServiceStatuses"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATH%2F%2F8M8%3D","line":39,"updated":"2013-10-07 18:26:38.000000000","message":"imports are not ordered correctly (you have a trove.instance.tasks in the middle of trove.instance.models)","commit_id":"0f40995e4a3a384bf02f5fb142636e6b21524865"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"622ab72a1df7c32982435cabb35b7f0e54f42fdc","unresolved":false,"context_lines":[{"line_number":36,"context_line":"from trove.instance.models import BuiltInstance"},{"line_number":37,"context_line":"from trove.instance.models import DBInstance"},{"line_number":38,"context_line":"from trove.instance.models import FreshInstance"},{"line_number":39,"context_line":"from trove.instance.tasks import InstanceTasks"},{"line_number":40,"context_line":"from trove.instance.models import InstanceStatus"},{"line_number":41,"context_line":"from trove.instance.models import InstanceServiceStatus"},{"line_number":42,"context_line":"from trove.common.instance import ServiceStatuses"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATH%2F%2F72c%3D","line":39,"in_reply_to":"AAAATH%2F%2F8M8%3D","updated":"2013-10-07 19:59:50.000000000","message":"Yes, but not critital until PEP8 rule would be designored.","commit_id":"0f40995e4a3a384bf02f5fb142636e6b21524865"},{"author":{"_account_id":7593,"name":"Haomai Wang","email":"haomaiwang@gmail.com","username":"HaomaiWang"},"change_message_id":"4715dfdb111c3987de70e2b20ab38f64827c60e9","unresolved":false,"context_lines":[{"line_number":39,"context_line":"from trove.instance.tasks import InstanceTasks"},{"line_number":40,"context_line":"from trove.instance.models import InstanceStatus"},{"line_number":41,"context_line":"from trove.instance.models import InstanceServiceStatus"},{"line_number":42,"context_line":"from trove.common.instance import ServiceStatuses"},{"line_number":43,"context_line":"from trove.instance.views import get_ip_address"},{"line_number":44,"context_line":"from trove.openstack.common import log as logging"},{"line_number":45,"context_line":"from trove.openstack.common.gettextutils import _"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAATH%2F%2F2HU%3D","line":42,"updated":"2013-10-09 03:32:43.000000000","message":"alphabetically","commit_id":"02dad3648786e9f2af0a3edd4f6fb3287033acdd"},{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"71c041a9a042db833ae2d8d55cda1453be45d93d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"from trove.instance.tasks import InstanceTasks"},{"line_number":40,"context_line":"from trove.instance.models import InstanceStatus"},{"line_number":41,"context_line":"from trove.instance.models import InstanceServiceStatus"},{"line_number":42,"context_line":"from trove.common.instance import ServiceStatuses"},{"line_number":43,"context_line":"from trove.instance.views import get_ip_address"},{"line_number":44,"context_line":"from trove.openstack.common import log as logging"},{"line_number":45,"context_line":"from trove.openstack.common.gettextutils import _"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAATH%2F%2FziY%3D","line":42,"in_reply_to":"AAAATH%2F%2F17w%3D","updated":"2013-10-09 15:29:14.000000000","message":"just do it. 2 people have asked you.","commit_id":"02dad3648786e9f2af0a3edd4f6fb3287033acdd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"72fa6b5715ae846b453f6ee9b761866636a72719","unresolved":false,"context_lines":[{"line_number":39,"context_line":"from trove.instance.tasks import InstanceTasks"},{"line_number":40,"context_line":"from trove.instance.models import InstanceStatus"},{"line_number":41,"context_line":"from trove.instance.models import InstanceServiceStatus"},{"line_number":42,"context_line":"from trove.common.instance import ServiceStatuses"},{"line_number":43,"context_line":"from trove.instance.views import get_ip_address"},{"line_number":44,"context_line":"from trove.openstack.common import log as logging"},{"line_number":45,"context_line":"from trove.openstack.common.gettextutils import _"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAATH%2F%2F17w%3D","line":42,"in_reply_to":"AAAATH%2F%2F2HU%3D","updated":"2013-10-09 04:20:17.000000000","message":"If you would like it so, enable PEP8 rule, until that, it is not necassery to keep them alpabetical","commit_id":"02dad3648786e9f2af0a3edd4f6fb3287033acdd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"6ff6f75921f8228930cee40c70f28cb402c9c95a","unresolved":false,"context_lines":[{"line_number":39,"context_line":"from trove.instance.tasks import InstanceTasks"},{"line_number":40,"context_line":"from trove.instance.models import InstanceStatus"},{"line_number":41,"context_line":"from trove.instance.models import InstanceServiceStatus"},{"line_number":42,"context_line":"from trove.common.instance import ServiceStatuses"},{"line_number":43,"context_line":"from trove.instance.views import get_ip_address"},{"line_number":44,"context_line":"from trove.openstack.common import log as logging"},{"line_number":45,"context_line":"from trove.openstack.common.gettextutils import _"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAATH%2F%2Fzh0%3D","line":42,"in_reply_to":"AAAATH%2F%2FziY%3D","updated":"2013-10-09 15:30:07.000000000","message":"fair enough, i\u0027ll do that, thanks!","commit_id":"02dad3648786e9f2af0a3edd4f6fb3287033acdd"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"81beb6c67ccd7ab7bfc24477dd644159d3b7361f","unresolved":false,"context_lines":[{"line_number":223,"context_line":"            LOG.error(_(\"Trove instance status description: %(text)s\") %"},{"line_number":224,"context_line":"                      {\u0027text\u0027: InstanceTasks."},{"line_number":225,"context_line":"                      BUILDING_ERROR_TIMEOUT_GA.db_text})"},{"line_number":226,"context_line":"            return service.get_status(), db_info.get_task_status()"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    def _service_is_active(self):"},{"line_number":229,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAATH%2F%2Fw2s%3D","line":226,"updated":"2013-10-10 06:56:56.000000000","message":"Do we need these calls to get_status() and get_task_status() if we are not doing anything with the return value?","commit_id":"a811366bfff0bf27348428dccf9bbdd69bf047d3"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"516f9236c3feac2b5461effcba1d23d249974e75","unresolved":false,"context_lines":[{"line_number":223,"context_line":"            LOG.error(_(\"Trove instance status description: %(text)s\") %"},{"line_number":224,"context_line":"                      {\u0027text\u0027: InstanceTasks."},{"line_number":225,"context_line":"                      BUILDING_ERROR_TIMEOUT_GA.db_text})"},{"line_number":226,"context_line":"            return service.get_status(), db_info.get_task_status()"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    def _service_is_active(self):"},{"line_number":229,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAATH%2F%2Fwzc%3D","line":226,"in_reply_to":"AAAATH%2F%2Fw2s%3D","updated":"2013-10-10 07:00:19.000000000","message":"Yes, this helps us to test this functionality, please take a look at tests.","commit_id":"a811366bfff0bf27348428dccf9bbdd69bf047d3"}],"trove/tests/unittests/taskmanager/test_models.py":[{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"acebe81439b8a95fe664cf4d58089d5047c78dba","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        self.assertIsNotNone(server)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def update_status_of_intance_failre(self):"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        class fake_InstanceServiceStatus(object):"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAS3%2F%2FHCg%3D","line":130,"updated":"2013-10-04 08:14:46.000000000","message":"typo: \u0027failre\u0027 instead of \u0027failure\u0027","commit_id":"1d760e072156fd8ce29bdd5a2cf46cabafb031c7"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"acebe81439b8a95fe664cf4d58089d5047c78dba","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        server.status \u003d \u0027BUILDING\u0027"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        def server_is_failed():"},{"line_number":186,"context_line":"            if server.status in [\u0027BUILDING\u0027, \u0027FAILED\u0027, \u0027ERROR\u0027]:"},{"line_number":187,"context_line":"                return True"},{"line_number":188,"context_line":"            else:"},{"line_number":189,"context_line":"                return False"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAS3%2F%2FHCA%3D","line":186,"updated":"2013-10-04 08:14:46.000000000","message":"mb just \u0027return server.status in [\u0027BUILDING\u0027, \u0027FAILED\u0027, \u0027ERROR\u0027]\u0027  ?","commit_id":"1d760e072156fd8ce29bdd5a2cf46cabafb031c7"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"acebe81439b8a95fe664cf4d58089d5047c78dba","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        db_instance \u003d None"},{"line_number":193,"context_line":"        poll_until(server_is_failed, sleep_time\u003d1, time_out\u003d100)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        if server.status is \u0027BUILDING\u0027:"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"            instance_service_status \u003d (fake_InstanceServiceStatus."},{"line_number":198,"context_line":"                                       find_by(instance_id\u003duuid4()))"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAS3%2F%2FHAU%3D","line":195,"updated":"2013-10-04 08:14:46.000000000","message":"I didn\u0027t quite get your idea. If you want to test models against your new statuses then you don\u0027t need to create server and poll for its status. If you want to check whether status is updated properly in case of timeout then you should not set statuses yourself. Am I missing something?","commit_id":"1d760e072156fd8ce29bdd5a2cf46cabafb031c7"},{"author":{"_account_id":7593,"name":"Haomai Wang","email":"haomaiwang@gmail.com","username":"HaomaiWang"},"change_message_id":"4715dfdb111c3987de70e2b20ab38f64827c60e9","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def test_update_status_of_intance_failure(self):"},{"line_number":195,"context_line":"        InstanceServiceStatus.find_by \u003d (Mock("},{"line_number":196,"context_line":"            return_value\u003dfake_InstanceServiceStatus.find_by()))"},{"line_number":197,"context_line":"        DBInstance.find_by \u003d Mock(return_value\u003dfake_DBInstance.find_by())"},{"line_number":198,"context_line":"        service_type \u003d \u0027mysql\u0027"},{"line_number":199,"context_line":"        server \u003d self.freshinstancetasks._create_server("}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAATH%2F%2F2GU%3D","line":196,"updated":"2013-10-09 03:32:43.000000000","message":"redundant brackets","commit_id":"02dad3648786e9f2af0a3edd4f6fb3287033acdd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"72fa6b5715ae846b453f6ee9b761866636a72719","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def test_update_status_of_intance_failure(self):"},{"line_number":195,"context_line":"        InstanceServiceStatus.find_by \u003d (Mock("},{"line_number":196,"context_line":"            return_value\u003dfake_InstanceServiceStatus.find_by()))"},{"line_number":197,"context_line":"        DBInstance.find_by \u003d Mock(return_value\u003dfake_DBInstance.find_by())"},{"line_number":198,"context_line":"        service_type \u003d \u0027mysql\u0027"},{"line_number":199,"context_line":"        server \u003d self.freshinstancetasks._create_server("}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAATH%2F%2F17g%3D","line":196,"in_reply_to":"AAAATH%2F%2F2GU%3D","updated":"2013-10-09 04:20:17.000000000","message":"agreed","commit_id":"02dad3648786e9f2af0a3edd4f6fb3287033acdd"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"81beb6c67ccd7ab7bfc24477dd644159d3b7361f","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from mock import Mock"},{"line_number":16,"context_line":"from testtools.matchers import Equals"},{"line_number":17,"context_line":"from mockito import mock, when, unstub, any, verify, never"},{"line_number":18,"context_line":"from trove.taskmanager import models as tm_mod"},{"line_number":19,"context_line":"import trove.common.remote as remote"},{"line_number":20,"context_line":"from trove.common.instance import ServiceStatuses"},{"line_number":21,"context_line":"from trove.instance.models import InstanceServiceStatus"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAATH%2F%2Fw10%3D","line":18,"updated":"2013-10-10 06:56:56.000000000","message":"Please leave this as taskmanager_models unless you have a reason to change this. It\u0027s important to have a consistent style through the codebase and we are using the style \u003ccomponent\u003e_models. eg. backup_models, taskmanager_models, database_models, etc. I don\u0027t see any reason to move away from this...","commit_id":"a811366bfff0bf27348428dccf9bbdd69bf047d3"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"516f9236c3feac2b5461effcba1d23d249974e75","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from mock import Mock"},{"line_number":16,"context_line":"from testtools.matchers import Equals"},{"line_number":17,"context_line":"from mockito import mock, when, unstub, any, verify, never"},{"line_number":18,"context_line":"from trove.taskmanager import models as tm_mod"},{"line_number":19,"context_line":"import trove.common.remote as remote"},{"line_number":20,"context_line":"from trove.common.instance import ServiceStatuses"},{"line_number":21,"context_line":"from trove.instance.models import InstanceServiceStatus"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAATH%2F%2FwzQ%3D","line":18,"in_reply_to":"AAAATH%2F%2Fw10%3D","updated":"2013-10-10 07:00:19.000000000","message":"ok","commit_id":"a811366bfff0bf27348428dccf9bbdd69bf047d3"},{"author":{"_account_id":1925,"name":"Vipul Sabhaya","email":"vipuls@gmail.com","username":"vipuls"},"change_message_id":"ea6df3a3be1421d1dfffd5c97cedcae7808f8813","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        self.assertEqual(service_status,"},{"line_number":213,"context_line":"                         ServiceStatuses.FAILED_TIMEOUT_GUESTAGENT)"},{"line_number":214,"context_line":"        self.assertEqual(db_status,"},{"line_number":215,"context_line":"                         InstanceTasks.BUILDING_ERROR_TIMEOUT_GA)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"class BackupTasksTest(testtools.TestCase):"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAATH%2F%2FtO8%3D","line":215,"updated":"2013-10-10 22:18:06.000000000","message":"Please change this test to not rely on the return Values, and remove the \u0027return\u0027 statement in update_statuses_on_time_out() since it doesn\u0027t get used except by this test.","commit_id":"9865985fbb778dbf95a49bd7a9c8df5dcdad1832"}]}
