)]}'
{"trove/common/cfg.py":[{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"6f3ee260dc6290c1a25bb7cd6ce06e3ad1ff6506","unresolved":false,"context_lines":[{"line_number":878,"context_line":"                       \u0027guestagent.VerticaGuestAgentStrategy\u0027,"},{"line_number":879,"context_line":"               help\u003d\u0027Class that implements datastore-specific Guest Agent API \u0027"},{"line_number":880,"context_line":"                    \u0027logic.\u0027),"},{"line_number":881,"context_line":"    cfg.StrOpt(\u0027rootController\u0027,"},{"line_number":882,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.VerticaRootController\u0027,"},{"line_number":883,"context_line":"               help\u003d\u0027Class that implements the datastore-specific root \u0027"},{"line_number":884,"context_line":"                    \u0027controller\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_0b6090cd","line":881,"updated":"2015-06-30 06:25:39.000000000","message":"It this not needed for other datastores.","commit_id":"3e6dc7d4ecf73d3faf0b8562041cd8255973b572"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"c60fad184f28e30adeeb67edfe6d7dd2a1ded11c","unresolved":false,"context_lines":[{"line_number":693,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLRootController\u0027,"},{"line_number":694,"context_line":"               help\u003d\u0027Class that implements the datastore-specific root \u0027"},{"line_number":695,"context_line":"                    \u0027controller\u0027),"},{"line_number":696,"context_line":"]"},{"line_number":697,"context_line":""},{"line_number":698,"context_line":"# MongoDB"},{"line_number":699,"context_line":"mongodb_group \u003d cfg.OptGroup("}],"source_content_type":"text/x-python","patch_set":7,"id":"9a41bdd9_d2f73c89","line":696,"updated":"2015-07-15 11:24:19.000000000","message":"why cant this configuration be under common_opts instead of defining this for every datastore","commit_id":"ef16f9ab1a514aac47e9b40432c9543aaaf8fbc2"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"b94f4ecaf7c762b661efd77acd8fe44b4cf51fc5","unresolved":false,"context_lines":[{"line_number":693,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLRootController\u0027,"},{"line_number":694,"context_line":"               help\u003d\u0027Class that implements the datastore-specific root \u0027"},{"line_number":695,"context_line":"                    \u0027controller\u0027),"},{"line_number":696,"context_line":"]"},{"line_number":697,"context_line":""},{"line_number":698,"context_line":"# MongoDB"},{"line_number":699,"context_line":"mongodb_group \u003d cfg.OptGroup("}],"source_content_type":"text/x-python","patch_set":7,"id":"9a41bdd9_1824c2c2","line":696,"in_reply_to":"9a41bdd9_d2f73c89","updated":"2015-07-15 22:17:07.000000000","message":"Vertica uses a different one different than the rest of the datastores. Also in the future every datastore might need their own root controller.","commit_id":"ef16f9ab1a514aac47e9b40432c9543aaaf8fbc2"},{"author":{"_account_id":12758,"name":"Masaki Matsushita","email":"glass.saga@gmail.com","username":"masaki"},"change_message_id":"df647f7698d4d55a49abf4c5051ef5251a2c62c1","unresolved":false,"context_lines":[{"line_number":475,"context_line":"                \u0027backup.\u0027,"},{"line_number":476,"context_line":"                deprecated_name\u003d\u0027backup_incremental_strategy\u0027,"},{"line_number":477,"context_line":"                deprecated_group\u003d\u0027DEFAULT\u0027),"},{"line_number":478,"context_line":"    cfg.StrOpt(\u0027rootController\u0027,"},{"line_number":479,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLRootController\u0027,"},{"line_number":480,"context_line":"               help\u003d\u0027Class that implements the datastore-specific root \u0027"},{"line_number":481,"context_line":"                    \u0027controller\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_4c8664dc","line":478,"updated":"2015-07-22 04:03:06.000000000","message":"I think \"root_controller\" is much better because other options are written in snake case.","commit_id":"2e93b22e77a80a054ad6e5d40bfc8867fb4236ed"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"33c60f3d62159602895b7fbbc28fa07b29404093","unresolved":false,"context_lines":[{"line_number":475,"context_line":"                \u0027backup.\u0027,"},{"line_number":476,"context_line":"                deprecated_name\u003d\u0027backup_incremental_strategy\u0027,"},{"line_number":477,"context_line":"                deprecated_group\u003d\u0027DEFAULT\u0027),"},{"line_number":478,"context_line":"    cfg.StrOpt(\u0027rootController\u0027,"},{"line_number":479,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLRootController\u0027,"},{"line_number":480,"context_line":"               help\u003d\u0027Class that implements the datastore-specific root \u0027"},{"line_number":481,"context_line":"                    \u0027controller\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_2ebcc504","line":478,"in_reply_to":"3a50d1a3_4c8664dc","updated":"2015-08-05 17:26:09.000000000","message":"Done","commit_id":"2e93b22e77a80a054ad6e5d40bfc8867fb4236ed"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"d51195c5070c32f641ecec2ce83ea382afbafaf2","unresolved":false,"context_lines":[{"line_number":475,"context_line":"                \u0027backup.\u0027,"},{"line_number":476,"context_line":"                deprecated_name\u003d\u0027backup_incremental_strategy\u0027,"},{"line_number":477,"context_line":"                deprecated_group\u003d\u0027DEFAULT\u0027),"},{"line_number":478,"context_line":"    cfg.StrOpt(\u0027rootController\u0027,"},{"line_number":479,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLRootController\u0027,"},{"line_number":480,"context_line":"               help\u003d\u0027Class that implements the datastore-specific root \u0027"},{"line_number":481,"context_line":"                    \u0027controller\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_4075602f","line":478,"in_reply_to":"3a50d1a3_4c8664dc","updated":"2015-07-23 15:33:12.000000000","message":"i do agree, camel case looks a bit awkward","commit_id":"2e93b22e77a80a054ad6e5d40bfc8867fb4236ed"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"bd06f079699ca3d198344f7c4812fae9dd2ad4c0","unresolved":false,"context_lines":[{"line_number":480,"context_line":"    cfg.StrOpt(\u0027rootController\u0027,"},{"line_number":481,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLRootController\u0027,"},{"line_number":482,"context_line":"               help\u003d\u0027Class that implements the datastore-specific root \u0027"},{"line_number":483,"context_line":"                    \u0027controller\u0027),"},{"line_number":484,"context_line":"]"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"# Percona"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_8eb607db","line":483,"updated":"2015-08-04 07:17:32.000000000","message":"Need to end all help messages with a \u0027.\u0027","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"f17e486da13ba1522171da80b479955e80d9abb9","unresolved":false,"context_lines":[{"line_number":480,"context_line":"    cfg.StrOpt(\u0027rootController\u0027,"},{"line_number":481,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLRootController\u0027,"},{"line_number":482,"context_line":"               help\u003d\u0027Class that implements the datastore-specific root \u0027"},{"line_number":483,"context_line":"                    \u0027controller\u0027),"},{"line_number":484,"context_line":"]"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"# Percona"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_1925f6bf","line":483,"in_reply_to":"1a4dcd0f_8eb607db","updated":"2015-08-05 18:49:28.000000000","message":"Done","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"1244fad0f9dcb5f46001c95ccc1e1b37d92e9975","unresolved":false,"context_lines":[{"line_number":588,"context_line":"               help\u003d\u0027Namespace to load restore strategies from.\u0027,"},{"line_number":589,"context_line":"               deprecated_name\u003d\u0027restore_namespace\u0027,"},{"line_number":590,"context_line":"               deprecated_group\u003d\u0027DEFAULT\u0027),"},{"line_number":591,"context_line":"    cfg.StrOpt(\u0027rootController\u0027,"},{"line_number":592,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLRootController\u0027,"},{"line_number":593,"context_line":"               help\u003d\u0027Class that implements the datastore-specific root \u0027"},{"line_number":594,"context_line":"                    \u0027controller\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_86131066","line":591,"updated":"2015-08-05 04:23:07.000000000","message":"Please set this to None","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"f17e486da13ba1522171da80b479955e80d9abb9","unresolved":false,"context_lines":[{"line_number":588,"context_line":"               help\u003d\u0027Namespace to load restore strategies from.\u0027,"},{"line_number":589,"context_line":"               deprecated_name\u003d\u0027restore_namespace\u0027,"},{"line_number":590,"context_line":"               deprecated_group\u003d\u0027DEFAULT\u0027),"},{"line_number":591,"context_line":"    cfg.StrOpt(\u0027rootController\u0027,"},{"line_number":592,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLRootController\u0027,"},{"line_number":593,"context_line":"               help\u003d\u0027Class that implements the datastore-specific root \u0027"},{"line_number":594,"context_line":"                    \u0027controller\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_3910f258","line":591,"in_reply_to":"1a4dcd0f_86131066","updated":"2015-08-05 18:49:28.000000000","message":"Done","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"1244fad0f9dcb5f46001c95ccc1e1b37d92e9975","unresolved":false,"context_lines":[{"line_number":634,"context_line":"               help\u003d\u0027Namespace to load restore strategies from.\u0027,"},{"line_number":635,"context_line":"               deprecated_name\u003d\u0027restore_namespace\u0027,"},{"line_number":636,"context_line":"               deprecated_group\u003d\u0027DEFAULT\u0027),"},{"line_number":637,"context_line":"    cfg.StrOpt(\u0027rootController\u0027,"},{"line_number":638,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLRootController\u0027,"},{"line_number":639,"context_line":"               help\u003d\u0027Class that implements the datastore-specific root \u0027"},{"line_number":640,"context_line":"                    \u0027controller\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_460e683c","line":637,"updated":"2015-08-05 04:23:07.000000000","message":"Please set this to None","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"f17e486da13ba1522171da80b479955e80d9abb9","unresolved":false,"context_lines":[{"line_number":634,"context_line":"               help\u003d\u0027Namespace to load restore strategies from.\u0027,"},{"line_number":635,"context_line":"               deprecated_name\u003d\u0027restore_namespace\u0027,"},{"line_number":636,"context_line":"               deprecated_group\u003d\u0027DEFAULT\u0027),"},{"line_number":637,"context_line":"    cfg.StrOpt(\u0027rootController\u0027,"},{"line_number":638,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLRootController\u0027,"},{"line_number":639,"context_line":"               help\u003d\u0027Class that implements the datastore-specific root \u0027"},{"line_number":640,"context_line":"                    \u0027controller\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_7d5bc5f6","line":637,"in_reply_to":"1a4dcd0f_460e683c","updated":"2015-08-05 18:49:28.000000000","message":"Done","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"1244fad0f9dcb5f46001c95ccc1e1b37d92e9975","unresolved":false,"context_lines":[{"line_number":691,"context_line":"                help\u003d\u0027Whether to provision a Cinder volume for datadir.\u0027),"},{"line_number":692,"context_line":"    cfg.StrOpt(\u0027device_path\u0027, default\u003d\u0027/dev/vdb\u0027,"},{"line_number":693,"context_line":"               help\u003d\u0027Device path for volume if volume support is enabled.\u0027),"},{"line_number":694,"context_line":"    cfg.StrOpt(\u0027rootController\u0027,"},{"line_number":695,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLRootController\u0027,"},{"line_number":696,"context_line":"               help\u003d\u0027Class that implements the datastore-specific root \u0027"},{"line_number":697,"context_line":"                    \u0027controller\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_66092431","line":694,"updated":"2015-08-05 04:23:07.000000000","message":"same for this and other (non-MySQL) databases.","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"f17e486da13ba1522171da80b479955e80d9abb9","unresolved":false,"context_lines":[{"line_number":691,"context_line":"                help\u003d\u0027Whether to provision a Cinder volume for datadir.\u0027),"},{"line_number":692,"context_line":"    cfg.StrOpt(\u0027device_path\u0027, default\u003d\u0027/dev/vdb\u0027,"},{"line_number":693,"context_line":"               help\u003d\u0027Device path for volume if volume support is enabled.\u0027),"},{"line_number":694,"context_line":"    cfg.StrOpt(\u0027rootController\u0027,"},{"line_number":695,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLRootController\u0027,"},{"line_number":696,"context_line":"               help\u003d\u0027Class that implements the datastore-specific root \u0027"},{"line_number":697,"context_line":"                    \u0027controller\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_dd9d3967","line":694,"in_reply_to":"1a4dcd0f_66092431","updated":"2015-08-05 18:49:28.000000000","message":"Done","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"3a5299785756e283ea47f72b8891eae124f6aab6","unresolved":false,"context_lines":[{"line_number":968,"context_line":"    cfg.StrOpt(\u0027rootController\u0027,"},{"line_number":969,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLRootController\u0027,"},{"line_number":970,"context_line":"               help\u003d\u0027Class that implements the datastore-specific root \u0027"},{"line_number":971,"context_line":"                    \u0027controller\u0027),"},{"line_number":972,"context_line":"]"},{"line_number":973,"context_line":""},{"line_number":974,"context_line":"# RPC version groups"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_841491f5","line":971,"updated":"2015-08-04 15:39:55.000000000","message":"Why do you need to put rootController to each datastore group with default value related to MySQL","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"5b072e08d16d565eaf87251c825c5f704f20601b","unresolved":false,"context_lines":[{"line_number":968,"context_line":"    cfg.StrOpt(\u0027rootController\u0027,"},{"line_number":969,"context_line":"               default\u003d\u0027trove.extensions.mysql.service.MySQLRootController\u0027,"},{"line_number":970,"context_line":"               help\u003d\u0027Class that implements the datastore-specific root \u0027"},{"line_number":971,"context_line":"                    \u0027controller\u0027),"},{"line_number":972,"context_line":"]"},{"line_number":973,"context_line":""},{"line_number":974,"context_line":"# RPC version groups"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_6a92904d","line":971,"in_reply_to":"1a4dcd0f_841491f5","updated":"2015-08-14 05:02:24.000000000","message":"That is the only datastore that has the implementation as of now so I had it set to MySql. I changed it to None for everything except Mysql and Vertica now","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"6f218b82449704838eb623bb2ab9c02cb2fc73ca","unresolved":false,"context_lines":[{"line_number":818,"context_line":"    cfg.ListOpt(\u0027ignore_dbs\u0027, default\u003d[\u0027postgres\u0027]),"},{"line_number":819,"context_line":"    cfg.StrOpt(\u0027root_controller\u0027,"},{"line_number":820,"context_line":"               default\u003dNone,"},{"line_number":821,"context_line":"               help\u003d\u0027Class that implements the datastore-specific root \u0027"},{"line_number":822,"context_line":"                    \u0027controller.\u0027),"},{"line_number":823,"context_line":"]"},{"line_number":824,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"da20952f_b53a12e6","line":821,"updated":"2015-09-02 22:33:12.000000000","message":"the message makes sense when it is part of [DEFAULT]. This message is itself datastore specific, so you can mention the name of the datastore here ;)","commit_id":"c1f7e6ae0c4cbf80576dc12c4a469ffa4807a627"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"1dea9dcdb898adb985242707e1566c48a8f2a2c3","unresolved":false,"context_lines":[{"line_number":818,"context_line":"    cfg.ListOpt(\u0027ignore_dbs\u0027, default\u003d[\u0027postgres\u0027]),"},{"line_number":819,"context_line":"    cfg.StrOpt(\u0027root_controller\u0027,"},{"line_number":820,"context_line":"               default\u003dNone,"},{"line_number":821,"context_line":"               help\u003d\u0027Class that implements the datastore-specific root \u0027"},{"line_number":822,"context_line":"                    \u0027controller.\u0027),"},{"line_number":823,"context_line":"]"},{"line_number":824,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"da20952f_98029e3d","line":821,"in_reply_to":"da20952f_b53a12e6","updated":"2015-09-03 01:40:24.000000000","message":"+1","commit_id":"c1f7e6ae0c4cbf80576dc12c4a469ffa4807a627"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"128e11d042075ceca5b966c6b5248e4ad9d28148","unresolved":false,"context_lines":[{"line_number":1119,"context_line":"                \u0027incremental backup, the runner will use the default full \u0027"},{"line_number":1120,"context_line":"                \u0027backup.\u0027,"},{"line_number":1121,"context_line":"                deprecated_name\u003d\u0027backup_incremental_strategy\u0027,"},{"line_number":1122,"context_line":"                deprecated_group\u003d\u0027DEFAULT\u0027),"},{"line_number":1123,"context_line":"]"},{"line_number":1124,"context_line":""},{"line_number":1125,"context_line":"# RPC version groups"}],"source_content_type":"text/x-python","patch_set":36,"id":"da20952f_f1a047f6","line":1122,"updated":"2015-09-04 16:25:41.000000000","message":"Looks like mariadb was merged and needs the root_controller.","commit_id":"1202f0063ede2cf4be8d0df3e60984c0cce09126"}],"trove/extensions/mysql/models.py":[{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"d51195c5070c32f641ecec2ce83ea382afbafaf2","unresolved":false,"context_lines":[{"line_number":193,"context_line":"    @classmethod"},{"line_number":194,"context_line":"    def create(cls, context, instance_id, user, root_password):"},{"line_number":195,"context_line":"        load_and_verify(context, instance_id)"},{"line_number":196,"context_line":"        root \u003d create_guest_client(context, instance_id)\\"},{"line_number":197,"context_line":"            .enable_root(root_password)"},{"line_number":198,"context_line":"        root_user \u003d guest_models.RootUser()"},{"line_number":199,"context_line":"        root_user.deserialize(root)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_00e0b8cb","line":196,"updated":"2015-07-23 15:33:12.000000000","message":"we shud refrain from using \\ for longer sentences.","commit_id":"2e93b22e77a80a054ad6e5d40bfc8867fb4236ed"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"33c60f3d62159602895b7fbbc28fa07b29404093","unresolved":false,"context_lines":[{"line_number":193,"context_line":"    @classmethod"},{"line_number":194,"context_line":"    def create(cls, context, instance_id, user, root_password):"},{"line_number":195,"context_line":"        load_and_verify(context, instance_id)"},{"line_number":196,"context_line":"        root \u003d create_guest_client(context, instance_id)\\"},{"line_number":197,"context_line":"            .enable_root(root_password)"},{"line_number":198,"context_line":"        root_user \u003d guest_models.RootUser()"},{"line_number":199,"context_line":"        root_user.deserialize(root)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_ae0c55ec","line":196,"in_reply_to":"3a50d1a3_00e0b8cb","updated":"2015-08-05 17:26:09.000000000","message":"Done","commit_id":"2e93b22e77a80a054ad6e5d40bfc8867fb4236ed"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"bd06f079699ca3d198344f7c4812fae9dd2ad4c0","unresolved":false,"context_lines":[{"line_number":194,"context_line":"    @classmethod"},{"line_number":195,"context_line":"    def create(cls, context, instance_id, user, root_password):"},{"line_number":196,"context_line":"        load_and_verify(context, instance_id)"},{"line_number":197,"context_line":"        root \u003d create_guest_client(context, instance_id)\\"},{"line_number":198,"context_line":"            .enable_root(root_password)"},{"line_number":199,"context_line":"        root_user \u003d guest_models.RootUser()"},{"line_number":200,"context_line":"        root_user.deserialize(root)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_0ecbd754","line":197,"updated":"2015-08-04 07:17:32.000000000","message":"do not use \u0027\\\u0027","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"3a5299785756e283ea47f72b8891eae124f6aab6","unresolved":false,"context_lines":[{"line_number":194,"context_line":"    @classmethod"},{"line_number":195,"context_line":"    def create(cls, context, instance_id, user, root_password):"},{"line_number":196,"context_line":"        load_and_verify(context, instance_id)"},{"line_number":197,"context_line":"        root \u003d create_guest_client(context, instance_id)\\"},{"line_number":198,"context_line":"            .enable_root(root_password)"},{"line_number":199,"context_line":"        root_user \u003d guest_models.RootUser()"},{"line_number":200,"context_line":"        root_user.deserialize(root)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_d9203b9e","line":197,"in_reply_to":"1a4dcd0f_0ecbd754","updated":"2015-08-04 15:39:55.000000000","message":"+1\nbackslash came to Python from bash, so, please use ()","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"6f218b82449704838eb623bb2ab9c02cb2fc73ca","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        return True"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    @classmethod"},{"line_number":195,"context_line":"    def create(cls, context, instance_id, user, root_password,"},{"line_number":196,"context_line":"               cluster_instances_list\u003dNone):"},{"line_number":197,"context_line":"        load_and_verify(context, instance_id)"},{"line_number":198,"context_line":"        root \u003d create_guest_client(context,"}],"source_content_type":"text/x-python","patch_set":29,"id":"da20952f_9891439d","line":195,"updated":"2015-09-02 22:33:12.000000000","message":"I don\u0027t understand the use of cluster_instances_list here.\n\nI didn\u0027t know MySQL supported clusters.\n\nIf you are looking for the future when clusters would be supported, why not just use instance_id? if it is a list, treat it as a cluster, else a singleton?","commit_id":"c1f7e6ae0c4cbf80576dc12c4a469ffa4807a627"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"55d476cdbb3070f2cf6312b0daa20b91b305ed5f","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        return True"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    @classmethod"},{"line_number":195,"context_line":"    def create(cls, context, instance_id, user, root_password,"},{"line_number":196,"context_line":"               cluster_instances_list\u003dNone):"},{"line_number":197,"context_line":"        load_and_verify(context, instance_id)"},{"line_number":198,"context_line":"        root \u003d create_guest_client(context,"}],"source_content_type":"text/x-python","patch_set":29,"id":"da20952f_8e0c9443","line":195,"in_reply_to":"da20952f_2e7788a0","updated":"2015-09-03 02:07:46.000000000","message":"That\u0027s fine, receive a parameter. But, why all the code that handles it when the support is not possible!\n\nI suggest you instead make this function just accept the parameter and maybe log a nice exception and throw if it is set. The implementation is not helpful.","commit_id":"c1f7e6ae0c4cbf80576dc12c4a469ffa4807a627"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"b9d4fc4077e7e2e7b12f220c4f970e24f4368be5","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        return True"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    @classmethod"},{"line_number":195,"context_line":"    def create(cls, context, instance_id, user, root_password,"},{"line_number":196,"context_line":"               cluster_instances_list\u003dNone):"},{"line_number":197,"context_line":"        load_and_verify(context, instance_id)"},{"line_number":198,"context_line":"        root \u003d create_guest_client(context,"}],"source_content_type":"text/x-python","patch_set":29,"id":"da20952f_78678ab7","line":195,"in_reply_to":"da20952f_432adc91","updated":"2015-09-03 00:45:00.000000000","message":"I\u0027m missing something, trying to run this I can\u0027t seem to make it work.","commit_id":"c1f7e6ae0c4cbf80576dc12c4a469ffa4807a627"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"1dea9dcdb898adb985242707e1566c48a8f2a2c3","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        return True"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    @classmethod"},{"line_number":195,"context_line":"    def create(cls, context, instance_id, user, root_password,"},{"line_number":196,"context_line":"               cluster_instances_list\u003dNone):"},{"line_number":197,"context_line":"        load_and_verify(context, instance_id)"},{"line_number":198,"context_line":"        root \u003d create_guest_client(context,"}],"source_content_type":"text/x-python","patch_set":29,"id":"da20952f_7b53043a","line":195,"in_reply_to":"da20952f_78678ab7","updated":"2015-09-03 01:40:24.000000000","message":"I understand the need to cluster_instances_list, but why for mysql? shouldn\u0027t this be for vertica? is this the way mysql clusters behave (enable root in one instance in the cluster, then its enabled in all instances in the cluster)?","commit_id":"c1f7e6ae0c4cbf80576dc12c4a469ffa4807a627"},{"author":{"_account_id":6160,"name":"Saurabh Surana","email":"saurabh.cloud@gmail.com","username":"saurabh-surana"},"change_message_id":"c23caf0b41c658580dd1f33ece1b253b399e3969","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        return True"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    @classmethod"},{"line_number":195,"context_line":"    def create(cls, context, instance_id, user, root_password,"},{"line_number":196,"context_line":"               cluster_instances_list\u003dNone):"},{"line_number":197,"context_line":"        load_and_verify(context, instance_id)"},{"line_number":198,"context_line":"        root \u003d create_guest_client(context,"}],"source_content_type":"text/x-python","patch_set":29,"id":"da20952f_ae4f18bd","line":195,"in_reply_to":"da20952f_7b53043a","updated":"2015-09-03 02:14:39.000000000","message":"Ok I think confusion here is due to the file name.\n\nThe root class here is not mysql specific, MySQLRootController in  \t\ntrove/extensions/mysql/service.py is mysql specific class.  Similarly VerticaRootController in \ttrove/extensions/vertica/service.py is vertica specific class.\n\nThe Root class here in this file is a common class which will get called for all the datastores that needs to implment root functionality.\nCurrently there are only two, mysql/percona and vertica","commit_id":"c1f7e6ae0c4cbf80576dc12c4a469ffa4807a627"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"225950f42602dcdd46756371d7a3f921deb8451c","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        return True"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    @classmethod"},{"line_number":195,"context_line":"    def create(cls, context, instance_id, user, root_password,"},{"line_number":196,"context_line":"               cluster_instances_list\u003dNone):"},{"line_number":197,"context_line":"        load_and_verify(context, instance_id)"},{"line_number":198,"context_line":"        root \u003d create_guest_client(context,"}],"source_content_type":"text/x-python","patch_set":29,"id":"da20952f_2e7788a0","line":195,"in_reply_to":"da20952f_7b53043a","updated":"2015-09-03 01:42:19.000000000","message":"this method is called from both mysql root controller as well vertica root controller so the parameter is needed. In the mysql root controller, an empty list is sent so cluster implementation is not affected.","commit_id":"c1f7e6ae0c4cbf80576dc12c4a469ffa4807a627"},{"author":{"_account_id":6160,"name":"Saurabh Surana","email":"saurabh.cloud@gmail.com","username":"saurabh-surana"},"change_message_id":"951d8a5df65e7fd115c4394785b0d8453622aab1","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        return True"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    @classmethod"},{"line_number":195,"context_line":"    def create(cls, context, instance_id, user, root_password,"},{"line_number":196,"context_line":"               cluster_instances_list\u003dNone):"},{"line_number":197,"context_line":"        load_and_verify(context, instance_id)"},{"line_number":198,"context_line":"        root \u003d create_guest_client(context,"}],"source_content_type":"text/x-python","patch_set":29,"id":"da20952f_432adc91","line":195,"in_reply_to":"da20952f_9891439d","updated":"2015-09-02 23:14:36.000000000","message":"Here we need to identify single instance where root-enable call needs to be directed and also need to identify list of instance s(which are part of clusters) to update the root-enabled history for them.\n\nSo since we need two distinct values, it may not be very ideal to put them in single variable. Its certainly possible, but doesn\u0027t look like very clean to me.\n\nThoughts?","commit_id":"c1f7e6ae0c4cbf80576dc12c4a469ffa4807a627"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"d76412f0af4a1ce81ae2dac7cf5557db192d6407","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        return True"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    @classmethod"},{"line_number":195,"context_line":"    def create(cls, context, instance_id, user, root_password,"},{"line_number":196,"context_line":"               cluster_instances_list\u003dNone):"},{"line_number":197,"context_line":"        load_and_verify(context, instance_id)"},{"line_number":198,"context_line":"        root \u003d create_guest_client(context,"}],"source_content_type":"text/x-python","patch_set":29,"id":"da20952f_c3ccacbd","line":195,"in_reply_to":"da20952f_9891439d","updated":"2015-09-02 22:55:49.000000000","message":"I think changing instance-id would be a much more drastic change because then all tests must be changed to check if its a list or not.","commit_id":"c1f7e6ae0c4cbf80576dc12c4a469ffa4807a627"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"66960ddafa4688d2627ccc529a63116a14caa986","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        return True"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    @classmethod"},{"line_number":195,"context_line":"    def create(cls, context, instance_id, user, root_password,"},{"line_number":196,"context_line":"               cluster_instances_list\u003dNone):"},{"line_number":197,"context_line":"        load_and_verify(context, instance_id)"},{"line_number":198,"context_line":"        root \u003d create_guest_client(context,"}],"source_content_type":"text/x-python","patch_set":29,"id":"da20952f_f88e3f26","line":195,"in_reply_to":"da20952f_9891439d","updated":"2015-09-02 22:38:37.000000000","message":"cluster_instances_list is needed because Peter brought up the issue where once root is enabled for a cluster root-show on the cluster instances was still showing False. \n\nSo the solution revealed that once Root is enabled, the table Root History is updated to have the id of the the cluster/instance that had root enabled on it. So I here I am adding root enabled to the Root History table for all instances in the cluster. If root is enabled on an instance the list is None.","commit_id":"c1f7e6ae0c4cbf80576dc12c4a469ffa4807a627"}],"trove/extensions/mysql/service.py":[{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"6f3ee260dc6290c1a25bb7cd6ce06e3ad1ff6506","unresolved":false,"context_lines":[{"line_number":36,"context_line":"from trove.instance.models import DBInstance"},{"line_number":37,"context_line":"from trove.openstack.common import log as logging"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"import abc"},{"line_number":40,"context_line":"import six"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_ebb9ac2f","line":39,"updated":"2015-06-30 06:25:39.000000000","message":"python standard library should be first import group","commit_id":"3e6dc7d4ecf73d3faf0b8562041cd8255973b572"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"6f3ee260dc6290c1a25bb7cd6ce06e3ad1ff6506","unresolved":false,"context_lines":[{"line_number":37,"context_line":"from trove.openstack.common import log as logging"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"import abc"},{"line_number":40,"context_line":"import six"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":43,"context_line":"import_class \u003d importutils.import_class"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_2b979491","line":40,"updated":"2015-06-30 06:25:39.000000000","message":"six is a 3rd party library, I guess needs to find a place in second group","commit_id":"3e6dc7d4ecf73d3faf0b8562041cd8255973b572"},{"author":{"_account_id":9746,"name":"Doug Shelley","email":"dougshelley66@gmail.com","username":"dougshelley"},"change_message_id":"3f2ce6a23af7424378e8e97d47d25e12e601e585","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        pass"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"class VerticaRootController(DatastoreRootController):"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def root_index(self, req, tenant_id, instance_id, is_cluster):"},{"line_number":63,"context_line":"        \"\"\"Returns True if root is enabled; False otherwise.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_622384be","line":60,"range":{"start_line":60,"start_character":6,"end_line":60,"end_character":27},"updated":"2015-06-30 02:10:44.000000000","message":"It seems rather unnatural for the \"VerticaRootController\" to be in a mysql extension file. Maybe we need to re-evaluate how this extension interface is defined?","commit_id":"3e6dc7d4ecf73d3faf0b8562041cd8255973b572"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"05b6eb611530d931da4b05fd5cfbd561a6616a96","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        pass"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"class VerticaRootController(DatastoreRootController):"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def root_index(self, req, tenant_id, instance_id, is_cluster):"},{"line_number":63,"context_line":"        \"\"\"Returns True if root is enabled; False otherwise.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_6cb0f68a","line":60,"in_reply_to":"ba3cc151_2b42343f","updated":"2015-07-01 18:25:13.000000000","message":"I agree as well, that is why we are filing a separate ticket to modify the structure of the extensions folder for other datastores.","commit_id":"3e6dc7d4ecf73d3faf0b8562041cd8255973b572"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"05b6eb611530d931da4b05fd5cfbd561a6616a96","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        pass"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"class VerticaRootController(DatastoreRootController):"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def root_index(self, req, tenant_id, instance_id, is_cluster):"},{"line_number":63,"context_line":"        \"\"\"Returns True if root is enabled; False otherwise.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_8cb45a82","line":60,"in_reply_to":"ba3cc151_622384be","updated":"2015-07-01 18:25:13.000000000","message":"I agree, that is why we are filing a separate ticket to modify the structure of the extensions folder for other datastores.","commit_id":"3e6dc7d4ecf73d3faf0b8562041cd8255973b572"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"6f3ee260dc6290c1a25bb7cd6ce06e3ad1ff6506","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        pass"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"class VerticaRootController(DatastoreRootController):"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def root_index(self, req, tenant_id, instance_id, is_cluster):"},{"line_number":63,"context_line":"        \"\"\"Returns True if root is enabled; False otherwise.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_2b42343f","line":60,"in_reply_to":"ba3cc151_622384be","updated":"2015-06-30 06:25:39.000000000","message":"I agree, this should be in a different module.","commit_id":"3e6dc7d4ecf73d3faf0b8562041cd8255973b572"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"6f3ee260dc6290c1a25bb7cd6ce06e3ad1ff6506","unresolved":false,"context_lines":[{"line_number":60,"context_line":"class VerticaRootController(DatastoreRootController):"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def root_index(self, req, tenant_id, instance_id, is_cluster):"},{"line_number":63,"context_line":"        \"\"\"Returns True if root is enabled; False otherwise.\"\"\""},{"line_number":64,"context_line":"        if is_cluster:"},{"line_number":65,"context_line":"            return self.cluster_root_index(req, tenant_id, instance_id)"},{"line_number":66,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_abd08454","line":63,"updated":"2015-06-30 06:25:39.000000000","message":"Can we add some logging to new methods.","commit_id":"3e6dc7d4ecf73d3faf0b8562041cd8255973b572"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"d51195c5070c32f641ecec2ce83ea382afbafaf2","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        return root_controller.root_create(req, body, tenant_id, instance_id,"},{"line_number":98,"context_line":"                                           is_cluster)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def _get_datastore(self, tenant_id, instance_or_cluster_id):"},{"line_number":101,"context_line":"        \"\"\"Retrieving datastore manager and if its a cluster/instance id\"\"\""},{"line_number":102,"context_line":"        args \u003d {\u0027id\u0027: instance_or_cluster_id, \u0027tenant_id\u0027: tenant_id}"},{"line_number":103,"context_line":"        is_cluster \u003d False"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_a0522465","line":100,"updated":"2015-07-23 15:33:12.000000000","message":"This method is a candidate to be in utils, it looks like this method would get more usage in more functionalities to come based on cluster/instances.","commit_id":"2e93b22e77a80a054ad6e5d40bfc8867fb4236ed"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"d51195c5070c32f641ecec2ce83ea382afbafaf2","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            root_controller \u003d import_class(clazz)"},{"line_number":120,"context_line":"            return root_controller()"},{"line_number":121,"context_line":"        except NoSuchOptError:"},{"line_number":122,"context_line":"            return None"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"class UserController(wsgi.Controller):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_a05c644b","line":122,"updated":"2015-07-23 15:33:12.000000000","message":"so if you returning a None, then what would None.methods needed in called methods for eg. index calls root_controller.root_create, which would become None.root_create","commit_id":"2e93b22e77a80a054ad6e5d40bfc8867fb4236ed"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"bd06f079699ca3d198344f7c4812fae9dd2ad4c0","unresolved":false,"context_lines":[{"line_number":39,"context_line":"from trove.extensions.mysql import views"},{"line_number":40,"context_line":"from trove.guestagent.db import models as guest_models"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"from trove.instance.models import DBInstance"},{"line_number":43,"context_line":"from trove.openstack.common import log as logging"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_8ec7e711","line":42,"updated":"2015-08-04 07:17:32.000000000","message":"Why do we have these imports as a separate group","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"bd06f079699ca3d198344f7c4812fae9dd2ad4c0","unresolved":false,"context_lines":[{"line_number":40,"context_line":"from trove.guestagent.db import models as guest_models"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"from trove.instance.models import DBInstance"},{"line_number":43,"context_line":"from trove.openstack.common import log as logging"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_aecc2336","line":43,"updated":"2015-08-04 07:17:32.000000000","message":"we are now using oslo_log","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"1244fad0f9dcb5f46001c95ccc1e1b37d92e9975","unresolved":false,"context_lines":[{"line_number":40,"context_line":"from trove.guestagent.db import models as guest_models"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"from trove.instance.models import DBInstance"},{"line_number":43,"context_line":"from trove.openstack.common import log as logging"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_111f3860","line":43,"in_reply_to":"1a4dcd0f_aecc2336","updated":"2015-08-05 04:23:07.000000000","message":"not yet?","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"3a5299785756e283ea47f72b8891eae124f6aab6","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"from trove.instance.models import DBInstance"},{"line_number":43,"context_line":"from trove.openstack.common import log as logging"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":47,"context_line":"import_class \u003d importutils.import_class"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_594c2b70","line":44,"updated":"2015-08-04 15:39:55.000000000","message":"Have the same concerns as Sushil, please re-organize imports in correct order.","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"bd06f079699ca3d198344f7c4812fae9dd2ad4c0","unresolved":false,"context_lines":[{"line_number":101,"context_line":"                                           is_cluster)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def _get_datastore(self, tenant_id, instance_or_cluster_id):"},{"line_number":104,"context_line":"        \"\"\"Retrieving datastore manager and if its a cluster/instance id\"\"\""},{"line_number":105,"context_line":"        args \u003d {\u0027id\u0027: instance_or_cluster_id, \u0027tenant_id\u0027: tenant_id}"},{"line_number":106,"context_line":"        is_cluster \u003d False"},{"line_number":107,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_6eedbb8a","line":104,"updated":"2015-08-04 07:17:32.000000000","message":"\"its\" implies to whom/what","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"f17e486da13ba1522171da80b479955e80d9abb9","unresolved":false,"context_lines":[{"line_number":101,"context_line":"                                           is_cluster)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def _get_datastore(self, tenant_id, instance_or_cluster_id):"},{"line_number":104,"context_line":"        \"\"\"Retrieving datastore manager and if its a cluster/instance id\"\"\""},{"line_number":105,"context_line":"        args \u003d {\u0027id\u0027: instance_or_cluster_id, \u0027tenant_id\u0027: tenant_id}"},{"line_number":106,"context_line":"        is_cluster \u003d False"},{"line_number":107,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_bd0b8d8d","line":104,"in_reply_to":"1a4dcd0f_6eedbb8a","updated":"2015-08-05 18:49:28.000000000","message":"Done","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"c01fcb417f394f1805018a047f32b76b8b5b2778","unresolved":false,"context_lines":[{"line_number":101,"context_line":"                                           is_cluster)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def _get_datastore(self, tenant_id, instance_or_cluster_id):"},{"line_number":104,"context_line":"        \"\"\"Retrieving datastore manager and if its a cluster/instance id\"\"\""},{"line_number":105,"context_line":"        args \u003d {\u0027id\u0027: instance_or_cluster_id, \u0027tenant_id\u0027: tenant_id}"},{"line_number":106,"context_line":"        is_cluster \u003d False"},{"line_number":107,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_7b6eff97","line":104,"in_reply_to":"1a4dcd0f_bd0b8d8d","updated":"2015-08-07 17:55:47.000000000","message":"my question here was about what does it\u0027s refer to.","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"bd06f079699ca3d198344f7c4812fae9dd2ad4c0","unresolved":false,"context_lines":[{"line_number":122,"context_line":"            root_controller \u003d import_class(clazz)"},{"line_number":123,"context_line":"            return root_controller()"},{"line_number":124,"context_line":"        except NoSuchOptError:"},{"line_number":125,"context_line":"            return None"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"class UserController(wsgi.Controller):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_f948b35d","line":125,"updated":"2015-08-04 07:17:32.000000000","message":"I disagree with returning None on exception, it should rather raise some appropriate exception here as otherwise there would obviously be raised unhandled exceptions at later stage \n\nfor eg. None.root_create(..., ..., ..., ..., ...)","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"c01fcb417f394f1805018a047f32b76b8b5b2778","unresolved":false,"context_lines":[{"line_number":122,"context_line":"            root_controller \u003d import_class(clazz)"},{"line_number":123,"context_line":"            return root_controller()"},{"line_number":124,"context_line":"        except NoSuchOptError:"},{"line_number":125,"context_line":"            return None"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"class UserController(wsgi.Controller):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_7bca7f70","line":125,"in_reply_to":"1a4dcd0f_098243c8","updated":"2015-08-07 17:55:47.000000000","message":"but then why do you want to move ahead in case when you have None, simply let it raise an exception here itself, anyways you are doing the same thing manually, i tend to disagree with your handling of None.\n\nAlso, since you have None as value coming from config which should be treated differently, something like, \"this datastore does not manages root\"","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"48cba46deb0ca72d1382ef34b4624f99835a8fa7","unresolved":false,"context_lines":[{"line_number":122,"context_line":"            root_controller \u003d import_class(clazz)"},{"line_number":123,"context_line":"            return root_controller()"},{"line_number":124,"context_line":"        except NoSuchOptError:"},{"line_number":125,"context_line":"            return None"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"class UserController(wsgi.Controller):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_098243c8","line":125,"in_reply_to":"1a4dcd0f_f948b35d","updated":"2015-08-06 22:45:11.000000000","message":"So I am returning None here because most of the datastores have the root_controller set to None now. So in line 100 of the create method of datastorerootcontroller, I am handling the case in which the root_controller \u003d None.","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"baae74932a694a63cfbf0d768bbb3c6c8ac3113d","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            raise NoSuchOptError"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def _get_datastore(self, tenant_id, instance_or_cluster_id):"},{"line_number":104,"context_line":"        \"\"\"Retrieving datastore manager and if it\u0027s a cluster/instance id\"\"\""},{"line_number":105,"context_line":"        args \u003d {\u0027id\u0027: instance_or_cluster_id, \u0027tenant_id\u0027: tenant_id}"},{"line_number":106,"context_line":"        is_cluster \u003d False"},{"line_number":107,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_3b687787","line":104,"updated":"2015-08-07 17:56:25.000000000","message":"my question here was about what does it\u0027s refer to.","commit_id":"cede493891454357f12588f4fdeb7202bca5e9f3"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"9325b53f9c47896971da7d492f58f7acfe0ff61e","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            raise NoSuchOptError"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def _get_datastore(self, tenant_id, instance_or_cluster_id):"},{"line_number":104,"context_line":"        \"\"\"Retrieving datastore manager and if it\u0027s a cluster/instance id\"\"\""},{"line_number":105,"context_line":"        args \u003d {\u0027id\u0027: instance_or_cluster_id, \u0027tenant_id\u0027: tenant_id}"},{"line_number":106,"context_line":"        is_cluster \u003d False"},{"line_number":107,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_187814f8","line":104,"in_reply_to":"1a4dcd0f_3b687787","updated":"2015-08-07 22:58:37.000000000","message":"returns if the instance_or_cluster_id parameter is a cluster ID or not","commit_id":"cede493891454357f12588f4fdeb7202bca5e9f3"}],"trove/extensions/vertica/service.py":[{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"bd06f079699ca3d198344f7c4812fae9dd2ad4c0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2011 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_596e87ca","line":1,"updated":"2015-08-04 07:17:32.000000000","message":"Should not this be the HP related line.\n\nand anyways 2011 should be updated.","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"1244fad0f9dcb5f46001c95ccc1e1b37d92e9975","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2011 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_d12790b4","line":1,"in_reply_to":"1a4dcd0f_596e87ca","updated":"2015-08-05 04:23:07.000000000","message":":)","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"f17e486da13ba1522171da80b479955e80d9abb9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2011 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_5d8129c2","line":1,"in_reply_to":"1a4dcd0f_d12790b4","updated":"2015-08-05 18:49:28.000000000","message":"Done ... changed it to HP :)","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"3a5299785756e283ea47f72b8891eae124f6aab6","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from trove.extensions.mysql.service import DatastoreRootController"},{"line_number":20,"context_line":"from trove.extensions.mysql import views"},{"line_number":21,"context_line":"from trove.instance.models import DBInstance"},{"line_number":22,"context_line":"from trove.openstack.common import log as logging"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_99de336c","line":22,"updated":"2015-08-04 15:39:55.000000000","message":"logging was updated","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"c01fcb417f394f1805018a047f32b76b8b5b2778","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from trove.extensions.mysql.service import DatastoreRootController"},{"line_number":20,"context_line":"from trove.extensions.mysql import views"},{"line_number":21,"context_line":"from trove.instance.models import DBInstance"},{"line_number":22,"context_line":"from trove.openstack.common import log as logging"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_5ba2239c","line":22,"in_reply_to":"1a4dcd0f_99de336c","updated":"2015-08-07 17:55:47.000000000","message":"+1, not yet resolved in latest patchset","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"3a5299785756e283ea47f72b8891eae124f6aab6","unresolved":false,"context_lines":[{"line_number":34,"context_line":"            return self.instance_root_index(req, tenant_id, instance_id)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def instance_root_index(self, req, tenant_id, instance_id):"},{"line_number":37,"context_line":"        LOG.info(_(\"Getting root enabled for instance \u0027%s\u0027\") % instance_id)"},{"line_number":38,"context_line":"        LOG.info(_(\"req : \u0027%s\u0027\\n\\n\") % req)"},{"line_number":39,"context_line":"        context \u003d req.environ[wsgi.CONTEXT_KEY]"},{"line_number":40,"context_line":"        is_root_enabled \u003d models.Root.load(context, instance_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_99c5d38f","line":37,"updated":"2015-08-04 15:39:55.000000000","message":"for info please use _LI(message)","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"f17e486da13ba1522171da80b479955e80d9abb9","unresolved":false,"context_lines":[{"line_number":34,"context_line":"            return self.instance_root_index(req, tenant_id, instance_id)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def instance_root_index(self, req, tenant_id, instance_id):"},{"line_number":37,"context_line":"        LOG.info(_(\"Getting root enabled for instance \u0027%s\u0027\") % instance_id)"},{"line_number":38,"context_line":"        LOG.info(_(\"req : \u0027%s\u0027\\n\\n\") % req)"},{"line_number":39,"context_line":"        context \u003d req.environ[wsgi.CONTEXT_KEY]"},{"line_number":40,"context_line":"        is_root_enabled \u003d models.Root.load(context, instance_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_3d545d51","line":37,"in_reply_to":"1a4dcd0f_99c5d38f","updated":"2015-08-05 18:49:28.000000000","message":"Done","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"3a5299785756e283ea47f72b8891eae124f6aab6","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        if is_cluster:"},{"line_number":50,"context_line":"            return self.cluster_root_create(req, body, tenant_id, instance_id)"},{"line_number":51,"context_line":"        else:"},{"line_number":52,"context_line":"            return self.instance_root_create(req, body, instance_id)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def instance_root_create(self, req, body, instance_id):"},{"line_number":55,"context_line":"        LOG.info(_(\"Enabling root for instance \u0027%s\u0027\") % instance_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_7951e7d7","line":52,"updated":"2015-08-04 15:39:55.000000000","message":"return self.cluster_root_create(req, body, tenant_id, instance_id) if is_cluster else self.instance_root_create(req, body, instance_id","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"baae74932a694a63cfbf0d768bbb3c6c8ac3113d","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from trove.extensions.mysql.service import DatastoreRootController"},{"line_number":20,"context_line":"from trove.extensions.mysql import views"},{"line_number":21,"context_line":"from trove.instance.models import DBInstance"},{"line_number":22,"context_line":"from trove.openstack.common import log as logging"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_5bc9c359","line":22,"updated":"2015-08-07 17:56:25.000000000","message":"Need to use oslo_log","commit_id":"cede493891454357f12588f4fdeb7202bca5e9f3"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"9325b53f9c47896971da7d492f58f7acfe0ff61e","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from trove.extensions.mysql.service import DatastoreRootController"},{"line_number":20,"context_line":"from trove.extensions.mysql import views"},{"line_number":21,"context_line":"from trove.instance.models import DBInstance"},{"line_number":22,"context_line":"from trove.openstack.common import log as logging"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_d8586c8d","line":22,"in_reply_to":"1a4dcd0f_5bc9c359","updated":"2015-08-07 22:58:37.000000000","message":"Done","commit_id":"cede493891454357f12588f4fdeb7202bca5e9f3"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"baae74932a694a63cfbf0d768bbb3c6c8ac3113d","unresolved":false,"context_lines":[{"line_number":34,"context_line":"            return self.instance_root_index(req, tenant_id, instance_id)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def instance_root_index(self, req, tenant_id, instance_id):"},{"line_number":37,"context_line":"        LOG.info(_LI(\"Getting root enabled for instance \u0027%s\u0027\") % instance_id)"},{"line_number":38,"context_line":"        LOG.info(_LI(\"req : \u0027%s\u0027\\n\\n\") % req)"},{"line_number":39,"context_line":"        context \u003d req.environ[wsgi.CONTEXT_KEY]"},{"line_number":40,"context_line":"        is_root_enabled \u003d models.Root.load(context, instance_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_3b45d7b2","line":37,"updated":"2015-08-07 17:56:25.000000000","message":"needs to finish sentence with a \u0027.\u0027, please correct for other messages too.","commit_id":"cede493891454357f12588f4fdeb7202bca5e9f3"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"9325b53f9c47896971da7d492f58f7acfe0ff61e","unresolved":false,"context_lines":[{"line_number":34,"context_line":"            return self.instance_root_index(req, tenant_id, instance_id)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def instance_root_index(self, req, tenant_id, instance_id):"},{"line_number":37,"context_line":"        LOG.info(_LI(\"Getting root enabled for instance \u0027%s\u0027\") % instance_id)"},{"line_number":38,"context_line":"        LOG.info(_LI(\"req : \u0027%s\u0027\\n\\n\") % req)"},{"line_number":39,"context_line":"        context \u003d req.environ[wsgi.CONTEXT_KEY]"},{"line_number":40,"context_line":"        is_root_enabled \u003d models.Root.load(context, instance_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_3864f047","line":37,"in_reply_to":"1a4dcd0f_3b45d7b2","updated":"2015-08-07 22:58:37.000000000","message":"Done","commit_id":"cede493891454357f12588f4fdeb7202bca5e9f3"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"e649102d80fd63801d690e964380f150e04a06c8","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from trove.common.i18n import _LI"},{"line_number":19,"context_line":"from trove.common import wsgi"},{"line_number":20,"context_line":"from trove.extensions.mysql import models"},{"line_number":21,"context_line":"from trove.extensions.mysql.service import DatastoreRootController"},{"line_number":22,"context_line":"from trove.extensions.mysql import views"},{"line_number":23,"context_line":"from trove.instance.models import DBInstance"}],"source_content_type":"text/x-python","patch_set":30,"id":"da20952f_6c1588e3","line":20,"updated":"2015-09-03 03:03:16.000000000","message":"these imports are (I believe) the ones that are causing issues.","commit_id":"8dc298427483b7c1e50183e6132227b842586f4a"}],"trove/guestagent/api.py":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"1244fad0f9dcb5f46001c95ccc1e1b37d92e9975","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                                                 \u0027instance_id\u0027: self.id})"},{"line_number":177,"context_line":"        self._cast(\"delete_database\", self.version_cap, database\u003ddatabase)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def enable_root(self, root_password\u003dNone):"},{"line_number":180,"context_line":"        \"\"\"Make a synchronous call to enable the root user for"},{"line_number":181,"context_line":"           access from anywhere"},{"line_number":182,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_b12444af","line":179,"updated":"2015-08-05 04:23:07.000000000","message":"so, this change will break upgrade.","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"c01fcb417f394f1805018a047f32b76b8b5b2778","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                                                 \u0027instance_id\u0027: self.id})"},{"line_number":177,"context_line":"        self._cast(\"delete_database\", self.version_cap, database\u003ddatabase)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def enable_root(self, root_password\u003dNone):"},{"line_number":180,"context_line":"        \"\"\"Make a synchronous call to enable the root user for"},{"line_number":181,"context_line":"           access from anywhere"},{"line_number":182,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_3b1cf7c0","line":179,"in_reply_to":"1a4dcd0f_b12444af","updated":"2015-08-07 17:55:47.000000000","message":"yup i agree, this was more evident with the unit-tests failing last time for a faked method, and the similar thing would crop up at upgrade time, where one may have different methods on guest and api/taskmanager.","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"1244fad0f9dcb5f46001c95ccc1e1b37d92e9975","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        \"\"\""},{"line_number":183,"context_line":"        LOG.debug(\"Enable root user for instance %s.\", self.id)"},{"line_number":184,"context_line":"        return self._call(\"enable_root\", AGENT_HIGH_TIMEOUT, self.version_cap,"},{"line_number":185,"context_line":"                          root_password\u003droot_password)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def disable_root(self):"},{"line_number":188,"context_line":"        \"\"\"Make a synchronous call to disable the root user for"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_513ce0c7","line":185,"updated":"2015-08-05 04:23:07.000000000","message":"better have a new function without the password and one with ...","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"c01fcb417f394f1805018a047f32b76b8b5b2778","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        \"\"\""},{"line_number":183,"context_line":"        LOG.debug(\"Enable root user for instance %s.\", self.id)"},{"line_number":184,"context_line":"        return self._call(\"enable_root\", AGENT_HIGH_TIMEOUT, self.version_cap,"},{"line_number":185,"context_line":"                          root_password\u003droot_password)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def disable_root(self):"},{"line_number":188,"context_line":"        \"\"\"Make a synchronous call to disable the root user for"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_9b818bc6","line":185,"in_reply_to":"1a4dcd0f_513ce0c7","updated":"2015-08-07 17:55:47.000000000","message":"Need to think on these lines, to help upgrade.","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"f9e35649028aae6e2f0ad67c7bcc3d0a950adf87","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                                                 \u0027instance_id\u0027: self.id})"},{"line_number":177,"context_line":"        self._cast(\"delete_database\", self.version_cap, database\u003ddatabase)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def enable_root(self, root_password\u003dNone):"},{"line_number":180,"context_line":"        \"\"\"Make a synchronous call to enable the root user for"},{"line_number":181,"context_line":"           access from anywhere"},{"line_number":182,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"1a4dcd0f_a43da42c","line":179,"updated":"2015-08-12 06:41:46.000000000","message":"This changes the signature of the method and has upgrade implications. In other changes of a similar kind, we\u0027ve agreed to have a new function (enable_root_with_password) and over time deprecate this function.","commit_id":"5e92b5846475a857a03f6571cc80ec0ede7b9112"},{"author":{"_account_id":6160,"name":"Saurabh Surana","email":"saurabh.cloud@gmail.com","username":"saurabh-surana"},"change_message_id":"e261ca6da86651918f1924720a1d25c95b745794","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                                                 \u0027instance_id\u0027: self.id})"},{"line_number":177,"context_line":"        self._cast(\"delete_database\", self.version_cap, database\u003ddatabase)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def enable_root(self, root_password\u003dNone):"},{"line_number":180,"context_line":"        \"\"\"Make a synchronous call to enable the root user for"},{"line_number":181,"context_line":"           access from anywhere"},{"line_number":182,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"1a4dcd0f_4aa359b2","line":179,"in_reply_to":"1a4dcd0f_a43da42c","updated":"2015-08-13 00:04:53.000000000","message":"Just so that we understand this better, is there a reason that the new method be called enable_root_with_password?\n\nI mean can we not have two enable_root methods here, one with root_password and one without it?","commit_id":"5e92b5846475a857a03f6571cc80ec0ede7b9112"}],"trove/guestagent/datastore/experimental/cassandra/manager.py":[{"author":{"_account_id":6160,"name":"Saurabh Surana","email":"saurabh.cloud@gmail.com","username":"saurabh-surana"},"change_message_id":"6340953713a4c0180c0ddabd1d81acc67d759505","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        raise exception.DatastoreOperationNotSupported("},{"line_number":161,"context_line":"            operation\u003d\u0027enable_root\u0027, datastore\u003dMANAGER)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def is_root_enabled(self, context, root_password\u003dNone):"},{"line_number":164,"context_line":"        raise exception.DatastoreOperationNotSupported("},{"line_number":165,"context_line":"            operation\u003d\u0027is_root_enabled\u0027, datastore\u003dMANAGER)"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_30bfdb61","line":163,"updated":"2015-07-27 17:28:35.000000000","message":"I think wrong method is modified here. lets change enable_root.","commit_id":"2e93b22e77a80a054ad6e5d40bfc8867fb4236ed"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"33c60f3d62159602895b7fbbc28fa07b29404093","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        raise exception.DatastoreOperationNotSupported("},{"line_number":161,"context_line":"            operation\u003d\u0027enable_root\u0027, datastore\u003dMANAGER)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def is_root_enabled(self, context, root_password\u003dNone):"},{"line_number":164,"context_line":"        raise exception.DatastoreOperationNotSupported("},{"line_number":165,"context_line":"            operation\u003d\u0027is_root_enabled\u0027, datastore\u003dMANAGER)"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_ee4b3d85","line":163,"in_reply_to":"3a50d1a3_30bfdb61","updated":"2015-08-05 17:26:09.000000000","message":"Done","commit_id":"2e93b22e77a80a054ad6e5d40bfc8867fb4236ed"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"b7a735f18b7b23120a489b7a5499716d9a5de4bd","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        raise exception.DatastoreOperationNotSupported("},{"line_number":161,"context_line":"            operation\u003d\u0027enable_root\u0027, datastore\u003dMANAGER)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def enable_root_password(self, context, root_password\u003dNone):"},{"line_number":164,"context_line":"        raise exception.DatastoreOperationNotSupported("},{"line_number":165,"context_line":"            operation\u003d\u0027enable_root\u0027, datastore\u003dMANAGER)"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"fa1b9901_2d7cfeb3","line":163,"updated":"2015-08-20 19:47:56.000000000","message":"This should be enable_root_with_password","commit_id":"3103ef8bb1998973f31208f306e018fce3481315"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"1a69ce4a34541add4be003583d94a2bb36d7fd08","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        raise exception.DatastoreOperationNotSupported("},{"line_number":161,"context_line":"            operation\u003d\u0027enable_root\u0027, datastore\u003dMANAGER)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def enable_root_password(self, context, root_password\u003dNone):"},{"line_number":164,"context_line":"        raise exception.DatastoreOperationNotSupported("},{"line_number":165,"context_line":"            operation\u003d\u0027enable_root\u0027, datastore\u003dMANAGER)"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"fa1b9901_468a4565","line":163,"updated":"2015-08-21 13:46:04.000000000","message":"Should be enable_root_with_password","commit_id":"fee7599579c1cb2680120585dbde60cf09d56fc6"}],"trove/guestagent/datastore/experimental/couchbase/manager.py":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"074b2d7f726eaa909419bfca74cf6327b07281b8","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        raise exception.DatastoreOperationNotSupported("},{"line_number":166,"context_line":"            operation\u003d\u0027list_users\u0027, datastore\u003dMANAGER)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    def enable_root(self, context):"},{"line_number":169,"context_line":"        return self.app.enable_root()"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    def enable_root_with_password(self, context, root_password\u003dNone):"}],"source_content_type":"text/x-python","patch_set":36,"id":"da20952f_5196d34c","line":168,"updated":"2015-09-04 16:18:36.000000000","message":"no logging ;)","commit_id":"1202f0063ede2cf4be8d0df3e60984c0cce09126"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"128e11d042075ceca5b966c6b5248e4ad9d28148","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        raise exception.DatastoreOperationNotSupported("},{"line_number":166,"context_line":"            operation\u003d\u0027list_users\u0027, datastore\u003dMANAGER)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    def enable_root(self, context):"},{"line_number":169,"context_line":"        return self.app.enable_root()"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    def enable_root_with_password(self, context, root_password\u003dNone):"}],"source_content_type":"text/x-python","patch_set":36,"id":"da20952f_84b0a7fe","line":168,"in_reply_to":"da20952f_5196d34c","updated":"2015-09-04 16:25:41.000000000","message":"Done","commit_id":"1202f0063ede2cf4be8d0df3e60984c0cce09126"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"128e11d042075ceca5b966c6b5248e4ad9d28148","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        raise exception.DatastoreOperationNotSupported("},{"line_number":174,"context_line":"            operation\u003d\u0027enable_root_with_password\u0027, datastore\u003dMANAGER)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def is_root_enabled(self, context):"},{"line_number":177,"context_line":"        return os.path.exists(system.pwd_file)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def _perform_restore(self, backup_info, context, restore_location):"}],"source_content_type":"text/x-python","patch_set":36,"id":"da20952f_04c5775a","line":176,"updated":"2015-09-04 16:25:41.000000000","message":"logging done.","commit_id":"1202f0063ede2cf4be8d0df3e60984c0cce09126"}],"trove/guestagent/datastore/experimental/vertica/manager.py":[{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"6f3ee260dc6290c1a25bb7cd6ce06e3ad1ff6506","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        raise exception.DatastoreOperationNotSupported("},{"line_number":187,"context_line":"            operation\u003d\u0027list_users\u0027, datastore\u003dMANAGER)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def enable_root(self, context, root_password\u003dNone):"},{"line_number":190,"context_line":"        LOG.debug(\"Enabling root for password %s.\" % root_password)"},{"line_number":191,"context_line":"        return self.app.enable_root(root_password)"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_2bfa34be","line":189,"updated":"2015-06-30 06:25:39.000000000","message":"A similar change would be needed for all datastores in the method signature","commit_id":"3e6dc7d4ecf73d3faf0b8562041cd8255973b572"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"c60fad184f28e30adeeb67edfe6d7dd2a1ded11c","unresolved":false,"context_lines":[{"line_number":187,"context_line":"            operation\u003d\u0027list_users\u0027, datastore\u003dMANAGER)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def enable_root(self, context, root_password\u003dNone):"},{"line_number":190,"context_line":"        LOG.debug(\"Enabling root for password %s.\" % root_password)"},{"line_number":191,"context_line":"        return self.app.enable_root(root_password)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def is_root_enabled(self, context):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a41bdd9_374f7a6c","line":190,"updated":"2015-07-15 11:24:19.000000000","message":"we shouldnt be logging the password","commit_id":"ef16f9ab1a514aac47e9b40432c9543aaaf8fbc2"},{"author":{"_account_id":6160,"name":"Saurabh Surana","email":"saurabh.cloud@gmail.com","username":"saurabh-surana"},"change_message_id":"6340953713a4c0180c0ddabd1d81acc67d759505","unresolved":false,"context_lines":[{"line_number":189,"context_line":"            operation\u003d\u0027list_users\u0027, datastore\u003dMANAGER)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def enable_root(self, context, root_password\u003dNone):"},{"line_number":192,"context_line":"        LOG.debug(\"Enabling root for password %s.\" % root_password)"},{"line_number":193,"context_line":"        return self.app.enable_root(root_password)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    def is_root_enabled(self, context):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_b0abeb1d","line":192,"updated":"2015-07-27 17:28:35.000000000","message":"I think there was earlier comment around this line. Lets not log password","commit_id":"2e93b22e77a80a054ad6e5d40bfc8867fb4236ed"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"33c60f3d62159602895b7fbbc28fa07b29404093","unresolved":false,"context_lines":[{"line_number":189,"context_line":"            operation\u003d\u0027list_users\u0027, datastore\u003dMANAGER)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def enable_root(self, context, root_password\u003dNone):"},{"line_number":192,"context_line":"        LOG.debug(\"Enabling root for password %s.\" % root_password)"},{"line_number":193,"context_line":"        return self.app.enable_root(root_password)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    def is_root_enabled(self, context):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_2e2da5a7","line":192,"in_reply_to":"3a50d1a3_b0abeb1d","updated":"2015-08-05 17:26:09.000000000","message":"Done","commit_id":"2e93b22e77a80a054ad6e5d40bfc8867fb4236ed"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"baae74932a694a63cfbf0d768bbb3c6c8ac3113d","unresolved":false,"context_lines":[{"line_number":189,"context_line":"            operation\u003d\u0027list_users\u0027, datastore\u003dMANAGER)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def enable_root(self, context, root_password\u003dNone):"},{"line_number":192,"context_line":"        LOG.debug(\"Enabling root with password.\")"},{"line_number":193,"context_line":"        return self.app.enable_root(root_password)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    def is_root_enabled(self, context):"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_db615313","line":192,"updated":"2015-08-07 17:56:25.000000000","message":"I think \"Enabling root\" was better option, because this message may hold wrong if root_password was None.","commit_id":"cede493891454357f12588f4fdeb7202bca5e9f3"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"9325b53f9c47896971da7d492f58f7acfe0ff61e","unresolved":false,"context_lines":[{"line_number":189,"context_line":"            operation\u003d\u0027list_users\u0027, datastore\u003dMANAGER)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def enable_root(self, context, root_password\u003dNone):"},{"line_number":192,"context_line":"        LOG.debug(\"Enabling root with password.\")"},{"line_number":193,"context_line":"        return self.app.enable_root(root_password)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    def is_root_enabled(self, context):"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_d8cf0c28","line":192,"in_reply_to":"1a4dcd0f_db615313","updated":"2015-08-07 22:58:37.000000000","message":"Done","commit_id":"cede493891454357f12588f4fdeb7202bca5e9f3"}],"trove/guestagent/datastore/experimental/vertica/service.py":[{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"6f3ee260dc6290c1a25bb7cd6ce06e3ad1ff6506","unresolved":false,"context_lines":[{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    def enable_root(self, root_password\u003dNone):"},{"line_number":280,"context_line":"        \"\"\"Resets the root password.\"\"\""},{"line_number":281,"context_line":"        LOG.info(_(\"Enabling root\"))"},{"line_number":282,"context_line":"        user \u003d models.RootUser()"},{"line_number":283,"context_line":"        user.name \u003d \"root\""},{"line_number":284,"context_line":"        user.host \u003d \"%\""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_ab888423","line":281,"updated":"2015-06-30 06:25:39.000000000","message":"Finish with a punctuation \u0027.\u0027","commit_id":"3e6dc7d4ecf73d3faf0b8562041cd8255973b572"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"6f3ee260dc6290c1a25bb7cd6ce06e3ad1ff6506","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        LOG.info(_(\"Enabling root\"))"},{"line_number":282,"context_line":"        user \u003d models.RootUser()"},{"line_number":283,"context_line":"        user.name \u003d \"root\""},{"line_number":284,"context_line":"        user.host \u003d \"%\""},{"line_number":285,"context_line":"        user.password \u003d root_password or utils.generate_random_password()"},{"line_number":286,"context_line":"        if not self.is_root_enabled():"},{"line_number":287,"context_line":"            self._create_user(\u0027root\u0027, user.password, \u0027dbadmin\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_ab8f2422","line":284,"updated":"2015-06-30 06:25:39.000000000","message":"Does setting up user.host matter for Vertica.\n\nCan it support host restriction.","commit_id":"3e6dc7d4ecf73d3faf0b8562041cd8255973b572"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"6f3ee260dc6290c1a25bb7cd6ce06e3ad1ff6506","unresolved":false,"context_lines":[{"line_number":289,"context_line":"            LOG.debug(\"Updating root password\")"},{"line_number":290,"context_line":"            try:"},{"line_number":291,"context_line":"                db_password \u003d self._get_database_password()"},{"line_number":292,"context_line":"                out, err \u003d system.exec_vsql_command(db_password,"},{"line_number":293,"context_line":"                                                    system.ALTER_USER_PASSWORD"},{"line_number":294,"context_line":"                                                    % (\u0027root\u0027, user.password))"},{"line_number":295,"context_line":"                if err:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_4b521869","line":292,"updated":"2015-06-30 06:25:39.000000000","message":"it would be better to just replace db_password in method call by self._get_database_password, why waste a variable, this comment applies to all the instances of db_password \u003d self._get_database_password()","commit_id":"3e6dc7d4ecf73d3faf0b8562041cd8255973b572"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"6f3ee260dc6290c1a25bb7cd6ce06e3ad1ff6506","unresolved":false,"context_lines":[{"line_number":294,"context_line":"                                                    % (\u0027root\u0027, user.password))"},{"line_number":295,"context_line":"                if err:"},{"line_number":296,"context_line":"                    LOG.error(err)"},{"line_number":297,"context_line":"                    raise RuntimeError(\"Failed to update root password.\")"},{"line_number":298,"context_line":"            except exception.ProcessExecutionError:"},{"line_number":299,"context_line":"                LOG.debug(\"Updated root password\")"},{"line_number":300,"context_line":"                raise RuntimeError(\"Failed to update root password.\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_4b93f85b","line":297,"updated":"2015-06-30 06:25:39.000000000","message":"Internationalization of exception message.","commit_id":"3e6dc7d4ecf73d3faf0b8562041cd8255973b572"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"6f3ee260dc6290c1a25bb7cd6ce06e3ad1ff6506","unresolved":false,"context_lines":[{"line_number":309,"context_line":"                                            (db_password, \u0027root\u0027), \u0027dbadmin\u0027)"},{"line_number":310,"context_line":"            if err:"},{"line_number":311,"context_line":"                LOG.error(err)"},{"line_number":312,"context_line":"                raise RuntimeError(\"Failed to query for root user.\")"},{"line_number":313,"context_line":"        except exception.ProcessExecutionError:"},{"line_number":314,"context_line":"            raise RuntimeError(\"Failed to query for root user.\")"},{"line_number":315,"context_line":"        return out.rstrip() \u003d\u003d \"1\""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_cbcce837","line":312,"updated":"2015-06-30 06:25:39.000000000","message":"Internationalization of exception message.","commit_id":"3e6dc7d4ecf73d3faf0b8562041cd8255973b572"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"c60fad184f28e30adeeb67edfe6d7dd2a1ded11c","unresolved":false,"context_lines":[{"line_number":261,"context_line":"            self._grant_role(username, role)"},{"line_number":262,"context_line":"        if err:"},{"line_number":263,"context_line":"            LOG.error(err)"},{"line_number":264,"context_line":"            raise RuntimeError(\"Failed to create user %s.\" % username)"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    def _grant_role(self, username, role):"},{"line_number":267,"context_line":"        \"\"\"Grants a role to the user on the schema.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"9a41bdd9_379d3abc","line":264,"updated":"2015-07-15 11:24:19.000000000","message":"message needs to be translated.","commit_id":"ef16f9ab1a514aac47e9b40432c9543aaaf8fbc2"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"c60fad184f28e30adeeb67edfe6d7dd2a1ded11c","unresolved":false,"context_lines":[{"line_number":293,"context_line":"                if err:"},{"line_number":294,"context_line":"                    LOG.error(err)"},{"line_number":295,"context_line":"                    raise RuntimeError(_(\"Failed to update root password with\""},{"line_number":296,"context_line":"                                         \" %s.\") % root_password)"},{"line_number":297,"context_line":"            except exception.ProcessExecutionError:"},{"line_number":298,"context_line":"                LOG.debug(\"Updated root password.\")"},{"line_number":299,"context_line":"                raise RuntimeError(_(\"Failed to update root password with %s.\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a41bdd9_77e50236","line":296,"updated":"2015-07-15 11:24:19.000000000","message":"we shouldnt be logging the password","commit_id":"ef16f9ab1a514aac47e9b40432c9543aaaf8fbc2"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"c60fad184f28e30adeeb67edfe6d7dd2a1ded11c","unresolved":false,"context_lines":[{"line_number":297,"context_line":"            except exception.ProcessExecutionError:"},{"line_number":298,"context_line":"                LOG.debug(\"Updated root password.\")"},{"line_number":299,"context_line":"                raise RuntimeError(_(\"Failed to update root password with %s.\")"},{"line_number":300,"context_line":"                                   % root_password)"},{"line_number":301,"context_line":"        return user.serialize()"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def is_root_enabled(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a41bdd9_17cd96b6","line":300,"updated":"2015-07-15 11:24:19.000000000","message":"ditto","commit_id":"ef16f9ab1a514aac47e9b40432c9543aaaf8fbc2"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"bd06f079699ca3d198344f7c4812fae9dd2ad4c0","unresolved":false,"context_lines":[{"line_number":261,"context_line":"            self._grant_role(username, role)"},{"line_number":262,"context_line":"        if err:"},{"line_number":263,"context_line":"            LOG.error(err)"},{"line_number":264,"context_line":"            raise RuntimeError(\"Failed to create user %s.\" % username)"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    def _grant_role(self, username, role):"},{"line_number":267,"context_line":"        \"\"\"Grants a role to the user on the schema.\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_19731f82","line":264,"updated":"2015-08-04 07:17:32.000000000","message":"Internationalization missed.","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"3a5299785756e283ea47f72b8891eae124f6aab6","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        \"\"\"Resets the root password.\"\"\""},{"line_number":280,"context_line":"        LOG.info(_(\"Enabling root.\"))"},{"line_number":281,"context_line":"        user \u003d models.RootUser()"},{"line_number":282,"context_line":"        user.name \u003d \"root\""},{"line_number":283,"context_line":"        user.host \u003d \"%\""},{"line_number":284,"context_line":"        user.password \u003d root_password or utils.generate_random_password()"},{"line_number":285,"context_line":"        if not self.is_root_enabled():"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_284b0789","line":282,"updated":"2015-08-04 15:39:55.000000000","message":"shouldn\u0027t this be somehow configurable or should it come through REST ?","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"3a5299785756e283ea47f72b8891eae124f6aab6","unresolved":false,"context_lines":[{"line_number":280,"context_line":"        LOG.info(_(\"Enabling root.\"))"},{"line_number":281,"context_line":"        user \u003d models.RootUser()"},{"line_number":282,"context_line":"        user.name \u003d \"root\""},{"line_number":283,"context_line":"        user.host \u003d \"%\""},{"line_number":284,"context_line":"        user.password \u003d root_password or utils.generate_random_password()"},{"line_number":285,"context_line":"        if not self.is_root_enabled():"},{"line_number":286,"context_line":"            self._create_user(\u0027root\u0027, user.password, \u0027pseudosuperuser\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_08488b86","line":283,"updated":"2015-08-04 15:39:55.000000000","message":"shouldn\u0027t this be somehow configurable or should it come through REST ?","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"f17e486da13ba1522171da80b479955e80d9abb9","unresolved":false,"context_lines":[{"line_number":280,"context_line":"        LOG.info(_(\"Enabling root.\"))"},{"line_number":281,"context_line":"        user \u003d models.RootUser()"},{"line_number":282,"context_line":"        user.name \u003d \"root\""},{"line_number":283,"context_line":"        user.host \u003d \"%\""},{"line_number":284,"context_line":"        user.password \u003d root_password or utils.generate_random_password()"},{"line_number":285,"context_line":"        if not self.is_root_enabled():"},{"line_number":286,"context_line":"            self._create_user(\u0027root\u0027, user.password, \u0027pseudosuperuser\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_83a8b4dc","line":283,"in_reply_to":"1a4dcd0f_08488b86","updated":"2015-08-05 18:49:28.000000000","message":"this is how mySQL does it... it is not configurable","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"3a5299785756e283ea47f72b8891eae124f6aab6","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        user \u003d models.RootUser()"},{"line_number":282,"context_line":"        user.name \u003d \"root\""},{"line_number":283,"context_line":"        user.host \u003d \"%\""},{"line_number":284,"context_line":"        user.password \u003d root_password or utils.generate_random_password()"},{"line_number":285,"context_line":"        if not self.is_root_enabled():"},{"line_number":286,"context_line":"            self._create_user(\u0027root\u0027, user.password, \u0027pseudosuperuser\u0027)"},{"line_number":287,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_c85aa350","line":284,"updated":"2015-08-04 15:39:55.000000000","message":"it is should be somehow logged at least.","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"f17e486da13ba1522171da80b479955e80d9abb9","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        user \u003d models.RootUser()"},{"line_number":282,"context_line":"        user.name \u003d \"root\""},{"line_number":283,"context_line":"        user.host \u003d \"%\""},{"line_number":284,"context_line":"        user.password \u003d root_password or utils.generate_random_password()"},{"line_number":285,"context_line":"        if not self.is_root_enabled():"},{"line_number":286,"context_line":"            self._create_user(\u0027root\u0027, user.password, \u0027pseudosuperuser\u0027)"},{"line_number":287,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_e02deea8","line":284,"in_reply_to":"1a4dcd0f_c85aa350","updated":"2015-08-05 18:49:28.000000000","message":"are you saying the password should be logged?","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"3a5299785756e283ea47f72b8891eae124f6aab6","unresolved":false,"context_lines":[{"line_number":289,"context_line":"            try:"},{"line_number":290,"context_line":"                out, err \u003d system.exec_vsql_command("},{"line_number":291,"context_line":"                    self._get_database_password(),"},{"line_number":292,"context_line":"                    system.ALTER_USER_PASSWORD % (\u0027root\u0027, user.password))"},{"line_number":293,"context_line":"                if err:"},{"line_number":294,"context_line":"                    LOG.error(err)"},{"line_number":295,"context_line":"                    raise RuntimeError(_(\"Failed to update root password with\""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_9c685c89","line":292,"updated":"2015-08-04 15:39:55.000000000","message":"shouldn\u0027t this be (user.name, user.password)","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"f17e486da13ba1522171da80b479955e80d9abb9","unresolved":false,"context_lines":[{"line_number":289,"context_line":"            try:"},{"line_number":290,"context_line":"                out, err \u003d system.exec_vsql_command("},{"line_number":291,"context_line":"                    self._get_database_password(),"},{"line_number":292,"context_line":"                    system.ALTER_USER_PASSWORD % (\u0027root\u0027, user.password))"},{"line_number":293,"context_line":"                if err:"},{"line_number":294,"context_line":"                    LOG.error(err)"},{"line_number":295,"context_line":"                    raise RuntimeError(_(\"Failed to update root password with\""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_23fc40b7","line":292,"in_reply_to":"1a4dcd0f_9c685c89","updated":"2015-08-05 18:49:28.000000000","message":"Done","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"3a5299785756e283ea47f72b8891eae124f6aab6","unresolved":false,"context_lines":[{"line_number":293,"context_line":"                if err:"},{"line_number":294,"context_line":"                    LOG.error(err)"},{"line_number":295,"context_line":"                    raise RuntimeError(_(\"Failed to update root password with\""},{"line_number":296,"context_line":"                                         \" %s.\") % root_password)"},{"line_number":297,"context_line":"            except exception.ProcessExecutionError:"},{"line_number":298,"context_line":"                LOG.debug(\"Updated root password.\")"},{"line_number":299,"context_line":"                raise RuntimeError(_(\"Failed to update root password with %s.\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_bce8b8e3","line":296,"range":{"start_line":296,"start_character":48,"end_line":296,"end_character":64},"updated":"2015-08-04 15:39:55.000000000","message":"should be  % (user.password, user.name)","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"f17e486da13ba1522171da80b479955e80d9abb9","unresolved":false,"context_lines":[{"line_number":293,"context_line":"                if err:"},{"line_number":294,"context_line":"                    LOG.error(err)"},{"line_number":295,"context_line":"                    raise RuntimeError(_(\"Failed to update root password with\""},{"line_number":296,"context_line":"                                         \" %s.\") % root_password)"},{"line_number":297,"context_line":"            except exception.ProcessExecutionError:"},{"line_number":298,"context_line":"                LOG.debug(\"Updated root password.\")"},{"line_number":299,"context_line":"                raise RuntimeError(_(\"Failed to update root password with %s.\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_43f94cc6","line":296,"in_reply_to":"1a4dcd0f_bce8b8e3","updated":"2015-08-05 18:49:28.000000000","message":"Done","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"bd06f079699ca3d198344f7c4812fae9dd2ad4c0","unresolved":false,"context_lines":[{"line_number":295,"context_line":"                    raise RuntimeError(_(\"Failed to update root password with\""},{"line_number":296,"context_line":"                                         \" %s.\") % root_password)"},{"line_number":297,"context_line":"            except exception.ProcessExecutionError:"},{"line_number":298,"context_line":"                LOG.debug(\"Updated root password.\")"},{"line_number":299,"context_line":"                raise RuntimeError(_(\"Failed to update root password with %s.\")"},{"line_number":300,"context_line":"                                   % root_password)"},{"line_number":301,"context_line":"        return user.serialize()"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_d91a9717","line":298,"updated":"2015-08-04 07:17:32.000000000","message":"two things:\n\n1. this should be LOG.error\n\n2. I am not sure if comment is correct \"Updated root password.\"","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"f17e486da13ba1522171da80b479955e80d9abb9","unresolved":false,"context_lines":[{"line_number":295,"context_line":"                    raise RuntimeError(_(\"Failed to update root password with\""},{"line_number":296,"context_line":"                                         \" %s.\") % root_password)"},{"line_number":297,"context_line":"            except exception.ProcessExecutionError:"},{"line_number":298,"context_line":"                LOG.debug(\"Updated root password.\")"},{"line_number":299,"context_line":"                raise RuntimeError(_(\"Failed to update root password with %s.\")"},{"line_number":300,"context_line":"                                   % root_password)"},{"line_number":301,"context_line":"        return user.serialize()"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_a6913e49","line":298,"in_reply_to":"1a4dcd0f_d91a9717","updated":"2015-08-05 18:49:28.000000000","message":"Done","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"3a5299785756e283ea47f72b8891eae124f6aab6","unresolved":false,"context_lines":[{"line_number":306,"context_line":"        try:"},{"line_number":307,"context_line":"            out, err \u003d system.shell_execute(system.USER_EXISTS %"},{"line_number":308,"context_line":"                                            (self._get_database_password(),"},{"line_number":309,"context_line":"                                             \u0027root\u0027), \u0027dbadmin\u0027)"},{"line_number":310,"context_line":"            if err:"},{"line_number":311,"context_line":"                LOG.error(err)"},{"line_number":312,"context_line":"                raise RuntimeError(_(\"Failed to query for root user.\"))"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_7cf3109f","line":309,"updated":"2015-08-04 15:39:55.000000000","message":"shouldn\u0027t user be configurable?","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"b7a735f18b7b23120a489b7a5499716d9a5de4bd","unresolved":false,"context_lines":[{"line_number":296,"context_line":"                    raise RuntimeError(_(\"Failed to update %s password.\")"},{"line_number":297,"context_line":"                                       % user.name)"},{"line_number":298,"context_line":"            except exception.ProcessExecutionError:"},{"line_number":299,"context_line":"                LOG.error(\"Failed to update %s password.\" % user.name)"},{"line_number":300,"context_line":"                raise RuntimeError(_(\"Failed to update %s password.\")"},{"line_number":301,"context_line":"                                   % user.name)"},{"line_number":302,"context_line":"        return user.serialize()"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa1b9901_2d2abe90","line":299,"updated":"2015-08-20 19:47:56.000000000","message":"Should internationalize error messages","commit_id":"3103ef8bb1998973f31208f306e018fce3481315"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"1a69ce4a34541add4be003583d94a2bb36d7fd08","unresolved":false,"context_lines":[{"line_number":296,"context_line":"                    raise RuntimeError(_(\"Failed to update %s password.\")"},{"line_number":297,"context_line":"                                       % user.name)"},{"line_number":298,"context_line":"            except exception.ProcessExecutionError:"},{"line_number":299,"context_line":"                LOG.error(\"Failed to update %s password.\" % user.name)"},{"line_number":300,"context_line":"                raise RuntimeError(_(\"Failed to update %s password.\")"},{"line_number":301,"context_line":"                                   % user.name)"},{"line_number":302,"context_line":"        return user.serialize()"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa1b9901_e676f9a2","line":299,"updated":"2015-08-21 13:46:04.000000000","message":"Looks like a rebase knocked out my comments - missing internationalization here","commit_id":"fee7599579c1cb2680120585dbde60cf09d56fc6"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"d9935d638935f102eb9950fd0dc6747b31727e03","unresolved":false,"context_lines":[{"line_number":296,"context_line":"                    raise RuntimeError(_(\"Failed to update %s password.\")"},{"line_number":297,"context_line":"                                       % user.name)"},{"line_number":298,"context_line":"            except exception.ProcessExecutionError:"},{"line_number":299,"context_line":"                LOG.error(\"Failed to update %s password.\" % user.name)"},{"line_number":300,"context_line":"                raise RuntimeError(_(\"Failed to update %s password.\")"},{"line_number":301,"context_line":"                                   % user.name)"},{"line_number":302,"context_line":"        return user.serialize()"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa1b9901_6fd071f8","line":299,"in_reply_to":"fa1b9901_e676f9a2","updated":"2015-08-21 18:18:07.000000000","message":"Done :)","commit_id":"fee7599579c1cb2680120585dbde60cf09d56fc6"}],"trove/guestagent/datastore/experimental/vertica/system.py":[{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"6f3ee260dc6290c1a25bb7cd6ce06e3ad1ff6506","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                       \"StrictHostKeyChecking\u003dno\u0027 --perms --owner --group \""},{"line_number":34,"context_line":"                       \"%s %s:%s\")"},{"line_number":35,"context_line":"SSH_KEY_GEN \u003d \"ssh-keygen -f %s/.ssh/id_rsa -t rsa -N \u0027\u0027\""},{"line_number":36,"context_line":"USER_EXISTS \u003d (\"/opt/vertica/bin/vsql -w \u0027%s\u0027 -c \""},{"line_number":37,"context_line":"               \"\\\"select 1 from users where user_name \u003d \u0027%s\u0027\\\" \""},{"line_number":38,"context_line":"               \"| grep row | awk \u0027{print $1}\u0027 | cut -c2-\")"},{"line_number":39,"context_line":"VERTICA_AGENT_SERVICE_COMMAND \u003d \"service vertica_agent %s\""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_6b359c44","line":36,"updated":"2015-06-30 06:25:39.000000000","message":"vsql command should be replaced by exec_vsql_command","commit_id":"3e6dc7d4ecf73d3faf0b8562041cd8255973b572"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"259480f9e722e5b24db5a5057316a33d7c2dcbed","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                       \"StrictHostKeyChecking\u003dno\u0027 --perms --owner --group \""},{"line_number":34,"context_line":"                       \"%s %s:%s\")"},{"line_number":35,"context_line":"SSH_KEY_GEN \u003d \"ssh-keygen -f %s/.ssh/id_rsa -t rsa -N \u0027\u0027\""},{"line_number":36,"context_line":"USER_EXISTS \u003d (\"/opt/vertica/bin/vsql -w \u0027%s\u0027 -c \""},{"line_number":37,"context_line":"               \"\\\"select 1 from users where user_name \u003d \u0027%s\u0027\\\" \""},{"line_number":38,"context_line":"               \"| grep row | awk \u0027{print $1}\u0027 | cut -c2-\")"},{"line_number":39,"context_line":"VERTICA_AGENT_SERVICE_COMMAND \u003d \"service vertica_agent %s\""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_b636d5e5","line":36,"in_reply_to":"ba3cc151_6b359c44","updated":"2015-07-04 20:45:34.000000000","message":"This command is pipelined with another command which will search whether the the user exists in the table or not","commit_id":"3e6dc7d4ecf73d3faf0b8562041cd8255973b572"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"6f3ee260dc6290c1a25bb7cd6ce06e3ad1ff6506","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                       \"%s %s:%s\")"},{"line_number":35,"context_line":"SSH_KEY_GEN \u003d \"ssh-keygen -f %s/.ssh/id_rsa -t rsa -N \u0027\u0027\""},{"line_number":36,"context_line":"USER_EXISTS \u003d (\"/opt/vertica/bin/vsql -w \u0027%s\u0027 -c \""},{"line_number":37,"context_line":"               \"\\\"select 1 from users where user_name \u003d \u0027%s\u0027\\\" \""},{"line_number":38,"context_line":"               \"| grep row | awk \u0027{print $1}\u0027 | cut -c2-\")"},{"line_number":39,"context_line":"VERTICA_AGENT_SERVICE_COMMAND \u003d \"service vertica_agent %s\""},{"line_number":40,"context_line":"VERTICA_CONF \u003d \"/etc/vertica.cnf\""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_ab04047e","line":37,"updated":"2015-06-30 06:25:39.000000000","message":"prefix schema name before table name","commit_id":"3e6dc7d4ecf73d3faf0b8562041cd8255973b572"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"6f3ee260dc6290c1a25bb7cd6ce06e3ad1ff6506","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                         % command)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"def exec_vsql_command(dbadmin_password, command):"},{"line_number":57,"context_line":"    \"\"\"Executes a VSQL command with the given dbadmin password.\"\"\""},{"line_number":58,"context_line":"    return shell_execute(\"/opt/vertica/bin/vsql -w \\\u0027%s\\\u0027 -c \\\"%s\\\"\""},{"line_number":59,"context_line":"                         % (dbadmin_password, command), \"dbadmin\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_4b6bf81e","line":56,"updated":"2015-06-30 06:25:39.000000000","message":"I am in a fix that shall we consider to write this method in vertica.service.VerticaApp so that we can use _get_database_password inside the method without the need of everytime making a separate call to method first before calling this function.","commit_id":"3e6dc7d4ecf73d3faf0b8562041cd8255973b572"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"259480f9e722e5b24db5a5057316a33d7c2dcbed","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                         % command)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"def exec_vsql_command(dbadmin_password, command):"},{"line_number":57,"context_line":"    \"\"\"Executes a VSQL command with the given dbadmin password.\"\"\""},{"line_number":58,"context_line":"    return shell_execute(\"/opt/vertica/bin/vsql -w \\\u0027%s\\\u0027 -c \\\"%s\\\"\""},{"line_number":59,"context_line":"                         % (dbadmin_password, command), \"dbadmin\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_164c6175","line":56,"in_reply_to":"ba3cc151_4b6bf81e","updated":"2015-07-04 20:45:34.000000000","message":"That is a good point as well","commit_id":"3e6dc7d4ecf73d3faf0b8562041cd8255973b572"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"bd06f079699ca3d198344f7c4812fae9dd2ad4c0","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"from trove.common import utils"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"ALTER_USER_PASSWORD \u003d (\"ALTER USER %s IDENTIFIED BY \u0027%s\u0027\")"},{"line_number":17,"context_line":"CREATE_DB \u003d (\"/opt/vertica/bin/adminTools -t create_db -s\""},{"line_number":18,"context_line":"             \" %s -d %s -c %s -D %s -p \u0027%s\u0027\")"},{"line_number":19,"context_line":"CREATE_USER \u003d (\"CREATE USER %s IDENTIFIED BY \u0027%s\u0027\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_d9c85777","line":16,"updated":"2015-08-04 07:17:32.000000000","message":"Not sure why are these in brackets, and not Line number 21, first of all brackets won\u0027t be needed for one-liners, and if you want to put them, there is wrong in it but maintain consistency in your change :)","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"f17e486da13ba1522171da80b479955e80d9abb9","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"from trove.common import utils"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"ALTER_USER_PASSWORD \u003d (\"ALTER USER %s IDENTIFIED BY \u0027%s\u0027\")"},{"line_number":17,"context_line":"CREATE_DB \u003d (\"/opt/vertica/bin/adminTools -t create_db -s\""},{"line_number":18,"context_line":"             \" %s -d %s -c %s -D %s -p \u0027%s\u0027\")"},{"line_number":19,"context_line":"CREATE_USER \u003d (\"CREATE USER %s IDENTIFIED BY \u0027%s\u0027\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_e6d98623","line":16,"in_reply_to":"1a4dcd0f_d9c85777","updated":"2015-08-05 18:49:28.000000000","message":"Done","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"}],"trove/guestagent/datastore/mysql/manager.py":[{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"bd06f079699ca3d198344f7c4812fae9dd2ad4c0","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                                       include_marker)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def enable_root(self, context, root_password\u003dNone):"},{"line_number":106,"context_line":"        return MySqlAdmin().enable_root()"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def is_root_enabled(self, context):"},{"line_number":109,"context_line":"        return MySqlAdmin().is_root_enabled()"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_f973d34b","line":106,"updated":"2015-08-04 07:17:32.000000000","message":"Do you mean to say that mysql will not work for the root_password sent from user.","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"c01fcb417f394f1805018a047f32b76b8b5b2778","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                                       include_marker)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def enable_root(self, context, root_password\u003dNone):"},{"line_number":106,"context_line":"        return MySqlAdmin().enable_root()"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def is_root_enabled(self, context):"},{"line_number":109,"context_line":"        return MySqlAdmin().is_root_enabled()"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_1ee6c944","line":106,"in_reply_to":"1a4dcd0f_f1fe1ead","updated":"2015-08-07 17:55:47.000000000","message":"I doubt this statement, i guess the spec implied to implement for all\n\nhttps://github.com/openstack/trove-specs/blob/master/specs/liberty/cluster-root-enable.rst","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"3a5299785756e283ea47f72b8891eae124f6aab6","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                                       include_marker)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def enable_root(self, context, root_password\u003dNone):"},{"line_number":106,"context_line":"        return MySqlAdmin().enable_root()"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def is_root_enabled(self, context):"},{"line_number":109,"context_line":"        return MySqlAdmin().is_root_enabled()"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_1c10cca7","line":106,"in_reply_to":"1a4dcd0f_f973d34b","updated":"2015-08-04 15:39:55.000000000","message":"+1","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"8de31d2fb5e9ab58e6dfbc78058c61b4e1fdad45","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                                       include_marker)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def enable_root(self, context, root_password\u003dNone):"},{"line_number":106,"context_line":"        return MySqlAdmin().enable_root()"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def is_root_enabled(self, context):"},{"line_number":109,"context_line":"        return MySqlAdmin().is_root_enabled()"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_f1fe1ead","line":106,"in_reply_to":"1a4dcd0f_f973d34b","updated":"2015-08-05 19:02:15.000000000","message":"Yes, this patch is addressing the change only work for the Vertica  datastore. MySQL root enable will still work as before.","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"}],"trove/tests/unittests/guestagent/test_vertica_manager.py":[{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"bd06f079699ca3d198344f7c4812fae9dd2ad4c0","unresolved":false,"context_lines":[{"line_number":336,"context_line":"    def test_enable_root(self):"},{"line_number":337,"context_line":"        VerticaApp.enable_root \u003d MagicMock(return_value\u003d\u0027user_id_stuff\u0027)"},{"line_number":338,"context_line":"        user_id \u003d self.manager.enable_root(self.context)"},{"line_number":339,"context_line":"        self.assertThat(user_id, Is(\u0027user_id_stuff\u0027))"},{"line_number":340,"context_line":"        VerticaApp.enable_root.assert_any_call()"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"    def test_is_root_enabled(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_b909cb97","line":339,"updated":"2015-08-04 07:17:32.000000000","message":"use self.assertEqual","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"c01fcb417f394f1805018a047f32b76b8b5b2778","unresolved":false,"context_lines":[{"line_number":336,"context_line":"    def test_enable_root(self):"},{"line_number":337,"context_line":"        VerticaApp.enable_root \u003d MagicMock(return_value\u003d\u0027user_id_stuff\u0027)"},{"line_number":338,"context_line":"        user_id \u003d self.manager.enable_root(self.context)"},{"line_number":339,"context_line":"        self.assertThat(user_id, Is(\u0027user_id_stuff\u0027))"},{"line_number":340,"context_line":"        VerticaApp.enable_root.assert_any_call()"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"    def test_is_root_enabled(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_be855508","line":339,"in_reply_to":"1a4dcd0f_894df3c5","updated":"2015-08-07 17:55:47.000000000","message":"can you please post error, not sure why would it have failed","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"f17e486da13ba1522171da80b479955e80d9abb9","unresolved":false,"context_lines":[{"line_number":336,"context_line":"    def test_enable_root(self):"},{"line_number":337,"context_line":"        VerticaApp.enable_root \u003d MagicMock(return_value\u003d\u0027user_id_stuff\u0027)"},{"line_number":338,"context_line":"        user_id \u003d self.manager.enable_root(self.context)"},{"line_number":339,"context_line":"        self.assertThat(user_id, Is(\u0027user_id_stuff\u0027))"},{"line_number":340,"context_line":"        VerticaApp.enable_root.assert_any_call()"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"    def test_is_root_enabled(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_4654fa51","line":339,"in_reply_to":"1a4dcd0f_b909cb97","updated":"2015-08-05 18:49:28.000000000","message":"Done","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"48cba46deb0ca72d1382ef34b4624f99835a8fa7","unresolved":false,"context_lines":[{"line_number":336,"context_line":"    def test_enable_root(self):"},{"line_number":337,"context_line":"        VerticaApp.enable_root \u003d MagicMock(return_value\u003d\u0027user_id_stuff\u0027)"},{"line_number":338,"context_line":"        user_id \u003d self.manager.enable_root(self.context)"},{"line_number":339,"context_line":"        self.assertThat(user_id, Is(\u0027user_id_stuff\u0027))"},{"line_number":340,"context_line":"        VerticaApp.enable_root.assert_any_call()"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"    def test_is_root_enabled(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_894df3c5","line":339,"in_reply_to":"1a4dcd0f_b909cb97","updated":"2015-08-06 22:45:11.000000000","message":"The test failed when I changed it to assertEqual :/","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"bd06f079699ca3d198344f7c4812fae9dd2ad4c0","unresolved":false,"context_lines":[{"line_number":342,"context_line":"    def test_is_root_enabled(self):"},{"line_number":343,"context_line":"        VerticaApp.is_root_enabled \u003d MagicMock(return_value\u003dTrue)"},{"line_number":344,"context_line":"        is_enabled \u003d self.manager.is_root_enabled(self.context)"},{"line_number":345,"context_line":"        self.assertThat(is_enabled, Is(True))"},{"line_number":346,"context_line":"        VerticaApp.is_root_enabled.assert_any_call()"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    def test_create_backup(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_d9db771a","line":345,"updated":"2015-08-04 07:17:32.000000000","message":"use self.assertTrue","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"c01fcb417f394f1805018a047f32b76b8b5b2778","unresolved":false,"context_lines":[{"line_number":342,"context_line":"    def test_is_root_enabled(self):"},{"line_number":343,"context_line":"        VerticaApp.is_root_enabled \u003d MagicMock(return_value\u003dTrue)"},{"line_number":344,"context_line":"        is_enabled \u003d self.manager.is_root_enabled(self.context)"},{"line_number":345,"context_line":"        self.assertThat(is_enabled, Is(True))"},{"line_number":346,"context_line":"        VerticaApp.is_root_enabled.assert_any_call()"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    def test_create_backup(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_5e7bf129","line":345,"in_reply_to":"1a4dcd0f_09d003c8","updated":"2015-08-07 17:55:47.000000000","message":"can you please post error, not sure why would it have failed","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"f17e486da13ba1522171da80b479955e80d9abb9","unresolved":false,"context_lines":[{"line_number":342,"context_line":"    def test_is_root_enabled(self):"},{"line_number":343,"context_line":"        VerticaApp.is_root_enabled \u003d MagicMock(return_value\u003dTrue)"},{"line_number":344,"context_line":"        is_enabled \u003d self.manager.is_root_enabled(self.context)"},{"line_number":345,"context_line":"        self.assertThat(is_enabled, Is(True))"},{"line_number":346,"context_line":"        VerticaApp.is_root_enabled.assert_any_call()"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    def test_create_backup(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_26576e59","line":345,"in_reply_to":"1a4dcd0f_d9db771a","updated":"2015-08-05 18:49:28.000000000","message":"Done","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"48cba46deb0ca72d1382ef34b4624f99835a8fa7","unresolved":false,"context_lines":[{"line_number":342,"context_line":"    def test_is_root_enabled(self):"},{"line_number":343,"context_line":"        VerticaApp.is_root_enabled \u003d MagicMock(return_value\u003dTrue)"},{"line_number":344,"context_line":"        is_enabled \u003d self.manager.is_root_enabled(self.context)"},{"line_number":345,"context_line":"        self.assertThat(is_enabled, Is(True))"},{"line_number":346,"context_line":"        VerticaApp.is_root_enabled.assert_any_call()"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    def test_create_backup(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_09d003c8","line":345,"in_reply_to":"1a4dcd0f_d9db771a","updated":"2015-08-06 22:45:11.000000000","message":"The test failed when I changed it to assertTrue :/","commit_id":"25974f7afb4c6afb3f585936ccc1b67d772b30b6"}]}
