)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"f89c72d1152c0ea36626fe99d820ea32aaf0aca3","unresolved":false,"context_lines":[{"line_number":11,"context_line":"and instances."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"To associate a user with a cluster, changes to the"},{"line_number":14,"context_line":"user api. The previous UserController was replaced"},{"line_number":15,"context_line":"with a DatastoreUserController interface that the"},{"line_number":16,"context_line":"VerticaUserController and the MySQLUserController"},{"line_number":17,"context_line":"both implement. The interface has methods for"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"fa32b979_6beb4613","line":14,"updated":"2015-06-28 06:45:16.000000000","message":"Sentence starting from \"The previous ....\" should be a different paragraph as it states important information about controller","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"}],"trove/common/cfg.py":[{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"f89c72d1152c0ea36626fe99d820ea32aaf0aca3","unresolved":false,"context_lines":[{"line_number":478,"context_line":"    cfg.StrOpt(\u0027userController\u0027,"},{"line_number":479,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLUserController\u0027,"},{"line_number":480,"context_line":"               help\u003d\u0027Class that implements the datastore-specific\u0027"},{"line_number":481,"context_line":"                    \u0027 user controller\u0027),"},{"line_number":482,"context_line":"]"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"# Percona"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_2b7e9e6a","line":481,"updated":"2015-06-28 06:45:16.000000000","message":"Why do we have different help methods for same parameter( here and below).","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"428169649d4b8ce59eb8b64806b9dcad885e90a9","unresolved":false,"context_lines":[{"line_number":542,"context_line":"                deprecated_group\u003d\u0027DEFAULT\u0027),"},{"line_number":543,"context_line":"    cfg.StrOpt(\u0027userController\u0027,"},{"line_number":544,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLUserController\u0027,"},{"line_number":545,"context_line":"               help\u003d\u0027Class that implements the default user\u0027"},{"line_number":546,"context_line":"                    \u0027controller\u0027),"},{"line_number":547,"context_line":"]"},{"line_number":548,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_21432515","line":545,"updated":"2015-06-27 15:02:50.000000000","message":"missing a space here (either at the end of this line or the beginning of the next.","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"428169649d4b8ce59eb8b64806b9dcad885e90a9","unresolved":false,"context_lines":[{"line_number":587,"context_line":"               deprecated_name\u003d\u0027restore_namespace\u0027,"},{"line_number":588,"context_line":"               deprecated_group\u003d\u0027DEFAULT\u0027),"},{"line_number":589,"context_line":"    cfg.StrOpt(\u0027userController\u0027,"},{"line_number":590,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLUserController\u0027,"},{"line_number":591,"context_line":"               help\u003d\u0027Class that implements the default user\u0027"},{"line_number":592,"context_line":"                    \u0027controller\u0027),"},{"line_number":593,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_816b1185","line":590,"updated":"2015-06-27 15:02:50.000000000","message":"why would redis use the mysql controller?","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"428169649d4b8ce59eb8b64806b9dcad885e90a9","unresolved":false,"context_lines":[{"line_number":588,"context_line":"               deprecated_group\u003d\u0027DEFAULT\u0027),"},{"line_number":589,"context_line":"    cfg.StrOpt(\u0027userController\u0027,"},{"line_number":590,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLUserController\u0027,"},{"line_number":591,"context_line":"               help\u003d\u0027Class that implements the default user\u0027"},{"line_number":592,"context_line":"                    \u0027controller\u0027),"},{"line_number":593,"context_line":"]"},{"line_number":594,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_c14a7927","line":591,"updated":"2015-06-27 15:02:50.000000000","message":"same","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"428169649d4b8ce59eb8b64806b9dcad885e90a9","unresolved":false,"context_lines":[{"line_number":633,"context_line":"               deprecated_name\u003d\u0027restore_namespace\u0027,"},{"line_number":634,"context_line":"               deprecated_group\u003d\u0027DEFAULT\u0027),"},{"line_number":635,"context_line":"    cfg.StrOpt(\u0027userController\u0027,"},{"line_number":636,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLUserController\u0027,"},{"line_number":637,"context_line":"               help\u003d\u0027Class that implements the default user\u0027"},{"line_number":638,"context_line":"                    \u0027controller\u0027),"},{"line_number":639,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_c1711979","line":636,"updated":"2015-06-27 15:02:50.000000000","message":"why would cassandra use the MySQL controller?","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"428169649d4b8ce59eb8b64806b9dcad885e90a9","unresolved":false,"context_lines":[{"line_number":634,"context_line":"               deprecated_group\u003d\u0027DEFAULT\u0027),"},{"line_number":635,"context_line":"    cfg.StrOpt(\u0027userController\u0027,"},{"line_number":636,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLUserController\u0027,"},{"line_number":637,"context_line":"               help\u003d\u0027Class that implements the default user\u0027"},{"line_number":638,"context_line":"                    \u0027controller\u0027),"},{"line_number":639,"context_line":"]"},{"line_number":640,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_e1453d15","line":637,"updated":"2015-06-27 15:02:50.000000000","message":"same","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"428169649d4b8ce59eb8b64806b9dcad885e90a9","unresolved":false,"context_lines":[{"line_number":690,"context_line":"    cfg.StrOpt(\u0027device_path\u0027, default\u003d\u0027/dev/vdb\u0027,"},{"line_number":691,"context_line":"               help\u003d\u0027Device path for volume if volume support is enabled.\u0027),"},{"line_number":692,"context_line":"    cfg.StrOpt(\u0027userController\u0027,"},{"line_number":693,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLUserController\u0027,"},{"line_number":694,"context_line":"               help\u003d\u0027Class that implements the default user\u0027"},{"line_number":695,"context_line":"                    \u0027controller\u0027),"},{"line_number":696,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_410429c5","line":693,"updated":"2015-06-27 15:02:50.000000000","message":"same","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"428169649d4b8ce59eb8b64806b9dcad885e90a9","unresolved":false,"context_lines":[{"line_number":691,"context_line":"               help\u003d\u0027Device path for volume if volume support is enabled.\u0027),"},{"line_number":692,"context_line":"    cfg.StrOpt(\u0027userController\u0027,"},{"line_number":693,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLUserController\u0027,"},{"line_number":694,"context_line":"               help\u003d\u0027Class that implements the default user\u0027"},{"line_number":695,"context_line":"                    \u0027controller\u0027),"},{"line_number":696,"context_line":"]"},{"line_number":697,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_415d09eb","line":694,"updated":"2015-06-27 15:02:50.000000000","message":"same","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"428169649d4b8ce59eb8b64806b9dcad885e90a9","unresolved":false,"context_lines":[{"line_number":761,"context_line":"               deprecated_name\u003d\u0027restore_namespace\u0027,"},{"line_number":762,"context_line":"               deprecated_group\u003d\u0027DEFAULT\u0027),"},{"line_number":763,"context_line":"    cfg.StrOpt(\u0027userController\u0027,"},{"line_number":764,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLUserController\u0027,"},{"line_number":765,"context_line":"               help\u003d\u0027Class that implements the default user\u0027"},{"line_number":766,"context_line":"                    \u0027controller\u0027),"},{"line_number":767,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_6107edc9","line":764,"updated":"2015-06-27 15:02:50.000000000","message":"same","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"428169649d4b8ce59eb8b64806b9dcad885e90a9","unresolved":false,"context_lines":[{"line_number":763,"context_line":"    cfg.StrOpt(\u0027userController\u0027,"},{"line_number":764,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLUserController\u0027,"},{"line_number":765,"context_line":"               help\u003d\u0027Class that implements the default user\u0027"},{"line_number":766,"context_line":"                    \u0027controller\u0027),"},{"line_number":767,"context_line":"]"},{"line_number":768,"context_line":""},{"line_number":769,"context_line":"# PostgreSQL"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_2111e504","line":766,"updated":"2015-06-27 15:02:50.000000000","message":"same","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"428169649d4b8ce59eb8b64806b9dcad885e90a9","unresolved":false,"context_lines":[{"line_number":807,"context_line":"    cfg.ListOpt(\u0027ignore_users\u0027, default\u003d[\u0027os_admin\u0027, \u0027postgres\u0027, \u0027root\u0027]),"},{"line_number":808,"context_line":"    cfg.ListOpt(\u0027ignore_dbs\u0027, default\u003d[\u0027postgres\u0027]),"},{"line_number":809,"context_line":"    cfg.StrOpt(\u0027userController\u0027,"},{"line_number":810,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLUserController\u0027,"},{"line_number":811,"context_line":"               help\u003d\u0027Class that implements the default user\u0027"},{"line_number":812,"context_line":"                    \u0027controller\u0027),"},{"line_number":813,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_810231b3","line":810,"updated":"2015-06-27 15:02:50.000000000","message":"same","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"428169649d4b8ce59eb8b64806b9dcad885e90a9","unresolved":false,"context_lines":[{"line_number":809,"context_line":"    cfg.StrOpt(\u0027userController\u0027,"},{"line_number":810,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLUserController\u0027,"},{"line_number":811,"context_line":"               help\u003d\u0027Class that implements the default user\u0027"},{"line_number":812,"context_line":"                    \u0027controller\u0027),"},{"line_number":813,"context_line":"]"},{"line_number":814,"context_line":""},{"line_number":815,"context_line":"# Apache CouchDB"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_a1fdf5b2","line":812,"updated":"2015-06-27 15:02:50.000000000","message":"same","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"428169649d4b8ce59eb8b64806b9dcad885e90a9","unresolved":false,"context_lines":[{"line_number":851,"context_line":"                \u0027the root user is immediately returned in the response of \u0027"},{"line_number":852,"context_line":"                \u0027instance-create as the \"password\" field.\u0027),"},{"line_number":853,"context_line":"    cfg.StrOpt(\u0027userController\u0027,"},{"line_number":854,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLUserController\u0027,"},{"line_number":855,"context_line":"               help\u003d\u0027Class that implements the default user\u0027"},{"line_number":856,"context_line":"                    \u0027controller\u0027),"},{"line_number":857,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_412bc933","line":854,"updated":"2015-06-27 15:02:50.000000000","message":"same","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"428169649d4b8ce59eb8b64806b9dcad885e90a9","unresolved":false,"context_lines":[{"line_number":853,"context_line":"    cfg.StrOpt(\u0027userController\u0027,"},{"line_number":854,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLUserController\u0027,"},{"line_number":855,"context_line":"               help\u003d\u0027Class that implements the default user\u0027"},{"line_number":856,"context_line":"                    \u0027controller\u0027),"},{"line_number":857,"context_line":"]"},{"line_number":858,"context_line":""},{"line_number":859,"context_line":"# Vertica"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_21280533","line":856,"updated":"2015-06-27 15:02:50.000000000","message":"same","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"428169649d4b8ce59eb8b64806b9dcad885e90a9","unresolved":false,"context_lines":[{"line_number":912,"context_line":"                    \u0027logic.\u0027),"},{"line_number":913,"context_line":"    cfg.StrOpt(\u0027userController\u0027,"},{"line_number":914,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.VerticaUserController\u0027,"},{"line_number":915,"context_line":"               help\u003d\u0027Class that implements the datastore-specific user\u0027"},{"line_number":916,"context_line":"                    \u0027controller\u0027),"},{"line_number":917,"context_line":"]"},{"line_number":918,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_e11a1d18","line":915,"updated":"2015-06-27 15:02:50.000000000","message":"same","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"f89c72d1152c0ea36626fe99d820ea32aaf0aca3","unresolved":false,"context_lines":[{"line_number":913,"context_line":"    cfg.StrOpt(\u0027userController\u0027,"},{"line_number":914,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.VerticaUserController\u0027,"},{"line_number":915,"context_line":"               help\u003d\u0027Class that implements the datastore-specific user\u0027"},{"line_number":916,"context_line":"                    \u0027controller\u0027),"},{"line_number":917,"context_line":"]"},{"line_number":918,"context_line":""},{"line_number":919,"context_line":"# DB2"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_eb90b698","line":916,"updated":"2015-06-28 06:45:16.000000000","message":"This is different from others.\n\nAlso I don\u0027t see any of the help messages ending with a \u0027.\u0027","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"428169649d4b8ce59eb8b64806b9dcad885e90a9","unresolved":false,"context_lines":[{"line_number":956,"context_line":"                \u0027incremental, the runner will use the default full backup.\u0027),"},{"line_number":957,"context_line":"    cfg.ListOpt(\u0027ignore_users\u0027, default\u003d[\u0027PUBLIC\u0027, \u0027DB2INST1\u0027]),"},{"line_number":958,"context_line":"    cfg.StrOpt(\u0027userController\u0027,"},{"line_number":959,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLUserController\u0027,"},{"line_number":960,"context_line":"               help\u003d\u0027Class that implements the default user\u0027"},{"line_number":961,"context_line":"                    \u0027controller\u0027),"},{"line_number":962,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_a11415e9","line":959,"updated":"2015-06-27 15:02:50.000000000","message":"same","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"428169649d4b8ce59eb8b64806b9dcad885e90a9","unresolved":false,"context_lines":[{"line_number":957,"context_line":"    cfg.ListOpt(\u0027ignore_users\u0027, default\u003d[\u0027PUBLIC\u0027, \u0027DB2INST1\u0027]),"},{"line_number":958,"context_line":"    cfg.StrOpt(\u0027userController\u0027,"},{"line_number":959,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLUserController\u0027,"},{"line_number":960,"context_line":"               help\u003d\u0027Class that implements the default user\u0027"},{"line_number":961,"context_line":"                    \u0027controller\u0027),"},{"line_number":962,"context_line":"]"},{"line_number":963,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_8119d124","line":960,"updated":"2015-06-27 15:02:50.000000000","message":"same","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"}],"trove/extensions/mysql/service.py":[{"author":{"_account_id":6160,"name":"Saurabh Surana","email":"saurabh.cloud@gmail.com","username":"saurabh-surana"},"change_message_id":"9c163b65deb8588f96de65c51e9cc3676396d7a0","unresolved":false,"context_lines":[{"line_number":510,"context_line":"    def load_user_controller(self, manager):"},{"line_number":511,"context_line":"        try:"},{"line_number":512,"context_line":"            clazz \u003d CONF.get(manager).get(\u0027userController\u0027)"},{"line_number":513,"context_line":"            LOG.debug(\"Loading class %s\" % clazz)"},{"line_number":514,"context_line":"            user_controller \u003d import_class(clazz)"},{"line_number":515,"context_line":"            return user_controller()"},{"line_number":516,"context_line":"        except NoSuchOptError:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_463e3429","line":513,"updated":"2015-06-23 18:13:23.000000000","message":"Can we log \n\nLoading User Controller class","commit_id":"698668b1c7df93fd7ef48aa93dad30f8d732df4d"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"f89c72d1152c0ea36626fe99d820ea32aaf0aca3","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"import abc"},{"line_number":38,"context_line":"import six"},{"line_number":39,"context_line":"import trove.common.apischema as apischema"},{"line_number":40,"context_line":"import webob.exc"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_ab8aae62","line":39,"updated":"2015-06-28 06:45:16.000000000","message":"this is a wrong group for imports, it has got all 3 kinds of imports,  standard library, 3rd party library, and project code. they need to goto their sections.","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"428169649d4b8ce59eb8b64806b9dcad885e90a9","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        pass"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"class VerticaUserController(DatastoreUserController):"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def instance_user_index(self, req, tenant_id, instance_id):"},{"line_number":127,"context_line":"        \"\"\"Return all users.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_81f0f1ca","line":124,"updated":"2015-06-27 15:02:50.000000000","message":"not sure you want a vertica user controller in extensions/mysql","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"31677a72d4bc90eda225c999dce638264dd3f5b9","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        pass"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"class VerticaUserController(DatastoreUserController):"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def instance_user_index(self, req, tenant_id, instance_id):"},{"line_number":127,"context_line":"        \"\"\"Return all users.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_d7791431","line":124,"in_reply_to":"ba3cc151_8d87e260","updated":"2015-07-20 06:10:43.000000000","message":"I disagree, this makes the code messy and for no clear reason. I suggest it be done here.","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"ea92f092a21acc6d000b092c88485a4d3f1f61fa","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        pass"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"class VerticaUserController(DatastoreUserController):"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def instance_user_index(self, req, tenant_id, instance_id):"},{"line_number":127,"context_line":"        \"\"\"Return all users.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_4d81da49","line":124,"in_reply_to":"fa32b979_0bf2ba06","updated":"2015-06-29 22:14:47.000000000","message":"The changes to take all the Vertica specific changes out of extensions/mysql can be a different patch","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"f89c72d1152c0ea36626fe99d820ea32aaf0aca3","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        pass"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"class VerticaUserController(DatastoreUserController):"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def instance_user_index(self, req, tenant_id, instance_id):"},{"line_number":127,"context_line":"        \"\"\"Return all users.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_0bf2ba06","line":124,"in_reply_to":"fa32b979_81f0f1ca","updated":"2015-06-28 06:45:16.000000000","message":"I agree this should be in a different module.","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"ea92f092a21acc6d000b092c88485a4d3f1f61fa","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        pass"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"class VerticaUserController(DatastoreUserController):"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def instance_user_index(self, req, tenant_id, instance_id):"},{"line_number":127,"context_line":"        \"\"\"Return all users.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_8d87e260","line":124,"in_reply_to":"fa32b979_81f0f1ca","updated":"2015-06-29 22:14:47.000000000","message":"The changes to take all the Vertica specific changes out of extensions/mysql can be a different patch","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"f89c72d1152c0ea36626fe99d820ea32aaf0aca3","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"class VerticaUserController(DatastoreUserController):"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def instance_user_index(self, req, tenant_id, instance_id):"},{"line_number":127,"context_line":"        \"\"\"Return all users.\"\"\""},{"line_number":128,"context_line":"        LOG.info(_(\"Listing users for instance \u0027%s\u0027\") % instance_id)"},{"line_number":129,"context_line":"        LOG.info(_(\"req : \u0027%s\u0027\\n\\n\") % req)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_abe14e2c","line":126,"updated":"2015-06-28 06:45:16.000000000","message":"I am not able to connect the link between the routes and these method names.","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"970d2467a72d4d50cc43db59f6d60a835810d07e","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"class VerticaUserController(DatastoreUserController):"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def instance_user_index(self, req, tenant_id, instance_id):"},{"line_number":127,"context_line":"        \"\"\"Return all users.\"\"\""},{"line_number":128,"context_line":"        LOG.info(_(\"Listing users for instance \u0027%s\u0027\") % instance_id)"},{"line_number":129,"context_line":"        LOG.info(_(\"req : \u0027%s\u0027\\n\\n\") % req)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_6eb04ade","line":126,"in_reply_to":"ba3cc151_adbe66fd","updated":"2015-06-30 06:50:01.000000000","message":"Thank you Sharika, got the point.","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"ea92f092a21acc6d000b092c88485a4d3f1f61fa","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"class VerticaUserController(DatastoreUserController):"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def instance_user_index(self, req, tenant_id, instance_id):"},{"line_number":127,"context_line":"        \"\"\"Return all users.\"\"\""},{"line_number":128,"context_line":"        LOG.info(_(\"Listing users for instance \u0027%s\u0027\") % instance_id)"},{"line_number":129,"context_line":"        LOG.info(_(\"req : \u0027%s\u0027\\n\\n\") % req)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_adbe66fd","line":126,"in_reply_to":"fa32b979_abe14e2c","updated":"2015-06-29 22:14:47.000000000","message":"The routes direct to the class UserController, the UserController class then finds out which datastore controller to load. These functions like instance_user_index are a part of the VerticaUserController and are only invoked on vertica instances or vertica clusters according to the request.","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"}],"trove/extensions/mysql/views.py":[{"author":{"_account_id":6160,"name":"Saurabh Surana","email":"saurabh.cloud@gmail.com","username":"saurabh-surana"},"change_message_id":"9c163b65deb8588f96de65c51e9cc3676396d7a0","unresolved":false,"context_lines":[{"line_number":23,"context_line":"        user_dict \u003d {"},{"line_number":24,"context_line":"            \"name\": self.user.name,"},{"line_number":25,"context_line":"            \"host\": self.user.host,"},{"line_number":26,"context_line":"            \"databases\": self.user.databases,"},{"line_number":27,"context_line":"        }"},{"line_number":28,"context_line":"        return {\"user\": user_dict}"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_46f7148b","line":26,"updated":"2015-06-23 18:13:23.000000000","message":"this comma is not needed","commit_id":"698668b1c7df93fd7ef48aa93dad30f8d732df4d"}],"trove/guestagent/datastore/experimental/vertica/manager.py":[{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"f89c72d1152c0ea36626fe99d820ea32aaf0aca3","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        pass"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def change_passwords(self, context, users):"},{"line_number":128,"context_line":"        LOG.debug(\"Changing password.\")"},{"line_number":129,"context_line":"        raise exception.DatastoreOperationNotSupported("},{"line_number":130,"context_line":"            operation\u003d\u0027change_passwords\u0027, datastore\u003dMANAGER)"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_abb86e12","line":128,"updated":"2015-06-28 06:45:16.000000000","message":"This is also a functionality related to users, this should also go in.","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"f89c72d1152c0ea36626fe99d820ea32aaf0aca3","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    def create_user(self, context, users):"},{"line_number":142,"context_line":"        LOG.debug(\"Creating user.\")"},{"line_number":143,"context_line":"        username \u003d (users[0][\u0027_name\u0027])"},{"line_number":144,"context_line":"        password \u003d (users[0][\u0027_password\u0027])"},{"line_number":145,"context_line":"        return self.app.create_user(username, password)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def delete_database(self, context, database):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_2bcc5eba","line":144,"updated":"2015-06-28 06:45:16.000000000","message":"Do you want to say if it was a list of users passed then only first of them would be created.","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"}],"trove/guestagent/datastore/experimental/vertica/service.py":[{"author":{"_account_id":6160,"name":"Saurabh Surana","email":"saurabh.cloud@gmail.com","username":"saurabh-surana"},"change_message_id":"9c163b65deb8588f96de65c51e9cc3676396d7a0","unresolved":false,"context_lines":[{"line_number":305,"context_line":"                for key, value in user_list.iteritems():"},{"line_number":306,"context_line":"                    user \u003d models.MySQLUser()"},{"line_number":307,"context_line":"                    for v in value:"},{"line_number":308,"context_line":"                        LOG.info(v)"},{"line_number":309,"context_line":"                        LOG.info(\"Username : %s\" % v[1].strip())"},{"line_number":310,"context_line":"                        user.name \u003d v[1].strip()"},{"line_number":311,"context_line":"                        users.append(user.serialize())"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_e655081e","line":308,"updated":"2015-06-23 18:13:23.000000000","message":"remove","commit_id":"698668b1c7df93fd7ef48aa93dad30f8d732df4d"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"f89c72d1152c0ea36626fe99d820ea32aaf0aca3","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import subprocess"},{"line_number":17,"context_line":"import tempfile"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from collections import defaultdict"},{"line_number":20,"context_line":"from oslo_utils import netutils"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from trove.common import cfg"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_2b43fe14","line":19,"updated":"2015-06-28 06:45:16.000000000","message":"This is a standard library should go in previous group.","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"f89c72d1152c0ea36626fe99d820ea32aaf0aca3","unresolved":false,"context_lines":[{"line_number":229,"context_line":"    def create_user(self, username, password, limit\u003dNone, marker\u003dNone,"},{"line_number":230,"context_line":"                    include_marker\u003dFalse):"},{"line_number":231,"context_line":"        \"\"\"Prepare the guest machine with a Vertica user creation.\"\"\""},{"line_number":232,"context_line":"        LOG.info(_(\"Creating user on Vertica host.\"))"},{"line_number":233,"context_line":"        try:"},{"line_number":234,"context_line":"            # Create user after install"},{"line_number":235,"context_line":"            db_password \u003d self._get_database_password()"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_ab4f0e33","line":232,"updated":"2015-06-28 06:45:16.000000000","message":"Actually its a user on Vertica database and not host, the term would hold more importance as it comes to clusters because it would be a single database with multiple hosts accessing that.","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"f89c72d1152c0ea36626fe99d820ea32aaf0aca3","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        \"\"\"Prepare the guest machine with a Vertica user creation.\"\"\""},{"line_number":232,"context_line":"        LOG.info(_(\"Creating user on Vertica host.\"))"},{"line_number":233,"context_line":"        try:"},{"line_number":234,"context_line":"            # Create user after install"},{"line_number":235,"context_line":"            db_password \u003d self._get_database_password()"},{"line_number":236,"context_line":"            create_user_command \u003d (system.CREATE_USER % (\"dbadmin\","},{"line_number":237,"context_line":"                                   db_password, username, password))"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_2b5a1ef3","line":234,"updated":"2015-06-28 06:45:16.000000000","message":"I did not get the importance of this comment.\n\nThere is no install here.","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"f89c72d1152c0ea36626fe99d820ea32aaf0aca3","unresolved":false,"context_lines":[{"line_number":240,"context_line":"                user \u003d models.MySQLUser()"},{"line_number":241,"context_line":"                return user.serialize()"},{"line_number":242,"context_line":"        except exception.ProcessExecutionError:"},{"line_number":243,"context_line":"            LOG.exception(\"Creating Vertica user failed.\")"},{"line_number":244,"context_line":"            raise RuntimeError(\"Creating Vertica user failed.\")"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def update_user(self, context, username, hostname, user_attrs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_8b6b2a85","line":243,"updated":"2015-06-28 06:45:16.000000000","message":"Need to support internationalization with LOG.exception.","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"428169649d4b8ce59eb8b64806b9dcad885e90a9","unresolved":false,"context_lines":[{"line_number":243,"context_line":"            LOG.exception(\"Creating Vertica user failed.\")"},{"line_number":244,"context_line":"            raise RuntimeError(\"Creating Vertica user failed.\")"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def update_user(self, context, username, hostname, user_attrs):"},{"line_number":247,"context_line":"        try:"},{"line_number":248,"context_line":"            db_password \u003d self._get_database_password()"},{"line_number":249,"context_line":"            new_password \u003d user_attrs[\u0027password\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_e18f7d2c","line":246,"updated":"2015-06-27 15:02:50.000000000","message":"no LOG.info?","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"428169649d4b8ce59eb8b64806b9dcad885e90a9","unresolved":false,"context_lines":[{"line_number":258,"context_line":"                user \u003d models.MySQLUser()"},{"line_number":259,"context_line":"                return user.serialize()"},{"line_number":260,"context_line":"        except Exception:"},{"line_number":261,"context_line":"            LOG.exception(\"Could not update vertica user.\")"},{"line_number":262,"context_line":"            raise RuntimeError(\"Updating vertica user failed.\")"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    def delete_user(self, context, user):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_01aaa185","line":261,"updated":"2015-06-27 15:02:50.000000000","message":"Vertica (capitalize)","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"428169649d4b8ce59eb8b64806b9dcad885e90a9","unresolved":false,"context_lines":[{"line_number":277,"context_line":"            raise RuntimeError(\"Deleting vertica user failed.\")"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    def get_user(self, context, username, hostname):"},{"line_number":280,"context_line":"        \"\"\"Prepare the guest machine with a Vertica user creation.\"\"\""},{"line_number":281,"context_line":"        try:"},{"line_number":282,"context_line":"            # List all users"},{"line_number":283,"context_line":"            db_password \u003d self._get_database_password()"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_819eb161","line":280,"updated":"2015-06-27 15:02:50.000000000","message":"no LOG.info?","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"428169649d4b8ce59eb8b64806b9dcad885e90a9","unresolved":false,"context_lines":[{"line_number":290,"context_line":"                user.is_super_user \u003d False"},{"line_number":291,"context_line":"                return user.serialize()"},{"line_number":292,"context_line":"        except exception.ProcessExecutionError:"},{"line_number":293,"context_line":"            LOG.exception(\"Cannot retrieve vertica user %s .\" % username)"},{"line_number":294,"context_line":"            raise RuntimeError(\"Retrieving vertica user failed.\")"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"    def list_users(self, limit\u003dNone, marker\u003dNone, include_marker\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_a199757b","line":293,"updated":"2015-06-27 15:02:50.000000000","message":"Vertica","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"428169649d4b8ce59eb8b64806b9dcad885e90a9","unresolved":false,"context_lines":[{"line_number":294,"context_line":"            raise RuntimeError(\"Retrieving vertica user failed.\")"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"    def list_users(self, limit\u003dNone, marker\u003dNone, include_marker\u003dFalse):"},{"line_number":297,"context_line":"        \"\"\"Prepare the guest machine with a Vertica user creation.\"\"\""},{"line_number":298,"context_line":"        try:"},{"line_number":299,"context_line":"            # List all users"},{"line_number":300,"context_line":"            db_password \u003d self._get_database_password()"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_618a8d1c","line":297,"updated":"2015-06-27 15:02:50.000000000","message":"same","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"f89c72d1152c0ea36626fe99d820ea32aaf0aca3","unresolved":false,"context_lines":[{"line_number":298,"context_line":"        try:"},{"line_number":299,"context_line":"            # List all users"},{"line_number":300,"context_line":"            db_password \u003d self._get_database_password()"},{"line_number":301,"context_line":"            list_users_command \u003d (system.LIST_USERS % (\"dbadmin\","},{"line_number":302,"context_line":"                                                       db_password))"},{"line_number":303,"context_line":"            users \u003d []"},{"line_number":304,"context_line":"            out, err \u003d system.shell_execute(list_users_command)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_ebe196fd","line":301,"updated":"2015-06-28 06:45:16.000000000","message":"I wonder if you are going to everytime use dbadmin as your first argument, shall this be part of your command in system module.","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"428169649d4b8ce59eb8b64806b9dcad885e90a9","unresolved":false,"context_lines":[{"line_number":312,"context_line":"                        users.append(user.serialize())"},{"line_number":313,"context_line":"            return users, None"},{"line_number":314,"context_line":"        except exception.ProcessExecutionError:"},{"line_number":315,"context_line":"            LOG.exception(\"Could not retrieve vertica users list.\")"},{"line_number":316,"context_line":"            raise RuntimeError(\"Retrieving vertica users list failed.\")"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    def _parse_shell_ouput(self, output):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_018141fb","line":315,"updated":"2015-06-27 15:02:50.000000000","message":"same","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"}],"trove/guestagent/datastore/experimental/vertica/system.py":[{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"f89c72d1152c0ea36626fe99d820ea32aaf0aca3","unresolved":false,"context_lines":[{"line_number":19,"context_line":"CREATE_USER \u003d (\"/opt/vertica/bin/vsql -U %s -w %s -c \\\"CREATE USER %s \""},{"line_number":20,"context_line":"               \"IDENTIFIED BY \\\u0027%s\\\u0027\\\"\")"},{"line_number":21,"context_line":"DELETE_USER \u003d (\"/opt/vertica/bin/vsql -U %s -w %s -c \\\"DROP USER %s\\\"\")"},{"line_number":22,"context_line":"GET_USER \u003d (\"/opt/vertica/bin/vsql -U %s -w %s -c \\\"select * from users \""},{"line_number":23,"context_line":"            \"where user_name\u003d\u0027%s\u0027;\\\"\")"},{"line_number":24,"context_line":"INSTALL_VERTICA \u003d (\"/opt/vertica/sbin/install_vertica -s %s\""},{"line_number":25,"context_line":"                   \" -d %s -X -N -S default -r\""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_4bd20236","line":22,"updated":"2015-06-28 06:45:16.000000000","message":"table-name should be prefixed with schema-name","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"f89c72d1152c0ea36626fe99d820ea32aaf0aca3","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    # does not works with vertica installer"},{"line_number":51,"context_line":"    # and it has problems while executing remote commands."},{"line_number":52,"context_line":"    return utils.execute(\"sudo\", \"su\", \"-\", command_executor, \"-c\", \"%s\""},{"line_number":53,"context_line":"                         % command)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_ab14eee8","line":53,"updated":"2015-06-28 06:45:16.000000000","message":"Did not get the purpose of \u0027\"%s\" % command\u0027\n\nI cannot make what this change whats to achieve","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"9a2d6acfb6c38c15d4e7f50c6b45af782c6577e2","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    # does not works with vertica installer"},{"line_number":51,"context_line":"    # and it has problems while executing remote commands."},{"line_number":52,"context_line":"    return utils.execute(\"sudo\", \"su\", \"-\", command_executor, \"-c\", \"%s\""},{"line_number":53,"context_line":"                         % command)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_70cfdcb0","line":53,"in_reply_to":"ba3cc151_02972a91","updated":"2015-06-29 18:02:16.000000000","message":"I am still not sure whats the difference between\n\ncommand \u003d \"echo Hello\"\n\nreturn utils.execute(\"sudo\", \"su\", \"-\", command_executor, \"-c\", command)\n\nreturn utils.execute(\"sudo\", \"su\", \"-\", command_executor, \"-c\", \"%s\" % command)","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"ba18a0344d8ee8133f295a9ff9a5cfe3459f7ecd","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    # does not works with vertica installer"},{"line_number":51,"context_line":"    # and it has problems while executing remote commands."},{"line_number":52,"context_line":"    return utils.execute(\"sudo\", \"su\", \"-\", command_executor, \"-c\", \"%s\""},{"line_number":53,"context_line":"                         % command)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_02972a91","line":53,"in_reply_to":"fa32b979_ab14eee8","updated":"2015-06-29 17:15:24.000000000","message":"we need separate quotes around the command after -c \"\u003ccommand\u003e\" because the command we substitute in it also has a -c parameter","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"}],"trove/tests/unittests/guestagent/test_vertica_manager.py":[{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"8c9dda6985e824308ac1420dffec5fdaa84bff58","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 GuestAgentManagerTest(testtools.TestCase):"},{"line_number":32,"context_line":"    def setUp(self):"},{"line_number":33,"context_line":"        super(GuestAgentManagerTest, self).setUp()"},{"line_number":34,"context_line":"        self.context \u003d TroveContext()"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_50b098dd","line":31,"updated":"2015-06-29 18:12:21.000000000","message":"Please, use trove_testtools.TestCase as the base. It will help you to discover leaked mocks like the ones below.","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"f89c72d1152c0ea36626fe99d820ea32aaf0aca3","unresolved":false,"context_lines":[{"line_number":277,"context_line":"                          self.context, None)"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    def test_update_attributes(self):"},{"line_number":280,"context_line":"        VerticaApp.update_user \u003d MagicMock(return_value\u003dNone)"},{"line_number":281,"context_line":"        self.manager.update_attributes(self.context, \u0027test_user\u0027, \u0027%\u0027,"},{"line_number":282,"context_line":"                                       {\u0027_password\u0027: \u0027newpwd\u0027})"},{"line_number":283,"context_line":"        VerticaApp.update_user.assert_called_with(self.context, \u0027test_user\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_4bb9a2eb","line":280,"updated":"2015-06-28 06:45:16.000000000","message":"These mocks look to me the unsafe ones.","commit_id":"f96548b15cd9fc37da7c10ff459b3c65134fcc05"}]}
