)]}'
{"etc/trove/trove.conf.test":[{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"1ba30272c677abdf057182a08ee572d7a05c812a","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"# usage notifications"},{"line_number":111,"context_line":"notification_driver \u003d trove.tests.util.usage"},{"line_number":112,"context_line":"notification_service_id \u003d mysql:123,percona:abc"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"# \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d notifer queue kombu connection options \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":115,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAAS3%2F%2F8rk%3D","line":112,"updated":"2013-09-16 18:27:57.000000000","message":"First I\u0027ve seen of DictOpt in use. How does the parser handle quoted objects, or keys or values with spaces?","commit_id":"42ce37813d5e575458b19fe2f37dbcb08f54e161"},{"author":{"_account_id":6156,"name":"Justin Hopper","email":"justin.hopper@hp.com","username":"justin-hopper"},"change_message_id":"0a8dc8c9a6c8d06485f081cda1def3856d864e3b","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"# usage notifications"},{"line_number":111,"context_line":"notification_driver \u003d trove.tests.util.usage"},{"line_number":112,"context_line":"notification_service_id \u003d mysql:123,percona:abc"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"# \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d notifer queue kombu connection options \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":115,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAAS3%2F%2F8Q8%3D","line":112,"in_reply_to":"AAAAS3%2F%2F8rk%3D","updated":"2013-09-16 20:34:18.000000000","message":"quoted strings with double quotes appear to escape the quotes. spaces are parsed as embedded spaces, that is they do not further tokenize the value","commit_id":"42ce37813d5e575458b19fe2f37dbcb08f54e161"}],"trove/common/cfg.py":[{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"1ba30272c677abdf057182a08ee572d7a05c812a","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    cfg.IntOpt(\u0027exists_notification_ticks\u0027, default\u003d360,"},{"line_number":184,"context_line":"               help\u003d\u0027Number of report_intevals to wait between pushing events \u0027"},{"line_number":185,"context_line":"                    \u0027(see report_interval)\u0027),"},{"line_number":186,"context_line":"    cfg.DictOpt(\u0027notification_service_id\u0027, default\u003d{},"},{"line_number":187,"context_line":"                help\u003d\u0027Unique ID to tag notification events\u0027),"},{"line_number":188,"context_line":"    cfg.StrOpt(\u0027nova_proxy_admin_user\u0027, default\u003d\u0027\u0027,"},{"line_number":189,"context_line":"               help\u003d\"Admin username used to connect to Nova\"),"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2F8rU%3D","line":186,"updated":"2013-09-16 18:27:57.000000000","message":"That\u0027s kind of a drastic change.\nI guess it\u0027s the crux of this whole review, though, isn\u0027t it.","commit_id":"42ce37813d5e575458b19fe2f37dbcb08f54e161"},{"author":{"_account_id":6156,"name":"Justin Hopper","email":"justin.hopper@hp.com","username":"justin-hopper"},"change_message_id":"0a8dc8c9a6c8d06485f081cda1def3856d864e3b","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    cfg.IntOpt(\u0027exists_notification_ticks\u0027, default\u003d360,"},{"line_number":184,"context_line":"               help\u003d\u0027Number of report_intevals to wait between pushing events \u0027"},{"line_number":185,"context_line":"                    \u0027(see report_interval)\u0027),"},{"line_number":186,"context_line":"    cfg.DictOpt(\u0027notification_service_id\u0027, default\u003d{},"},{"line_number":187,"context_line":"                help\u003d\u0027Unique ID to tag notification events\u0027),"},{"line_number":188,"context_line":"    cfg.StrOpt(\u0027nova_proxy_admin_user\u0027, default\u003d\u0027\u0027,"},{"line_number":189,"context_line":"               help\u003d\"Admin username used to connect to Nova\"),"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2F8Q4%3D","line":186,"in_reply_to":"AAAAS3%2F%2F8rU%3D","updated":"2013-09-16 20:34:18.000000000","message":"yep","commit_id":"42ce37813d5e575458b19fe2f37dbcb08f54e161"}],"trove/extensions/mgmt/instances/models.py":[{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"bd3e71f59e6516dcee24c0154659d15cfc366e59","unresolved":false,"context_lines":[{"line_number":193,"context_line":"                \u0027state\u0027: instance.status.lower(),"},{"line_number":194,"context_line":"                \u0027tenant_id\u0027: instance.tenant_id,"},{"line_number":195,"context_line":"                \u0027service_id\u0027:"},{"line_number":196,"context_line":"                CONF.notification_service_id.get(instance.service_type)}"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    def __call__(self):"},{"line_number":199,"context_line":"        audit_start, audit_end \u003d NotificationTransformer._get_audit_period()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FC5A%3D","line":196,"updated":"2013-09-13 00:09:05.000000000","message":"We should probably check for this service_types\u0027 existince, and then bubble up an appropriate message. This would be quite bad to just swallow messages like this. Seems like a fatal error to me, so we might want to add it to the __init__ of the module... Thoughts?","commit_id":"b1e41b643707dcbf07d44058283651aee1af2a85"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"1ba30272c677abdf057182a08ee572d7a05c812a","unresolved":false,"context_lines":[{"line_number":195,"context_line":"            \u0027tenant_id\u0027: instance.tenant_id"},{"line_number":196,"context_line":"        }"},{"line_number":197,"context_line":"        if instance.service_type in CONF.notification_service_id:"},{"line_number":198,"context_line":"            service_type_id \u003d \\"},{"line_number":199,"context_line":"                CONF.notification_service_id[instance.service_type]"},{"line_number":200,"context_line":"        else:"},{"line_number":201,"context_line":"            service_type_id \u003d cfg.UNKNOWN_SERVICE_ID"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2F8sk%3D","line":198,"updated":"2013-09-16 18:27:57.000000000","message":"If you can\u0027t do it in one line, do it in two.","commit_id":"42ce37813d5e575458b19fe2f37dbcb08f54e161"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"1ba30272c677abdf057182a08ee572d7a05c812a","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            service_type_id \u003d cfg.UNKNOWN_SERVICE_ID"},{"line_number":202,"context_line":"            LOG.error(\"Service ID for Type (%s) is not configured\""},{"line_number":203,"context_line":"                      % instance.service_type)"},{"line_number":204,"context_line":"        payload.update({\u0027service_id\u0027: service_type_id})"},{"line_number":205,"context_line":"        return payload"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    def __call__(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2F8sM%3D","line":204,"updated":"2013-09-16 18:27:57.000000000","message":"alternately\n\n    payload[\u0027service_id\u0027] \u003d service_type_id","commit_id":"42ce37813d5e575458b19fe2f37dbcb08f54e161"},{"author":{"_account_id":6156,"name":"Justin Hopper","email":"justin.hopper@hp.com","username":"justin-hopper"},"change_message_id":"0a8dc8c9a6c8d06485f081cda1def3856d864e3b","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            service_type_id \u003d cfg.UNKNOWN_SERVICE_ID"},{"line_number":202,"context_line":"            LOG.error(\"Service ID for Type (%s) is not configured\""},{"line_number":203,"context_line":"                      % instance.service_type)"},{"line_number":204,"context_line":"        payload.update({\u0027service_id\u0027: service_type_id})"},{"line_number":205,"context_line":"        return payload"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    def __call__(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2F8QI%3D","line":204,"in_reply_to":"AAAAS3%2F%2F8sM%3D","updated":"2013-09-16 20:34:18.000000000","message":"just went back to the original code where by default an attempt to get the service ID is made.  if it is None then there is a conditional statement to log it and change it to the \u0027unknown-id\u0027.  This will be less look ups to the dict and arguably makes the code easier to read.","commit_id":"42ce37813d5e575458b19fe2f37dbcb08f54e161"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"1ba30272c677abdf057182a08ee572d7a05c812a","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        if flavor_id in self._flavor_cache:"},{"line_number":229,"context_line":"            LOG.debug(\"Flavor cache hit for %s\" % flavor_id)"},{"line_number":230,"context_line":"            return self._flavor_cache[flavor_id]"},{"line_number":231,"context_line":"            # fetch flavor resource from nova"},{"line_number":232,"context_line":"        LOG.info(\"Flavor cache miss for %s\" % flavor_id)"},{"line_number":233,"context_line":"        flavor \u003d self.nova_client.flavors.get(flavor_id)"},{"line_number":234,"context_line":"        self._flavor_cache[flavor_id] \u003d flavor.name if flavor else \u0027unknown\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2F8sA%3D","line":231,"updated":"2013-09-16 18:27:57.000000000","message":"\u003c\u003c to match 232","commit_id":"42ce37813d5e575458b19fe2f37dbcb08f54e161"},{"author":{"_account_id":6156,"name":"Justin Hopper","email":"justin.hopper@hp.com","username":"justin-hopper"},"change_message_id":"0a8dc8c9a6c8d06485f081cda1def3856d864e3b","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        if flavor_id in self._flavor_cache:"},{"line_number":229,"context_line":"            LOG.debug(\"Flavor cache hit for %s\" % flavor_id)"},{"line_number":230,"context_line":"            return self._flavor_cache[flavor_id]"},{"line_number":231,"context_line":"            # fetch flavor resource from nova"},{"line_number":232,"context_line":"        LOG.info(\"Flavor cache miss for %s\" % flavor_id)"},{"line_number":233,"context_line":"        flavor \u003d self.nova_client.flavors.get(flavor_id)"},{"line_number":234,"context_line":"        self._flavor_cache[flavor_id] \u003d flavor.name if flavor else \u0027unknown\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2F8Qw%3D","line":231,"in_reply_to":"AAAAS3%2F%2F8sA%3D","updated":"2013-09-16 20:34:18.000000000","message":"Done","commit_id":"42ce37813d5e575458b19fe2f37dbcb08f54e161"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"ed2e0a2b66334c7b94bdeccbe25051c48ea7a9aa","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            \u0027state\u0027: instance.status.lower(),"},{"line_number":195,"context_line":"            \u0027tenant_id\u0027: instance.tenant_id,"},{"line_number":196,"context_line":"            \u0027service_id\u0027:"},{"line_number":197,"context_line":"            CONF.notification_service_id.get(instance.service_type)"},{"line_number":198,"context_line":"        }"},{"line_number":199,"context_line":"        if not payload[\u0027service_id\u0027]:"},{"line_number":200,"context_line":"            payload[\u0027service_id\u0027] \u003d cfg.UNKNOWN_SERVICE_ID"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2F8Ps%3D","line":197,"updated":"2013-09-16 20:43:02.000000000","message":"I think you had the right idea with making this decision outside the dictionary definition. Since there\u0027s some interrogation to do before assigning it in the payload, I think it\u0027s valid to pull that out of the definition. There may be similar values in the future to follow this example.\n\n    notifications \u003d CONF.notification_service_id\n    service_id \u003d notifications.get(instance.service_type)\n    if not service_id:\n        service_id \u003d cfg.UNKNOWN_SERVICE_ID\n    payload[\u0027service_id\u0027] \u003d service_id","commit_id":"e691dfda3c0e1b1c27c477b9c948223ec68b1f14"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"f6037506b4e6e1b2964ba571b9eed7eb6258170e","unresolved":false,"context_lines":[{"line_number":178,"context_line":"            subsecond\u003dTrue)"},{"line_number":179,"context_line":"        return audit_start, audit_end"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def _get_service_id(self, service_type, id_map):"},{"line_number":182,"context_line":"        if service_type in id_map:"},{"line_number":183,"context_line":"            service_type_id \u003d id_map[service_type]"},{"line_number":184,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAS3%2F%2FsdA%3D","line":181,"updated":"2013-09-21 09:42:55.000000000","message":"Should it raises an exception ?","commit_id":"64371bd3194bad12e73e87828f440c2a8f1a4d27"},{"author":{"_account_id":6156,"name":"Justin Hopper","email":"justin.hopper@hp.com","username":"justin-hopper"},"change_message_id":"824a673620a8c3311527a458e6bc418c7983d97a","unresolved":false,"context_lines":[{"line_number":178,"context_line":"            subsecond\u003dTrue)"},{"line_number":179,"context_line":"        return audit_start, audit_end"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def _get_service_id(self, service_type, id_map):"},{"line_number":182,"context_line":"        if service_type in id_map:"},{"line_number":183,"context_line":"            service_type_id \u003d id_map[service_type]"},{"line_number":184,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAS3%2F%2Fm4Q%3D","line":181,"in_reply_to":"AAAAS3%2F%2FsdA%3D","updated":"2013-09-24 01:22:49.000000000","message":"Denis, we discussed this and decided it should not and that logging an error was appropriate behavior","commit_id":"64371bd3194bad12e73e87828f440c2a8f1a4d27"}],"trove/taskmanager/models.py":[{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"bd3e71f59e6516dcee24c0154659d15cfc366e59","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                \u0027nova_volume_id\u0027: self.volume_id"},{"line_number":108,"context_line":"            })"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        if self.service_type in CONF.notification_service_id:"},{"line_number":111,"context_line":"            payload.update({"},{"line_number":112,"context_line":"                \u0027service_id\u0027: CONF.notification_service_id[self.service_type]"},{"line_number":113,"context_line":"            })"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FC44%3D","line":110,"updated":"2013-09-13 00:09:05.000000000","message":"so is it ok to not have a service_id here? or is that a fatality?","commit_id":"b1e41b643707dcbf07d44058283651aee1af2a85"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"f6037506b4e6e1b2964ba571b9eed7eb6258170e","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    This adds the ability to send usage events to an Instance object."},{"line_number":67,"context_line":"    \"\"\""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def _get_service_id(self, service_type, id_map):"},{"line_number":70,"context_line":"        if service_type in id_map:"},{"line_number":71,"context_line":"            service_type_id \u003d id_map[service_type]"},{"line_number":72,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAS3%2F%2Fsc8%3D","line":69,"updated":"2013-09-21 09:42:55.000000000","message":"Should it raises an exception ?","commit_id":"64371bd3194bad12e73e87828f440c2a8f1a4d27"},{"author":{"_account_id":6156,"name":"Justin Hopper","email":"justin.hopper@hp.com","username":"justin-hopper"},"change_message_id":"824a673620a8c3311527a458e6bc418c7983d97a","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    This adds the ability to send usage events to an Instance object."},{"line_number":67,"context_line":"    \"\"\""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def _get_service_id(self, service_type, id_map):"},{"line_number":70,"context_line":"        if service_type in id_map:"},{"line_number":71,"context_line":"            service_type_id \u003d id_map[service_type]"},{"line_number":72,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAS3%2F%2Fm4E%3D","line":69,"in_reply_to":"AAAAS3%2F%2Fsc8%3D","updated":"2013-09-24 01:22:49.000000000","message":"Denis, we discussed this and decide that logging an error was the appropriate behavior for this.","commit_id":"64371bd3194bad12e73e87828f440c2a8f1a4d27"}],"trove/tests/api/instances_actions.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"1c7f9cace197389d9a9c65cddda092afbb8f5f4e","unresolved":false,"context_lines":[{"line_number":54,"context_line":"# If true, then we will actually search for the process"},{"line_number":55,"context_line":"USE_LOCAL_OVZ \u003d CONFIG.use_local_ovz"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"CONF \u003d cfg.CONF"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"class MySqlConnection(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2FREA%3D","line":57,"updated":"2013-09-08 19:52:05.000000000","message":"Do not use config object in tests. Almost worth thing you could\u0027ve done. Use module variables for notifications configuration.","commit_id":"3098ae96bfae14fde44c73a6dfbb8784144ee9d3"}],"trove/tests/unittests/mgmt/test_models.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"0ebf79daaf5968085f8d308a7a244e98ac8afc8a","unresolved":false,"context_lines":[{"line_number":35,"context_line":"import trove.extensions.mgmt.instances.models as mgmtmodels"},{"line_number":36,"context_line":"from trove.openstack.common.notifier import api as notifier"},{"line_number":37,"context_line":"from trove.common import remote"},{"line_number":38,"context_line":"import oslo.config.cfg as cfg"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class MockMgmtInstanceTest(TestCase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2FRD4%3D","line":38,"updated":"2013-09-08 19:53:21.000000000","message":"same !","commit_id":"3098ae96bfae14fde44c73a6dfbb8784144ee9d3"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"0ebf79daaf5968085f8d308a7a244e98ac8afc8a","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                          tenant_id\u003d\u0027tenant_id_1\u0027,"},{"line_number":67,"context_line":"                          server_status\u003dstatus,"},{"line_number":68,"context_line":"                          service_type\u003d\u0027mysql\u0027)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"class TestNotificationTransformer(MockMgmtInstanceTest):"},{"line_number":72,"context_line":"    def test_tranformer(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2FRD0%3D","line":69,"updated":"2013-09-08 19:53:21.000000000","message":"Good idea.","commit_id":"3098ae96bfae14fde44c73a6dfbb8784144ee9d3"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"1ba30272c677abdf057182a08ee572d7a05c812a","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        self.client.flavors \u003d self.flavor_mgr"},{"line_number":50,"context_line":"        when(remote).create_admin_nova_client(self.context).thenReturn("},{"line_number":51,"context_line":"            self.client)"},{"line_number":52,"context_line":"        # all is fair in love and war"},{"line_number":53,"context_line":"        when(ConfigOpts)._get(\u0027host\u0027).thenReturn(\u0027test_host\u0027)"},{"line_number":54,"context_line":"        when(ConfigOpts)._get(\u0027exists_notification_ticks\u0027).thenReturn(1)"},{"line_number":55,"context_line":"        when(ConfigOpts)._get(\u0027report_interval\u0027).thenReturn(20)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2F8s4%3D","line":52,"updated":"2013-09-16 18:27:57.000000000","message":"But not comments. Please remove this.","commit_id":"42ce37813d5e575458b19fe2f37dbcb08f54e161"},{"author":{"_account_id":6156,"name":"Justin Hopper","email":"justin.hopper@hp.com","username":"justin-hopper"},"change_message_id":"0a8dc8c9a6c8d06485f081cda1def3856d864e3b","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        self.client.flavors \u003d self.flavor_mgr"},{"line_number":50,"context_line":"        when(remote).create_admin_nova_client(self.context).thenReturn("},{"line_number":51,"context_line":"            self.client)"},{"line_number":52,"context_line":"        # all is fair in love and war"},{"line_number":53,"context_line":"        when(ConfigOpts)._get(\u0027host\u0027).thenReturn(\u0027test_host\u0027)"},{"line_number":54,"context_line":"        when(ConfigOpts)._get(\u0027exists_notification_ticks\u0027).thenReturn(1)"},{"line_number":55,"context_line":"        when(ConfigOpts)._get(\u0027report_interval\u0027).thenReturn(20)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2F8QE%3D","line":52,"in_reply_to":"AAAAS3%2F%2F8s4%3D","updated":"2013-09-16 20:34:18.000000000","message":"Done","commit_id":"42ce37813d5e575458b19fe2f37dbcb08f54e161"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"f6037506b4e6e1b2964ba571b9eed7eb6258170e","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from trove.common.context import TroveContext"},{"line_number":27,"context_line":"from trove.db.models import DatabaseModelBase"},{"line_number":28,"context_line":"from trove.extensions.mgmt.instances.models import NotificationTransformer"},{"line_number":29,"context_line":"from trove.extensions.mgmt.instances.models import \\"},{"line_number":30,"context_line":"    NovaNotificationTransformer"},{"line_number":31,"context_line":"from trove.extensions.mgmt.instances.models import SimpleMgmtInstance"},{"line_number":32,"context_line":"from trove.instance.models import DBInstance"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAS3%2F%2FsdM%3D","line":29,"updated":"2013-09-21 09:42:55.000000000","message":"Please do not use this kind of importing. Do not use \\\n\nDo it like:\nfrom  trove.extensions.mgmt.instances import models\n\nthen use models.AnyClassYouWant","commit_id":"64371bd3194bad12e73e87828f440c2a8f1a4d27"},{"author":{"_account_id":6156,"name":"Justin Hopper","email":"justin.hopper@hp.com","username":"justin-hopper"},"change_message_id":"824a673620a8c3311527a458e6bc418c7983d97a","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from trove.common.context import TroveContext"},{"line_number":27,"context_line":"from trove.db.models import DatabaseModelBase"},{"line_number":28,"context_line":"from trove.extensions.mgmt.instances.models import NotificationTransformer"},{"line_number":29,"context_line":"from trove.extensions.mgmt.instances.models import \\"},{"line_number":30,"context_line":"    NovaNotificationTransformer"},{"line_number":31,"context_line":"from trove.extensions.mgmt.instances.models import SimpleMgmtInstance"},{"line_number":32,"context_line":"from trove.instance.models import DBInstance"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAS3%2F%2Fm3Y%3D","line":29,"in_reply_to":"AAAAS3%2F%2FsdM%3D","updated":"2013-09-24 01:22:49.000000000","message":"This is overall a good discussion on how to do imports.  I won\u0027t change this here since it is already done but I think we should raise coding standards around imports.  Personally, I think this is ok for classes but not module level functions.  namespace is usually something good to have but I am not sure about when importing classes.","commit_id":"64371bd3194bad12e73e87828f440c2a8f1a4d27"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"f6037506b4e6e1b2964ba571b9eed7eb6258170e","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    NovaNotificationTransformer"},{"line_number":31,"context_line":"from trove.extensions.mgmt.instances.models import SimpleMgmtInstance"},{"line_number":32,"context_line":"from trove.instance.models import DBInstance"},{"line_number":33,"context_line":"from trove.instance.models import InstanceServiceStatus"},{"line_number":34,"context_line":"from trove.instance.models import ServiceStatuses"},{"line_number":35,"context_line":"from trove.instance.tasks import InstanceTasks"},{"line_number":36,"context_line":"import trove.extensions.mgmt.instances.models as mgmtmodels"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAS3%2F%2FsdI%3D","line":33,"updated":"2013-09-21 09:42:55.000000000","message":"Same","commit_id":"64371bd3194bad12e73e87828f440c2a8f1a4d27"}],"trove/tests/unittests/taskmanager/test_models.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"f6037506b4e6e1b2964ba571b9eed7eb6258170e","unresolved":false,"context_lines":[{"line_number":14,"context_line":"import testtools"},{"line_number":15,"context_line":"from testtools.matchers import Equals"},{"line_number":16,"context_line":"from mockito import mock, when, unstub, any, verify, never"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from trove.taskmanager.models import NotifyMixin"},{"line_number":19,"context_line":"import trove.common.remote as remote"},{"line_number":20,"context_line":"import trove.taskmanager.models as taskmanager_models"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAS3%2F%2FsdE%3D","line":17,"updated":"2013-09-21 09:42:55.000000000","message":"Unneeded black line.","commit_id":"64371bd3194bad12e73e87828f440c2a8f1a4d27"},{"author":{"_account_id":6156,"name":"Justin Hopper","email":"justin.hopper@hp.com","username":"justin-hopper"},"change_message_id":"824a673620a8c3311527a458e6bc418c7983d97a","unresolved":false,"context_lines":[{"line_number":14,"context_line":"import testtools"},{"line_number":15,"context_line":"from testtools.matchers import Equals"},{"line_number":16,"context_line":"from mockito import mock, when, unstub, any, verify, never"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from trove.taskmanager.models import NotifyMixin"},{"line_number":19,"context_line":"import trove.common.remote as remote"},{"line_number":20,"context_line":"import trove.taskmanager.models as taskmanager_models"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAS3%2F%2Fm3M%3D","line":17,"in_reply_to":"AAAAS3%2F%2FsdE%3D","updated":"2013-09-24 01:22:49.000000000","message":"I have been following the convention of leaving a blank line between test dependencies and real classes.  This is also something we can bring up in a team-wide import discussion.","commit_id":"64371bd3194bad12e73e87828f440c2a8f1a4d27"}]}
