)]}'
{"trove/common/template.py":[{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"1cf333d046dee488e022ab5616d959c6688afff9","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        jinja2.PackageLoader(\"trove\", \"templates\")"},{"line_number":31,"context_line":"    ])"},{"line_number":32,"context_line":"    return jinja2.Environment(loader\u003dloader)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class SingleInstanceConfigTemplate(object):"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F3Cc%3D","line":33,"updated":"2013-07-10 09:23:18.000000000","message":"This is very neat!","commit_id":"940aa74297bc46937fccf231f01f16208308bf30"}],"trove/guestagent/manager/mysql.py":[{"author":{"_account_id":6156,"name":"Justin Hopper","email":"justin.hopper@hp.com","username":"justin-hopper"},"change_message_id":"fb01b33634b563952798222e42d7c455a76240be","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class Manager(periodic_task.PeriodicTasks):"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    @periodic_task.periodic_task(ticks_between_runs\u003d3)"},{"line_number":22,"context_line":"    def update_status(self, context):"},{"line_number":23,"context_line":"        \"\"\"Update the status of the MySQL service\"\"\""},{"line_number":24,"context_line":"        MySqlAppStatus.get().update()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F48M%3D","line":21,"updated":"2013-07-09 18:17:37.000000000","message":"Just curious as to why the heartbeats are more frequent","commit_id":"940aa74297bc46937fccf231f01f16208308bf30"},{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"bfdeecfe722b4663c6106c9ea4ad7abbf54687fe","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class Manager(periodic_task.PeriodicTasks):"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    @periodic_task.periodic_task(ticks_between_runs\u003d3)"},{"line_number":22,"context_line":"    def update_status(self, context):"},{"line_number":23,"context_line":"        \"\"\"Update the status of the MySQL service\"\"\""},{"line_number":24,"context_line":"        MySqlAppStatus.get().update()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F4uY%3D","line":21,"in_reply_to":"AAAAP3%2F%2F48M%3D","updated":"2013-07-09 19:23:02.000000000","message":"cuz im a impatient bastard and it means it comes online faster :)","commit_id":"940aa74297bc46937fccf231f01f16208308bf30"}],"trove/guestagent/manager/mysql_service.py":[{"author":{"_account_id":1925,"name":"Vipul Sabhaya","email":"vipuls@gmail.com","username":"vipuls"},"change_message_id":"bd2dd3e60f4507cd94efb63775a0436e9fa375f8","unresolved":false,"context_lines":[{"line_number":28,"context_line":"MYSQLD_ARGS \u003d None"},{"line_number":29,"context_line":"PREPARING \u003d False"},{"line_number":30,"context_line":"UUID \u003d False"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"ORIG_MYCNF \u003d \"/etc/mysql/my.cnf\""},{"line_number":33,"context_line":"FINAL_MYCNF \u003d \"/var/lib/mysql/my.cnf\""},{"line_number":34,"context_line":"TMP_MYCNF \u003d \"/tmp/my.cnf.tmp\""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAP3%2F%2FmYU%3D","line":31,"updated":"2013-07-16 00:59:07.000000000","message":"Can we remove this variable, no longer used","commit_id":"ece3f6d148faae272f3cc96de8d1a96786e791f3"},{"author":{"_account_id":1925,"name":"Vipul Sabhaya","email":"vipuls@gmail.com","username":"vipuls"},"change_message_id":"bd2dd3e60f4507cd94efb63775a0436e9fa375f8","unresolved":false,"context_lines":[{"line_number":29,"context_line":"PREPARING \u003d False"},{"line_number":30,"context_line":"UUID \u003d False"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"ORIG_MYCNF \u003d \"/etc/mysql/my.cnf\""},{"line_number":33,"context_line":"FINAL_MYCNF \u003d \"/var/lib/mysql/my.cnf\""},{"line_number":34,"context_line":"TMP_MYCNF \u003d \"/tmp/my.cnf.tmp\""},{"line_number":35,"context_line":"DBAAS_MYCNF \u003d \"/etc/dbaas/my.cnf/my.cnf.%dM\""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAP3%2F%2FmX4%3D","line":32,"updated":"2013-07-16 00:59:07.000000000","message":"Can we remove this one too?","commit_id":"ece3f6d148faae272f3cc96de8d1a96786e791f3"},{"author":{"_account_id":1925,"name":"Vipul Sabhaya","email":"vipuls@gmail.com","username":"vipuls"},"change_message_id":"bd2dd3e60f4507cd94efb63775a0436e9fa375f8","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    pwd, err \u003d utils.execute_with_timeout("},{"line_number":51,"context_line":"        \"sudo\","},{"line_number":52,"context_line":"        \"awk\","},{"line_number":53,"context_line":"        \"/password\\\\t\u003d/{print $3; exit}\","},{"line_number":54,"context_line":"        \"/etc/mysql/my.cnf\")"},{"line_number":55,"context_line":"    if err:"},{"line_number":56,"context_line":"        LOG.error(err)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAP3%2F%2FmXw%3D","line":53,"updated":"2013-07-16 00:59:07.000000000","message":"Probably no good way to remove the hard-coded value here, since there are multiple code paths and some which don\u0027t have the config_location value.","commit_id":"ece3f6d148faae272f3cc96de8d1a96786e791f3"}],"trove/taskmanager/models.py":[{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"1cf333d046dee488e022ab5616d959c6688afff9","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            flavor_multiplier)"},{"line_number":125,"context_line":"        config.render()"},{"line_number":126,"context_line":"        return config"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"class FreshInstanceTasks(FreshInstance, NotifyMixin, ConfigurationMixin):"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F3Bg%3D","line":127,"updated":"2013-07-10 09:23:18.000000000","message":"Seems like we\u0027re bleeding across abstraction here -- the taskmanager shouldn\u0027t really know or care about the my.cnf template since it\u0027s mysql specific. Ideally, for a mysql guest, something like this would happen on the guest itself (in the mysql-aware service code).","commit_id":"940aa74297bc46937fccf231f01f16208308bf30"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"1cf333d046dee488e022ab5616d959c6688afff9","unresolved":false,"context_lines":[{"line_number":152,"context_line":"            err \u003d inst_models.InstanceTasks.BUILDING_ERROR_DNS"},{"line_number":153,"context_line":"            self._log_and_raise(e, msg, err)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        config \u003d self._render_config(flavor_ram)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        if server:"},{"line_number":158,"context_line":"            self._guest_prepare(server, flavor_ram, volume_info,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F3AU%3D","line":155,"updated":"2013-07-10 09:23:18.000000000","message":"Seems like disk/volume size is another config param that might be used to generate the final my.cnf. (You may want to set log file sizes based on that, for instance.) \n\nMight be a good idea to add something like that as a template param as well.","commit_id":"940aa74297bc46937fccf231f01f16208308bf30"}],"trove/templates/mysql.config.template":[{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"b853baf0fdf1612583e11a77eb8b8e4c9b80a5a9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"# The MySQL database server configuration file."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# You can copy this to one of:"},{"line_number":5,"context_line":"# - \"/etc/mysql/my.cnf\" to set global options,"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAAPn%2F%2FVcI%3D","line":2,"updated":"2013-07-03 19:59:55.000000000","message":"We should change all these inline comments to jinja comments like: {# multi line comment here #} then they will be automatically stripped when rendered.","commit_id":"915237d3e39c8eee35c7cea21ead416b2748d120"}],"trove/tests/unittests/common/test_template.py":[{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"b853baf0fdf1612583e11a77eb8b8e4c9b80a5a9","unresolved":false,"context_lines":[{"line_number":24,"context_line":"        util.init_db()"},{"line_number":25,"context_line":"        self.env \u003d template.get_env()"},{"line_number":26,"context_line":"        self.template \u003d self.env.get_template(\"mysql.config.template\")"},{"line_number":27,"context_line":"        "},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def tearDown(self):"},{"line_number":30,"context_line":"        super(TemplateTest, self).tearDown()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FVcE%3D","line":27,"updated":"2013-07-03 19:59:55.000000000","message":"pep8","commit_id":"915237d3e39c8eee35c7cea21ead416b2748d120"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"8404ca9304e3397419dc3a7ba7a755632c933899","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_rendering(self):"},{"line_number":46,"context_line":"        rendered \u003d self.template.render(flavor\u003dself.flavor_dict)"},{"line_number":47,"context_line":"        self.validate_template(rendered, \"query_cache_size\", 1024 / 512)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def test_single_instance_config_rendering(self):"},{"line_number":50,"context_line":"        location \u003d \"/etc/mysql/my.cnf\""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAP3%2F%2FoPs%3D","line":47,"updated":"2013-07-15 16:58:05.000000000","message":"Would it be a good idea to write these tests as generic validators that take a memory size or a flavor object in and test the rendering for a range of different inputs? Otherwise the 1024 / 512 here looks a little silly.","commit_id":"4315eea7f9f67a9289a2880afc43dbb9b51d9fa0"}],"trove/tests/unittests/guestagent/test_api.py":[{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"8404ca9304e3397419dc3a7ba7a755632c933899","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        exp_msg \u003d RpcMsgMatcher(\u0027start_db_with_conf_changes\u0027,"},{"line_number":181,"context_line":"                                \u0027config_location\u0027, \u0027config_contents\u0027)"},{"line_number":182,"context_line":"        self._mock_rpc_call(exp_msg)"},{"line_number":183,"context_line":"        self.api.start_db_with_conf_changes(\u0027loc\u0027, \u0027cont\u0027)"},{"line_number":184,"context_line":"        self._verify_rpc_call(exp_msg)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def test_stop_db(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAP3%2F%2FoQc%3D","line":183,"updated":"2013-07-15 16:58:05.000000000","message":"I don\u0027t have any idea what this is doing.","commit_id":"4315eea7f9f67a9289a2880afc43dbb9b51d9fa0"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"8404ca9304e3397419dc3a7ba7a755632c933899","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        when(rpc).create_connection(new\u003dTrue).thenReturn(mock_conn)"},{"line_number":220,"context_line":"        when(mock_conn).create_consumer(any(), any(), any()).thenReturn(None)"},{"line_number":221,"context_line":"        exp_msg \u003d RpcMsgMatcher(\u0027prepare\u0027, \u0027memory_mb\u0027, \u0027databases\u0027, \u0027users\u0027,"},{"line_number":222,"context_line":"                                \u0027device_path\u0027, \u0027mount_point\u0027, \u0027backup_id\u0027,"},{"line_number":223,"context_line":"                                \u0027config_location\u0027, \u0027config_contents\u0027)"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"        when(rpc).cast(any(), any(), exp_msg).thenReturn(None)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAP3%2F%2FoQk%3D","line":222,"updated":"2013-07-15 16:58:05.000000000","message":"pep8 didn\u0027t cry about indentation here?","commit_id":"4315eea7f9f67a9289a2880afc43dbb9b51d9fa0"}],"trove/tests/unittests/guestagent/test_dbaas.py":[{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"8404ca9304e3397419dc3a7ba7a755632c933899","unresolved":false,"context_lines":[{"line_number":642,"context_line":"        self.mysql_starts_successfully()"},{"line_number":643,"context_line":"        sqlalchemy.create_engine \u003d Mock()"},{"line_number":644,"context_line":""},{"line_number":645,"context_line":"        self.mySqlApp.secure(\u0027/etc/mysql/my.cnf\u0027, \u0027contents\u0027)"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":"        self.assertTrue(self.mySqlApp.stop_db.called)"},{"line_number":648,"context_line":"        self.assertTrue(self.mySqlApp._write_mycnf.called)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAP3%2F%2FoRE%3D","line":645,"updated":"2013-07-15 16:58:05.000000000","message":"Could you pull this and \"/etc/mycnf/my.cnf\" into constants? They\u0027re similar enough and they\u0027re repeated enough that I think there\u0027s a risk of confusion.","commit_id":"4315eea7f9f67a9289a2880afc43dbb9b51d9fa0"}]}
