)]}'
{"trove/guestagent/datastore/mysql/manager.py":[{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"2bc3fee384f8d5748b71e465a58ad868f1b38a6c","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        app.restart()"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def start_db_with_conf_changes(self, context, config_contents):"},{"line_number":143,"context_line":"        if config_contents:"},{"line_number":144,"context_line":"            app \u003d MySqlApp(MySqlAppStatus.get())"},{"line_number":145,"context_line":"            app.start_db_with_conf_changes(config_contents)"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2Fn8g%3D","line":143,"updated":"2013-10-31 09:54:33.000000000","message":"What if there\u0027s no config_contents? Pls, be explicit, run start_db() or raise an error.","commit_id":"c2ca1ccb7361895a3a3de7a2ef70dccf3e843162"}],"trove/guestagent/datastore/mysql/service.py":[{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"0b24f03cd7f38daeac883a4ad9df9a8e628cba50","unresolved":false,"context_lines":[{"line_number":698,"context_line":"            utils.execute_with_timeout(\"sudo\", \"mv\", TMP_MYCNF,"},{"line_number":699,"context_line":"                                       system.MYSQL_CONFIG)"},{"line_number":700,"context_line":""},{"line_number":701,"context_line":"            self._write_temp_mycnf_with_admin_account(system.MYSQL_CONFIG,"},{"line_number":702,"context_line":"                                                      TMP_MYCNF,"},{"line_number":703,"context_line":"                                                      admin_password)"},{"line_number":704,"context_line":"            utils.execute_with_timeout(\"sudo\", \"mv\", TMP_MYCNF,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2Fnok%3D","line":701,"updated":"2013-10-31 10:49:04.000000000","message":"This line and below has little to do with config_contents. It should be executed regardless of config_contents\u0027s presence","commit_id":"d5c9f98e49c714eba7b6f8ca0b3fa1238c1511da"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"a605519c41d1216aca9d7dba9005f443f4608f7d","unresolved":false,"context_lines":[{"line_number":696,"context_line":"            utils.execute_with_timeout(\"sudo\", \"mv\", TMP_MYCNF,"},{"line_number":697,"context_line":"                                       system.MYSQL_CONFIG)"},{"line_number":698,"context_line":"        if not admin_password:"},{"line_number":699,"context_line":"            admin_password \u003d get_auth_password()"},{"line_number":700,"context_line":"            self._write_temp_mycnf_with_admin_account(system.MYSQL_CONFIG,"},{"line_number":701,"context_line":"                                                      TMP_MYCNF,"},{"line_number":702,"context_line":"                                                      admin_password)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FniY%3D","line":699,"updated":"2013-10-31 11:12:31.000000000","message":"In case you got admin_password in params, it should be written to config as well, I guess","commit_id":"5a62f1c9be0c570ab11b15574eb8839cc41664d8"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"6fbfae90b5c94fcf27dcbac57679e6cf2689891b","unresolved":false,"context_lines":[{"line_number":691,"context_line":"        LOG.info(_(\"Writing my.cnf templates.\"))"},{"line_number":692,"context_line":"        if admin_password is None:"},{"line_number":693,"context_line":"            admin_password \u003d get_auth_password()"},{"line_number":694,"context_line":"        if config_contents:"},{"line_number":695,"context_line":"            with open(TMP_MYCNF, \u0027w\u0027) as t:"},{"line_number":696,"context_line":"                t.write(config_contents)"},{"line_number":697,"context_line":"            utils.execute_with_timeout(\"sudo\", \"mv\", TMP_MYCNF,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2FiSg%3D","line":694,"updated":"2013-11-01 19:44:15.000000000","message":"I don\u0027t know about this.\n701 makes reference to TMP_MYCNF, but if config_contents is empty or null and this stanza doesn\u0027t get executed, I don\u0027t know that we can really trust the contents of TMP_MYCNF, whatever they are.\n\nPlus, I bet we could get rid of this first sudo mv TMP_MYCNF system.MYSQL_CONFIG, since the one on 703 would clobber its effects anyway.","commit_id":"c8bd8e2ddfec5c1dd4ba11d499536834d55d5b61"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"7602d2731d9ea6679b71e2d024f88cbe9b006fcd","unresolved":false,"context_lines":[{"line_number":691,"context_line":"        LOG.info(_(\"Writing my.cnf templates.\"))"},{"line_number":692,"context_line":"        if admin_password is None:"},{"line_number":693,"context_line":"            admin_password \u003d get_auth_password()"},{"line_number":694,"context_line":"        if config_contents:"},{"line_number":695,"context_line":"            with open(TMP_MYCNF, \u0027w\u0027) as t:"},{"line_number":696,"context_line":"                t.write(config_contents)"},{"line_number":697,"context_line":"            utils.execute_with_timeout(\"sudo\", \"mv\", TMP_MYCNF,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2FiHg%3D","line":694,"in_reply_to":"AAAATn%2F%2FiSg%3D","updated":"2013-11-01 21:23:33.000000000","message":"If you looked at _write_temp_mycnf_with_admin_account, you would see that this method create new file with name TMP_MYCNF, and writes default mysql config line by line with adding admin user with password.\n\nAbout getting rid, you could not get rid of it because they are doing different stuff: 694 - 698 writes outcome config, 700-704 writes admin creds in new config.","commit_id":"c8bd8e2ddfec5c1dd4ba11d499536834d55d5b61"},{"author":{"_account_id":694,"name":"Tim Simpson","email":"tim.simpson@rackspace.com","username":"tim-simpson"},"change_message_id":"825fc9532c50bc3e89486c0548f82d0e42d95dcb","unresolved":false,"context_lines":[{"line_number":696,"context_line":"            with open(TMP_MYCNF, \u0027w\u0027) as t:"},{"line_number":697,"context_line":"                t.write(config_contents)"},{"line_number":698,"context_line":"            utils.execute_with_timeout(\"sudo\", \"mv\", TMP_MYCNF,"},{"line_number":699,"context_line":"                                       system.MYSQL_CONFIG)"},{"line_number":700,"context_line":""},{"line_number":701,"context_line":"        self._write_temp_mycnf_with_admin_account(system.MYSQL_CONFIG,"},{"line_number":702,"context_line":"                                                  TMP_MYCNF,"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F%2FAXI%3D","line":699,"updated":"2013-11-15 20:02:39.000000000","message":"The name of this method is \"_write_mycnf\", how could the config contents be optional?","commit_id":"4849fbc25b2a3bd5598c5c97fc3448776dd57b88"}],"trove/taskmanager/models.py":[{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"95108946532e8771a09e54d0e5e7a6f670a5955c","unresolved":false,"context_lines":[{"line_number":188,"context_line":"            try:"},{"line_number":189,"context_line":"                config \u003d self._render_config(service_type, flavor, self.id)"},{"line_number":190,"context_line":"            except Exception:"},{"line_number":191,"context_line":"                LOG.info(_(\"Configuration template for datastor type:\""},{"line_number":192,"context_line":"                           \" %(datastore)s not found.\")"},{"line_number":193,"context_line":"                         % {\u0027datastore\u0027: service_type})"},{"line_number":194,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F5OA%3D","line":191,"updated":"2013-10-25 15:36:18.000000000","message":"This should at least be a warning not info. Also set config to None as well before the try block.","commit_id":"0fa498c9d6f19a665be6ca341b4b28609661f39b"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"0778cc97168c9d072eb7cccf34da2a77c86546fe","unresolved":false,"context_lines":[{"line_number":188,"context_line":"            try:"},{"line_number":189,"context_line":"                config \u003d self._render_config(service_type, flavor, self.id)"},{"line_number":190,"context_line":"            except Exception:"},{"line_number":191,"context_line":"                LOG.info(_(\"Configuration template for datastor type:\""},{"line_number":192,"context_line":"                           \" %(datastore)s not found.\")"},{"line_number":193,"context_line":"                         % {\u0027datastore\u0027: service_type})"},{"line_number":194,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F5Lk%3D","line":191,"in_reply_to":"AAAATn%2F%2F5OA%3D","updated":"2013-10-25 15:42:10.000000000","message":"i do that to avoid PEP8 F841, and in any way i protecting myself from caughting attribute error.\n\nSo, i agreed with logging stuff)))","commit_id":"0fa498c9d6f19a665be6ca341b4b28609661f39b"},{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"3389270cc490aca56866e3b4fff24c7a5957e0ab","unresolved":false,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":"            conf_content \u003d None"},{"line_number":188,"context_line":"            try:"},{"line_number":189,"context_line":"                config \u003d self._render_config(service_type, flavor, self.id)"},{"line_number":190,"context_line":"            except Exception:"},{"line_number":191,"context_line":"                LOG.warning(_(\"Configuration template for datastor type:\""},{"line_number":192,"context_line":"                              \" %(datastore)s not found.\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2F4VM%3D","line":189,"updated":"2013-10-25 19:01:54.000000000","message":"If this raises an exception then config will not be set. Then you will get a attribute error when you check \u0027if config\u0027. So either set it to None or re-raise the exception that the config was not found.","commit_id":"a362a1027acaf415f6230a47820a702857acf484"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"8c5fbf95f28395c88e5c5053298f5d6589890c09","unresolved":false,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":"            conf_content \u003d None"},{"line_number":188,"context_line":"            try:"},{"line_number":189,"context_line":"                config \u003d self._render_config(service_type, flavor, self.id)"},{"line_number":190,"context_line":"            except Exception:"},{"line_number":191,"context_line":"                LOG.warning(_(\"Configuration template for datastor type:\""},{"line_number":192,"context_line":"                              \" %(datastore)s not found.\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2F2%2B4%3D","line":189,"in_reply_to":"AAAATn%2F%2F4VM%3D","updated":"2013-10-26 18:29:22.000000000","message":"Yes, you are right, i forgot to add from previous patch one line with variable creation, but it would not be an attr exception, it would be RuntimeException, i suppose.","commit_id":"a362a1027acaf415f6230a47820a702857acf484"},{"author":{"_account_id":7593,"name":"Haomai Wang","email":"haomaiwang@gmail.com","username":"HaomaiWang"},"change_message_id":"4d450e295f9b4c2313132b644fda3acd4304d3c0","unresolved":false,"context_lines":[{"line_number":189,"context_line":"            try:"},{"line_number":190,"context_line":"                config \u003d self._render_config(service_type, flavor, self.id)"},{"line_number":191,"context_line":"            except TemplateNotFound:"},{"line_number":192,"context_line":"                LOG.warning(_(\"Configuration template for datastor type:\""},{"line_number":193,"context_line":"                              \" %(datastore)s not found.\")"},{"line_number":194,"context_line":"                            % {\u0027datastore\u0027: service_type})"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2Fk4g%3D","line":192,"updated":"2013-11-01 02:38:56.000000000","message":"datastore","commit_id":"96282fe51edc06e2bc5b52b8020bd7f191b4921c"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"ef372ad4f1e455a36759e2ae1ca2179a2d843bae","unresolved":false,"context_lines":[{"line_number":992,"context_line":"                                         self.new_flavor, self.instance.id)"},{"line_number":993,"context_line":"        except TemplateNotFound:"},{"line_number":994,"context_line":"            LOG.warning(_(\"Configuration template \""},{"line_number":995,"context_line":"                          \"for datastor not found.\"))"},{"line_number":996,"context_line":"        if config:"},{"line_number":997,"context_line":"            config_content \u003d config.config_contents"},{"line_number":998,"context_line":"        self.instance.guest.start_db_with_conf_changes(config_content)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2Flj8%3D","line":995,"updated":"2013-10-31 20:21:20.000000000","message":"datastor -\u003e datastore","commit_id":"96282fe51edc06e2bc5b52b8020bd7f191b4921c"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"6fbfae90b5c94fcf27dcbac57679e6cf2689891b","unresolved":false,"context_lines":[{"line_number":969,"context_line":"            self.instance.guest.reset_configuration(config)"},{"line_number":970,"context_line":"        except (GuestTimeout, TemplateNotFound) as ex:"},{"line_number":971,"context_line":"            LOG.exception(\"Error sending reset_configuration call. Error: %s\""},{"line_number":972,"context_line":"                          % str(ex))"},{"line_number":973,"context_line":"        LOG.debug(\"Reverting resize.\")"},{"line_number":974,"context_line":"        super(ResizeAction, self)._revert_nova_action()"},{"line_number":975,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2FiTI%3D","line":972,"updated":"2013-11-01 19:44:15.000000000","message":"Nice.","commit_id":"c8bd8e2ddfec5c1dd4ba11d499536834d55d5b61"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"6fbfae90b5c94fcf27dcbac57679e6cf2689891b","unresolved":false,"context_lines":[{"line_number":994,"context_line":"            LOG.warning(_(\"Configuration template \""},{"line_number":995,"context_line":"                          \"for datastore not found.\"))"},{"line_number":996,"context_line":"        if config:"},{"line_number":997,"context_line":"            config_content \u003d config.config_contents"},{"line_number":998,"context_line":"        self.instance.guest.start_db_with_conf_changes(config_content)"},{"line_number":999,"context_line":""},{"line_number":1000,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2FiTM%3D","line":997,"updated":"2013-11-01 19:44:15.000000000","message":"You can move 997 to right under 992, and get rid of the \"if config\" line to shorten this up a bit.","commit_id":"c8bd8e2ddfec5c1dd4ba11d499536834d55d5b61"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"7602d2731d9ea6679b71e2d024f88cbe9b006fcd","unresolved":false,"context_lines":[{"line_number":994,"context_line":"            LOG.warning(_(\"Configuration template \""},{"line_number":995,"context_line":"                          \"for datastore not found.\"))"},{"line_number":996,"context_line":"        if config:"},{"line_number":997,"context_line":"            config_content \u003d config.config_contents"},{"line_number":998,"context_line":"        self.instance.guest.start_db_with_conf_changes(config_content)"},{"line_number":999,"context_line":""},{"line_number":1000,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2FiHE%3D","line":997,"in_reply_to":"AAAATn%2F%2FiTM%3D","updated":"2013-11-01 21:23:33.000000000","message":"Yes","commit_id":"c8bd8e2ddfec5c1dd4ba11d499536834d55d5b61"},{"author":{"_account_id":694,"name":"Tim Simpson","email":"tim.simpson@rackspace.com","username":"tim-simpson"},"change_message_id":"825fc9532c50bc3e89486c0548f82d0e42d95dcb","unresolved":false,"context_lines":[{"line_number":195,"context_line":"                conf_content \u003d config.config_contents"},{"line_number":196,"context_line":"            self._guest_prepare(server, flavor[\u0027ram\u0027], volume_info,"},{"line_number":197,"context_line":"                                databases, users, backup_id,"},{"line_number":198,"context_line":"                                conf_content, root_password)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        if not self.db_info.task_status.is_error:"},{"line_number":201,"context_line":"            self.update_db(task_status\u003dinst_models.InstanceTasks.NONE)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F%2FAWg%3D","line":198,"updated":"2013-11-15 20:02:39.000000000","message":"The bigger question this brings up is \"should the prepare call always need a config file?\" I think the answer is no. Should a guest preparing MySQL always have a config file sent via the prepare call? Absolutely! Simply not sending the config file actually breaks the behavior we\u0027ve defined for how the guest manages MySQL. \n\nLet\u0027s think of a different fix for this that won\u0027t break MySQL. This will be easier when datastore types is finished.","commit_id":"4849fbc25b2a3bd5598c5c97fc3448776dd57b88"}],"trove/tests/api/databases.py":[{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"590f3e57eceb26fb82540830777eb1b47852c7f2","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    @test"},{"line_number":93,"context_line":"    def test_create_database(self):"},{"line_number":94,"context_line":"        databases \u003d [{\"name\": self.dbname, \"character_set\": \"latin2\","},{"line_number":95,"context_line":"                      \"collate\": \"latin2_general_ci\"}, {\"name\": self.dbname2}]"},{"line_number":96,"context_line":"        self.dbaas.databases.create(instance_info.id, databases)"},{"line_number":97,"context_line":"        assert_equal(202, self.dbaas.last_http_code)"},{"line_number":98,"context_line":"        if not FAKE:"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2FifU%3D","line":95,"updated":"2013-11-01 18:42:20.000000000","message":"If you are going to change this i\u0027d rather see the array of dictionaries in a clean format rather than a single line.\n\n[\n  {\n    \"foo\": \"bar\",\n    \"faz\": \"baz\",\n  },...\n]","commit_id":"367c1b36aeaeb37eafb8a055f56ef88c77eb14d1"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"96595b97cdeceb7be0e17df22e0bbbdd2abc2e65","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                \"name\": self.dbname,"},{"line_number":97,"context_line":"                \"character_set\": \"latin2\","},{"line_number":98,"context_line":"                \"collate\": \"latin2_general_ci\""},{"line_number":99,"context_line":"            }, "},{"line_number":100,"context_line":"            {"},{"line_number":101,"context_line":"                \"name\": self.dbname2"},{"line_number":102,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2FiWI%3D","line":99,"updated":"2013-11-01 19:19:38.000000000","message":"red. bad. but looks much better ;)","commit_id":"c8bd8e2ddfec5c1dd4ba11d499536834d55d5b61"}]}
