)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"455fb7ee73553c431fb07ce0501955ea62e8277c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     amcrn \u003camcreynolds@ebaysf.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-04-30 13:36:03 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix prepare call for redis guest agent"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Changes:"},{"line_number":10,"context_line":"- The mount point ownership now changed to redis user and group"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9ad9bd40_9fa034f6","line":7,"updated":"2014-04-30 20:38:04.000000000","message":"i think this should include mongodb in the title","commit_id":"0957b8cf81b367a32131514e48a691cb72eeedef"}],"trove/guestagent/common/operating_system.py":[{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"550a4a641425b54b0a3adfe6585287d6b9f215cd","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import fcntl"},{"line_number":18,"context_line":"import struct"},{"line_number":19,"context_line":"import socket"},{"line_number":20,"context_line":"from trove.common import utils as utils"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"REDHAT \u003d \u0027redhat\u0027"},{"line_number":23,"context_line":"DEBIAN \u003d \u0027debian\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"bad4c104_c1bbce70","line":20,"updated":"2014-04-29 16:43:43.000000000","message":"I don\u0027t understand the purpose of aliasing the module with its own name. Perhaps I\u0027m missing something.","commit_id":"2f8406736a026041444ea41d7ca591496a0395ea"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"d886e71f06472492dd2b0c479efbbed9358bc003","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import fcntl"},{"line_number":18,"context_line":"import struct"},{"line_number":19,"context_line":"import socket"},{"line_number":20,"context_line":"from trove.common import utils as utils"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"REDHAT \u003d \u0027redhat\u0027"},{"line_number":23,"context_line":"DEBIAN \u003d \u0027debian\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"bad4c104_19136a5d","line":20,"in_reply_to":"bad4c104_c1bbce70","updated":"2014-04-29 17:39:34.000000000","message":"agreed.","commit_id":"2f8406736a026041444ea41d7ca591496a0395ea"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"550a4a641425b54b0a3adfe6585287d6b9f215cd","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    )[20:24])"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"def update_owner(group, user, path):"},{"line_number":94,"context_line":"    \"\"\""},{"line_number":95,"context_line":"       Changes onwer of path to group:user"},{"line_number":96,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"bad4c104_c13aee35","line":93,"updated":"2014-04-29 16:43:43.000000000","message":"Wouldn\u0027t it be more intuitive if the signature was (user, group, path)? For a precedent, \"ls -l\" shows user followed by group. \"chown\" can take \"user:group\" as an argument. User always precedes group.","commit_id":"2f8406736a026041444ea41d7ca591496a0395ea"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"d886e71f06472492dd2b0c479efbbed9358bc003","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    )[20:24])"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"def update_owner(group, user, path):"},{"line_number":94,"context_line":"    \"\"\""},{"line_number":95,"context_line":"       Changes onwer of path to group:user"},{"line_number":96,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"bad4c104_791ab66f","line":93,"in_reply_to":"bad4c104_c13aee35","updated":"2014-04-29 17:39:34.000000000","message":"good catch, agreed.","commit_id":"2f8406736a026041444ea41d7ca591496a0395ea"},{"author":{"_account_id":971,"name":"Daniel Salinas","email":"imsplitbit@gmail.com","username":"imsplitbit"},"change_message_id":"2e189803c7d353b826717a48e4b59f5d2c2ce9fb","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    \"\"\""},{"line_number":95,"context_line":"       Changes the owner and group for the path (recursively)"},{"line_number":96,"context_line":"    \"\"\""},{"line_number":97,"context_line":"    utils.execute_with_timeout(\"chown\", \"-R\", user, path,"},{"line_number":98,"context_line":"                               run_as_root\u003dTrue, root_helper\u003d\"sudo\")"},{"line_number":99,"context_line":"    utils.execute_with_timeout(\"chgrp\", \"-R\", group, path,"},{"line_number":100,"context_line":"                               run_as_root\u003dTrue, root_helper\u003d\"sudo\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_25e48d3a","line":97,"updated":"2014-05-07 16:54:05.000000000","message":"you could easily consolidate this as:\n\n\"chown\", \"-R\", \"%s:%s\" % (user, group)...","commit_id":"08f0bc7ba613cd0dd38678fe8d7780b9e8aa26a3"},{"author":{"_account_id":10139,"name":"Ramashri Umale","email":"rumale@ebaysf.com","username":"rumale"},"change_message_id":"c82e026d524accc076db45e803912cba73ca937a","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    \"\"\""},{"line_number":95,"context_line":"       Changes the owner and group for the path (recursively)"},{"line_number":96,"context_line":"    \"\"\""},{"line_number":97,"context_line":"    utils.execute_with_timeout(\"chown\", \"-R\", user, path,"},{"line_number":98,"context_line":"                               run_as_root\u003dTrue, root_helper\u003d\"sudo\")"},{"line_number":99,"context_line":"    utils.execute_with_timeout(\"chgrp\", \"-R\", group, path,"},{"line_number":100,"context_line":"                               run_as_root\u003dTrue, root_helper\u003d\"sudo\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_a887940e","line":97,"in_reply_to":"7adec928_25e48d3a","updated":"2014-05-07 17:25:22.000000000","message":"ok, can do","commit_id":"08f0bc7ba613cd0dd38678fe8d7780b9e8aa26a3"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"8aa10321a3dde5187545dbe958cb9817c7ab307e","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    \"\"\""},{"line_number":95,"context_line":"       Changes the owner and group for the path (recursively)"},{"line_number":96,"context_line":"    \"\"\""},{"line_number":97,"context_line":"    utils.execute_with_timeout(\"chown\", \"-R\", user, path,"},{"line_number":98,"context_line":"                               run_as_root\u003dTrue, root_helper\u003d\"sudo\")"},{"line_number":99,"context_line":"    utils.execute_with_timeout(\"chgrp\", \"-R\", group, path,"},{"line_number":100,"context_line":"                               run_as_root\u003dTrue, root_helper\u003d\"sudo\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_d84f2e91","line":97,"in_reply_to":"7adec928_a887940e","updated":"2014-05-08 21:32:52.000000000","message":"this could be done, but isn\u0027t absolutely necessary and aesthetic (shouldn\u0027t prevent merge).","commit_id":"08f0bc7ba613cd0dd38678fe8d7780b9e8aa26a3"}],"trove/guestagent/datastore/redis/manager.py":[{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"8da87c6f9a031bf47f493239b8a09fdd53b7a6b2","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        app.install_if_needed(packages)"},{"line_number":87,"context_line":"        LOG.info(_(\u0027Securing redis now.\u0027))"},{"line_number":88,"context_line":"        app.write_config(config_contents)"},{"line_number":89,"context_line":"        \"\"\"Restart app with config changes.\"\"\""},{"line_number":90,"context_line":"        app.restart()"},{"line_number":91,"context_line":"        LOG.info(_(\u0027\"prepare\" redis call has finished.\u0027))"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F9rJ8%3D","line":89,"updated":"2014-04-02 22:21:24.000000000","message":"Probably should be a comment instead of a triple-quoted string.","commit_id":"cf316bc757835720a999a7e3e2a1bbdb794f1dab"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"e1c78a984e5ac545a9875066c3f30b247bea1153","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                device \u003d volume.VolumeDevice(device_path)"},{"line_number":85,"context_line":"                device.format()"},{"line_number":86,"context_line":"                device.mount(mount_point)"},{"line_number":87,"context_line":"                operating_system.update_owner(\u0027redis\u0027, \u0027redis\u0027, mount_point)"},{"line_number":88,"context_line":"                LOG.debug(_(\u0027Mounted the volume.\u0027))"},{"line_number":89,"context_line":"            app.install_if_needed(packages)"},{"line_number":90,"context_line":"            LOG.info(_(\u0027Securing redis now.\u0027))"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad9bd40_c3a64110","line":87,"updated":"2014-05-02 15:03:22.000000000","message":"Should this be put in the configuration stuff for the guest so that it can be changed without changing the code? I haven\u0027t run redis but what if the redis user is not created?\ndatasore/redis/system.py","commit_id":"2edd0eec34dc65ec23dcd5a1e50d946349726be7"},{"author":{"_account_id":10139,"name":"Ramashri Umale","email":"rumale@ebaysf.com","username":"rumale"},"change_message_id":"05eb925a3771f1eb1ef14626e3417ee72915827d","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                device \u003d volume.VolumeDevice(device_path)"},{"line_number":85,"context_line":"                device.format()"},{"line_number":86,"context_line":"                device.mount(mount_point)"},{"line_number":87,"context_line":"                operating_system.update_owner(\u0027redis\u0027, \u0027redis\u0027, mount_point)"},{"line_number":88,"context_line":"                LOG.debug(_(\u0027Mounted the volume.\u0027))"},{"line_number":89,"context_line":"            app.install_if_needed(packages)"},{"line_number":90,"context_line":"            LOG.info(_(\u0027Securing redis now.\u0027))"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad9bd40_d9862e13","line":87,"in_reply_to":"9ad9bd40_c3a64110","updated":"2014-05-02 16:50:12.000000000","message":"I don\u0027t see data dir owner (user:group) as being configurable/changebale hence do not see need to put it in conf. \nRegarding your other question not sure why this scenario should crop up. Even if it does an exception will be caught and the service status will be set as FAILED","commit_id":"2edd0eec34dc65ec23dcd5a1e50d946349726be7"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"11021ca1fa0d313383f457a385ba6fab98f76406","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                device \u003d volume.VolumeDevice(device_path)"},{"line_number":85,"context_line":"                device.format()"},{"line_number":86,"context_line":"                device.mount(mount_point)"},{"line_number":87,"context_line":"                operating_system.update_owner(\u0027redis\u0027, \u0027redis\u0027, mount_point)"},{"line_number":88,"context_line":"                LOG.debug(_(\u0027Mounted the volume.\u0027))"},{"line_number":89,"context_line":"            app.install_if_needed(packages)"},{"line_number":90,"context_line":"            LOG.info(_(\u0027Securing redis now.\u0027))"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad9bd40_63f8154a","line":87,"in_reply_to":"9ad9bd40_c3a64110","updated":"2014-05-02 15:28:31.000000000","message":"Just to confirm, is your suggestion to move \u0027redis\u0027 to trove/guestagent/datastore/redis/system.py as REDIS_USER? I understand that. But to take the other side of the argument: If a string is only used once, does it make since to make it a constant? Isn\u0027t that just decreasing readability due to the indirection? While we\u0027re on this line, I can see changing it to:\n\n  operating_system.update_owner(user\u003d\u0027redis\u0027, group\u003d\u0027redis\u0027, mount_point)\n\nRegarding the absence of a user called \u0027redis\u0027, what is your proposal? As it stands, it looks like the exception will be caught and the instance marked as failed.","commit_id":"2edd0eec34dc65ec23dcd5a1e50d946349726be7"},{"author":{"_account_id":971,"name":"Daniel Salinas","email":"imsplitbit@gmail.com","username":"imsplitbit"},"change_message_id":"2e189803c7d353b826717a48e4b59f5d2c2ce9fb","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            app.write_config(config_contents)"},{"line_number":94,"context_line":"            app.restart()"},{"line_number":95,"context_line":"            LOG.info(_(\u0027\"prepare\" redis call has finished.\u0027))"},{"line_number":96,"context_line":"        except Exception as e:"},{"line_number":97,"context_line":"            LOG.error(e)"},{"line_number":98,"context_line":"            app.status.set_status(rd_instance.ServiceStatuses.FAILED)"},{"line_number":99,"context_line":"            raise RuntimeError(\"prepare call has failed.\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_25aacd70","line":96,"updated":"2014-05-07 16:54:05.000000000","message":"Do we feel like it is likely that *every* exception is possible here?","commit_id":"08f0bc7ba613cd0dd38678fe8d7780b9e8aa26a3"},{"author":{"_account_id":10139,"name":"Ramashri Umale","email":"rumale@ebaysf.com","username":"rumale"},"change_message_id":"c82e026d524accc076db45e803912cba73ca937a","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            app.write_config(config_contents)"},{"line_number":94,"context_line":"            app.restart()"},{"line_number":95,"context_line":"            LOG.info(_(\u0027\"prepare\" redis call has finished.\u0027))"},{"line_number":96,"context_line":"        except Exception as e:"},{"line_number":97,"context_line":"            LOG.error(e)"},{"line_number":98,"context_line":"            app.status.set_status(rd_instance.ServiceStatuses.FAILED)"},{"line_number":99,"context_line":"            raise RuntimeError(\"prepare call has failed.\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_8841f80d","line":96,"in_reply_to":"7adec928_25aacd70","updated":"2014-05-07 17:25:22.000000000","message":"No, but it would be good practice to future proof it this way. Also no point in catching individual exceptions if all are to be handled similarly","commit_id":"08f0bc7ba613cd0dd38678fe8d7780b9e8aa26a3"}],"trove/guestagent/datastore/redis/service.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"876ed9dd0d3831aa9241958b8fc68bea323b64c7","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    def update_owner(self, path):"},{"line_number":189,"context_line":"        LOG.info(_(\"Set owner to \u0027redis\u0027 for %s \") % path)"},{"line_number":190,"context_line":"        utils.execute_with_timeout(\"chown\", \"-R\", \"redis\", path,"},{"line_number":191,"context_line":"                                   run_as_root\u003dTrue, root_helper\u003d\"sudo\")"},{"line_number":192,"context_line":"        LOG.info(_(\"Set group to \u0027redis\u0027 for %s \") % path)"},{"line_number":193,"context_line":"        utils.execute_with_timeout(\"chgrp\", \"-R\", \"redis\", path,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F9d0U%3D","line":190,"updated":"2014-04-04 10:27:32.000000000","message":"try:except block is required","commit_id":"8e334debddc07de9a2fa7f3a94ccef812dced5ce"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"d2c2105454459e72c0f1e98891d0ba06427d1950","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    def update_owner(self, path):"},{"line_number":189,"context_line":"        LOG.info(_(\"Set owner to \u0027redis\u0027 for %s \") % path)"},{"line_number":190,"context_line":"        utils.execute_with_timeout(\"chown\", \"-R\", \"redis\", path,"},{"line_number":191,"context_line":"                                   run_as_root\u003dTrue, root_helper\u003d\"sudo\")"},{"line_number":192,"context_line":"        LOG.info(_(\"Set group to \u0027redis\u0027 for %s \") % path)"},{"line_number":193,"context_line":"        utils.execute_with_timeout(\"chgrp\", \"-R\", \"redis\", path,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWn%2F%2F454%3D","line":190,"in_reply_to":"AAAAWH%2F9bww%3D","updated":"2014-04-08 17:44:41.000000000","message":"each exec requires the try-except block, if some of the execs misses their try-except blocks - it\u0027s bad, error hadling should be improved.","commit_id":"8e334debddc07de9a2fa7f3a94ccef812dced5ce"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"bc152662cc68fe360eb204e8f5d768145c43b28c","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    def update_owner(self, path):"},{"line_number":189,"context_line":"        LOG.info(_(\"Set owner to \u0027redis\u0027 for %s \") % path)"},{"line_number":190,"context_line":"        utils.execute_with_timeout(\"chown\", \"-R\", \"redis\", path,"},{"line_number":191,"context_line":"                                   run_as_root\u003dTrue, root_helper\u003d\"sudo\")"},{"line_number":192,"context_line":"        LOG.info(_(\"Set group to \u0027redis\u0027 for %s \") % path)"},{"line_number":193,"context_line":"        utils.execute_with_timeout(\"chgrp\", \"-R\", \"redis\", path,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F9bww%3D","line":190,"in_reply_to":"AAAAWH%2F9d0U%3D","updated":"2014-04-04 14:58:10.000000000","message":"Can you provide an example of what you\u0027re looking for? This method mirrors https://github.com/openstack/trove/blob/d6fd314555b92dace6a8c86385fc157b6ec510f1/trove/guestagent/datastore/mongodb/service.py#L197-L203.","commit_id":"8e334debddc07de9a2fa7f3a94ccef812dced5ce"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"de696f4c4ecb9226d8d7850209de2390f1e0ec4e","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    def update_owner(self, path):"},{"line_number":189,"context_line":"        LOG.info(_(\"Set owner to \u0027redis\u0027 for %s \") % path)"},{"line_number":190,"context_line":"        utils.execute_with_timeout(\"chown\", \"-R\", \"redis\", path,"},{"line_number":191,"context_line":"                                   run_as_root\u003dTrue, root_helper\u003d\"sudo\")"},{"line_number":192,"context_line":"        LOG.info(_(\"Set group to \u0027redis\u0027 for %s \") % path)"},{"line_number":193,"context_line":"        utils.execute_with_timeout(\"chgrp\", \"-R\", \"redis\", path,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXH%2F%2F3QE%3D","line":190,"in_reply_to":"AAAAWn%2F%2F454%3D","updated":"2014-04-16 20:46:36.000000000","message":"You should only catch the exception if you can handle it. What should be done here upon catching this exception? If this chown fails, redis cannot restart. It\u0027s fatal. Why not let it propagate up? Does it not get logged?","commit_id":"8e334debddc07de9a2fa7f3a94ccef812dced5ce"}],"trove/tests/unittests/guestagent/test_redis_manager.py":[{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"8da87c6f9a031bf47f493239b8a09fdd53b7a6b2","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        redis_service.RedisApp.start_redis \u003d MagicMock(return_value\u003dNone)"},{"line_number":78,"context_line":"        redis_service.RedisApp.install_if_needed \u003d MagicMock(return_value\u003dNone)"},{"line_number":79,"context_line":"        redis_service.RedisApp.write_config \u003d MagicMock(return_value\u003dNone)"},{"line_number":80,"context_line":"        redis_service.RedisApp.restart \u003d MagicMock("},{"line_number":81,"context_line":"            return_value\u003dNone)"},{"line_number":82,"context_line":"        mock_status.begin_install \u003d MagicMock(return_value\u003dNone)"},{"line_number":83,"context_line":"        VolumeDevice.format \u003d MagicMock(return_value\u003dNone)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F9rCg%3D","line":80,"updated":"2014-04-02 22:21:24.000000000","message":"I don\u0027t see an assertion that RedisApp.update_owner was called. Should there be?","commit_id":"cf316bc757835720a999a7e3e2a1bbdb794f1dab"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"1579d40033b1587bfe2a8899e6705bd04dc1f7e4","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        redis_service.RedisApp.start_redis \u003d MagicMock(return_value\u003dNone)"},{"line_number":78,"context_line":"        redis_service.RedisApp.install_if_needed \u003d MagicMock(return_value\u003dNone)"},{"line_number":79,"context_line":"        redis_service.RedisApp.write_config \u003d MagicMock(return_value\u003dNone)"},{"line_number":80,"context_line":"        redis_service.RedisApp.restart \u003d MagicMock("},{"line_number":81,"context_line":"            return_value\u003dNone)"},{"line_number":82,"context_line":"        mock_status.begin_install \u003d MagicMock(return_value\u003dNone)"},{"line_number":83,"context_line":"        VolumeDevice.format \u003d MagicMock(return_value\u003dNone)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F9q7I%3D","line":80,"in_reply_to":"AAAAWH%2F9rCg%3D","updated":"2014-04-02 22:26:41.000000000","message":"I\u0027m pretty sure you have to add the mock for update_owner. The unit tests are failing trying to actually run that command.","commit_id":"cf316bc757835720a999a7e3e2a1bbdb794f1dab"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"e1c78a984e5ac545a9875066c3f30b247bea1153","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        redis_service.RedisApp.install_if_needed.assert_any_call(self.packages)"},{"line_number":98,"context_line":"        redis_service.RedisApp.write_config.assert_any_call(None)"},{"line_number":99,"context_line":"        operating_system.update_owner.assert_any_call("},{"line_number":100,"context_line":"            \u0027redis\u0027, \u0027redis\u0027, \u0027/var/lib/redis\u0027)"},{"line_number":101,"context_line":"        redis_service.RedisApp.restart.assert_any_call()"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def test_restart(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad9bd40_23928d9f","line":100,"updated":"2014-05-02 15:03:22.000000000","message":"so shouldn\u0027t you use the mount_point here instead of the this string? It comes in to the _prepare_dynamic() method with a default of that string.","commit_id":"2edd0eec34dc65ec23dcd5a1e50d946349726be7"},{"author":{"_account_id":10139,"name":"Ramashri Umale","email":"rumale@ebaysf.com","username":"rumale"},"change_message_id":"05eb925a3771f1eb1ef14626e3417ee72915827d","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        redis_service.RedisApp.install_if_needed.assert_any_call(self.packages)"},{"line_number":98,"context_line":"        redis_service.RedisApp.write_config.assert_any_call(None)"},{"line_number":99,"context_line":"        operating_system.update_owner.assert_any_call("},{"line_number":100,"context_line":"            \u0027redis\u0027, \u0027redis\u0027, \u0027/var/lib/redis\u0027)"},{"line_number":101,"context_line":"        redis_service.RedisApp.restart.assert_any_call()"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def test_restart(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad9bd40_39c55a3c","line":100,"in_reply_to":"9ad9bd40_23928d9f","updated":"2014-05-02 16:50:12.000000000","message":"agreed","commit_id":"2edd0eec34dc65ec23dcd5a1e50d946349726be7"}]}
