)]}'
{"bin/trove-conductor":[{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"d8317820079a5b8d02b96c04ab70021c74d7be86","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"gettext.install(\u0027trove\u0027, unicode\u003d1)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"# If ../trove/__init__.py exists, add ../ to Python search path, so that"},{"line_number":32,"context_line":"# it will override what happens to be installed in /usr/(local/)lib/python..."},{"line_number":33,"context_line":"possible_topdir \u003d os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),"},{"line_number":34,"context_line":"                                                os.pardir,"}],"source_content_type":"application/octet-stream","patch_set":14,"id":"AAAATX%2F%2F9Fw%3D","line":31,"updated":"2013-10-23 18:45:42.000000000","message":"I know we have this code sprinkled everywhere. But I\u0027m 99.9% certain this is not needed as in development you can install with setup.py develop or pip install -e and in production you should install the module properly in the Python path to begin with.","commit_id":"e7d42fc22887bddca445976f05df62125f96213e"},{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"e0bf30431a628edff80b991cf61b79ccb9cfa780","unresolved":false,"context_lines":[{"line_number":39,"context_line":"CONF \u003d cfg.CONF"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"},{"line_number":42,"context_line":"    cfg.parse_args(sys.argv)"},{"line_number":43,"context_line":"    logging.setup(None)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    try:"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"AAAATn%2F%2F8do%3D","line":42,"updated":"2013-10-24 19:49:54.000000000","message":"Can you put all this logic in a main() function and call that here.","commit_id":"d585b2482b6a7ec673071819ed137d8ee9487895"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"8588c1e005ed54eb5d60420e73cb3d18d34b81ef","unresolved":false,"context_lines":[{"line_number":39,"context_line":"CONF \u003d cfg.CONF"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"},{"line_number":42,"context_line":"    cfg.parse_args(sys.argv)"},{"line_number":43,"context_line":"    logging.setup(None)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    try:"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"AAAATn%2F%2F5iU%3D","line":42,"in_reply_to":"AAAATn%2F%2F7i8%3D","updated":"2013-10-25 14:44:12.000000000","message":"I\u0027m already making the change.","commit_id":"d585b2482b6a7ec673071819ed137d8ee9487895"},{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"3ec575ab934532f5f8f5e8ada1e91551e368ebd9","unresolved":false,"context_lines":[{"line_number":39,"context_line":"CONF \u003d cfg.CONF"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"},{"line_number":42,"context_line":"    cfg.parse_args(sys.argv)"},{"line_number":43,"context_line":"    logging.setup(None)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    try:"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"AAAATn%2F%2F7i8%3D","line":42,"in_reply_to":"AAAATn%2F%2F8bE%3D","updated":"2013-10-25 02:11:45.000000000","message":"ok, ok, I\u0027ll submit a different review to clean all these scripts up :)","commit_id":"d585b2482b6a7ec673071819ed137d8ee9487895"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"491866568e95755d68bb87bca1aa62d6cfccfced","unresolved":false,"context_lines":[{"line_number":39,"context_line":"CONF \u003d cfg.CONF"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"},{"line_number":42,"context_line":"    cfg.parse_args(sys.argv)"},{"line_number":43,"context_line":"    logging.setup(None)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    try:"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"AAAATn%2F%2F8bE%3D","line":42,"in_reply_to":"AAAATn%2F%2F8do%3D","updated":"2013-10-24 20:02:13.000000000","message":"You\u0027re killin\u0027 me, smalls!","commit_id":"d585b2482b6a7ec673071819ed137d8ee9487895"},{"author":{"_account_id":1925,"name":"Vipul Sabhaya","email":"vipuls@gmail.com","username":"vipuls"},"change_message_id":"43717cb222f4aa7b05e666b8fa135a0faa759e98","unresolved":false,"context_lines":[{"line_number":39,"context_line":"def main():"},{"line_number":40,"context_line":"    get_db_api().configure_db(CONF)"},{"line_number":41,"context_line":"    manager \u003d \u0027trove.conductor.manager.Manager\u0027"},{"line_number":42,"context_line":"    topic \u003d \"trove-conductor\""},{"line_number":43,"context_line":"    server \u003d rpc_service.RpcService(manager\u003dmanager, topic\u003dtopic)"},{"line_number":44,"context_line":"    launcher \u003d openstack_service.launch(server)"},{"line_number":45,"context_line":"    launcher.wait()"}],"source_content_type":"application/octet-stream","patch_set":19,"id":"AAAATn%2F%2FtU0%3D","line":42,"updated":"2013-10-30 06:32:39.000000000","message":"Seems like you declare a \u0027conductor_queue\u0027 in the cfg, but never actually read the config value?","commit_id":"6389c5e033358c1919bed5e93fffaca87ab98458"},{"author":{"_account_id":1925,"name":"Vipul Sabhaya","email":"vipuls@gmail.com","username":"vipuls"},"change_message_id":"43717cb222f4aa7b05e666b8fa135a0faa759e98","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    manager \u003d \u0027trove.conductor.manager.Manager\u0027"},{"line_number":42,"context_line":"    topic \u003d \"trove-conductor\""},{"line_number":43,"context_line":"    server \u003d rpc_service.RpcService(manager\u003dmanager, topic\u003dtopic)"},{"line_number":44,"context_line":"    launcher \u003d openstack_service.launch(server)"},{"line_number":45,"context_line":"    launcher.wait()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":19,"id":"AAAATn%2F%2FtVc%3D","line":44,"updated":"2013-10-30 06:32:39.000000000","message":"can we pass in a workers argument here as well so that we can run this in multi-process mode?","commit_id":"6389c5e033358c1919bed5e93fffaca87ab98458"},{"author":{"_account_id":1925,"name":"Vipul Sabhaya","email":"vipuls@gmail.com","username":"vipuls"},"change_message_id":"8223e9d38668506d1502a026455b4ba442afc710","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    manager \u003d \u0027trove.conductor.manager.Manager\u0027"},{"line_number":42,"context_line":"    topic \u003d CONF.conductor_queue"},{"line_number":43,"context_line":"    server \u003d rpc_service.RpcService(manager\u003dmanager, topic\u003dtopic)"},{"line_number":44,"context_line":"    launcher \u003d openstack_service.launch(server, workers\u003dCONF.trove_api_workers)"},{"line_number":45,"context_line":"    launcher.wait()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":20,"id":"AAAATn%2F%2Foyo%3D","line":44,"updated":"2013-10-31 03:51:18.000000000","message":"Let\u0027s introduce a new argument \u0027trove_conductor_workers\u0027","commit_id":"96c73b8c0c380da50adb822c30d1c41351f25c17"},{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"909539726b845ec4658386c9b4575d818cb443de","unresolved":false,"context_lines":[{"line_number":17,"context_line":"#    under the License."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import eventlet"},{"line_number":20,"context_line":"eventlet.monkey_patch()"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import gettext"},{"line_number":23,"context_line":"import traceback"}],"source_content_type":"application/octet-stream","patch_set":24,"id":"AAAATn%2F%2B5Vc%3D","line":20,"updated":"2013-11-18 21:37:47.000000000","message":"Where is the debugging logic? can we get that put in here?\n\nhttps://github.com/openstack/trove/blob/master/bin/trove-taskmanager#L55","commit_id":"fbc14ed9e44ba33ea82d2e3f684a5df200f7c255"}],"doc/source/dev/design.rst":[{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"2cea9dc04f6f347f0a7b605e7a02ac2362d2c0b8","unresolved":false,"context_lines":[{"line_number":91,"context_line":"* Actual handling is usually done in the dbaas.py module"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Trove-conductor"},{"line_number":95,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Conductor is a service that runs on the host, responsible for recieving"}],"source_content_type":"text/x-rst","patch_set":25,"id":"AAAATn%2F%2B4lA%3D","line":94,"updated":"2013-11-19 00:13:57.000000000","message":"in looking at the code, i don\u0027t see anything that prohibits the conductor from running on a different host than that of the api/taskmanager. if that\u0027s the case, it might be nice to add a little note indicating so.","commit_id":"58238dfe07a98cfab86e8dcb3671ef40ddcfde2f"}],"etc/trove/trove-conductor.conf.sample":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"d12d47af7c3805ec0511cd2830fab9814050bc8b","unresolved":false,"context_lines":[{"line_number":11,"context_line":"device_path \u003d /dev/vdb"},{"line_number":12,"context_line":"exists_notification_ticks \u003d 30"},{"line_number":13,"context_line":"exists_notification_transformer \u003d trove.extensions.mgmt.instances.models.NovaNotificationTransformer"},{"line_number":14,"context_line":"mount_point \u003d /var/lib/mysql"},{"line_number":15,"context_line":"notification_driver\u003dtrove.openstack.common.notifier.rpc_notifier"},{"line_number":16,"context_line":"notification_service_id \u003d 2f3ff068-2bfb-4f70-9a9d-a6bb65bc084b"},{"line_number":17,"context_line":"notifier_queue_hostname \u003d localhost"}],"source_content_type":"application/octet-stream","patch_set":10,"id":"AAAATH%2F%2FUaY%3D","line":14,"updated":"2013-10-17 20:23:41.000000000","message":"should be comfigurable per service type","commit_id":"e316cb168894f2f47e6ffb602ccfc091d243aa34"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"91cb1184bc593e5cfe5d6e7618a01e16185e997b","unresolved":false,"context_lines":[{"line_number":11,"context_line":"device_path \u003d /dev/vdb"},{"line_number":12,"context_line":"exists_notification_ticks \u003d 30"},{"line_number":13,"context_line":"exists_notification_transformer \u003d trove.extensions.mgmt.instances.models.NovaNotificationTransformer"},{"line_number":14,"context_line":"mount_point \u003d /var/lib/mysql"},{"line_number":15,"context_line":"notification_driver\u003dtrove.openstack.common.notifier.rpc_notifier"},{"line_number":16,"context_line":"notification_service_id \u003d 2f3ff068-2bfb-4f70-9a9d-a6bb65bc084b"},{"line_number":17,"context_line":"notifier_queue_hostname \u003d localhost"}],"source_content_type":"application/octet-stream","patch_set":10,"id":"AAAATH%2F%2FUHc%3D","line":14,"in_reply_to":"AAAATH%2F%2FUSc%3D","updated":"2013-10-17 21:15:17.000000000","message":"Could you made this config more precise and clean ?","commit_id":"e316cb168894f2f47e6ffb602ccfc091d243aa34"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"7f2390daf11d623e2b2a60cfab585b943ebb3176","unresolved":false,"context_lines":[{"line_number":11,"context_line":"device_path \u003d /dev/vdb"},{"line_number":12,"context_line":"exists_notification_ticks \u003d 30"},{"line_number":13,"context_line":"exists_notification_transformer \u003d trove.extensions.mgmt.instances.models.NovaNotificationTransformer"},{"line_number":14,"context_line":"mount_point \u003d /var/lib/mysql"},{"line_number":15,"context_line":"notification_driver\u003dtrove.openstack.common.notifier.rpc_notifier"},{"line_number":16,"context_line":"notification_service_id \u003d 2f3ff068-2bfb-4f70-9a9d-a6bb65bc084b"},{"line_number":17,"context_line":"notifier_queue_hostname \u003d localhost"}],"source_content_type":"application/octet-stream","patch_set":10,"id":"AAAATH%2F%2FUSc%3D","line":14,"in_reply_to":"AAAATH%2F%2FUaY%3D","updated":"2013-10-17 20:32:00.000000000","message":"this is only a sample, it\u0027s not used when building the actual config.\ni think the only field i really need in here is control_exchange, which is already defaulted to trove in cfg anyway","commit_id":"e316cb168894f2f47e6ffb602ccfc091d243aa34"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"7f2390daf11d623e2b2a60cfab585b943ebb3176","unresolved":false,"context_lines":[{"line_number":36,"context_line":"swift_url \u003d http://localhost:8080/v1/AUTH_"},{"line_number":37,"context_line":"taskmanager_manager\u003dtrove.taskmanager.manager.Manager"},{"line_number":38,"context_line":"trove_auth_url \u003d http://0.0.0.0:5000/v2.0"},{"line_number":39,"context_line":"trove_auth_url \u003d http://0.0.0.0:5000/v2.0"},{"line_number":40,"context_line":"trove_dns_support \u003d False"},{"line_number":41,"context_line":"trove_volume_support \u003d True"},{"line_number":42,"context_line":"use_nova_server_volume \u003d False"}],"source_content_type":"application/octet-stream","patch_set":10,"id":"AAAATH%2F%2FUSU%3D","line":39,"updated":"2013-10-17 20:32:00.000000000","message":"huh","commit_id":"e316cb168894f2f47e6ffb602ccfc091d243aa34"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"91cb1184bc593e5cfe5d6e7618a01e16185e997b","unresolved":false,"context_lines":[{"line_number":36,"context_line":"swift_url \u003d http://localhost:8080/v1/AUTH_"},{"line_number":37,"context_line":"taskmanager_manager\u003dtrove.taskmanager.manager.Manager"},{"line_number":38,"context_line":"trove_auth_url \u003d http://0.0.0.0:5000/v2.0"},{"line_number":39,"context_line":"trove_auth_url \u003d http://0.0.0.0:5000/v2.0"},{"line_number":40,"context_line":"trove_dns_support \u003d False"},{"line_number":41,"context_line":"trove_volume_support \u003d True"},{"line_number":42,"context_line":"use_nova_server_volume \u003d False"}],"source_content_type":"application/octet-stream","patch_set":10,"id":"AAAATH%2F%2FUHY%3D","line":39,"in_reply_to":"AAAATH%2F%2FUSU%3D","updated":"2013-10-17 21:15:17.000000000","message":"yup","commit_id":"e316cb168894f2f47e6ffb602ccfc091d243aa34"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"d12d47af7c3805ec0511cd2830fab9814050bc8b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"taskmanager_manager\u003dtrove.taskmanager.manager.Manager"},{"line_number":38,"context_line":"trove_auth_url \u003d http://0.0.0.0:5000/v2.0"},{"line_number":39,"context_line":"trove_auth_url \u003d http://0.0.0.0:5000/v2.0"},{"line_number":40,"context_line":"trove_dns_support \u003d False"},{"line_number":41,"context_line":"trove_volume_support \u003d True"},{"line_number":42,"context_line":"use_nova_server_volume \u003d False"},{"line_number":43,"context_line":"verbose \u003d True"}],"source_content_type":"application/octet-stream","patch_set":10,"id":"AAAATH%2F%2FUaA%3D","line":40,"updated":"2013-10-17 20:23:41.000000000","message":"why do we need it here ?","commit_id":"e316cb168894f2f47e6ffb602ccfc091d243aa34"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"7f2390daf11d623e2b2a60cfab585b943ebb3176","unresolved":false,"context_lines":[{"line_number":37,"context_line":"taskmanager_manager\u003dtrove.taskmanager.manager.Manager"},{"line_number":38,"context_line":"trove_auth_url \u003d http://0.0.0.0:5000/v2.0"},{"line_number":39,"context_line":"trove_auth_url \u003d http://0.0.0.0:5000/v2.0"},{"line_number":40,"context_line":"trove_dns_support \u003d False"},{"line_number":41,"context_line":"trove_volume_support \u003d True"},{"line_number":42,"context_line":"use_nova_server_volume \u003d False"},{"line_number":43,"context_line":"verbose \u003d True"}],"source_content_type":"application/octet-stream","patch_set":10,"id":"AAAATH%2F%2FUSQ%3D","line":40,"in_reply_to":"AAAATH%2F%2FUaA%3D","updated":"2013-10-17 20:32:00.000000000","message":"probably don\u0027t, this is a shameless dupe of the ga conf sample.\n\ni\u0027ll build a neater sample config anyway just to resolve any confusion","commit_id":"e316cb168894f2f47e6ffb602ccfc091d243aa34"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"d12d47af7c3805ec0511cd2830fab9814050bc8b","unresolved":false,"context_lines":[{"line_number":39,"context_line":"trove_auth_url \u003d http://0.0.0.0:5000/v2.0"},{"line_number":40,"context_line":"trove_dns_support \u003d False"},{"line_number":41,"context_line":"trove_volume_support \u003d True"},{"line_number":42,"context_line":"use_nova_server_volume \u003d False"},{"line_number":43,"context_line":"verbose \u003d True"},{"line_number":44,"context_line":"volume_time_out\u003d30"}],"source_content_type":"application/octet-stream","patch_set":10,"id":"AAAATH%2F%2FUZw%3D","line":42,"updated":"2013-10-17 20:23:41.000000000","message":"same for lines 41, 42","commit_id":"e316cb168894f2f47e6ffb602ccfc091d243aa34"}],"etc/trove/trove-guestagent.conf.sample":[{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"7c76617027dd03da603da6ea4897489fe2cc0dbb","unresolved":false,"context_lines":[{"line_number":17,"context_line":"# SQLAlchemy connection string for the reference implementation"},{"line_number":18,"context_line":"# registry server. Any valid SQLAlchemy connection string is fine."},{"line_number":19,"context_line":"# See: http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/connections.html#sqlalchemy.create_engine"},{"line_number":20,"context_line":"#sql_connection \u003d sqlite:///trove_test.sqlite"},{"line_number":21,"context_line":"sql_connection \u003d mysql://root:e1a2c042c828d3566d0a@10.0.0.1/trove?charset\u003dutf8"},{"line_number":22,"context_line":"#sql_connection \u003d postgresql://trove:trove@10.0.0.1/trove"},{"line_number":23,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":32,"id":"AAAATn%2F%2Bd40%3D","line":20,"updated":"2013-11-25 19:07:06.000000000","message":"Do we still need to config sql connection if the guest agent uses the conductor?","commit_id":"f5b8e55d6ec3f5072f2e7282f80d44737e507eae"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"9f4b6fae48125ef6a4939de02b6be17d2f4a77a7","unresolved":false,"context_lines":[{"line_number":17,"context_line":"# SQLAlchemy connection string for the reference implementation"},{"line_number":18,"context_line":"# registry server. Any valid SQLAlchemy connection string is fine."},{"line_number":19,"context_line":"# See: http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/connections.html#sqlalchemy.create_engine"},{"line_number":20,"context_line":"#sql_connection \u003d sqlite:///trove_test.sqlite"},{"line_number":21,"context_line":"sql_connection \u003d mysql://root:e1a2c042c828d3566d0a@10.0.0.1/trove?charset\u003dutf8"},{"line_number":22,"context_line":"#sql_connection \u003d postgresql://trove:trove@10.0.0.1/trove"},{"line_number":23,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":32,"id":"AAAATn%2F%2Bd20%3D","line":20,"in_reply_to":"AAAATn%2F%2Bd40%3D","updated":"2013-11-25 19:14:22.000000000","message":"No, I guess we shouldn\u0027t.","commit_id":"f5b8e55d6ec3f5072f2e7282f80d44737e507eae"}],"requirements.txt":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"47cfe9dea687fe4f10e310b482fde524d02c14ed","unresolved":false,"context_lines":[{"line_number":13,"context_line":"lxml\u003e\u003d2.3"},{"line_number":14,"context_line":"python-heatclient\u003e\u003d0.2.3"},{"line_number":15,"context_line":"python-novaclient\u003e\u003d2.15.0"},{"line_number":16,"context_line":"python-cinderclient\u003e\u003d1.0.6"},{"line_number":17,"context_line":"python-keystoneclient\u003e\u003d0.4.1"},{"line_number":18,"context_line":"python-swiftclient\u003e\u003d1.5"},{"line_number":19,"context_line":"iso8601\u003e\u003d0.1.8"}],"source_content_type":"text/plain","patch_set":18,"id":"AAAATn%2F%2F3AI%3D","line":16,"updated":"2013-10-26 18:12:22.000000000","message":"i suppose this lines could be separate review","commit_id":"cbf9f7b9525525ff79f334aea024a71e9ca73f45"}],"test-requirements.txt":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"47cfe9dea687fe4f10e310b482fde524d02c14ed","unresolved":false,"context_lines":[{"line_number":12,"context_line":"openstack.nose_plugin\u003e\u003d0.7"},{"line_number":13,"context_line":"WebTest\u003e\u003d2.0"},{"line_number":14,"context_line":"wsgi_intercept"},{"line_number":15,"context_line":"http://tarballs.openstack.org/python-troveclient/python-troveclient-master.tar.gz#egg\u003dpython-troveclient"},{"line_number":16,"context_line":"mock\u003e\u003d1.0"},{"line_number":17,"context_line":"mockito"},{"line_number":18,"context_line":"mox\u003e\u003d0.5.3"}],"source_content_type":"text/plain","patch_set":18,"id":"AAAATn%2F%2F2%2F8%3D","line":15,"updated":"2013-10-26 18:12:22.000000000","message":"same as requirements.txt","commit_id":"cbf9f7b9525525ff79f334aea024a71e9ca73f45"}],"trove/backup/models.py":[{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"d8317820079a5b8d02b96c04ab70021c74d7be86","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            backup_info \u003d {\u0027id\u0027: db_info.id,"},{"line_number":80,"context_line":"                           \u0027name\u0027: name,"},{"line_number":81,"context_line":"                           \u0027description\u0027: description,"},{"line_number":82,"context_line":"                           \u0027instance_id\u0027: instance_id,"},{"line_number":83,"context_line":"                           }"},{"line_number":84,"context_line":"            api.API(context).create_backup(backup_info, instance_id)"},{"line_number":85,"context_line":"            return db_info"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATX%2F%2F9Ek%3D","line":82,"updated":"2013-10-23 18:45:42.000000000","message":"Add backup_type too.","commit_id":"e7d42fc22887bddca445976f05df62125f96213e"}],"trove/conductor/manager.py":[{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"a02214069a1d25e8c7e5d6c9c01bcb0b6bc0462a","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"class Manager(periodic_task.PeriodicTasks):"},{"line_number":14,"context_line":"    #RPC_API_VERSION \u003d RPC_API_VERSION"},{"line_number":15,"context_line":"    #RPC_API_NAMESPACE \u003d None"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FPJ4%3D","line":14,"updated":"2013-10-01 19:19:17.000000000","message":"whats the reason for the comments here and defined above?","commit_id":"4255ca4e3e11449483e1720f59f57060450b2e1f"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"2082e057b29621fe5f34f770e9b8339445123572","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"class Manager(periodic_task.PeriodicTasks):"},{"line_number":14,"context_line":"    #RPC_API_VERSION \u003d RPC_API_VERSION"},{"line_number":15,"context_line":"    #RPC_API_NAMESPACE \u003d None"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FPIw%3D","line":14,"in_reply_to":"AAAAS3%2F%2FPJ4%3D","updated":"2013-10-01 19:21:10.000000000","message":"augh, also already sitting on that change too","commit_id":"4255ca4e3e11449483e1720f59f57060450b2e1f"},{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"d8317820079a5b8d02b96c04ab70021c74d7be86","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                      **backup_fields):"},{"line_number":38,"context_line":"        LOG.debug(\"Instance ID: %s\" % str(instance_id))"},{"line_number":39,"context_line":"        LOG.debug(\"Backup ID: %s\" % str(backup_id))"},{"line_number":40,"context_line":"        backup \u003d bkup_models.DBBackup.find_by(id\u003dbackup_id)"},{"line_number":41,"context_line":"        for k, v in backup_fields.items():"},{"line_number":42,"context_line":"            if hasattr(backup, k):"},{"line_number":43,"context_line":"                LOG.debug(\"Backup %s: %s\" % (k, v))"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATX%2F%2F88c%3D","line":40,"updated":"2013-10-23 18:45:42.000000000","message":"I think there needs to be a little more logic to check that the backup is in the correct state before updating it. IE from NEW to BUILDING and from BUILDING to ERROR or COMPLETED. Also the save method should add the context to make sure the user actually owns this backup.  Also check that the instance_id matches the backup.instance_id","commit_id":"e7d42fc22887bddca445976f05df62125f96213e"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"00fb42b1c1165856af96e3c568f5fb5d6e95425f","unresolved":false,"context_lines":[{"line_number":44,"context_line":"            status.set_status(ServiceStatus.from_description("},{"line_number":45,"context_line":"                payload[\u0027service_status\u0027]))"},{"line_number":46,"context_line":"        if payload.get(\u0027service_type\u0027) is not None:"},{"line_number":47,"context_line":"            status.service_type \u003d payload[\u0027service_type\u0027]"},{"line_number":48,"context_line":"        status.save()"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def update_backup(self, context, instance_id, backup_id,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F%2Fp%2F8%3D","line":47,"updated":"2013-10-30 19:09:00.000000000","message":"Wait a second...","commit_id":"6389c5e033358c1919bed5e93fffaca87ab98458"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"2cea9dc04f6f347f0a7b605e7a02ac2362d2c0b8","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        LOG.debug(\"Instance ID: %s\" % str(instance_id))"},{"line_number":50,"context_line":"        LOG.debug(\"Backup ID: %s\" % str(backup_id))"},{"line_number":51,"context_line":"        backup \u003d bkup_models.DBBackup.find_by(id\u003dbackup_id)"},{"line_number":52,"context_line":"        # TODO(datsun180b): use context to verify tenant matches"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        # Some verification based on IDs"},{"line_number":55,"context_line":"        if backup_id !\u003d backup.id:"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAATn%2F%2B4ms%3D","line":52,"updated":"2013-11-19 00:13:57.000000000","message":"is this TODO still relevant? if not, it looks like all of the nova-related logic can be stripped.","commit_id":"58238dfe07a98cfab86e8dcb3671ef40ddcfde2f"},{"author":{"_account_id":1925,"name":"Vipul Sabhaya","email":"vipuls@gmail.com","username":"vipuls"},"change_message_id":"5c7bc6268ebc8bbe0b08e4707c2ec54f1ec1f010","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        status \u003d t_models.InstanceServiceStatus.find_by("},{"line_number":41,"context_line":"            instance_id\u003dinstance_id)"},{"line_number":42,"context_line":"        if payload.get(\u0027service_status\u0027) is not None:"},{"line_number":43,"context_line":"            status.set_status(ServiceStatus.from_description("},{"line_number":44,"context_line":"                payload[\u0027service_status\u0027]))"},{"line_number":45,"context_line":"        status.save()"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"AAAATn%2F%2Bklk%3D","line":43,"updated":"2013-11-22 23:54:16.000000000","message":"I wonder if it\u0027s better to also require theservice_status code (not just description) in the payload, the lookup is cheaper anyway","commit_id":"6418bea2e82676c638d01794e4f944b5b8c22e0a"}],"trove/guestagent/backup/backupagent.py":[{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"d8317820079a5b8d02b96c04ab70021c74d7be86","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            user\u003dCONF.nova_proxy_admin_user,"},{"line_number":62,"context_line":"            auth_token\u003dCONF.nova_proxy_admin_pass)"},{"line_number":63,"context_line":"        conductor \u003d conductor_api.API(ctxt)"},{"line_number":64,"context_line":"        conductor.update_backup(CONF.guest_id,"},{"line_number":65,"context_line":"                                backup_id\u003dbackup_info[\u0027id\u0027],"},{"line_number":66,"context_line":"                                state\u003dBackupState.NEW)"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATX%2F%2F9Dk%3D","line":64,"updated":"2013-10-23 18:45:42.000000000","message":"This update is not needed as the api itself creates the backup object in the state NEW. I\u0027m not 100% sure how amqp works but this might be a interesting race condition as the second conductor.update_backup call is the one we actually care about and could possibly hit first only to be overwitten by the setting to NEW.","commit_id":"e7d42fc22887bddca445976f05df62125f96213e"},{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"d8317820079a5b8d02b96c04ab70021c74d7be86","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        backup \u003d DBBackup.find_by(id\u003dbackup_info[\u0027id\u0027])"},{"line_number":123,"context_line":"        LOG.info(\"Setting task state to %s for instance %s\","},{"line_number":124,"context_line":"                 BackupState.NEW, backup.instance_id)"},{"line_number":125,"context_line":"        backup.state \u003d BackupState.NEW"},{"line_number":126,"context_line":"        backup.save()"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        LOG.info(\"Running backup %s\", backup_info[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATX%2F%2F9Dg%3D","line":125,"updated":"2013-10-23 18:45:42.000000000","message":"same as above this is redundant","commit_id":"e7d42fc22887bddca445976f05df62125f96213e"}],"trove/guestagent/datastore/service.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"47cfe9dea687fe4f10e310b482fde524d02c14ed","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        \"\"\"Use conductor to update the DB app status.\"\"\""},{"line_number":110,"context_line":"        LOG.debug(\"Casting set_status message to conductor.\")"},{"line_number":111,"context_line":"        ctxt \u003d context.TroveContext(user\u003dCONF.nova_proxy_admin_user,"},{"line_number":112,"context_line":"                                    auth_token\u003dCONF.nova_proxy_admin_pass)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        heartbeat \u003d {"},{"line_number":115,"context_line":"            \u0027service_type\u0027: CONF.service_type,"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F%2F2%2Fw%3D","line":112,"updated":"2013-10-26 18:12:22.000000000","message":"Could we move context delivery code in trove/common, because there are a lot of calls for context delivery.\nLines #109-112 could be a separate method.","commit_id":"cbf9f7b9525525ff79f334aea024a71e9ca73f45"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"1209686fec7c7481140c7d833337fdacd7888a96","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        \"\"\"Use conductor to update the DB app status.\"\"\""},{"line_number":110,"context_line":"        LOG.debug(\"Casting set_status message to conductor.\")"},{"line_number":111,"context_line":"        ctxt \u003d context.TroveContext(user\u003dCONF.nova_proxy_admin_user,"},{"line_number":112,"context_line":"                                    auth_token\u003dCONF.nova_proxy_admin_pass)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        heartbeat \u003d {"},{"line_number":115,"context_line":"            \u0027service_type\u0027: CONF.service_type,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F%2F2lE%3D","line":112,"updated":"2013-10-27 08:55:56.000000000","message":"Still i would like to line 108-112 with line 118 into it\u0027 own func, because it\u0027s dublicated code","commit_id":"6389c5e033358c1919bed5e93fffaca87ab98458"},{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"de01d8b2b568dd22d0481abbed6214878fd294a5","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        \"\"\"Use conductor to update the DB app status.\"\"\""},{"line_number":110,"context_line":"        LOG.debug(\"Casting set_status message to conductor.\")"},{"line_number":111,"context_line":"        ctxt \u003d context.TroveContext(user\u003dCONF.nova_proxy_admin_user,"},{"line_number":112,"context_line":"                                    auth_token\u003dCONF.nova_proxy_admin_pass)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        heartbeat \u003d {"},{"line_number":115,"context_line":"            \u0027service_type\u0027: CONF.service_type,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F%2F0kE%3D","line":112,"in_reply_to":"AAAATn%2F%2F2lE%3D","updated":"2013-10-28 13:49:26.000000000","message":"I don\u0027t see any common lines in this file. Unless you are talking about other files using TroveContext. The only logical place to put this function would be in the common.context module if we were to do that we would need to load the common.cfg module which could lead to interesting circular dependancies. I think we should avoid doing that just to replace one line in this function.","commit_id":"6389c5e033358c1919bed5e93fffaca87ab98458"}],"trove/guestagent/manager/mysql_service.py":[{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"a02214069a1d25e8c7e5d6c9c01bcb0b6bc0462a","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        conductor_api.API(ctxt).heartbeat(CONF.guest_id, heartbeat)"},{"line_number":223,"context_line":"        LOG.debug(\"Successfully cast set_status.\")"},{"line_number":224,"context_line":"        self.status \u003d status"},{"line_number":225,"context_line":"        "},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    def update(self):"},{"line_number":228,"context_line":"        \"\"\"Find and report status of MySQL on this machine."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FPJs%3D","line":225,"updated":"2013-10-01 19:19:17.000000000","message":"red \u003d\u003d \u0027bad\u0027","commit_id":"4255ca4e3e11449483e1720f59f57060450b2e1f"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"2082e057b29621fe5f34f770e9b8339445123572","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        conductor_api.API(ctxt).heartbeat(CONF.guest_id, heartbeat)"},{"line_number":223,"context_line":"        LOG.debug(\"Successfully cast set_status.\")"},{"line_number":224,"context_line":"        self.status \u003d status"},{"line_number":225,"context_line":"        "},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    def update(self):"},{"line_number":228,"context_line":"        \"\"\"Find and report status of MySQL on this machine."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FPI4%3D","line":225,"in_reply_to":"AAAAS3%2F%2FPJs%3D","updated":"2013-10-01 19:21:10.000000000","message":"Yeah, pep8 caught that, I\u0027ll update","commit_id":"4255ca4e3e11449483e1720f59f57060450b2e1f"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"455c005ba294a556a6e88be1519e4cf1b32c80f7","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                    return rd_instance.ServiceStatuses.SHUTDOWN"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    @property"},{"line_number":141,"context_line":"    def is_mysql_installed(self):"},{"line_number":142,"context_line":"        \"\"\""},{"line_number":143,"context_line":"        True if MySQL app should be installed and attempts to ascertain"},{"line_number":144,"context_line":"        its status won\u0027t result in nonsense."}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATH%2F%2Fh%2Bk%3D","line":141,"updated":"2013-10-14 22:10:51.000000000","message":"These disappeared since I rebased for this patchset.\nI wasn\u0027t sure why, so I readded them unless we\u0027ve got a good reason for removing them that I haven\u0027t realized yet.","commit_id":"74734cc810c2db5948d3ff7b3ec43083138c7f3d"},{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"8c1b98b25d6c65564e4a64d1e55b5b2d7b23e138","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                    return rd_instance.ServiceStatuses.SHUTDOWN"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    @property"},{"line_number":141,"context_line":"    def is_mysql_installed(self):"},{"line_number":142,"context_line":"        \"\"\""},{"line_number":143,"context_line":"        True if MySQL app should be installed and attempts to ascertain"},{"line_number":144,"context_line":"        its status won\u0027t result in nonsense."}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATH%2F%2Fh4M%3D","line":141,"updated":"2013-10-14 22:44:43.000000000","message":"https://github.com/openstack/trove/commit/b81f8c0682eec70d4661e6bd291698dc20310492","commit_id":"74734cc810c2db5948d3ff7b3ec43083138c7f3d"},{"author":{"_account_id":694,"name":"Tim Simpson","email":"tim.simpson@rackspace.com","username":"tim-simpson"},"change_message_id":"62723d821f23e56da64f546c29e16c81c90d6b71","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        }"},{"line_number":150,"context_line":"        conductor_api.API(ctxt).heartbeat(CONF.guest_id, heartbeat)"},{"line_number":151,"context_line":"        LOG.debug(\"Successfully cast set_status.\")"},{"line_number":152,"context_line":"        self.status \u003d status"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"class LocalSqlClient(object):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATH%2F%2FdNA%3D","line":152,"updated":"2013-10-15 22:47:22.000000000","message":"You should move this to BaseDbStatus.","commit_id":"81e75822b4a5c47491fb3244fd42000837078aa3"}],"trove/guestagent/manager/service.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"d12d47af7c3805ec0511cd2830fab9814050bc8b","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        return rd_models.InstanceServiceStatus.find_by(instance_id\u003dinst_id)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def set_status(self, status):"},{"line_number":113,"context_line":"        \"\"\"Changes the status of the MySQL app with Rabbit.\"\"\""},{"line_number":114,"context_line":"        LOG.debug(\"Casting set_status message to conductor.\")"},{"line_number":115,"context_line":"        ctxt \u003d context.TroveContext(user\u003dCONF.nova_proxy_admin_user,"},{"line_number":116,"context_line":"                                    auth_token\u003dCONF.nova_proxy_admin_pass)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATH%2F%2FUZQ%3D","line":113,"updated":"2013-10-17 20:23:41.000000000","message":"Please return previous comment, because it this method could work with lots of different implementations, it is not MySQL-specific.","commit_id":"e316cb168894f2f47e6ffb602ccfc091d243aa34"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"7f2390daf11d623e2b2a60cfab585b943ebb3176","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        return rd_models.InstanceServiceStatus.find_by(instance_id\u003dinst_id)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def set_status(self, status):"},{"line_number":113,"context_line":"        \"\"\"Changes the status of the MySQL app with Rabbit.\"\"\""},{"line_number":114,"context_line":"        LOG.debug(\"Casting set_status message to conductor.\")"},{"line_number":115,"context_line":"        ctxt \u003d context.TroveContext(user\u003dCONF.nova_proxy_admin_user,"},{"line_number":116,"context_line":"                                    auth_token\u003dCONF.nova_proxy_admin_pass)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATH%2F%2FUSs%3D","line":113,"in_reply_to":"AAAATH%2F%2FUZQ%3D","updated":"2013-10-17 20:32:00.000000000","message":"ok","commit_id":"e316cb168894f2f47e6ffb602ccfc091d243aa34"},{"author":{"_account_id":1925,"name":"Vipul Sabhaya","email":"vipuls@gmail.com","username":"vipuls"},"change_message_id":"3df4c3e0a6cded3cb09e7b013e760e1a178b123d","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            \u0027service_type\u0027: CONF.service_type,"},{"line_number":120,"context_line":"            \u0027service_status\u0027: status.description,"},{"line_number":121,"context_line":"        }"},{"line_number":122,"context_line":"        conductor_api.API(ctxt).heartbeat(CONF.guest_id, heartbeat)"},{"line_number":123,"context_line":"        LOG.debug(\"Successfully cast set_status.\")"},{"line_number":124,"context_line":"        self.status \u003d status"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATH%2F%2FT5Q%3D","line":122,"updated":"2013-10-17 22:17:53.000000000","message":"Conductor should be optional, until we determine that we can completely close db access.","commit_id":"e316cb168894f2f47e6ffb602ccfc091d243aa34"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c8d3d07604d6149e7aaca7dc204a8dab9ce382e7","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            \u0027service_type\u0027: CONF.service_type,"},{"line_number":120,"context_line":"            \u0027service_status\u0027: status.description,"},{"line_number":121,"context_line":"        }"},{"line_number":122,"context_line":"        conductor_api.API(ctxt).heartbeat(CONF.guest_id, heartbeat)"},{"line_number":123,"context_line":"        LOG.debug(\"Successfully cast set_status.\")"},{"line_number":124,"context_line":"        self.status \u003d status"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATH%2F%2FTF8%3D","line":122,"in_reply_to":"AAAATH%2F%2FT5Q%3D","updated":"2013-10-18 06:39:45.000000000","message":"I think not, we implementing it because we need it, so it should be optional.","commit_id":"e316cb168894f2f47e6ffb602ccfc091d243aa34"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"c39f8ed679a35a86655558f47b94068cfd73bb43","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    def _load_status():"},{"line_number":108,"context_line":"        \"\"\"Loads the status from the database.\"\"\""},{"line_number":109,"context_line":"        inst_id \u003d CONF.guest_id"},{"line_number":110,"context_line":"        return rd_models.InstanceServiceStatus.find_by(instance_id\u003dinst_id)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def set_status(self, status):"},{"line_number":113,"context_line":"        \"\"\"Use conductor to update the DB app status.\"\"\""}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2F7h0%3D","line":110,"updated":"2013-10-25 03:12:10.000000000","message":"This method should be changed now or later?","commit_id":"d585b2482b6a7ec673071819ed137d8ee9487895"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"8588c1e005ed54eb5d60420e73cb3d18d34b81ef","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    def _load_status():"},{"line_number":108,"context_line":"        \"\"\"Loads the status from the database.\"\"\""},{"line_number":109,"context_line":"        inst_id \u003d CONF.guest_id"},{"line_number":110,"context_line":"        return rd_models.InstanceServiceStatus.find_by(instance_id\u003dinst_id)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def set_status(self, status):"},{"line_number":113,"context_line":"        \"\"\"Use conductor to update the DB app status.\"\"\""}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2F5ig%3D","line":110,"in_reply_to":"AAAATn%2F%2F7h0%3D","updated":"2013-10-25 14:44:12.000000000","message":"You know what? It\u0027s only used in __init__; I bet I could just remove it altogether.","commit_id":"d585b2482b6a7ec673071819ed137d8ee9487895"}],"trove/tests/api/instances_delete.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"47cfe9dea687fe4f10e310b482fde524d02c14ed","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import time"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from proboscis import before_class"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F%2F2%2Fs%3D","line":14,"updated":"2013-10-26 18:12:22.000000000","message":"there are a lot of missing headers, could we prepare another patch, which will do only headers fixing.","commit_id":"cbf9f7b9525525ff79f334aea024a71e9ca73f45"}],"trove/tests/unittests/guestagent/test_dbaas.py":[{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"9441b67f1e20674a2b9db22a9107139a8c58c453","unresolved":false,"context_lines":[{"line_number":47,"context_line":"from trove.guestagent.manager.mysql_service import MySqlAppStatus"},{"line_number":48,"context_line":"from trove.guestagent.manager.mysql_service import KeepAliveConnection"},{"line_number":49,"context_line":"from trove.guestagent.db import models"},{"line_number":50,"context_line":"from trove.instance import models as rd_models"},{"line_number":51,"context_line":"from trove.instance.models import InstanceServiceStatus"},{"line_number":52,"context_line":"from trove.tests.unittests.util import util"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2FF0w%3D","line":50,"updated":"2013-10-04 15:29:08.000000000","message":"Oh guess I don\u0027t need this after all. I\u0027ll zap it.","commit_id":"66082990d7369733a3fc04fc88aed93164fd5a2d"}]}
