)]}'
{"trove/common/utils.py":[{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"8fd0dc968420ef1461960230d6b7aadd88431b16","unresolved":false,"context_lines":[{"line_number":312,"context_line":"    return id"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"def generate_random_password():"},{"line_number":316,"context_line":"    return passlib.utils.generate_password(size\u003dCONF.default_password_length)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FfhQ%3D","line":315,"updated":"2014-01-13 11:08:31.000000000","message":"Can we pass the size as an arg to this utility function? That makes this more usable in cases where we may have to generate pws that are not all the same size.\n\nThanks!","commit_id":"8e19ea3363304a0fe007f7a52f39ff2297f8d0a4"},{"author":{"_account_id":1994,"name":"Zhongyue Luo","email":"zhongyue.luo@gmail.com","username":"zyluo"},"change_message_id":"6d9a2bd03b73ce924fcd1dc506a0885b8badaa36","unresolved":false,"context_lines":[{"line_number":24,"context_line":"import uuid"},{"line_number":25,"context_line":"import os"},{"line_number":26,"context_line":"import shutil"},{"line_number":27,"context_line":"import passlib.utils"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from eventlet import event"},{"line_number":30,"context_line":"from eventlet import greenthread"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2FfRc%3D","line":27,"updated":"2014-01-13 11:56:40.000000000","message":"passlib is 3rd party. there should be a blank line between 26 and 27","commit_id":"68863a65781aed4e8d9afadb8ac0ce2b97beaeb6"},{"author":{"_account_id":1994,"name":"Zhongyue Luo","email":"zhongyue.luo@gmail.com","username":"zyluo"},"change_message_id":"1e07696ebd39c65403f23c66a3f4d2390d608d8e","unresolved":false,"context_lines":[{"line_number":24,"context_line":"import uuid"},{"line_number":25,"context_line":"import os"},{"line_number":26,"context_line":"import shutil"},{"line_number":27,"context_line":"import passlib.utils"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from eventlet import event"},{"line_number":30,"context_line":"from eventlet import greenthread"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2FfRA%3D","line":27,"in_reply_to":"AAAAUH%2F%2FfRc%3D","updated":"2014-01-13 11:57:47.000000000","message":"I guess line 27 should be placed between lines 31 and 32","commit_id":"68863a65781aed4e8d9afadb8ac0ce2b97beaeb6"}],"trove/guestagent/datastore/mysql/service.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"ab38fe334ba82dd33ccf5801d6074599e4e58095","unresolved":false,"context_lines":[{"line_number":57,"context_line":"MYSQL_CONFIG \u003d \"/etc/mysql/my.cnf\""},{"line_number":58,"context_line":"MYSQL_SERVICE_CANDIDATES \u003d [\"mysql\", \"mysqld\", \"mysql-server\"]"},{"line_number":59,"context_line":"MYSQL_BIN_CANDIDATES \u003d [\"/usr/sbin/mysqld\", \"/usr/libexec/mysqld\"]"},{"line_number":60,"context_line":"PWD_SIZE \u003d CONF.default_password_length  # Password Length"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"# Create a package impl"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FfJ0%3D","line":60,"updated":"2014-01-13 12:20:51.000000000","message":"at next file also used - CONF.default_password_length\n\ni suggest to define method, which doesn\u0027t take any parameters and uses CONF value inside","commit_id":"718204036ac1c1da34ebf41e32d9853adf7a8380"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"7f68b53014363f1f42d57713eaa2d798d4a3cc78","unresolved":false,"context_lines":[{"line_number":57,"context_line":"MYSQL_CONFIG \u003d \"/etc/mysql/my.cnf\""},{"line_number":58,"context_line":"MYSQL_SERVICE_CANDIDATES \u003d [\"mysql\", \"mysqld\", \"mysql-server\"]"},{"line_number":59,"context_line":"MYSQL_BIN_CANDIDATES \u003d [\"/usr/sbin/mysqld\", \"/usr/libexec/mysqld\"]"},{"line_number":60,"context_line":"PWD_SIZE \u003d CONF.default_password_length  # Password Length"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"# Create a package impl"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FfFM%3D","line":60,"in_reply_to":"AAAAUH%2F%2FfF0%3D","updated":"2014-01-13 12:31:04.000000000","message":"Why do you think it\u0027s bad? It\u0027s totally normal.","commit_id":"718204036ac1c1da34ebf41e32d9853adf7a8380"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"7e8fa072b29a14601390d2bac97fd29e1c96243b","unresolved":false,"context_lines":[{"line_number":57,"context_line":"MYSQL_CONFIG \u003d \"/etc/mysql/my.cnf\""},{"line_number":58,"context_line":"MYSQL_SERVICE_CANDIDATES \u003d [\"mysql\", \"mysqld\", \"mysql-server\"]"},{"line_number":59,"context_line":"MYSQL_BIN_CANDIDATES \u003d [\"/usr/sbin/mysqld\", \"/usr/libexec/mysqld\"]"},{"line_number":60,"context_line":"PWD_SIZE \u003d CONF.default_password_length  # Password Length"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"# Create a package impl"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FfHE%3D","line":60,"in_reply_to":"AAAAUH%2F%2FfH4%3D","updated":"2014-01-13 12:27:03.000000000","message":"if argument is required, then please do it with named args.\ndef blah_blah(len\u003dCONF.default_password_length)","commit_id":"718204036ac1c1da34ebf41e32d9853adf7a8380"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"8b27a47029de0772cad2d7c36e1b7fc1c0d75bf4","unresolved":false,"context_lines":[{"line_number":57,"context_line":"MYSQL_CONFIG \u003d \"/etc/mysql/my.cnf\""},{"line_number":58,"context_line":"MYSQL_SERVICE_CANDIDATES \u003d [\"mysql\", \"mysqld\", \"mysql-server\"]"},{"line_number":59,"context_line":"MYSQL_BIN_CANDIDATES \u003d [\"/usr/sbin/mysqld\", \"/usr/libexec/mysqld\"]"},{"line_number":60,"context_line":"PWD_SIZE \u003d CONF.default_password_length  # Password Length"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"# Create a package impl"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FfF0%3D","line":60,"in_reply_to":"AAAAUH%2F%2FfHE%3D","updated":"2014-01-13 12:30:07.000000000","message":"Do not know, if using value derived from conf looks good in method signature","commit_id":"718204036ac1c1da34ebf41e32d9853adf7a8380"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"e3fa7d2bf4042b753645e24904e9022e08122360","unresolved":false,"context_lines":[{"line_number":57,"context_line":"MYSQL_CONFIG \u003d \"/etc/mysql/my.cnf\""},{"line_number":58,"context_line":"MYSQL_SERVICE_CANDIDATES \u003d [\"mysql\", \"mysqld\", \"mysql-server\"]"},{"line_number":59,"context_line":"MYSQL_BIN_CANDIDATES \u003d [\"/usr/sbin/mysqld\", \"/usr/libexec/mysqld\"]"},{"line_number":60,"context_line":"PWD_SIZE \u003d CONF.default_password_length  # Password Length"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"# Create a package impl"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FfH4%3D","line":60,"in_reply_to":"AAAAUH%2F%2FfJ0%3D","updated":"2014-01-13 12:24:22.000000000","message":"i implemented it like that only earlier, the one in utils, without an argument.\n\nhowever, it was in reviews suggested to implement it with an argument.","commit_id":"718204036ac1c1da34ebf41e32d9853adf7a8380"}],"trove/instance/models.py":[{"author":{"_account_id":6162,"name":"Dan Nguyen","email":"dan.nguyens.mail@gmail.com","username":"daniel-a-nguyen"},"change_message_id":"826d16e2b3159192329cba2887dd546d9fda09b0","unresolved":false,"context_lines":[{"line_number":496,"context_line":""},{"line_number":497,"context_line":"            root_password \u003d None"},{"line_number":498,"context_line":"            if CONF.root_on_create and not backup_id:"},{"line_number":499,"context_line":"                root_password \u003d passlib.utils.generate_password("},{"line_number":500,"context_line":"                    size\u003dCONF.default_password_length)"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"            task_api.API(context).create_instance(db_info.id, name, flavor,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAT3%2F%2F7C4%3D","line":499,"updated":"2013-12-27 03:08:36.000000000","message":"This is more or less what the method from: https://github.com/openstack/trove/blob/master/trove/guestagent/datastore/mysql/service.py#L67 does.\n\nWould you consider refactoring that code to a common util class that could be used by both Guest Agent and Trove API?\n\nPerhaps some where like here: \nhttps://github.com/openstack/trove/blob/master/trove/common/utils.py\n\nNote that even though we have a default value for \u0027default_password_length\u0027 in the Config class you should verify that there is an example property for both the config file used by the API and the guest agent.","commit_id":"b13dd653c79ca4510d3abf03700906ac278dd2ff"},{"author":{"_account_id":1994,"name":"Zhongyue Luo","email":"zhongyue.luo@gmail.com","username":"zyluo"},"change_message_id":"4ba7a104c69d8eaa9e5a3944e773ba779a9ba0fe","unresolved":false,"context_lines":[{"line_number":495,"context_line":""},{"line_number":496,"context_line":"            root_password \u003d None"},{"line_number":497,"context_line":"            if CONF.root_on_create and not backup_id:"},{"line_number":498,"context_line":"                root_password \u003d utils.generate_random_password()"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"            task_api.API(context).create_instance(db_info.id, name, flavor,"},{"line_number":501,"context_line":"                                                  image_id, databases, users,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2F02k%3D","line":498,"updated":"2014-01-08 01:01:29.000000000","message":"Shouldn\u0027t we use the default_password_length option?\n\n passwd_len \u003d CONF.default_password_length\n root_password \u003d pw_utils.generate_password(size\u003dpasswd_len)","commit_id":"8e19ea3363304a0fe007f7a52f39ff2297f8d0a4"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"abace279e909c89c776b5c96ea4d9e231a480884","unresolved":false,"context_lines":[{"line_number":495,"context_line":""},{"line_number":496,"context_line":"            root_password \u003d None"},{"line_number":497,"context_line":"            if CONF.root_on_create and not backup_id:"},{"line_number":498,"context_line":"                root_password \u003d utils.generate_random_password()"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"            task_api.API(context).create_instance(db_info.id, name, flavor,"},{"line_number":501,"context_line":"                                                  image_id, databases, users,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2Ffjw%3D","line":498,"in_reply_to":"AAAAUH%2F%2F02k%3D","updated":"2014-01-13 11:01:32.000000000","message":"I agree. Please set the size to be the default_password_length from the conf file. Thanks!","commit_id":"8e19ea3363304a0fe007f7a52f39ff2297f8d0a4"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"8fd0dc968420ef1461960230d6b7aadd88431b16","unresolved":false,"context_lines":[{"line_number":495,"context_line":""},{"line_number":496,"context_line":"            root_password \u003d None"},{"line_number":497,"context_line":"            if CONF.root_on_create and not backup_id:"},{"line_number":498,"context_line":"                root_password \u003d utils.generate_random_password()"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"            task_api.API(context).create_instance(db_info.id, name, flavor,"},{"line_number":501,"context_line":"                                                  image_id, databases, users,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FfhI%3D","line":498,"in_reply_to":"AAAAUH%2F%2FfjA%3D","updated":"2014-01-13 11:08:31.000000000","message":"Please see my comment in https://review.openstack.org/#/c/64160/3/trove/common/utils.py","commit_id":"8e19ea3363304a0fe007f7a52f39ff2297f8d0a4"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"b0ea25591da6d0054156e6a2b48cfae06466e76e","unresolved":false,"context_lines":[{"line_number":495,"context_line":""},{"line_number":496,"context_line":"            root_password \u003d None"},{"line_number":497,"context_line":"            if CONF.root_on_create and not backup_id:"},{"line_number":498,"context_line":"                root_password \u003d utils.generate_random_password()"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"            task_api.API(context).create_instance(db_info.id, name, flavor,"},{"line_number":501,"context_line":"                                                  image_id, databases, users,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FfjA%3D","line":498,"in_reply_to":"AAAAUH%2F%2Ffjw%3D","updated":"2014-01-13 11:03:27.000000000","message":"Hey SlickNik\n\nThis is done in called method utils.generate_random_password\n\nplease check \nhttps://review.openstack.org/#/c/64160/3/trove/common/utils.py","commit_id":"8e19ea3363304a0fe007f7a52f39ff2297f8d0a4"}]}
