)]}'
{".gitignore":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"bd1c15dca540e7bdd3df2ddac767fd305a3446f7","unresolved":false,"context_lines":[{"line_number":25,"context_line":".pid"},{"line_number":26,"context_line":".project"},{"line_number":27,"context_line":".pydevproject"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# Sphinx"},{"line_number":30,"context_line":"doc/build/*"},{"line_number":31,"context_line":"doc/source/api/*"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAATn%2F%2Fy4M%3D","side":"PARENT","line":28,"updated":"2013-10-28 22:44:10.000000000","message":"?","commit_id":"bbca76444f7cd77d0e85831e4bfabd90016c1fdb"}],"/COMMIT_MSG":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"8f392efaa3c3bcb5c36f45a773c1465e14e79fe4","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2013-12-16 17:27:38 -0600"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Added Redis Crud Operations"},{"line_number":8,"context_line":"blueprint redis-support"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Change-Id: I741b3a39e1ec24ee81d441788be72f72726eda10"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"AAAATn%2F9BQQ%3D","line":8,"updated":"2013-12-17 16:27:18.000000000","message":"Implements: blueprint xxxx","commit_id":"59be9f8bb20bf7ee9659eaf4dd8f90d43edb6d43"},{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"8e308d0cb8767bd7c6e12af508ee02f04d086b54","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2014-01-09 11:24:07 -0600"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Added Redis Crud Operations"},{"line_number":8,"context_line":"blueprint redis-support"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Change-Id: I741b3a39e1ec24ee81d441788be72f72726eda10"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":24,"id":"AAAAUH%2F%2FrQM%3D","line":8,"updated":"2014-01-09 18:27:54.000000000","message":"please put an empty space here between these lines","commit_id":"2ba561180618d243d66e88554c726bed99e9cffc"}],"trove/guestagent/datastore/redis/__init__.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"68305a62503e73b5aabdb6c6690316ef62b13850","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright (c) 2011 OpenStack Foundation"},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2Ffxg%3D","line":3,"updated":"2013-11-04 14:21:00.000000000","message":"year 2013, almost 2014","commit_id":"43f3bb942bf7fb62ab240a3f021798cf44039095"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"08e15b88d6e01ed3a3bc07452f376ce8c20bcccd","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F9mX8%3D","line":14,"updated":"2013-12-16 22:30:25.000000000","message":"Please remove any comments from empty __init.py__ files. This will fail the new hacking rule \"H104: File contains nothing but comments\".","commit_id":"7fcd9903f38f71f5d074b24cd9206a7540e9b818"}],"trove/guestagent/datastore/redis/manager.py":[{"author":{"_account_id":971,"name":"Daniel Salinas","email":"imsplitbit@gmail.com","username":"imsplitbit"},"change_message_id":"1d211ecad99484481439e0b68d39353fad838791","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            device.format()"},{"line_number":60,"context_line":"            device.mount(mount_point)"},{"line_number":61,"context_line":"            LOG.debug(_(\u0027Mounted the volume.\u0027))"},{"line_number":62,"context_line":"        utils.execute_with_timeout(\u0027sudo\u0027, \u0027chown\u0027, \u0027redis:redis\u0027, mount_point)"},{"line_number":63,"context_line":"        if not os.path.isdir(CONFIG_PATH):"},{"line_number":64,"context_line":"            utils.execute_with_timeout(\u0027sudo\u0027, \u0027mkdir\u0027, \u0027-p\u0027, CONFIG_PATH)"},{"line_number":65,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2F9O8%3D","line":62,"updated":"2013-10-24 16:24:01.000000000","message":"You cannot call sudo directly.  you must use run_as_root\u003dTrue for the root helper to use sudo.  This applies to all commands.","commit_id":"b4be795fd4091e9fb6b6359923e9f389526da19e"},{"author":{"_account_id":8259,"name":"Andrey Shestakov","email":"ashestakov@mirantis.com","username":"ashestakov"},"change_message_id":"a6a303b2d2d61987d235aaa376a9f6c26b4c028e","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":16,"context_line":"CONF \u003d cfg.CONF"},{"line_number":17,"context_line":"MOUNT_POINT \u003d \u0027/opt/redis\u0027"},{"line_number":18,"context_line":"CONFIG_FILE \u003d \u0027/etc/redis/redis.conf\u0027"},{"line_number":19,"context_line":"CONFIG_PATH \u003d \u0027/etc/redis\u0027"},{"line_number":20,"context_line":"TMP_CONFIG_PATH \u003d \u0027/tmp/redis.conf\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2F8JE%3D","line":17,"updated":"2013-10-24 21:25:21.000000000","message":"this should be mapped to mount_point from trove config","commit_id":"191b51eccf524518534c253afb20eb2ede609941"},{"author":{"_account_id":971,"name":"Daniel Salinas","email":"imsplitbit@gmail.com","username":"imsplitbit"},"change_message_id":"f6b523207c747f0bf95f811c299c2cf2c30172a0","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":16,"context_line":"CONF \u003d cfg.CONF"},{"line_number":17,"context_line":"MOUNT_POINT \u003d \u0027/opt/redis\u0027"},{"line_number":18,"context_line":"CONFIG_FILE \u003d \u0027/etc/redis/redis.conf\u0027"},{"line_number":19,"context_line":"CONFIG_PATH \u003d \u0027/etc/redis\u0027"},{"line_number":20,"context_line":"TMP_CONFIG_PATH \u003d \u0027/tmp/redis.conf\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2F8FA%3D","line":17,"updated":"2013-10-24 21:55:25.000000000","message":"Why is the default mount point /opt/redis.  Linux standards would put data storage in /var/lib/redis no?  This won\u0027t hold up the PR IMO but probably something that should be considered before GA.","commit_id":"1760494f9c5d64b563451a5dc9269937864b8746"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"434f51c7c7a48bef1fcfd4fcc68382bf3f53faf3","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":16,"context_line":"CONF \u003d cfg.CONF"},{"line_number":17,"context_line":"MOUNT_POINT \u003d \u0027/opt/redis\u0027"},{"line_number":18,"context_line":"CONFIG_FILE \u003d \u0027/etc/redis/redis.conf\u0027"},{"line_number":19,"context_line":"CONFIG_PATH \u003d \u0027/etc/redis\u0027"},{"line_number":20,"context_line":"TMP_CONFIG_PATH \u003d \u0027/tmp/redis.conf\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2F52U%3D","line":17,"in_reply_to":"AAAATn%2F%2F8BI%3D","updated":"2013-10-25 13:20:38.000000000","message":"i suppose that mount point should be discovered in taskmanager via config","commit_id":"1760494f9c5d64b563451a5dc9269937864b8746"},{"author":{"_account_id":8259,"name":"Andrey Shestakov","email":"ashestakov@mirantis.com","username":"ashestakov"},"change_message_id":"5b511fcad2bc120d3290df645e4608af3dd8a98d","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":16,"context_line":"CONF \u003d cfg.CONF"},{"line_number":17,"context_line":"MOUNT_POINT \u003d \u0027/opt/redis\u0027"},{"line_number":18,"context_line":"CONFIG_FILE \u003d \u0027/etc/redis/redis.conf\u0027"},{"line_number":19,"context_line":"CONFIG_PATH \u003d \u0027/etc/redis\u0027"},{"line_number":20,"context_line":"TMP_CONFIG_PATH \u003d \u0027/tmp/redis.conf\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2F8BI%3D","line":17,"in_reply_to":"AAAATn%2F%2F8FA%3D","updated":"2013-10-24 22:02:36.000000000","message":"as commented in previous PS, mount point should be used from trove config (to what dir actually mounted volume)","commit_id":"1760494f9c5d64b563451a5dc9269937864b8746"},{"author":{"_account_id":971,"name":"Daniel Salinas","email":"imsplitbit@gmail.com","username":"imsplitbit"},"change_message_id":"f6b523207c747f0bf95f811c299c2cf2c30172a0","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        \"\"\""},{"line_number":32,"context_line":"        Check to see if self.status is set."},{"line_number":33,"context_line":"        \"\"\""},{"line_number":34,"context_line":"        status \u003d rd_models. \\"},{"line_number":35,"context_line":"            InstanceServiceStatus.find_by(instance_id\u003dself.guest_id)"},{"line_number":36,"context_line":"        self._status \u003d status.status"},{"line_number":37,"context_line":"        self._pending_status \u003d status.status"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2F8EU%3D","line":34,"updated":"2013-10-24 21:55:25.000000000","message":"backslashes make me sad. this may read better as:\n\nrd_models.InstanceServiceStatus.find_by(\n    instance_id\u003dself.guest_id)\n\nIMO","commit_id":"1760494f9c5d64b563451a5dc9269937864b8746"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"434f51c7c7a48bef1fcfd4fcc68382bf3f53faf3","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        \"\"\""},{"line_number":32,"context_line":"        Check to see if self.status is set."},{"line_number":33,"context_line":"        \"\"\""},{"line_number":34,"context_line":"        status \u003d rd_models. \\"},{"line_number":35,"context_line":"            InstanceServiceStatus.find_by(instance_id\u003dself.guest_id)"},{"line_number":36,"context_line":"        self._status \u003d status.status"},{"line_number":37,"context_line":"        self._pending_status \u003d status.status"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2F52E%3D","line":34,"in_reply_to":"AAAATn%2F%2F8EU%3D","updated":"2013-10-25 13:20:38.000000000","message":"+1","commit_id":"1760494f9c5d64b563451a5dc9269937864b8746"},{"author":{"_account_id":971,"name":"Daniel Salinas","email":"imsplitbit@gmail.com","username":"imsplitbit"},"change_message_id":"f6b523207c747f0bf95f811c299c2cf2c30172a0","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            db_status.save()"},{"line_number":50,"context_line":"            self._status \u003d self._pending_status"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def prepare(self, context, databases, memory_mb, users, device_path\u003dNone,"},{"line_number":53,"context_line":"                mount_point\u003dNone, backup_id\u003dNone, config_contents\u003dNone):"},{"line_number":54,"context_line":"        LOG.info(_(\u0027Inside Redis prepare call\u0027))"},{"line_number":55,"context_line":"        self._pending_status \u003d rd_instance.ServiceStatuses.BUILDING"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2F8EM%3D","line":52,"updated":"2013-10-24 21:55:25.000000000","message":"No docstring?","commit_id":"1760494f9c5d64b563451a5dc9269937864b8746"},{"author":{"_account_id":971,"name":"Daniel Salinas","email":"imsplitbit@gmail.com","username":"imsplitbit"},"change_message_id":"f6b523207c747f0bf95f811c299c2cf2c30172a0","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                mount_point\u003dNone, backup_id\u003dNone, config_contents\u003dNone):"},{"line_number":54,"context_line":"        LOG.info(_(\u0027Inside Redis prepare call\u0027))"},{"line_number":55,"context_line":"        self._pending_status \u003d rd_instance.ServiceStatuses.BUILDING"},{"line_number":56,"context_line":"        utils.execute_with_timeout(\u0027sudo\u0027, \u0027mkdir\u0027, \u0027-p\u0027, MOUNT_POINT)"},{"line_number":57,"context_line":"        if device_path:"},{"line_number":58,"context_line":"            device \u003d volume.VolumeDevice(device_path)"},{"line_number":59,"context_line":"            device.format()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2F8Dw%3D","line":56,"updated":"2013-10-24 21:55:25.000000000","message":"no sudo for you!  run_as_root\u003dTrue","commit_id":"1760494f9c5d64b563451a5dc9269937864b8746"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"434f51c7c7a48bef1fcfd4fcc68382bf3f53faf3","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                mount_point\u003dNone, backup_id\u003dNone, config_contents\u003dNone):"},{"line_number":54,"context_line":"        LOG.info(_(\u0027Inside Redis prepare call\u0027))"},{"line_number":55,"context_line":"        self._pending_status \u003d rd_instance.ServiceStatuses.BUILDING"},{"line_number":56,"context_line":"        utils.execute_with_timeout(\u0027sudo\u0027, \u0027mkdir\u0027, \u0027-p\u0027, MOUNT_POINT)"},{"line_number":57,"context_line":"        if device_path:"},{"line_number":58,"context_line":"            device \u003d volume.VolumeDevice(device_path)"},{"line_number":59,"context_line":"            device.format()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2F518%3D","line":56,"in_reply_to":"AAAATn%2F%2F8Dw%3D","updated":"2013-10-25 13:20:38.000000000","message":"+1","commit_id":"1760494f9c5d64b563451a5dc9269937864b8746"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"0783fec295002d5e19afb1f59e804b6681d38bdf","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        utils.execute_with_timeout(SERVICE_PATH,"},{"line_number":93,"context_line":"                                   \u0027restart\u0027,"},{"line_number":94,"context_line":"                                   run_as_root\u003dTrue)"},{"line_number":95,"context_line":"        self._pending_status \u003d rd_instance.ServiceStatuses.RUNNING"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def restart(self, context):"},{"line_number":98,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2F5v8%3D","line":95,"updated":"2013-10-25 13:44:40.000000000","message":"Why do you use your own status handling rather then existing one? Like in MySqlApp  and MySqlAppStatus?","commit_id":"1760494f9c5d64b563451a5dc9269937864b8746"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"cd9e22c88e179173115f6dae39c59dd7b12b0df9","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        utils.execute_with_timeout(SERVICE_PATH,"},{"line_number":93,"context_line":"                                   \u0027restart\u0027,"},{"line_number":94,"context_line":"                                   run_as_root\u003dTrue)"},{"line_number":95,"context_line":"        self._pending_status \u003d rd_instance.ServiceStatuses.RUNNING"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def restart(self, context):"},{"line_number":98,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2F4OM%3D","line":95,"in_reply_to":"AAAATn%2F%2F5v8%3D","updated":"2013-10-25 19:33:35.000000000","message":"+1","commit_id":"1760494f9c5d64b563451a5dc9269937864b8746"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"bd1c15dca540e7bdd3df2ddac767fd305a3446f7","unresolved":false,"context_lines":[{"line_number":22,"context_line":"TMP_PATH \u003d \u0027/tmp\u0027"},{"line_number":23,"context_line":"SERVICE_PATH \u003d \u0027/etc/init.d/redis-server\u0027"},{"line_number":24,"context_line":"RCD_CMD \u003d \u0027update-rc.d\u0027"},{"line_number":25,"context_line":"SERVICE_NAME \u003d \u0027redis-server\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class Manager(periodic_task.PeriodicTasks):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2Fy40%3D","line":25,"updated":"2013-10-28 22:44:10.000000000","message":"Constants could be moved to redis/system.py","commit_id":"fdd2334fc1e02242ca1d54af470919751a62ff70"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"bd1c15dca540e7bdd3df2ddac767fd305a3446f7","unresolved":false,"context_lines":[{"line_number":28,"context_line":"class Manager(periodic_task.PeriodicTasks):"},{"line_number":29,"context_line":"    _status \u003d None"},{"line_number":30,"context_line":"    _pending_status \u003d None"},{"line_number":31,"context_line":"    guest_id \u003d CONF.guest_id"},{"line_number":32,"context_line":"    def _initialize_status(self):"},{"line_number":33,"context_line":"        \"\"\""},{"line_number":34,"context_line":"        Check to see if self.status is set."}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2Fy4w%3D","line":31,"updated":"2013-10-28 22:44:10.000000000","message":"Please follow statuses workflow and it would be nice not to re-invent new manipulations.","commit_id":"fdd2334fc1e02242ca1d54af470919751a62ff70"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"bd1c15dca540e7bdd3df2ddac767fd305a3446f7","unresolved":false,"context_lines":[{"line_number":101,"context_line":"                                       TMP_CONFIG_PATH,"},{"line_number":102,"context_line":"                                       CONFIG_FILE,"},{"line_number":103,"context_line":"                                       run_as_root\u003dTrue)"},{"line_number":104,"context_line":"            utils.execute_with_timeout(SERVICE_PATH,"},{"line_number":105,"context_line":"                                       \u0027restart\u0027,"},{"line_number":106,"context_line":"                                       run_as_root\u003dTrue)"},{"line_number":107,"context_line":"        except ProcessExecutionError:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2Fy4Q%3D","line":104,"updated":"2013-10-28 22:44:10.000000000","message":"it would be nice to see clean code structure","commit_id":"fdd2334fc1e02242ca1d54af470919751a62ff70"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"bd1c15dca540e7bdd3df2ddac767fd305a3446f7","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        if device_path:"},{"line_number":112,"context_line":"            device \u003d volume.VolumeDevice(device_path)"},{"line_number":113,"context_line":"            device.format()"},{"line_number":114,"context_line":"            device.mount(mount_point)"},{"line_number":115,"context_line":"            LOG.debug(_(\u0027Mounted the volume.\u0027))"},{"line_number":116,"context_line":"        self._pending_status \u003d rd_instance.ServiceStatuses.RUNNING"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2Fy4g%3D","line":114,"updated":"2013-10-28 22:44:10.000000000","message":"mount point \u003d /var/lib/mysq/","commit_id":"fdd2334fc1e02242ca1d54af470919751a62ff70"},{"author":{"_account_id":8259,"name":"Andrey Shestakov","email":"ashestakov@mirantis.com","username":"ashestakov"},"change_message_id":"32f3684bd3070a530655f7cda39c9b513d6dd3ef","unresolved":false,"context_lines":[{"line_number":21,"context_line":"TMP_CONFIG_PATH \u003d \u0027/tmp/redis.conf\u0027"},{"line_number":22,"context_line":"TMP_PATH \u003d \u0027/tmp\u0027"},{"line_number":23,"context_line":"SERVICE_PATH \u003d \u0027/etc/init.d/redis-server\u0027"},{"line_number":24,"context_line":"RCD_CMD \u003d \u0027update-rc.d\u0027"},{"line_number":25,"context_line":"SERVICE_NAME \u003d \u0027redis-server\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2FsnU%3D","line":24,"updated":"2013-10-30 10:06:03.000000000","message":"how about RHEL support?","commit_id":"25f420a6c8ccb1239ae8f41f04ae7308a317b4cd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9781d184aa08288fef6e50c1d1fda9a2e25a1bac","unresolved":false,"context_lines":[{"line_number":21,"context_line":"TMP_CONFIG_PATH \u003d \u0027/tmp/redis.conf\u0027"},{"line_number":22,"context_line":"TMP_PATH \u003d \u0027/tmp\u0027"},{"line_number":23,"context_line":"SERVICE_PATH \u003d \u0027/etc/init.d/redis-server\u0027"},{"line_number":24,"context_line":"RCD_CMD \u003d \u0027update-rc.d\u0027"},{"line_number":25,"context_line":"SERVICE_NAME \u003d \u0027redis-server\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2Fsls%3D","line":24,"in_reply_to":"AAAATn%2F%2FsnU%3D","updated":"2013-10-30 10:21:08.000000000","message":"+1","commit_id":"25f420a6c8ccb1239ae8f41f04ae7308a317b4cd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9781d184aa08288fef6e50c1d1fda9a2e25a1bac","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        \"\"\""},{"line_number":35,"context_line":"        Check to see if self.status is set."},{"line_number":36,"context_line":"        \"\"\""},{"line_number":37,"context_line":"        status \u003d rd_models.InstanceServiceStatus.find_by("},{"line_number":38,"context_line":"            instance_id\u003dself.guest_id)"},{"line_number":39,"context_line":"        self._status \u003d status.status"},{"line_number":40,"context_line":"        self._pending_status \u003d status.status"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2Fslc%3D","line":37,"updated":"2013-10-30 10:21:08.000000000","message":"Please follow application status impl.","commit_id":"25f420a6c8ccb1239ae8f41f04ae7308a317b4cd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9781d184aa08288fef6e50c1d1fda9a2e25a1bac","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        if not self._status:"},{"line_number":47,"context_line":"            self._initialize_status()"},{"line_number":48,"context_line":"        if self._status !\u003d self._pending_status:"},{"line_number":49,"context_line":"            db_status \u003d rd_models.InstanceServiceStatus.find_by(instance_id\u003d"},{"line_number":50,"context_line":"                                                                self.guest_id)"},{"line_number":51,"context_line":"            db_status.status \u003d status"},{"line_number":52,"context_line":"            db_status.save()"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2FslY%3D","line":49,"updated":"2013-10-30 10:21:08.000000000","message":"Same","commit_id":"25f420a6c8ccb1239ae8f41f04ae7308a317b4cd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9781d184aa08288fef6e50c1d1fda9a2e25a1bac","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        all set correctly."},{"line_number":60,"context_line":"        \"\"\""},{"line_number":61,"context_line":"        LOG.info(_(\u0027Inside Redis prepare call\u0027))"},{"line_number":62,"context_line":"        self._pending_status \u003d rd_instance.ServiceStatuses.BUILDING"},{"line_number":63,"context_line":"        try:"},{"line_number":64,"context_line":"            utils.execute_with_timeout(\u0027mkdir\u0027,"},{"line_number":65,"context_line":"                                       \u0027-p\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2FslQ%3D","line":62,"updated":"2013-10-30 10:21:08.000000000","message":"same","commit_id":"25f420a6c8ccb1239ae8f41f04ae7308a317b4cd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9781d184aa08288fef6e50c1d1fda9a2e25a1bac","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                                               TMP_CONFIG_PATH,"},{"line_number":93,"context_line":"                                               run_as_root\u003dTrue)"},{"line_number":94,"context_line":"        except ProcessExecutionError:"},{"line_number":95,"context_line":"            LOG.ERROR(_(\"Unable to bootstrap base instance.\"))"},{"line_number":96,"context_line":"            self._pending_status \u003d rd_instance.ServiceStatuses.FAILED"},{"line_number":97,"context_line":"            return"},{"line_number":98,"context_line":"        with open(TMP_CONFIG_PATH, \u0027w\u0027) as fd:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2FslI%3D","line":95,"updated":"2013-10-30 10:21:08.000000000","message":"If you are using more than one exec, please cover each of them in it\u0027s own try:except","commit_id":"25f420a6c8ccb1239ae8f41f04ae7308a317b4cd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9781d184aa08288fef6e50c1d1fda9a2e25a1bac","unresolved":false,"context_lines":[{"line_number":95,"context_line":"            LOG.ERROR(_(\"Unable to bootstrap base instance.\"))"},{"line_number":96,"context_line":"            self._pending_status \u003d rd_instance.ServiceStatuses.FAILED"},{"line_number":97,"context_line":"            return"},{"line_number":98,"context_line":"        with open(TMP_CONFIG_PATH, \u0027w\u0027) as fd:"},{"line_number":99,"context_line":"            fd.write(config_contents)"},{"line_number":100,"context_line":"        try:"},{"line_number":101,"context_line":"            utils.execute_with_timeout(\u0027mv\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2Fsk8%3D","line":98,"updated":"2013-10-30 10:21:08.000000000","message":"move line #98-#111 to it\u0027s own method.","commit_id":"25f420a6c8ccb1239ae8f41f04ae7308a317b4cd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9781d184aa08288fef6e50c1d1fda9a2e25a1bac","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        except ProcessExecutionError:"},{"line_number":109,"context_line":"            LOG.ERROR(_(\"Unable to bootstrap base instance.\"))"},{"line_number":110,"context_line":"            self._pending_status \u003d rd_instance.ServiceStatuses.FAILED"},{"line_number":111,"context_line":"            return"},{"line_number":112,"context_line":"        if device_path:"},{"line_number":113,"context_line":"            device \u003d volume.VolumeDevice(device_path)"},{"line_number":114,"context_line":"            device.format()"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2Fskk%3D","line":111,"updated":"2013-10-30 10:21:08.000000000","message":"Are you sure? Absent config is not critical. Why would prepare call stop ?","commit_id":"25f420a6c8ccb1239ae8f41f04ae7308a317b4cd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"68305a62503e73b5aabdb6c6690316ef62b13850","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        Resets to the default configuration"},{"line_number":56,"context_line":"        Currently this does nothing."},{"line_number":57,"context_line":"        \"\"\""},{"line_number":58,"context_line":"        app \u003d RedisApp(MySqlAppStatus.get())"},{"line_number":59,"context_line":"        app.reset_configuration(configuration)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _perform_restore(self, backup_id, context, restore_location, app):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2FfxU%3D","line":58,"updated":"2013-11-04 14:21:00.000000000","message":"it would be better to make app variable part of the class","commit_id":"43f3bb942bf7fb62ab240a3f021798cf44039095"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"68305a62503e73b5aabdb6c6690316ef62b13850","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                app.stop_db()"},{"line_number":83,"context_line":"                if not backup_id:"},{"line_number":84,"context_line":"                    restart_redis \u003d True"},{"line_number":85,"context_line":"                    device.migrate_data(CONF.mount_point)"},{"line_number":86,"context_line":"            device.mount(MOUNT_POINT)"},{"line_number":87,"context_line":"            LOG.debug(_(\u0027Mounted the volume.\u0027))"},{"line_number":88,"context_line":"            if restart_redis:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2FfxM%3D","line":85,"updated":"2013-11-04 14:21:00.000000000","message":"CONF.mount_point \u003d /var/lib/mysql","commit_id":"43f3bb942bf7fb62ab240a3f021798cf44039095"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"68305a62503e73b5aabdb6c6690316ef62b13850","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                if not backup_id:"},{"line_number":84,"context_line":"                    restart_redis \u003d True"},{"line_number":85,"context_line":"                    device.migrate_data(CONF.mount_point)"},{"line_number":86,"context_line":"            device.mount(MOUNT_POINT)"},{"line_number":87,"context_line":"            LOG.debug(_(\u0027Mounted the volume.\u0027))"},{"line_number":88,"context_line":"            if restart_redis:"},{"line_number":89,"context_line":"                app.start_redis()"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2FfxI%3D","line":86,"updated":"2013-11-04 14:21:00.000000000","message":"there is no such variable with name MOUNT_POINT","commit_id":"43f3bb942bf7fb62ab240a3f021798cf44039095"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"68305a62503e73b5aabdb6c6690316ef62b13850","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                app.start_redis()"},{"line_number":90,"context_line":"        app.install_if_needed()"},{"line_number":91,"context_line":"        if backup_id:"},{"line_number":92,"context_line":"            self._perform_restore(backup_id, context, CONF.mount_point, app)"},{"line_number":93,"context_line":"        LOG.info(_(\u0027Securing redis now.\u0027))"},{"line_number":94,"context_line":"        app.secure(config_contents)"},{"line_number":95,"context_line":"        app.complete_install_or_restart()"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2FfxE%3D","line":92,"updated":"2013-11-04 14:21:00.000000000","message":"same","commit_id":"43f3bb942bf7fb62ab240a3f021798cf44039095"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"1939e6ecd5ff3a2afda8cc85b703f7b0420bcc05","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        Start this redis instance with new conf changes."},{"line_number":112,"context_line":"        Right now this does nothing."},{"line_number":113,"context_line":"        \"\"\""},{"line_number":114,"context_line":"        pass"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def stop_db(self, context, do_not_start_on_reboot\u003dFalse):"},{"line_number":117,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F%2FdX4%3D","line":114,"updated":"2013-11-05 16:49:15.000000000","message":"How\u0027s about you raise an Unimplemented instead","commit_id":"603a4b9efdb0177ae93c905c7796d5fc756bba4d"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"5395756f09ce8ed27f27d54a5102c6d0dc48d136","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        Start this redis instance with new conf changes."},{"line_number":112,"context_line":"        Right now this does nothing."},{"line_number":113,"context_line":"        \"\"\""},{"line_number":114,"context_line":"        pass"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def stop_db(self, context, do_not_start_on_reboot\u003dFalse):"},{"line_number":117,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F%2FdWU%3D","line":114,"in_reply_to":"AAAATn%2F%2FdX4%3D","updated":"2013-11-05 16:58:38.000000000","message":"+1","commit_id":"603a4b9efdb0177ae93c905c7796d5fc756bba4d"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"5395756f09ce8ed27f27d54a5102c6d0dc48d136","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        device_path is specified, it will be mounted based to a point specified"},{"line_number":136,"context_line":"        in configuration."},{"line_number":137,"context_line":"        \"\"\""},{"line_number":138,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F%2FdWM%3D","line":138,"updated":"2013-11-05 16:58:38.000000000","message":"same","commit_id":"603a4b9efdb0177ae93c905c7796d5fc756bba4d"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"e4365bdb4a9062458b5c75eb30a08c4fad34d564","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                if not backup_id:"},{"line_number":85,"context_line":"                    restart_redis \u003d True"},{"line_number":86,"context_line":"                    device.migrate_data(CONF.mount_point)"},{"line_number":87,"context_line":"            device.mount(MOUNT_POINT)"},{"line_number":88,"context_line":"            LOG.debug(_(\u0027Mounted the volume.\u0027))"},{"line_number":89,"context_line":"            if restart_redis:"},{"line_number":90,"context_line":"                app.start_redis()"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2FFcM%3D","line":87,"updated":"2013-11-14 16:04:30.000000000","message":"There is a bug in mysql.Manager about MOUNT_POINT vs CONF.mount_point,\nhttps://bugs.launchpad.net/trove/+bug/1248212, and you seem to copy it.","commit_id":"53f3a7c55015ea3c2086556c7c3b24b5497beff1"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9adc11f61c5a9b93f952a8908750508a57bb2e25","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        It is the first rpc message passed from the task manager."},{"line_number":73,"context_line":"        prepare handles all the base configuration of the redis instance."},{"line_number":74,"context_line":"        \"\"\""},{"line_number":75,"context_line":"        app \u003d RedisApp(RedisAppStatus.get())"},{"line_number":76,"context_line":"        RedisAppStatus.get().begin_install()"},{"line_number":77,"context_line":"        restart_redis \u003d False"},{"line_number":78,"context_line":"        if device_path:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2FCZI%3D","line":75,"updated":"2013-11-15 10:52:52.000000000","message":"it would be nice to see app as part of manager class, it would allows you to have only one instance of it.","commit_id":"659aa91d8caa0ca341351126fc0841e3ce46bedd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9adc11f61c5a9b93f952a8908750508a57bb2e25","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        if device_path:"},{"line_number":79,"context_line":"            device \u003d volume.VolumeDevice(device_path)"},{"line_number":80,"context_line":"            device.format()"},{"line_number":81,"context_line":"            if os.path.exists(CONF.mount_point):"},{"line_number":82,"context_line":"                app.stop_db()"},{"line_number":83,"context_line":"                if not backup_id:"},{"line_number":84,"context_line":"                    restart_redis \u003d True"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2FCZk%3D","line":81,"updated":"2013-11-15 10:52:52.000000000","message":"same, you are running into bug, mount_point \u003d /var/lib/mysql","commit_id":"659aa91d8caa0ca341351126fc0841e3ce46bedd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9adc11f61c5a9b93f952a8908750508a57bb2e25","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                app.stop_db()"},{"line_number":83,"context_line":"                if not backup_id:"},{"line_number":84,"context_line":"                    restart_redis \u003d True"},{"line_number":85,"context_line":"                    device.migrate_data(CONF.mount_point)"},{"line_number":86,"context_line":"            device.mount(CONF.mount_point)"},{"line_number":87,"context_line":"            LOG.debug(_(\u0027Mounted the volume.\u0027))"},{"line_number":88,"context_line":"            if restart_redis:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2FCZo%3D","line":85,"updated":"2013-11-15 10:52:52.000000000","message":"same, you are running into bug, mount_point \u003d /var/lib/mysql","commit_id":"659aa91d8caa0ca341351126fc0841e3ce46bedd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9adc11f61c5a9b93f952a8908750508a57bb2e25","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                if not backup_id:"},{"line_number":84,"context_line":"                    restart_redis \u003d True"},{"line_number":85,"context_line":"                    device.migrate_data(CONF.mount_point)"},{"line_number":86,"context_line":"            device.mount(CONF.mount_point)"},{"line_number":87,"context_line":"            LOG.debug(_(\u0027Mounted the volume.\u0027))"},{"line_number":88,"context_line":"            if restart_redis:"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2FCZE%3D","line":86,"updated":"2013-11-15 10:52:52.000000000","message":"same, you are running into bug, mount_point \u003d /var/lib/mysql","commit_id":"659aa91d8caa0ca341351126fc0841e3ce46bedd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9adc11f61c5a9b93f952a8908750508a57bb2e25","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            device.mount(CONF.mount_point)"},{"line_number":87,"context_line":"            LOG.debug(_(\u0027Mounted the volume.\u0027))"},{"line_number":88,"context_line":"            if restart_redis:"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"                app.start_redis()"},{"line_number":91,"context_line":"        app.install_if_needed()"},{"line_number":92,"context_line":"        if backup_id:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2FCY4%3D","line":89,"updated":"2013-11-15 10:52:52.000000000","message":"could you please remove empty line ?","commit_id":"659aa91d8caa0ca341351126fc0841e3ce46bedd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9adc11f61c5a9b93f952a8908750508a57bb2e25","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        app.install_if_needed()"},{"line_number":92,"context_line":"        if backup_id:"},{"line_number":93,"context_line":"            self._perform_restore(backup_id, context,"},{"line_number":94,"context_line":"                                  CONF.mount_point, app)"},{"line_number":95,"context_line":"        LOG.info(_(\u0027Securing redis now.\u0027))"},{"line_number":96,"context_line":"        app.secure(config_contents)"},{"line_number":97,"context_line":"        app.complete_install_or_restart()"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2FCZs%3D","line":94,"updated":"2013-11-15 10:52:52.000000000","message":"same, you are running into bug, mount_point \u003d /var/lib/mysql","commit_id":"659aa91d8caa0ca341351126fc0841e3ce46bedd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9adc11f61c5a9b93f952a8908750508a57bb2e25","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            self._perform_restore(backup_id, context,"},{"line_number":94,"context_line":"                                  CONF.mount_point, app)"},{"line_number":95,"context_line":"        LOG.info(_(\u0027Securing redis now.\u0027))"},{"line_number":96,"context_line":"        app.secure(config_contents)"},{"line_number":97,"context_line":"        app.complete_install_or_restart()"},{"line_number":98,"context_line":"        LOG.info(_(\u0027\"prepare\" redis call has finished.\u0027))"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2FCYo%3D","line":96,"updated":"2013-11-15 10:52:52.000000000","message":"still no change, why does it called secure? Any reasons ?","commit_id":"659aa91d8caa0ca341351126fc0841e3ce46bedd"},{"author":{"_account_id":694,"name":"Tim Simpson","email":"tim.simpson@rackspace.com","username":"tim-simpson"},"change_message_id":"2f500b1124db0182494570543a2dac50f889f6d9","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        Changes the redis instance password"},{"line_number":47,"context_line":"        it is currently not not implemented."},{"line_number":48,"context_line":"        \"\"\""},{"line_number":49,"context_line":"        raise NotImplemented()"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def reset_configuration(self, context, configuration):"},{"line_number":52,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F9uTU%3D","line":49,"updated":"2013-12-06 18:18:08.000000000","message":"Out of curiosity, why not just literally not implement this? The RPC call will then fail.\n\nBetter yet, take advantage of datastore types to check to see if such a call would work on the Trove server side and never make the call.","commit_id":"7fcd9903f38f71f5d074b24cd9206a7540e9b818"},{"author":{"_account_id":694,"name":"Tim Simpson","email":"tim.simpson@rackspace.com","username":"tim-simpson"},"change_message_id":"3e544b92a95c832bc1c00f00deffb91c4aaa63e4","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        Changes the redis instance password"},{"line_number":47,"context_line":"        it is currently not not implemented."},{"line_number":48,"context_line":"        \"\"\""},{"line_number":49,"context_line":"        raise NotImplemented()"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def reset_configuration(self, context, configuration):"},{"line_number":52,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F9tmQ%3D","line":49,"in_reply_to":"AAAATn%2F9tqI%3D","updated":"2013-12-06 20:31:52.000000000","message":"Ah, cool. In that case I support as it\u0027s acting like a TODO.","commit_id":"7fcd9903f38f71f5d074b24cd9206a7540e9b818"},{"author":{"_account_id":1049,"name":"Conrad Weidenkeller","email":"conrad@weidenkeller.com","username":"cweidenkeller"},"change_message_id":"72fd5840cf02523f9296514930e0ddb08ec0a637","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        Changes the redis instance password"},{"line_number":47,"context_line":"        it is currently not not implemented."},{"line_number":48,"context_line":"        \"\"\""},{"line_number":49,"context_line":"        raise NotImplemented()"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def reset_configuration(self, context, configuration):"},{"line_number":52,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F9tqI%3D","line":49,"in_reply_to":"AAAATn%2F9uTU%3D","updated":"2013-12-06 20:26:00.000000000","message":"We will support changing of passwords on redis... The call won\u0027t fail. I just have not implemented the password stuff yet. If you want me to remove the place holders for it I can.","commit_id":"7fcd9903f38f71f5d074b24cd9206a7540e9b818"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"f083e9f7565b2137e480e5e95bbec62080ef517b","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class Manager(periodic_task.PeriodicTasks):"},{"line_number":32,"context_line":"    \"\"\""},{"line_number":33,"context_line":"    This is the Redis manager class it is dynamically loaded"},{"line_number":34,"context_line":"    based off of the service_type of the trove instance"},{"line_number":35,"context_line":"    \"\"\""},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2Fwcs%3D","line":33,"updated":"2014-01-08 20:38:23.000000000","message":"class. It is","commit_id":"e619bc65c6459c77b675354d52cb4160092e1846"},{"author":{"_account_id":1049,"name":"Conrad Weidenkeller","email":"conrad@weidenkeller.com","username":"cweidenkeller"},"change_message_id":"6aca20c323054fa9785fc9b4bb4b0f24654dee93","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class Manager(periodic_task.PeriodicTasks):"},{"line_number":32,"context_line":"    \"\"\""},{"line_number":33,"context_line":"    This is the Redis manager class it is dynamically loaded"},{"line_number":34,"context_line":"    based off of the service_type of the trove instance"},{"line_number":35,"context_line":"    \"\"\""},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2Fvqo%3D","line":33,"in_reply_to":"AAAAUH%2F%2Fwcs%3D","updated":"2014-01-08 23:26:21.000000000","message":"Done","commit_id":"e619bc65c6459c77b675354d52cb4160092e1846"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"f083e9f7565b2137e480e5e95bbec62080ef517b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    @periodic_task.periodic_task(ticks_between_runs\u003d3)"},{"line_number":38,"context_line":"    def update_status(self, context):"},{"line_number":39,"context_line":"        \"\"\""},{"line_number":40,"context_line":"        Updates the redis trove instance it is decorated with"},{"line_number":41,"context_line":"        perodic task so it is automatically called every 3 ticks."},{"line_number":42,"context_line":"        \"\"\""},{"line_number":43,"context_line":"        RedisAppStatus.get().update()"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2Fwco%3D","line":40,"updated":"2014-01-08 20:38:23.000000000","message":"instance. It is","commit_id":"e619bc65c6459c77b675354d52cb4160092e1846"},{"author":{"_account_id":1049,"name":"Conrad Weidenkeller","email":"conrad@weidenkeller.com","username":"cweidenkeller"},"change_message_id":"6aca20c323054fa9785fc9b4bb4b0f24654dee93","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    @periodic_task.periodic_task(ticks_between_runs\u003d3)"},{"line_number":38,"context_line":"    def update_status(self, context):"},{"line_number":39,"context_line":"        \"\"\""},{"line_number":40,"context_line":"        Updates the redis trove instance it is decorated with"},{"line_number":41,"context_line":"        perodic task so it is automatically called every 3 ticks."},{"line_number":42,"context_line":"        \"\"\""},{"line_number":43,"context_line":"        RedisAppStatus.get().update()"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2Fvqg%3D","line":40,"in_reply_to":"AAAAUH%2F%2Fwco%3D","updated":"2014-01-08 23:26:21.000000000","message":"Done","commit_id":"e619bc65c6459c77b675354d52cb4160092e1846"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"f083e9f7565b2137e480e5e95bbec62080ef517b","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def _perform_restore(self, backup_info, context, restore_location, app):"},{"line_number":61,"context_line":"        \"\"\""},{"line_number":62,"context_line":"        Perform a restore on this instance currently it is not implemented."},{"line_number":63,"context_line":"        \"\"\""},{"line_number":64,"context_line":"        raise NotImplemented()"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2Fwcg%3D","line":62,"updated":"2014-01-08 20:38:23.000000000","message":"et cetera","commit_id":"e619bc65c6459c77b675354d52cb4160092e1846"},{"author":{"_account_id":1049,"name":"Conrad Weidenkeller","email":"conrad@weidenkeller.com","username":"cweidenkeller"},"change_message_id":"6aca20c323054fa9785fc9b4bb4b0f24654dee93","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def _perform_restore(self, backup_info, context, restore_location, app):"},{"line_number":61,"context_line":"        \"\"\""},{"line_number":62,"context_line":"        Perform a restore on this instance currently it is not implemented."},{"line_number":63,"context_line":"        \"\"\""},{"line_number":64,"context_line":"        raise NotImplemented()"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FvqY%3D","line":62,"in_reply_to":"AAAAUH%2F%2Fwcg%3D","updated":"2014-01-08 23:26:21.000000000","message":"Done","commit_id":"e619bc65c6459c77b675354d52cb4160092e1846"},{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"d7e47eccdf3788cb4fa51105630048e52bdf0169","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def prepare(self, context, packages, databases, memory_mb, users,"},{"line_number":68,"context_line":"                device_path\u003dNone, mount_point\u003dNone, backup_info\u003dNone,"},{"line_number":69,"context_line":"                config_contents\u003dNone, root_password\u003dNone):"},{"line_number":70,"context_line":"        \"\"\""},{"line_number":71,"context_line":"        This is called when the trove instance first comes online."},{"line_number":72,"context_line":"        It is the first rpc message passed from the task manager."}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2FrPE%3D","line":69,"updated":"2014-01-09 18:37:05.000000000","message":"I assume that we are not using this yet, but will be in the future?","commit_id":"2ba561180618d243d66e88554c726bed99e9cffc"},{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"d7e47eccdf3788cb4fa51105630048e52bdf0169","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        Entry point for initiating a backup for this guest agents db instance."},{"line_number":122,"context_line":"        The call currently blocks until the backup is complete or errors. If"},{"line_number":123,"context_line":"        device_path is specified, it will be mounted based to a point specified"},{"line_number":124,"context_line":"        in configuration."},{"line_number":125,"context_line":"        \"\"\""},{"line_number":126,"context_line":"        raise NotImplemented()"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2FrPc%3D","line":124,"updated":"2014-01-09 18:37:05.000000000","message":"umm i dont think this describes create_backup hehe","commit_id":"2ba561180618d243d66e88554c726bed99e9cffc"}],"trove/guestagent/datastore/redis/service.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"68305a62503e73b5aabdb6c6690316ef62b13850","unresolved":false,"context_lines":[{"line_number":33,"context_line":"UUID \u003d False"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"TMP_REDIS_CONF \u003d \u0027/tmp/redis.conf.tmp\u0027"},{"line_number":36,"context_line":"REDIS_BASE_DIR \u003d \u0027/var/lib/redis\u0027"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"CONF \u003d cfg.CONF"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2Ffw4%3D","line":36,"updated":"2013-11-04 14:21:00.000000000","message":"i suppose this could be moved into redis/system.py","commit_id":"43f3bb942bf7fb62ab240a3f021798cf44039095"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"68305a62503e73b5aabdb6c6690316ef62b13850","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    options \u003d {}"},{"line_number":52,"context_line":"    with open(system.REDIS_CONFIG, \u0027r\u0027) as fd:"},{"line_number":53,"context_line":"        for opt in fd.readline().split(\u0027 \u0027):"},{"line_number":54,"context_line":"            options[opt[0]] \u003d \u0027 \u0027.join(opt[1:])"},{"line_number":55,"context_line":"    return options"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2Ffw0%3D","line":54,"updated":"2013-11-04 14:21:00.000000000","message":"please use dict.update method","commit_id":"43f3bb942bf7fb62ab240a3f021798cf44039095"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"68305a62503e73b5aabdb6c6690316ef62b13850","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        self._create_redis_conf_dir()"},{"line_number":161,"context_line":"        packager.pkg_install(system.REDIS_PACKAGE, self.TIME_OUT)"},{"line_number":162,"context_line":"        self.start_redis()"},{"line_number":163,"context_line":"        LOG.debug(_(\u0027Finished installing mysql server\u0027))"},{"line_number":164,"context_line":"        #TODO(rnirmal): Add checks to make sure the package got installed"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def _create_redis_confd_dir(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2Ffwo%3D","line":163,"updated":"2013-11-04 14:21:00.000000000","message":"mysql ?","commit_id":"43f3bb942bf7fb62ab240a3f021798cf44039095"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"68305a62503e73b5aabdb6c6690316ef62b13850","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        finally:"},{"line_number":227,"context_line":"            self.status.end_install_or_restart()"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    def secure(self, config_contents):"},{"line_number":230,"context_line":"        \"\"\""},{"line_number":231,"context_line":"        Secure this redis instance."},{"line_number":232,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2FfxA%3D","line":229,"updated":"2013-11-04 14:21:00.000000000","message":"why does this method called secure? it\u0027s only updates config values","commit_id":"43f3bb942bf7fb62ab240a3f021798cf44039095"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"cd038389e4f0003e0dcb36d57ca0618ac39b79ab","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from trove.openstack.common.gettextutils import _"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":32,"context_line":"PREPARING \u003d False"},{"line_number":33,"context_line":"UUID \u003d False"},{"line_number":34,"context_line":"TMP_REDIS_CONF \u003d \u0027/tmp/redis.conf.tmp\u0027"},{"line_number":35,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2FE5I%3D","line":32,"updated":"2013-11-14 18:41:12.000000000","message":"Never used.","commit_id":"3db0d8ef4943a0ae8577836c7865073a06c1551c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"cd038389e4f0003e0dcb36d57ca0618ac39b79ab","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":32,"context_line":"PREPARING \u003d False"},{"line_number":33,"context_line":"UUID \u003d False"},{"line_number":34,"context_line":"TMP_REDIS_CONF \u003d \u0027/tmp/redis.conf.tmp\u0027"},{"line_number":35,"context_line":"CONF \u003d cfg.CONF"},{"line_number":36,"context_line":"packager \u003d pkg.Package()"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2FE5E%3D","line":33,"updated":"2013-11-14 18:41:12.000000000","message":"Never used.","commit_id":"3db0d8ef4943a0ae8577836c7865073a06c1551c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"cd038389e4f0003e0dcb36d57ca0618ac39b79ab","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                    options[\u0027requirepass\u0027],"},{"line_number":90,"context_line":"                    \u0027PING\u0027,"},{"line_number":91,"context_line":"                    run_as_root\u003dTrue,"},{"line_number":92,"context_line":"                    root_helper\u003d\u0027sudo\u0027)"},{"line_number":93,"context_line":"            else:"},{"line_number":94,"context_line":"                out, err \u003d utils.execute_with_timeout("},{"line_number":95,"context_line":"                    system.REDIS_CLI,"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2FE14%3D","line":92,"updated":"2013-11-14 18:41:12.000000000","message":"Maybe it would be better to add more logging steps.","commit_id":"3db0d8ef4943a0ae8577836c7865073a06c1551c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"cd038389e4f0003e0dcb36d57ca0618ac39b79ab","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        try:"},{"line_number":218,"context_line":"            self.status.begin_restart()"},{"line_number":219,"context_line":"            self.stop_db()"},{"line_number":220,"context_line":"            self.start_redis()"},{"line_number":221,"context_line":"        finally:"},{"line_number":222,"context_line":"            self.status.end_install_or_restart()"},{"line_number":223,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2FE2k%3D","line":220,"updated":"2013-11-14 18:41:12.000000000","message":"maybe it would be better to use service restart","commit_id":"3db0d8ef4943a0ae8577836c7865073a06c1551c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"cd038389e4f0003e0dcb36d57ca0618ac39b79ab","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        finally:"},{"line_number":222,"context_line":"            self.status.end_install_or_restart()"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def secure(self, config_contents):"},{"line_number":225,"context_line":"        \"\"\""},{"line_number":226,"context_line":"        Secure this redis instance."},{"line_number":227,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2FE2c%3D","line":224,"updated":"2013-11-14 18:41:12.000000000","message":"why does it called secure? I suppose it should be made like write_conf? update_conf?","commit_id":"3db0d8ef4943a0ae8577836c7865073a06c1551c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"cd038389e4f0003e0dcb36d57ca0618ac39b79ab","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        Determine if redis is installed or not."},{"line_number":269,"context_line":"        \"\"\""},{"line_number":270,"context_line":"        #(cp16net) could raise an exception, does it need to be handled here?"},{"line_number":271,"context_line":"        version \u003d packager.pkg_version(system.REDIS_PACKAGE)"},{"line_number":272,"context_line":"        return not version is None"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2FE2I%3D","line":271,"updated":"2013-11-14 18:41:12.000000000","message":"Maybe it would be better to add more logging steps.","commit_id":"3db0d8ef4943a0ae8577836c7865073a06c1551c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"df328d7fc9cc139bb358d369c5ff7118e0555766","unresolved":false,"context_lines":[{"line_number":100,"context_line":"            return rd_instance.ServiceStatuses.RUNNING"},{"line_number":101,"context_line":"        except exception.ProcessExecutionError:"},{"line_number":102,"context_line":"            LOG.error(_(\u0027Process execution error on redis-cli\u0027))"},{"line_number":103,"context_line":"        if out.strip() !\u003d \u0027PONG\u0027:"},{"line_number":104,"context_line":"            try:"},{"line_number":105,"context_line":"                out, err \u003d utils.execute_with_timeout(\u0027/bin/ps\u0027, \u0027-C\u0027,"},{"line_number":106,"context_line":"                                                      \u0027redis-server\u0027, \u0027h\u0027)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2FCIk%3D","line":103,"updated":"2013-11-15 14:15:18.000000000","message":"Hm, here could appear an issue. If utils.execute_with_timeout would cause exception.ProcessExecutionError, out would be None, so it would lead to attribute exception.","commit_id":"659aa91d8caa0ca341351126fc0841e3ce46bedd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9d4cd211a5ab8fe9b8f2a0b94bc923fc361905e8","unresolved":false,"context_lines":[{"line_number":141,"context_line":"            self._install_redis()"},{"line_number":142,"context_line":"        LOG.info(_(\u0027Dbaas install_if_needed complete\u0027))"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    def complete_install_or_restart(self):"},{"line_number":145,"context_line":"        \"\"\""},{"line_number":146,"context_line":"        finalize status updates for install or restart."},{"line_number":147,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2FCQQ%3D","line":144,"updated":"2013-11-15 11:16:32.000000000","message":"Is there any need in such function ? It\u0027s only redirect call to self.status.end_install_or_restart().","commit_id":"659aa91d8caa0ca341351126fc0841e3ce46bedd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9d4cd211a5ab8fe9b8f2a0b94bc923fc361905e8","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        Install the redis server."},{"line_number":153,"context_line":"        \"\"\""},{"line_number":154,"context_line":"        LOG.debug(_(\u0027Installing redis server\u0027))"},{"line_number":155,"context_line":"        self._create_redis_conf_dir()"},{"line_number":156,"context_line":"        packager.pkg_install(system.REDIS_PACKAGE, self.TIME_OUT)"},{"line_number":157,"context_line":"        self.start_redis()"},{"line_number":158,"context_line":"        LOG.debug(_(\u0027Finished installing redis server\u0027))"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2FCQU%3D","line":155,"updated":"2013-11-15 11:16:32.000000000","message":"Attribute error: RedisApp has no _create_redis_conf_dir attribute","commit_id":"659aa91d8caa0ca341351126fc0841e3ce46bedd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9d4cd211a5ab8fe9b8f2a0b94bc923fc361905e8","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        \"\"\""},{"line_number":154,"context_line":"        LOG.debug(_(\u0027Installing redis server\u0027))"},{"line_number":155,"context_line":"        self._create_redis_conf_dir()"},{"line_number":156,"context_line":"        packager.pkg_install(system.REDIS_PACKAGE, self.TIME_OUT)"},{"line_number":157,"context_line":"        self.start_redis()"},{"line_number":158,"context_line":"        LOG.debug(_(\u0027Finished installing redis server\u0027))"},{"line_number":159,"context_line":"        #TODO(rnirmal): Add checks to make sure the package got installed"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2FCQk%3D","line":156,"updated":"2013-11-15 11:16:32.000000000","message":"TIME_OUT - never initialized","commit_id":"659aa91d8caa0ca341351126fc0841e3ce46bedd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"df328d7fc9cc139bb358d369c5ff7118e0555766","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        LOG.debug(_(\u0027Finished installing redis server\u0027))"},{"line_number":159,"context_line":"        #TODO(rnirmal): Add checks to make sure the package got installed"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def _create_redis_confd_dir(self):"},{"line_number":162,"context_line":"        LOG.debug(_(\"Creating %s\" % system.REDIS_CONF_DIR))"},{"line_number":163,"context_line":"        command \u003d \"mkdir -p %s\" % system.REDIS_CONF_DIR"},{"line_number":164,"context_line":"        utils.execute_with_timeout(command,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2FBp4%3D","line":161,"updated":"2013-11-15 14:15:18.000000000","message":"Maybe you mean  this func, at L#155.\nIf you had tests for apps you would see that. So please, add tests for RedisApp.","commit_id":"659aa91d8caa0ca341351126fc0841e3ce46bedd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"8d0163663bf3dac352c062e6ac6e0e3cb5dae88e","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        command \u003d \"mkdir -p %s\" % system.REDIS_CONF_DIR"},{"line_number":164,"context_line":"        utils.execute_with_timeout(command,"},{"line_number":165,"context_line":"                                   run_as_root\u003dTrue,"},{"line_number":166,"context_line":"                                   root_helper\u003d\u0027sudo\u0027)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    def _enable_redis_on_boot(self):"},{"line_number":169,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2B8U4%3D","line":166,"updated":"2013-11-18 10:10:49.000000000","message":"doesn\u0027t work on ubuntu 12.04 - No such file or directory.","commit_id":"659aa91d8caa0ca341351126fc0841e3ce46bedd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"8f392efaa3c3bcb5c36f45a773c1465e14e79fe4","unresolved":false,"context_lines":[{"line_number":100,"context_line":"            return rd_instance.ServiceStatuses.RUNNING"},{"line_number":101,"context_line":"        except exception.ProcessExecutionError:"},{"line_number":102,"context_line":"            LOG.error(_(\u0027Process execution error on redis-cli\u0027))"},{"line_number":103,"context_line":"        if out !\u003d \u0027PONG\u0027:"},{"line_number":104,"context_line":"            try:"},{"line_number":105,"context_line":"                out, err \u003d utils.execute_with_timeout(\u0027/bin/ps\u0027, \u0027-C\u0027,"},{"line_number":106,"context_line":"                                                      \u0027redis-server\u0027, \u0027h\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9BPU%3D","line":103,"updated":"2013-12-17 16:27:18.000000000","message":"if \u0027PONG\u0027 not in out\nwould preferable","commit_id":"59be9f8bb20bf7ee9659eaf4dd8f90d43edb6d43"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"8f392efaa3c3bcb5c36f45a773c1465e14e79fe4","unresolved":false,"context_lines":[{"line_number":197,"context_line":"                                       run_as_root\u003dTrue,"},{"line_number":198,"context_line":"                                       root_helper\u003d\u0027sudo\u0027)"},{"line_number":199,"context_line":"        else:"},{"line_number":200,"context_line":"            utils.execute_with_timeout(\u0027sudo \u0027 + system.REDIS_CMD_DISABLE,"},{"line_number":201,"context_line":"                                       shell\u003dTrue)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def stop_db(self, update_db\u003dFalse, do_not_start_on_reboot\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9BOc%3D","line":200,"updated":"2013-12-17 16:27:18.000000000","message":"could you please use standart string concatenation","commit_id":"59be9f8bb20bf7ee9659eaf4dd8f90d43edb6d43"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"f083e9f7565b2137e480e5e95bbec62080ef517b","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    \"\"\""},{"line_number":42,"context_line":"    options \u003d {}"},{"line_number":43,"context_line":"    with open(system.REDIS_CONFIG, \u0027r\u0027) as fd:"},{"line_number":44,"context_line":"        for opt in fd.readline().split(\u0027 \u0027):"},{"line_number":45,"context_line":"            options.update({opt[0]: \u0027 \u0027.join(opt[1:])})"},{"line_number":46,"context_line":"    return options"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2Fwc8%3D","line":44,"updated":"2014-01-08 20:38:23.000000000","message":"I don\u0027t think this does what line 40 claims.\nThis appears to only be iterating over the first line of the file, after splitting it on spaces.\n\nI think you want something more like\n    CFG \u003d {}\n    with open(\"in.cfg\", \u0027r\u0027) as inf:\n        for line in inf.readlines():\n            chunks \u003d line.rstrip().split(\u0027 \u0027)\n            ok, ov \u003d chunks[0], \u0027 \u0027.join(chunks[1:])\n            CFG[ok] \u003d ov\n    return CFG","commit_id":"e619bc65c6459c77b675354d52cb4160092e1846"},{"author":{"_account_id":1049,"name":"Conrad Weidenkeller","email":"conrad@weidenkeller.com","username":"cweidenkeller"},"change_message_id":"6aca20c323054fa9785fc9b4bb4b0f24654dee93","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    \"\"\""},{"line_number":42,"context_line":"    options \u003d {}"},{"line_number":43,"context_line":"    with open(system.REDIS_CONFIG, \u0027r\u0027) as fd:"},{"line_number":44,"context_line":"        for opt in fd.readline().split(\u0027 \u0027):"},{"line_number":45,"context_line":"            options.update({opt[0]: \u0027 \u0027.join(opt[1:])})"},{"line_number":46,"context_line":"    return options"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2Fv%2B0%3D","line":44,"in_reply_to":"AAAAUH%2F%2Fwc8%3D","updated":"2014-01-08 23:26:21.000000000","message":"Thanks for catching that.","commit_id":"e619bc65c6459c77b675354d52cb4160092e1846"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"f083e9f7565b2137e480e5e95bbec62080ef517b","unresolved":false,"context_lines":[{"line_number":258,"context_line":"                self.state_change_wait_time, update_db):"},{"line_number":259,"context_line":"            LOG.error(_(\"Start up of redis failed!\"))"},{"line_number":260,"context_line":"            # If it won\u0027t start, but won\u0027t die either, kill it by hand so we"},{"line_number":261,"context_line":"            # don\u0027t let a rouge process wander around."},{"line_number":262,"context_line":"            try:"},{"line_number":263,"context_line":"                utils.execute_with_timeout(\u0027pkill\u0027, \u0027-9\u0027,"},{"line_number":264,"context_line":"                                           \u0027redis-server\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FwZY%3D","line":261,"updated":"2014-01-08 20:38:23.000000000","message":"rogue","commit_id":"e619bc65c6459c77b675354d52cb4160092e1846"},{"author":{"_account_id":1049,"name":"Conrad Weidenkeller","email":"conrad@weidenkeller.com","username":"cweidenkeller"},"change_message_id":"6aca20c323054fa9785fc9b4bb4b0f24654dee93","unresolved":false,"context_lines":[{"line_number":258,"context_line":"                self.state_change_wait_time, update_db):"},{"line_number":259,"context_line":"            LOG.error(_(\"Start up of redis failed!\"))"},{"line_number":260,"context_line":"            # If it won\u0027t start, but won\u0027t die either, kill it by hand so we"},{"line_number":261,"context_line":"            # don\u0027t let a rouge process wander around."},{"line_number":262,"context_line":"            try:"},{"line_number":263,"context_line":"                utils.execute_with_timeout(\u0027pkill\u0027, \u0027-9\u0027,"},{"line_number":264,"context_line":"                                           \u0027redis-server\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FvqI%3D","line":261,"in_reply_to":"AAAAUH%2F%2FwZY%3D","updated":"2014-01-08 23:26:21.000000000","message":"Done","commit_id":"e619bc65c6459c77b675354d52cb4160092e1846"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e2db095b8d8ef68c847cceda3c6d9b9ebc96d57c","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        if do_not_start_on_reboot:"},{"line_number":212,"context_line":"            self._disable_redis_on_boot()"},{"line_number":213,"context_line":"        cmd \u003d \u0027sudo %s\u0027 % (system.REDIS_CMD_STOP)"},{"line_number":214,"context_line":"        utils.execute_with_timeout(cmd,"},{"line_number":215,"context_line":"                                   shell\u003dTrue)"},{"line_number":216,"context_line":"        if not self.status.wait_for_real_status_to_change_to("},{"line_number":217,"context_line":"                rd_instance.ServiceStatuses.SHUTDOWN,"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F%2FeT0%3D","line":214,"updated":"2014-01-13 14:48:24.000000000","message":"i\u0027d suggest to examine stdout and stderr to find out if there are any kinds problems or not","commit_id":"287ca3ac4fb3e32cacf382ebaf16f383022b06ba"},{"author":{"_account_id":694,"name":"Tim Simpson","email":"tim.simpson@rackspace.com","username":"tim-simpson"},"change_message_id":"1e2e98f3f5d206c5863cdaaf82c103cd6ed7709c","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        if do_not_start_on_reboot:"},{"line_number":212,"context_line":"            self._disable_redis_on_boot()"},{"line_number":213,"context_line":"        cmd \u003d \u0027sudo %s\u0027 % (system.REDIS_CMD_STOP)"},{"line_number":214,"context_line":"        utils.execute_with_timeout(cmd,"},{"line_number":215,"context_line":"                                   shell\u003dTrue)"},{"line_number":216,"context_line":"        if not self.status.wait_for_real_status_to_change_to("},{"line_number":217,"context_line":"                rd_instance.ServiceStatuses.SHUTDOWN,"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F%2B5bY%3D","line":214,"in_reply_to":"AAAAUH%2F%2FeT0%3D","updated":"2014-01-20 23:33:12.000000000","message":"I\u0027m assuming the exit code alone is enough to go on? Even if it isn\u0027t, the \"wait_for_real_status_to_change_to\" method will ensure the app is actually stopped.","commit_id":"287ca3ac4fb3e32cacf382ebaf16f383022b06ba"},{"author":{"_account_id":8259,"name":"Andrey Shestakov","email":"ashestakov@mirantis.com","username":"ashestakov"},"change_message_id":"10453527eba105c2b21f479ecce500aff65ddc74","unresolved":false,"context_lines":[{"line_number":249,"context_line":"        LOG.info(_(\"Starting redis...\"))"},{"line_number":250,"context_line":"        self._enable_redis_on_boot()"},{"line_number":251,"context_line":"        try:"},{"line_number":252,"context_line":"            cmd \u003d \u0027sudo %s\u0027 % (system.REDIS_CMD_START)"},{"line_number":253,"context_line":"            utils.execute_with_timeout(cmd,"},{"line_number":254,"context_line":"                                       shell\u003dTrue)"},{"line_number":255,"context_line":"        except exception.ProcessExecutionError:"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F%2FSC4%3D","line":252,"updated":"2014-01-15 14:37:34.000000000","message":"maybe will better to use service_discovery feature, like in mysql\n\nstart/stop should be OS independent","commit_id":"287ca3ac4fb3e32cacf382ebaf16f383022b06ba"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e2db095b8d8ef68c847cceda3c6d9b9ebc96d57c","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        try:"},{"line_number":252,"context_line":"            cmd \u003d \u0027sudo %s\u0027 % (system.REDIS_CMD_START)"},{"line_number":253,"context_line":"            utils.execute_with_timeout(cmd,"},{"line_number":254,"context_line":"                                       shell\u003dTrue)"},{"line_number":255,"context_line":"        except exception.ProcessExecutionError:"},{"line_number":256,"context_line":"            pass"},{"line_number":257,"context_line":"        if not self.status.wait_for_real_status_to_change_to("}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F%2FeTw%3D","line":254,"updated":"2014-01-13 14:48:24.000000000","message":"i\u0027d suggest to examine stdout and stderr to find out if there are any kinds problems or not","commit_id":"287ca3ac4fb3e32cacf382ebaf16f383022b06ba"},{"author":{"_account_id":694,"name":"Tim Simpson","email":"tim.simpson@rackspace.com","username":"tim-simpson"},"change_message_id":"1e2e98f3f5d206c5863cdaaf82c103cd6ed7709c","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        try:"},{"line_number":252,"context_line":"            cmd \u003d \u0027sudo %s\u0027 % (system.REDIS_CMD_START)"},{"line_number":253,"context_line":"            utils.execute_with_timeout(cmd,"},{"line_number":254,"context_line":"                                       shell\u003dTrue)"},{"line_number":255,"context_line":"        except exception.ProcessExecutionError:"},{"line_number":256,"context_line":"            pass"},{"line_number":257,"context_line":"        if not self.status.wait_for_real_status_to_change_to("}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F%2B5bQ%3D","line":254,"in_reply_to":"AAAAUH%2F%2FeTw%3D","updated":"2014-01-20 23:33:12.000000000","message":"Again, the wait_for_real_status_to_change_to function will do that and know for sure if it\u0027s running or not.","commit_id":"287ca3ac4fb3e32cacf382ebaf16f383022b06ba"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e2db095b8d8ef68c847cceda3c6d9b9ebc96d57c","unresolved":false,"context_lines":[{"line_number":259,"context_line":"                self.state_change_wait_time, update_db):"},{"line_number":260,"context_line":"            LOG.error(_(\"Start up of redis failed!\"))"},{"line_number":261,"context_line":"            try:"},{"line_number":262,"context_line":"                utils.execute_with_timeout(\u0027pkill\u0027, \u0027-9\u0027,"},{"line_number":263,"context_line":"                                           \u0027redis-server\u0027,"},{"line_number":264,"context_line":"                                           run_as_root\u003dTrue,"},{"line_number":265,"context_line":"                                           root_helper\u003d\u0027sudo\u0027)"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F%2FeTs%3D","line":262,"updated":"2014-01-13 14:48:24.000000000","message":"i\u0027d suggest to examine stdout and stderr to find out if there are any kinds problems or not","commit_id":"287ca3ac4fb3e32cacf382ebaf16f383022b06ba"}],"trove/guestagent/datastore/redis/system.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"68305a62503e73b5aabdb6c6690316ef62b13850","unresolved":false,"context_lines":[{"line_number":37,"context_line":"REDIS_CMD_STOP \u003d \u0027service redis-server stop || /bin/true\u0027"},{"line_number":38,"context_line":"REDIS_PACKAGE \u003d \u0027redis-server\u0027"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"if os.path.isfile(\u0027/etc/redhat-release\u0027):"},{"line_number":41,"context_line":"    OS \u003d REDHAT"},{"line_number":42,"context_line":"    REDIS_BIN \u003d \u0027/usr/libexec/redis-server\u0027"},{"line_number":43,"context_line":"    REDIS_CMD_ENABLE \u003d \u0027chkconfig redis-server on\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2Ffwk%3D","line":40,"updated":"2013-11-04 14:21:00.000000000","message":"please rebase your change, there is no need to dublicate code, take a look at guestagent/common","commit_id":"43f3bb942bf7fb62ab240a3f021798cf44039095"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"cd038389e4f0003e0dcb36d57ca0618ac39b79ab","unresolved":false,"context_lines":[{"line_number":34,"context_line":"REDIS_PACKAGE \u003d \u0027redis-server\u0027"},{"line_number":35,"context_line":"REDIS_BASE_DIR \u003d \u0027/var/lib/redis\u0027"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"if OS is \u0027redhat\u0027:"},{"line_number":38,"context_line":"    REDIS_BIN \u003d \u0027/usr/libexec/redis-server\u0027"},{"line_number":39,"context_line":"    REDIS_CMD_ENABLE \u003d \u0027chkconfig redis-server on\u0027"},{"line_number":40,"context_line":"    REDIS_CMD_DISABLE \u003d \u0027chkconfig redis-server off\u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2FE1c%3D","line":37,"updated":"2013-11-14 18:41:12.000000000","message":"i suppose you could call get_os() here without storring another one variable.","commit_id":"3db0d8ef4943a0ae8577836c7865073a06c1551c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9adc11f61c5a9b93f952a8908750508a57bb2e25","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from trove.common import cfg"},{"line_number":21,"context_line":"from trove.guestagent.common.operating_system import get_os"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"CONF \u003d cfg.CONF"},{"line_number":24,"context_line":"OS \u003d get_os()"},{"line_number":25,"context_line":"REDIS_CONFIG \u003d \u0027/etc/redis/redis.conf\u0027"},{"line_number":26,"context_line":"REDIS_CONF_DIR \u003d \u0027/etc/redis\u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2FCaQ%3D","line":23,"updated":"2013-11-15 10:52:52.000000000","message":"Never used.","commit_id":"659aa91d8caa0ca341351126fc0841e3ce46bedd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"88bdec4875927597d6a57310ace9fa3e4ad08468","unresolved":false,"context_lines":[{"line_number":32,"context_line":"REDIS_CMD_START \u003d \u0027service redis-server start || /bin/true\u0027"},{"line_number":33,"context_line":"REDIS_CMD_STOP \u003d \u0027service redis-server stop || /bin/true\u0027"},{"line_number":34,"context_line":"REDIS_PACKAGE \u003d \u0027redis-server\u0027"},{"line_number":35,"context_line":"REDIS_BASE_DIR \u003d \u0027/var/lib/redis\u0027"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"if OS is \u0027redhat\u0027:"},{"line_number":38,"context_line":"    REDIS_BIN \u003d \u0027/usr/libexec/redis-server\u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2FCUI%3D","line":35,"updated":"2013-11-15 10:55:22.000000000","message":"Since you have this variable you could use it in manager.prepare","commit_id":"659aa91d8caa0ca341351126fc0841e3ce46bedd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e2db095b8d8ef68c847cceda3c6d9b9ebc96d57c","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    REDIS_CMD_ENABLE \u003d \u0027chkconfig redis-server on\u0027"},{"line_number":37,"context_line":"    REDIS_CMD_DISABLE \u003d \u0027chkconfig redis-server off\u0027"},{"line_number":38,"context_line":"    REDIS_CMD_START \u003d \u0027service redis-server start\u0027"},{"line_number":39,"context_line":"    REDIS_CMD_STOP \u003d \u0027service redis-server stop\u0027"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F%2FeTA%3D","line":39,"updated":"2014-01-13 14:48:24.000000000","message":"If you are expection different operating systems you should do service discovery. This could be done through trove/guestagent/common/operating_system.py","commit_id":"287ca3ac4fb3e32cacf382ebaf16f383022b06ba"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"fa65e75a9586824641cd9c36d6dc3e72e836342b","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    REDIS_CMD_ENABLE \u003d \u0027chkconfig redis-server on\u0027"},{"line_number":37,"context_line":"    REDIS_CMD_DISABLE \u003d \u0027chkconfig redis-server off\u0027"},{"line_number":38,"context_line":"    REDIS_CMD_START \u003d \u0027service redis-server start\u0027"},{"line_number":39,"context_line":"    REDIS_CMD_STOP \u003d \u0027service redis-server stop\u0027"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F%2BtIA%3D","line":39,"in_reply_to":"AAAAUH%2F%2FeTA%3D","updated":"2014-01-23 00:49:55.000000000","message":"Yes, while this is better, I think that it\u0027s probably okay to support Ubuntu first, and then add support for say Fedora in a later patch.","commit_id":"287ca3ac4fb3e32cacf382ebaf16f383022b06ba"}],"trove/guestagent/dbaas.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"bd1c15dca540e7bdd3df2ddac767fd305a3446f7","unresolved":false,"context_lines":[{"line_number":35,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":36,"context_line":"defaults \u003d {\u0027mysql\u0027: \u0027trove.guestagent.manager.mysql.Manager\u0027,"},{"line_number":37,"context_line":"            \u0027percona\u0027: \u0027trove.guestagent.manager.mysql.Manager\u0027,"},{"line_number":38,"context_line":"            \u0027redis\u0027: \u0027trove.guestagent.datastore.redis.manager.Manager\u0027}"},{"line_number":39,"context_line":"CONF \u003d cfg.CONF"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2Fy5A%3D","line":38,"updated":"2013-10-28 22:44:10.000000000","message":"Why did you this ?\nplacement strategy: guestagent/datastore_type/datastore_name/manager.py","commit_id":"fdd2334fc1e02242ca1d54af470919751a62ff70"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"68305a62503e73b5aabdb6c6690316ef62b13850","unresolved":false,"context_lines":[{"line_number":35,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":36,"context_line":"defaults \u003d {\u0027mysql\u0027: \u0027trove.guestagent.datastore.mysql.manager.Manager\u0027,"},{"line_number":37,"context_line":"            \u0027percona\u0027: \u0027trove.guestagent.datastore.mysql.manager.Manager\u0027,"},{"line_number":38,"context_line":"            \u0027redis\u0027: \u0027trove.guestagent.datastore.redis.manager.Manager\u0027}"},{"line_number":39,"context_line":"CONF \u003d cfg.CONF"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2Ffwg%3D","line":38,"updated":"2013-11-04 14:21:00.000000000","message":"Why do we need to change more viewable format to this? If there is no reasom please return previous formating","commit_id":"43f3bb942bf7fb62ab240a3f021798cf44039095"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"f083e9f7565b2137e480e5e95bbec62080ef517b","unresolved":false,"context_lines":[{"line_number":36,"context_line":"defaults \u003d {"},{"line_number":37,"context_line":"    \u0027mysql\u0027: \u0027trove.guestagent.datastore.mysql.manager.Manager\u0027,"},{"line_number":38,"context_line":"    \u0027percona\u0027: \u0027trove.guestagent.datastore.mysql.manager.Manager\u0027,"},{"line_number":39,"context_line":"    \u0027redis\u0027: \u0027trove.guestagent.datastore.redis.manager.Manager\u0027"},{"line_number":40,"context_line":"}"},{"line_number":41,"context_line":"CONF \u003d cfg.CONF"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FwYY%3D","line":39,"updated":"2014-01-08 20:38:23.000000000","message":"Would you mind adding a comma to the end of this line so future additions are only a single line add?","commit_id":"e619bc65c6459c77b675354d52cb4160092e1846"},{"author":{"_account_id":1049,"name":"Conrad Weidenkeller","email":"conrad@weidenkeller.com","username":"cweidenkeller"},"change_message_id":"6aca20c323054fa9785fc9b4bb4b0f24654dee93","unresolved":false,"context_lines":[{"line_number":36,"context_line":"defaults \u003d {"},{"line_number":37,"context_line":"    \u0027mysql\u0027: \u0027trove.guestagent.datastore.mysql.manager.Manager\u0027,"},{"line_number":38,"context_line":"    \u0027percona\u0027: \u0027trove.guestagent.datastore.mysql.manager.Manager\u0027,"},{"line_number":39,"context_line":"    \u0027redis\u0027: \u0027trove.guestagent.datastore.redis.manager.Manager\u0027"},{"line_number":40,"context_line":"}"},{"line_number":41,"context_line":"CONF \u003d cfg.CONF"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FvqA%3D","line":39,"in_reply_to":"AAAAUH%2F%2FwYY%3D","updated":"2014-01-08 23:26:21.000000000","message":"Done","commit_id":"e619bc65c6459c77b675354d52cb4160092e1846"}],"trove/guestagent/volume.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"68305a62503e73b5aabdb6c6690316ef62b13850","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                                       self.mount_point,"},{"line_number":138,"context_line":"                                       run_as_root\u003dTrue,"},{"line_number":139,"context_line":"                                       root_helper\u003d\u0027sudo\u0027)"},{"line_number":140,"context_line":"        LOG.debug(\"Adding volume. Device path:%s, mount_point:%s, \""},{"line_number":141,"context_line":"                  \"volume_type:%s, mount options:%s\" %"},{"line_number":142,"context_line":"                  (self.device_path, self.mount_point, self.volume_fstype,"},{"line_number":143,"context_line":"                   self.mount_options))"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2Ffwc%3D","line":140,"updated":"2013-11-04 14:21:00.000000000","message":"agreed","commit_id":"43f3bb942bf7fb62ab240a3f021798cf44039095"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"cd038389e4f0003e0dcb36d57ca0618ac39b79ab","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def mount(self):"},{"line_number":134,"context_line":"        if not os.path.exists(self.mount_point):"},{"line_number":135,"context_line":"            utils.execute_with_timeout(\u0027mkdir\u0027,"},{"line_number":136,"context_line":"                                       \u0027-p\u0027,"},{"line_number":137,"context_line":"                                       self.mount_point,"},{"line_number":138,"context_line":"                                       run_as_root\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2FE1E%3D","line":135,"updated":"2013-11-14 18:41:12.000000000","message":"why do you swap python module execution with exec? any reason ?","commit_id":"3db0d8ef4943a0ae8577836c7865073a06c1551c"},{"author":{"_account_id":694,"name":"Tim Simpson","email":"tim.simpson@rackspace.com","username":"tim-simpson"},"change_message_id":"2f500b1124db0182494570543a2dac50f889f6d9","unresolved":false,"context_lines":[{"line_number":136,"context_line":"                                       \u0027-p\u0027,"},{"line_number":137,"context_line":"                                       self.mount_point,"},{"line_number":138,"context_line":"                                       run_as_root\u003dTrue,"},{"line_number":139,"context_line":"                                       root_helper\u003d\u0027sudo\u0027)"},{"line_number":140,"context_line":"        LOG.debug(\"Adding volume. Device path:%s, mount_point:%s, \""},{"line_number":141,"context_line":"                  \"volume_type:%s, mount options:%s\" %"},{"line_number":142,"context_line":"                  (self.device_path, self.mount_point, self.volume_fstype,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F9uR0%3D","line":139,"updated":"2013-12-06 18:18:08.000000000","message":"Why has this only recently become necessary?","commit_id":"7fcd9903f38f71f5d074b24cd9206a7540e9b818"},{"author":{"_account_id":694,"name":"Tim Simpson","email":"tim.simpson@rackspace.com","username":"tim-simpson"},"change_message_id":"3e544b92a95c832bc1c00f00deffb91c4aaa63e4","unresolved":false,"context_lines":[{"line_number":136,"context_line":"                                       \u0027-p\u0027,"},{"line_number":137,"context_line":"                                       self.mount_point,"},{"line_number":138,"context_line":"                                       run_as_root\u003dTrue,"},{"line_number":139,"context_line":"                                       root_helper\u003d\u0027sudo\u0027)"},{"line_number":140,"context_line":"        LOG.debug(\"Adding volume. Device path:%s, mount_point:%s, \""},{"line_number":141,"context_line":"                  \"volume_type:%s, mount options:%s\" %"},{"line_number":142,"context_line":"                  (self.device_path, self.mount_point, self.volume_fstype,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F9tmE%3D","line":139,"in_reply_to":"AAAATn%2F9tqk%3D","updated":"2013-12-06 20:31:52.000000000","message":"Ok- I\u0027ll defer to our friends at HP to see if this causes issues or should be made configurable.","commit_id":"7fcd9903f38f71f5d074b24cd9206a7540e9b818"},{"author":{"_account_id":1049,"name":"Conrad Weidenkeller","email":"conrad@weidenkeller.com","username":"cweidenkeller"},"change_message_id":"72fd5840cf02523f9296514930e0ddb08ec0a637","unresolved":false,"context_lines":[{"line_number":136,"context_line":"                                       \u0027-p\u0027,"},{"line_number":137,"context_line":"                                       self.mount_point,"},{"line_number":138,"context_line":"                                       run_as_root\u003dTrue,"},{"line_number":139,"context_line":"                                       root_helper\u003d\u0027sudo\u0027)"},{"line_number":140,"context_line":"        LOG.debug(\"Adding volume. Device path:%s, mount_point:%s, \""},{"line_number":141,"context_line":"                  \"volume_type:%s, mount options:%s\" %"},{"line_number":142,"context_line":"                  (self.device_path, self.mount_point, self.volume_fstype,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F9tqk%3D","line":139,"in_reply_to":"AAAATn%2F9uR0%3D","updated":"2013-12-06 20:26:00.000000000","message":"os.makedirs will not create a mount path that is not owned by the user running the guest agent daemon... and in our testing we ran into issues where /var/lib/redis was unable to be created... So you get perms issues.","commit_id":"7fcd9903f38f71f5d074b24cd9206a7540e9b818"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"8f392efaa3c3bcb5c36f45a773c1465e14e79fe4","unresolved":false,"context_lines":[{"line_number":136,"context_line":"                                       \u0027-p\u0027,"},{"line_number":137,"context_line":"                                       self.mount_point,"},{"line_number":138,"context_line":"                                       run_as_root\u003dTrue,"},{"line_number":139,"context_line":"                                       root_helper\u003d\u0027sudo\u0027)"},{"line_number":140,"context_line":"        LOG.debug(\"Adding volume. Device path:%s, mount_point:%s, \""},{"line_number":141,"context_line":"                  \"volume_type:%s, mount options:%s\" %"},{"line_number":142,"context_line":"                  (self.device_path, self.mount_point, self.volume_fstype,"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9BP4%3D","line":139,"updated":"2013-12-17 16:27:18.000000000","message":"we have separate review for this change. https://review.openstack.org/#/c/62448/","commit_id":"59be9f8bb20bf7ee9659eaf4dd8f90d43edb6d43"}],"trove/templates/redis.config.template":[{"author":{"_account_id":971,"name":"Daniel Salinas","email":"imsplitbit@gmail.com","username":"imsplitbit"},"change_message_id":"f6b523207c747f0bf95f811c299c2cf2c30172a0","unresolved":false,"context_lines":[{"line_number":11,"context_line":"rdbcompression yes"},{"line_number":12,"context_line":"rdbchecksum yes"},{"line_number":13,"context_line":"dbfilename dump.rdb"},{"line_number":14,"context_line":"dir /var/lib/redis"},{"line_number":15,"context_line":"slave-serve-stale-data yes"},{"line_number":16,"context_line":"slave-read-only yes"},{"line_number":17,"context_line":"slave-priority 100"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAATn%2F%2F8DU%3D","line":14,"updated":"2013-10-24 21:55:25.000000000","message":"if the dir is /var/lib/redis here shouldn\u0027t we set that as the default mount point for redis in the guestagent mountpoint code?","commit_id":"1760494f9c5d64b563451a5dc9269937864b8746"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"434f51c7c7a48bef1fcfd4fcc68382bf3f53faf3","unresolved":false,"context_lines":[{"line_number":11,"context_line":"rdbcompression yes"},{"line_number":12,"context_line":"rdbchecksum yes"},{"line_number":13,"context_line":"dbfilename dump.rdb"},{"line_number":14,"context_line":"dir /var/lib/redis"},{"line_number":15,"context_line":"slave-serve-stale-data yes"},{"line_number":16,"context_line":"slave-read-only yes"},{"line_number":17,"context_line":"slave-priority 100"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAATn%2F%2F51c%3D","line":14,"in_reply_to":"AAAATn%2F%2F8DU%3D","updated":"2013-10-25 13:20:38.000000000","message":"this parameter should be configurable","commit_id":"1760494f9c5d64b563451a5dc9269937864b8746"},{"author":{"_account_id":971,"name":"Daniel Salinas","email":"imsplitbit@gmail.com","username":"imsplitbit"},"change_message_id":"8aafb764cbc7a90b915129f5b85598587ccf085f","unresolved":false,"context_lines":[{"line_number":15,"context_line":"slave-serve-stale-data yes"},{"line_number":16,"context_line":"slave-read-only yes"},{"line_number":17,"context_line":"slave-priority 100"},{"line_number":18,"context_line":"#requirepass {{ password }}"},{"line_number":19,"context_line":"rename-command CONFIG \"\""},{"line_number":20,"context_line":"maxclients 10000"},{"line_number":21,"context_line":"maxmemory 1073741824"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAATn%2F%2F4X8%3D","line":18,"updated":"2013-10-25 18:50:28.000000000","message":"I guess that\u0027s my polite way of saying \"please remove this since it\u0027s not a comment that provides information used by the server nor is it information that is important to admins of the service.","commit_id":"1760494f9c5d64b563451a5dc9269937864b8746"},{"author":{"_account_id":971,"name":"Daniel Salinas","email":"imsplitbit@gmail.com","username":"imsplitbit"},"change_message_id":"f6b523207c747f0bf95f811c299c2cf2c30172a0","unresolved":false,"context_lines":[{"line_number":15,"context_line":"slave-serve-stale-data yes"},{"line_number":16,"context_line":"slave-read-only yes"},{"line_number":17,"context_line":"slave-priority 100"},{"line_number":18,"context_line":"#requirepass {{ password }}"},{"line_number":19,"context_line":"rename-command CONFIG \"\""},{"line_number":20,"context_line":"maxclients 10000"},{"line_number":21,"context_line":"maxmemory 1073741824"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAATn%2F%2F8C0%3D","line":18,"updated":"2013-10-24 21:55:25.000000000","message":"is this needed?","commit_id":"1760494f9c5d64b563451a5dc9269937864b8746"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"cd9e22c88e179173115f6dae39c59dd7b12b0df9","unresolved":false,"context_lines":[{"line_number":15,"context_line":"slave-serve-stale-data yes"},{"line_number":16,"context_line":"slave-read-only yes"},{"line_number":17,"context_line":"slave-priority 100"},{"line_number":18,"context_line":"#requirepass {{ password }}"},{"line_number":19,"context_line":"rename-command CONFIG \"\""},{"line_number":20,"context_line":"maxclients 10000"},{"line_number":21,"context_line":"maxmemory 1073741824"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAATn%2F%2F4N8%3D","line":18,"in_reply_to":"AAAATn%2F%2F4X8%3D","updated":"2013-10-25 19:33:35.000000000","message":"Yes, you are totally right. Joke: redis server is AI he could understand comments)))","commit_id":"1760494f9c5d64b563451a5dc9269937864b8746"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"434f51c7c7a48bef1fcfd4fcc68382bf3f53faf3","unresolved":false,"context_lines":[{"line_number":15,"context_line":"slave-serve-stale-data yes"},{"line_number":16,"context_line":"slave-read-only yes"},{"line_number":17,"context_line":"slave-priority 100"},{"line_number":18,"context_line":"#requirepass {{ password }}"},{"line_number":19,"context_line":"rename-command CONFIG \"\""},{"line_number":20,"context_line":"maxclients 10000"},{"line_number":21,"context_line":"maxmemory 1073741824"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAATn%2F%2F51o%3D","line":18,"in_reply_to":"AAAATn%2F%2F8C0%3D","updated":"2013-10-25 13:20:38.000000000","message":"no, it\u0027s a comment","commit_id":"1760494f9c5d64b563451a5dc9269937864b8746"}],"trove/tests/unittests/guestagent/test_dbaas.py":[{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"0783fec295002d5e19afb1f59e804b6681d38bdf","unresolved":false,"context_lines":[{"line_number":899,"context_line":"        self.assertEqual(test_dict.get(\u0027percona\u0027),"},{"line_number":900,"context_line":"                         \u0027trove.guestagent.manager.mysql.Manager\u0027)"},{"line_number":901,"context_line":"        self.assertEqual(test_dict.get(\u0027redis\u0027),"},{"line_number":902,"context_line":"                         \u0027trove.guestagent.datastore.redis.manager.Manager\u0027)"},{"line_number":903,"context_line":""},{"line_number":904,"context_line":"    def test_service_registry_with_existing_manager(self):"},{"line_number":905,"context_line":"        service_registry_ext_test \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2F5yc%3D","line":902,"updated":"2013-10-25 13:44:40.000000000","message":"We don\u0027t actually need it here. This test is to make sure service registry logic works, not to verify exact configuration.","commit_id":"1760494f9c5d64b563451a5dc9269937864b8746"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"cd9e22c88e179173115f6dae39c59dd7b12b0df9","unresolved":false,"context_lines":[{"line_number":899,"context_line":"        self.assertEqual(test_dict.get(\u0027percona\u0027),"},{"line_number":900,"context_line":"                         \u0027trove.guestagent.manager.mysql.Manager\u0027)"},{"line_number":901,"context_line":"        self.assertEqual(test_dict.get(\u0027redis\u0027),"},{"line_number":902,"context_line":"                         \u0027trove.guestagent.datastore.redis.manager.Manager\u0027)"},{"line_number":903,"context_line":""},{"line_number":904,"context_line":"    def test_service_registry_with_existing_manager(self):"},{"line_number":905,"context_line":"        service_registry_ext_test \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2F4Ns%3D","line":902,"in_reply_to":"AAAATn%2F%2F5yc%3D","updated":"2013-10-25 19:33:35.000000000","message":"Yes, you have manager dict, please follow common concept of manager injection","commit_id":"1760494f9c5d64b563451a5dc9269937864b8746"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9781d184aa08288fef6e50c1d1fda9a2e25a1bac","unresolved":false,"context_lines":[{"line_number":890,"context_line":"        dbaas_sr.get_custom_managers \u003d Mock(return_value\u003d"},{"line_number":891,"context_line":"                                            service_registry_ext_test)"},{"line_number":892,"context_line":"        test_dict \u003d dbaas_sr.service_registry()"},{"line_number":893,"context_line":"        self.assertEqual(4, len(test_dict))"},{"line_number":894,"context_line":"        self.assertEqual(test_dict.get(\u0027test\u0027),"},{"line_number":895,"context_line":"                         service_registry_ext_test.get(\u0027test\u0027, None))"},{"line_number":896,"context_line":"        self.assertEqual(test_dict.get(\u0027mysql\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2Fsjk%3D","line":893,"updated":"2013-10-30 10:21:08.000000000","message":"Please update this testcases with correct workflow, for now it should be assertNotEqual with default size.","commit_id":"25f420a6c8ccb1239ae8f41f04ae7308a317b4cd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9781d184aa08288fef6e50c1d1fda9a2e25a1bac","unresolved":false,"context_lines":[{"line_number":908,"context_line":"        dbaas_sr.get_custom_managers \u003d Mock(return_value\u003d"},{"line_number":909,"context_line":"                                            service_registry_ext_test)"},{"line_number":910,"context_line":"        test_dict \u003d dbaas_sr.service_registry()"},{"line_number":911,"context_line":"        self.assertEqual(3, len(test_dict))"},{"line_number":912,"context_line":"        self.assertEqual(test_dict.get(\u0027mysql\u0027),"},{"line_number":913,"context_line":"                         \u0027trove.guestagent.datastore.mysql.\u0027"},{"line_number":914,"context_line":"                         \u0027manager.Manager123\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2Fsjo%3D","line":911,"updated":"2013-10-30 10:21:08.000000000","message":"Same","commit_id":"25f420a6c8ccb1239ae8f41f04ae7308a317b4cd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9781d184aa08288fef6e50c1d1fda9a2e25a1bac","unresolved":false,"context_lines":[{"line_number":923,"context_line":"        dbaas_sr.get_custom_managers \u003d Mock(return_value\u003d"},{"line_number":924,"context_line":"                                            service_registry_ext_test)"},{"line_number":925,"context_line":"        test_dict \u003d dbaas_sr.service_registry()"},{"line_number":926,"context_line":"        self.assertEqual(3, len(test_dict))"},{"line_number":927,"context_line":"        self.assertEqual(test_dict.get(\u0027mysql\u0027),"},{"line_number":928,"context_line":"                         \u0027trove.guestagent.datastore.mysql.\u0027"},{"line_number":929,"context_line":"                         \u0027manager.Manager\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2Fsjg%3D","line":926,"updated":"2013-10-30 10:21:08.000000000","message":"Same","commit_id":"25f420a6c8ccb1239ae8f41f04ae7308a317b4cd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"68305a62503e73b5aabdb6c6690316ef62b13850","unresolved":false,"context_lines":[{"line_number":890,"context_line":"        dbaas_sr.get_custom_managers \u003d Mock(return_value\u003d"},{"line_number":891,"context_line":"                                            service_registry_ext_test)"},{"line_number":892,"context_line":"        test_dict \u003d dbaas_sr.service_registry()"},{"line_number":893,"context_line":"        self.assertEqual(4, len(test_dict))"},{"line_number":894,"context_line":"        self.assertEqual(test_dict.get(\u0027test\u0027),"},{"line_number":895,"context_line":"                         service_registry_ext_test.get(\u0027test\u0027, None))"},{"line_number":896,"context_line":"        self.assertEqual(test_dict.get(\u0027mysql\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2FfwU%3D","line":893,"updated":"2013-11-04 14:21:00.000000000","message":"take a look at comments on previous patch","commit_id":"43f3bb942bf7fb62ab240a3f021798cf44039095"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"68305a62503e73b5aabdb6c6690316ef62b13850","unresolved":false,"context_lines":[{"line_number":908,"context_line":"        dbaas_sr.get_custom_managers \u003d Mock(return_value\u003d"},{"line_number":909,"context_line":"                                            service_registry_ext_test)"},{"line_number":910,"context_line":"        test_dict \u003d dbaas_sr.service_registry()"},{"line_number":911,"context_line":"        self.assertEqual(3, len(test_dict))"},{"line_number":912,"context_line":"        self.assertEqual(test_dict.get(\u0027mysql\u0027),"},{"line_number":913,"context_line":"                         \u0027trove.guestagent.datastore.mysql.\u0027"},{"line_number":914,"context_line":"                         \u0027manager.Manager123\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2FfwQ%3D","line":911,"updated":"2013-11-04 14:21:00.000000000","message":"same","commit_id":"43f3bb942bf7fb62ab240a3f021798cf44039095"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"68305a62503e73b5aabdb6c6690316ef62b13850","unresolved":false,"context_lines":[{"line_number":923,"context_line":"        dbaas_sr.get_custom_managers \u003d Mock(return_value\u003d"},{"line_number":924,"context_line":"                                            service_registry_ext_test)"},{"line_number":925,"context_line":"        test_dict \u003d dbaas_sr.service_registry()"},{"line_number":926,"context_line":"        self.assertEqual(3, len(test_dict))"},{"line_number":927,"context_line":"        self.assertEqual(test_dict.get(\u0027mysql\u0027),"},{"line_number":928,"context_line":"                         \u0027trove.guestagent.datastore.mysql.\u0027"},{"line_number":929,"context_line":"                         \u0027manager.Manager\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2FfwM%3D","line":926,"updated":"2013-11-04 14:21:00.000000000","message":"same","commit_id":"43f3bb942bf7fb62ab240a3f021798cf44039095"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"1939e6ecd5ff3a2afda8cc85b703f7b0420bcc05","unresolved":false,"context_lines":[{"line_number":890,"context_line":"        dbaas_sr.get_custom_managers \u003d Mock(return_value\u003d"},{"line_number":891,"context_line":"                                            service_registry_ext_test)"},{"line_number":892,"context_line":"        test_dict \u003d dbaas_sr.service_registry()"},{"line_number":893,"context_line":"        self.assertNotEqual(3, len(test_dict))"},{"line_number":894,"context_line":"        self.assertEqual(test_dict.get(\u0027test\u0027),"},{"line_number":895,"context_line":"                         service_registry_ext_test.get(\u0027test\u0027, None))"},{"line_number":896,"context_line":"        self.assertEqual(test_dict.get(\u0027mysql\u0027),"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F%2FdZY%3D","line":893,"updated":"2013-11-05 16:49:15.000000000","message":"I sort of wonder about the purpose of this assertion in general. Do we really need this line, and the one like it below?","commit_id":"603a4b9efdb0177ae93c905c7796d5fc756bba4d"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"5395756f09ce8ed27f27d54a5102c6d0dc48d136","unresolved":false,"context_lines":[{"line_number":890,"context_line":"        dbaas_sr.get_custom_managers \u003d Mock(return_value\u003d"},{"line_number":891,"context_line":"                                            service_registry_ext_test)"},{"line_number":892,"context_line":"        test_dict \u003d dbaas_sr.service_registry()"},{"line_number":893,"context_line":"        self.assertNotEqual(3, len(test_dict))"},{"line_number":894,"context_line":"        self.assertEqual(test_dict.get(\u0027test\u0027),"},{"line_number":895,"context_line":"                         service_registry_ext_test.get(\u0027test\u0027, None))"},{"line_number":896,"context_line":"        self.assertEqual(test_dict.get(\u0027mysql\u0027),"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F%2FdWI%3D","line":893,"in_reply_to":"AAAATn%2F%2FdZY%3D","updated":"2013-11-05 16:58:38.000000000","message":"Just to verify megring. But, probably yes.","commit_id":"603a4b9efdb0177ae93c905c7796d5fc756bba4d"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"6d03d70cf86a624490b2597c419d1c23b6eb7897","unresolved":false,"context_lines":[{"line_number":890,"context_line":"        dbaas_sr.get_custom_managers \u003d Mock(return_value\u003d"},{"line_number":891,"context_line":"                                            service_registry_ext_test)"},{"line_number":892,"context_line":"        test_dict \u003d dbaas_sr.service_registry()"},{"line_number":893,"context_line":"        self.assertNotEqual(3, len(test_dict))"},{"line_number":894,"context_line":"        self.assertEqual(test_dict.get(\u0027test\u0027),"},{"line_number":895,"context_line":"                         service_registry_ext_test.get(\u0027test\u0027, None))"},{"line_number":896,"context_line":"        self.assertEqual(test_dict.get(\u0027mysql\u0027),"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FdSI%3D","line":893,"updated":"2013-11-05 17:18:19.000000000","message":"I\u0027m thinking instead of just checking the length, we ought to check that service_registry.keys() is exactly an expected set, say set([\u0027percona\u0027, \u0027mysql\u0027, \u0027redis\u0027]) for example.\nThat would at least guarantee that we\u0027re not trying to slip something past the radar when we add new services.","commit_id":"0657f6959c8fa58058fea5f8fa6b0e4fde53325a"},{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"19df7b354ff38c214d35e188b843db47c1899ce7","unresolved":false,"context_lines":[{"line_number":898,"context_line":"                         \u0027manager.Manager\u0027)"},{"line_number":899,"context_line":"        self.assertEqual(test_dict.get(\u0027percona\u0027),"},{"line_number":900,"context_line":"                         \u0027trove.guestagent.datastore.mysql.\u0027"},{"line_number":901,"context_line":"                         \u0027manager.Manager\u0027)"},{"line_number":902,"context_line":""},{"line_number":903,"context_line":"    def test_service_registry_with_existing_manager(self):"},{"line_number":904,"context_line":"        service_registry_ext_test \u003d {"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2B64w%3D","line":901,"updated":"2013-11-18 15:30:07.000000000","message":"add a check for redis too","commit_id":"659aa91d8caa0ca341351126fc0841e3ce46bedd"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"f083e9f7565b2137e480e5e95bbec62080ef517b","unresolved":false,"context_lines":[{"line_number":1223,"context_line":"        self.app \u003d None"},{"line_number":1224,"context_line":"        os.path.isfile \u003d self.orig_os_path_isfile"},{"line_number":1225,"context_line":"        utils.execute_with_timeout \u003d self.orig_utils_execute_with_timeout"},{"line_number":1226,"context_line":"        rservice.utils.execute_with_timeout \u003d \\"},{"line_number":1227,"context_line":"            self.orig_utils_execute_with_timeout"},{"line_number":1228,"context_line":"        unstub()"},{"line_number":1229,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FwXs%3D","line":1226,"updated":"2014-01-08 20:38:23.000000000","message":"Oh, slashes.\nNo graceful way around this one without aliases, lucky for you!\nBegrudgingly, I have no quarrel with this case.","commit_id":"e619bc65c6459c77b675354d52cb4160092e1846"},{"author":{"_account_id":1049,"name":"Conrad Weidenkeller","email":"conrad@weidenkeller.com","username":"cweidenkeller"},"change_message_id":"6aca20c323054fa9785fc9b4bb4b0f24654dee93","unresolved":false,"context_lines":[{"line_number":1223,"context_line":"        self.app \u003d None"},{"line_number":1224,"context_line":"        os.path.isfile \u003d self.orig_os_path_isfile"},{"line_number":1225,"context_line":"        utils.execute_with_timeout \u003d self.orig_utils_execute_with_timeout"},{"line_number":1226,"context_line":"        rservice.utils.execute_with_timeout \u003d \\"},{"line_number":1227,"context_line":"            self.orig_utils_execute_with_timeout"},{"line_number":1228,"context_line":"        unstub()"},{"line_number":1229,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2Fvp0%3D","line":1226,"in_reply_to":"AAAAUH%2F%2FwXs%3D","updated":"2014-01-08 23:26:21.000000000","message":"Bwahahaha","commit_id":"e619bc65c6459c77b675354d52cb4160092e1846"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"f083e9f7565b2137e480e5e95bbec62080ef517b","unresolved":false,"context_lines":[{"line_number":1242,"context_line":"        verify(RedisApp)._install_redis(\u0027asdf\u0027)"},{"line_number":1243,"context_line":""},{"line_number":1244,"context_line":"    def test_install_redis(self):"},{"line_number":1245,"context_line":"        when(utils).execute_with_timeout(any())"},{"line_number":1246,"context_line":"        when(pkg.Package).pkg_install(\u0027redis\u0027, {}, 1200).thenReturn(None)"},{"line_number":1247,"context_line":"        when(RedisApp).start_redis().thenReturn(None)"},{"line_number":1248,"context_line":"        self.app._install_redis(\u0027redis\u0027)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FwW0%3D","line":1245,"updated":"2014-01-08 20:38:23.000000000","message":"Is this missing a .thenReturn(None)?","commit_id":"e619bc65c6459c77b675354d52cb4160092e1846"},{"author":{"_account_id":1049,"name":"Conrad Weidenkeller","email":"conrad@weidenkeller.com","username":"cweidenkeller"},"change_message_id":"6aca20c323054fa9785fc9b4bb4b0f24654dee93","unresolved":false,"context_lines":[{"line_number":1242,"context_line":"        verify(RedisApp)._install_redis(\u0027asdf\u0027)"},{"line_number":1243,"context_line":""},{"line_number":1244,"context_line":"    def test_install_redis(self):"},{"line_number":1245,"context_line":"        when(utils).execute_with_timeout(any())"},{"line_number":1246,"context_line":"        when(pkg.Package).pkg_install(\u0027redis\u0027, {}, 1200).thenReturn(None)"},{"line_number":1247,"context_line":"        when(RedisApp).start_redis().thenReturn(None)"},{"line_number":1248,"context_line":"        self.app._install_redis(\u0027redis\u0027)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2Fvpw%3D","line":1245,"in_reply_to":"AAAAUH%2F%2FwW0%3D","updated":"2014-01-08 23:26:21.000000000","message":"Done","commit_id":"e619bc65c6459c77b675354d52cb4160092e1846"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"f083e9f7565b2137e480e5e95bbec62080ef517b","unresolved":false,"context_lines":[{"line_number":1359,"context_line":"        verify(mock_status).end_install_or_restart()"},{"line_number":1360,"context_line":""},{"line_number":1361,"context_line":"    def test_write_config(self):"},{"line_number":1362,"context_line":"        #TODO(cweid):  ... Mocking open breaks unittest."},{"line_number":1363,"context_line":"        #Need to fix this."},{"line_number":1364,"context_line":"        #fake_fd \u003d mock()"},{"line_number":1365,"context_line":"        #when(__builtin__).open(any(), \u0027w\u0027).thenReturn(fake_fd)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FwVg%3D","line":1362,"updated":"2014-01-08 20:38:23.000000000","message":"\u0027\u0027\u0027\nYou can use triple-quoted strings in python for block comments. As strings are still expressions, you don\u0027t need the pass at the end that way.\n\u0027\u0027\u0027","commit_id":"e619bc65c6459c77b675354d52cb4160092e1846"},{"author":{"_account_id":1049,"name":"Conrad Weidenkeller","email":"conrad@weidenkeller.com","username":"cweidenkeller"},"change_message_id":"6aca20c323054fa9785fc9b4bb4b0f24654dee93","unresolved":false,"context_lines":[{"line_number":1359,"context_line":"        verify(mock_status).end_install_or_restart()"},{"line_number":1360,"context_line":""},{"line_number":1361,"context_line":"    def test_write_config(self):"},{"line_number":1362,"context_line":"        #TODO(cweid):  ... Mocking open breaks unittest."},{"line_number":1363,"context_line":"        #Need to fix this."},{"line_number":1364,"context_line":"        #fake_fd \u003d mock()"},{"line_number":1365,"context_line":"        #when(__builtin__).open(any(), \u0027w\u0027).thenReturn(fake_fd)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2FvpU%3D","line":1362,"in_reply_to":"AAAAUH%2F%2FwVg%3D","updated":"2014-01-08 23:26:21.000000000","message":"Done","commit_id":"e619bc65c6459c77b675354d52cb4160092e1846"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e2db095b8d8ef68c847cceda3c6d9b9ebc96d57c","unresolved":false,"context_lines":[{"line_number":1232,"context_line":"        when(RedisApp)._install_redis(\u0027bar\u0027).thenReturn(None)"},{"line_number":1233,"context_line":"        self.app.install_if_needed(\u0027bar\u0027)"},{"line_number":1234,"context_line":"        verify(pkg.Package).pkg_is_installed(\u0027bar\u0027)"},{"line_number":1235,"context_line":"        verify(RedisApp, times\u003d0)._install_redis(\u0027bar\u0027)"},{"line_number":1236,"context_line":""},{"line_number":1237,"context_line":"    def test_install_if_needed_not_installed(self):"},{"line_number":1238,"context_line":"        when(pkg.Package).pkg_is_installed(any()).thenReturn(False)"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F%2FeSY%3D","line":1235,"updated":"2014-01-13 14:48:24.000000000","message":"no need to pass explicitly number of times if it called once or never.","commit_id":"287ca3ac4fb3e32cacf382ebaf16f383022b06ba"}],"trove/tests/unittests/guestagent/test_manager.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9781d184aa08288fef6e50c1d1fda9a2e25a1bac","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from trove.guestagent import backup"},{"line_number":28,"context_line":"from trove.guestagent.volume import VolumeDevice"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"from trove.guestagent.datastore.redis.manager import Manager as RedisManager"},{"line_number":31,"context_line":"from trove.guestagent.datastore.redis.manager import CONFIG_PATH, TMP_PATH"},{"line_number":32,"context_line":"from trove.guestagent.datastore.redis.manager import CONFIG_FILE"},{"line_number":33,"context_line":"from trove.guestagent.datastore.redis.manager import TMP_CONFIG_PATH"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2FsjQ%3D","line":30,"updated":"2013-10-30 10:21:08.000000000","message":"please reorder your imports\n\nfrom trove.guestagent.datastore.redis import manager as redis_manager.","commit_id":"25f420a6c8ccb1239ae8f41f04ae7308a317b4cd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"68305a62503e73b5aabdb6c6690316ef62b13850","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from trove.guestagent import volume"},{"line_number":22,"context_line":"from trove.common.context import TroveContext"},{"line_number":23,"context_line":"from trove.guestagent.datastore.mysql.manager import Manager"},{"line_number":24,"context_line":"from trove.guestagent.datastore.redis.manager import Manager as RedisManager"},{"line_number":25,"context_line":"import trove.guestagent.datastore.mysql.service as dbaas"},{"line_number":26,"context_line":"import trove.guestagent.datastore.redis.service as redis_service"},{"line_number":27,"context_line":"from trove.guestagent import backup"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2FfwE%3D","line":24,"updated":"2013-11-04 14:21:00.000000000","message":"could you please reorganize imports ?","commit_id":"43f3bb942bf7fb62ab240a3f021798cf44039095"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e2db095b8d8ef68c847cceda3c6d9b9ebc96d57c","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from trove.common.context import TroveContext"},{"line_number":22,"context_line":"from trove.guestagent import volume"},{"line_number":23,"context_line":"from trove.guestagent.datastore.mysql.manager import Manager"},{"line_number":24,"context_line":"import trove.guestagent.datastore.mysql.service as dbaas"},{"line_number":25,"context_line":"from trove.guestagent.datastore.redis.manager import Manager as RedisManager"},{"line_number":26,"context_line":"import trove.guestagent.datastore.redis.service as redis_service"},{"line_number":27,"context_line":"import trove.guestagent.datastore.redis.system as redis_system"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F%2FeSs%3D","line":24,"updated":"2014-01-13 14:48:24.000000000","message":"import statement should come before from statement","commit_id":"287ca3ac4fb3e32cacf382ebaf16f383022b06ba"}],"trove/tests/unittests/guestagent/test_redis_manager.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"434f51c7c7a48bef1fcfd4fcc68382bf3f53faf3","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from trove.guestagent.volume import VolumeDevice"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class RedisGuestAgentManagerTest(testtools.TestCase):"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def setUp(self):"},{"line_number":34,"context_line":"        super(RedisGuestAgentManagerTest, self).setUp()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2F51I%3D","line":31,"updated":"2013-10-25 13:20:38.000000000","message":"We already have test_manager.py, you tests must be placed there.\nAnd your tests are meaningless, what they are testing ?","commit_id":"1760494f9c5d64b563451a5dc9269937864b8746"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"90e8f4e7d7879c19a08dbd26d3dec947525be29d","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from trove.guestagent.volume import VolumeDevice"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class RedisGuestAgentManagerTest(testtools.TestCase):"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def setUp(self):"},{"line_number":34,"context_line":"        super(RedisGuestAgentManagerTest, self).setUp()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2F5zw%3D","line":31,"in_reply_to":"AAAATn%2F%2F51I%3D","updated":"2013-10-25 13:24:25.000000000","message":"At least we all should follow placement strategy and try not to create alot more files per tests.","commit_id":"1760494f9c5d64b563451a5dc9269937864b8746"}],"trove/tests/unittests/guestagent/test_volume.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"cd038389e4f0003e0dcb36d57ca0618ac39b79ab","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        os.path.exists \u003d MagicMock(return_value\u003dFalse)"},{"line_number":162,"context_line":"        fake_spawn \u003d _setUp_fake_spawn()"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        utils.execute_with_timeout \u003d MagicMock()"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        self.volumeMountPoint.mount()"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2FE00%3D","line":164,"updated":"2013-11-14 18:41:12.000000000","message":"as deps from makedirs, why ?","commit_id":"3db0d8ef4943a0ae8577836c7865073a06c1551c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"cd038389e4f0003e0dcb36d57ca0618ac39b79ab","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        self.volumeMountPoint.mount()"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        self.assertEqual(1, os.path.exists.call_count)"},{"line_number":169,"context_line":"        self.assertEqual(1, utils.execute_with_timeout.call_count)"},{"line_number":170,"context_line":"        self.assertEqual(1, fake_spawn.expect.call_count)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        os.path.exists \u003d origin_"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2FE0w%3D","line":169,"updated":"2013-11-14 18:41:12.000000000","message":"same","commit_id":"3db0d8ef4943a0ae8577836c7865073a06c1551c"}]}
