)]}'
{"monasca_api/common/repositories/cassandra/metrics_repository.py":[{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"ade3453c1f0a440b30ecd241ad771b57cb93ea6c","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from monasca_api.common.repositories import exceptions"},{"line_number":30,"context_line":"from monasca_api.common.repositories import metrics_repository"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class MetricsRepository(metrics_repository.AbstractMetricsRepository):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_2ca3dba0","line":32,"updated":"2017-10-20 04:17:38.000000000","message":"Put `CONF \u003d cfg.CONF` above `LOG`","commit_id":"41220c302762594fc1e008e7c2d288b958fe7e90"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"ade3453c1f0a440b30ecd241ad771b57cb93ea6c","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        try:"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"            self.conf \u003d cfg.CONF"},{"line_number":41,"context_line":"            self._cassandra_cluster \u003d Cluster("},{"line_number":42,"context_line":"                self.conf.cassandra.cluster_ip_addresses"},{"line_number":43,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_cca7a7a7","line":40,"updated":"2017-10-20 04:17:38.000000000","message":"That is really pointless to be honest. If it does not break the tests, please remove `self.conf` field and replace all occurrences with `CONF` (see comment above)","commit_id":"41220c302762594fc1e008e7c2d288b958fe7e90"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"2784910a21c3491ab28d2846ac141cd6fa9b52b6","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        try:"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"            self.conf \u003d cfg.CONF"},{"line_number":41,"context_line":"            self._cassandra_cluster \u003d Cluster("},{"line_number":42,"context_line":"                self.conf.cassandra.cluster_ip_addresses"},{"line_number":43,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_7a64bae4","line":40,"in_reply_to":"3f4b6375_cca7a7a7","updated":"2017-10-23 03:06:23.000000000","message":"Done","commit_id":"41220c302762594fc1e008e7c2d288b958fe7e90"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"ade3453c1f0a440b30ecd241ad771b57cb93ea6c","unresolved":false,"context_lines":[{"line_number":747,"context_line":""},{"line_number":748,"context_line":"    def check_status(self):"},{"line_number":749,"context_line":"        try:"},{"line_number":750,"context_line":"            cluster \u003d Cluster("},{"line_number":751,"context_line":"                self.conf.cassandra.cluster_ip_addresses"},{"line_number":752,"context_line":"            )"},{"line_number":753,"context_line":"            session \u003d cluster.connect(self.conf.cassandra.keyspace)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_ac8fcb21","line":750,"updated":"2017-10-20 04:17:38.000000000","message":"this one I like","commit_id":"41220c302762594fc1e008e7c2d288b958fe7e90"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"ade3453c1f0a440b30ecd241ad771b57cb93ea6c","unresolved":false,"context_lines":[{"line_number":748,"context_line":"    def check_status(self):"},{"line_number":749,"context_line":"        try:"},{"line_number":750,"context_line":"            cluster \u003d Cluster("},{"line_number":751,"context_line":"                self.conf.cassandra.cluster_ip_addresses"},{"line_number":752,"context_line":"            )"},{"line_number":753,"context_line":"            session \u003d cluster.connect(self.conf.cassandra.keyspace)"},{"line_number":754,"context_line":"            session.shutdown()"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_4c9cd75c","line":751,"updated":"2017-10-20 04:17:38.000000000","message":"You can still access self.conf because it is really `cfg.CONF` also check constructor for one side change you might want to take, or at least I suggest to take.","commit_id":"41220c302762594fc1e008e7c2d288b958fe7e90"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"2784910a21c3491ab28d2846ac141cd6fa9b52b6","unresolved":false,"context_lines":[{"line_number":748,"context_line":"    def check_status(self):"},{"line_number":749,"context_line":"        try:"},{"line_number":750,"context_line":"            cluster \u003d Cluster("},{"line_number":751,"context_line":"                self.conf.cassandra.cluster_ip_addresses"},{"line_number":752,"context_line":"            )"},{"line_number":753,"context_line":"            session \u003d cluster.connect(self.conf.cassandra.keyspace)"},{"line_number":754,"context_line":"            session.shutdown()"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_5ab45e35","line":751,"in_reply_to":"3f4b6375_4c9cd75c","updated":"2017-10-23 03:06:23.000000000","message":"Done","commit_id":"41220c302762594fc1e008e7c2d288b958fe7e90"}],"monasca_api/common/repositories/influxdb/metrics_repository.py":[{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"ade3453c1f0a440b30ecd241ad771b57cb93ea6c","unresolved":false,"context_lines":[{"line_number":905,"context_line":""},{"line_number":906,"context_line":"    def check_status(self):"},{"line_number":907,"context_line":"        try:"},{"line_number":908,"context_line":"            self.influxdb_client.request(\u0027/ping\u0027,"},{"line_number":909,"context_line":"                                         method\u003d\u0027HEAD\u0027,"},{"line_number":910,"context_line":"                                         expected_response_code\u003d204)"},{"line_number":911,"context_line":"        except Exception as ex:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_2c7e3b19","line":908,"updated":"2017-10-20 04:17:38.000000000","message":"In cassandra you\u0027re creating new Cluster instance, but in here you rely on the field influxdb_client this class instantiates. \n\nI still think that making these methods `static` would be much better idea - to avoid creating entire repo object where we actually need much leaner variant of it.  Check comments in repositories/metric_repository for further details.","commit_id":"41220c302762594fc1e008e7c2d288b958fe7e90"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"2784910a21c3491ab28d2846ac141cd6fa9b52b6","unresolved":false,"context_lines":[{"line_number":905,"context_line":""},{"line_number":906,"context_line":"    def check_status(self):"},{"line_number":907,"context_line":"        try:"},{"line_number":908,"context_line":"            self.influxdb_client.request(\u0027/ping\u0027,"},{"line_number":909,"context_line":"                                         method\u003d\u0027HEAD\u0027,"},{"line_number":910,"context_line":"                                         expected_response_code\u003d204)"},{"line_number":911,"context_line":"        except Exception as ex:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_3a85225b","line":908,"in_reply_to":"3f4b6375_2c7e3b19","updated":"2017-10-23 03:06:23.000000000","message":"Done","commit_id":"41220c302762594fc1e008e7c2d288b958fe7e90"}],"monasca_api/common/repositories/metrics_repository.py":[{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"ade3453c1f0a440b30ecd241ad771b57cb93ea6c","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                      offset, limit, start_timestamp, end_timestamp):"},{"line_number":58,"context_line":"        pass"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @abc.abstractmethod"},{"line_number":61,"context_line":"    def check_status(self):"},{"line_number":62,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_ec77033a","line":60,"updated":"2017-10-20 04:17:38.000000000","message":"Add @staticmethod above @abc.abstractmethod to achieve `abstract static method`","commit_id":"41220c302762594fc1e008e7c2d288b958fe7e90"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"2784910a21c3491ab28d2846ac141cd6fa9b52b6","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                      offset, limit, start_timestamp, end_timestamp):"},{"line_number":58,"context_line":"        pass"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @abc.abstractmethod"},{"line_number":61,"context_line":"    def check_status(self):"},{"line_number":62,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_1a88266f","line":60,"in_reply_to":"3f4b6375_ec77033a","updated":"2017-10-23 03:06:23.000000000","message":"Done","commit_id":"41220c302762594fc1e008e7c2d288b958fe7e90"}],"monasca_api/healthcheck/metrics_db_check.py":[{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"ade3453c1f0a440b30ecd241ad771b57cb93ea6c","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    def __init__(self):"},{"line_number":38,"context_line":"        try:"},{"line_number":39,"context_line":"            self._metrics_repo \u003d simport.load("},{"line_number":40,"context_line":"                cfg.CONF.repositories.metrics_driver)()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        except Exception as ex:"},{"line_number":43,"context_line":"            LOG.exception(ex)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_6cb2f3e8","line":40,"updated":"2017-10-20 04:17:38.000000000","message":"Once you introduce `abstract static method` concept you can import class without creating any object of it, or even retrieve the method directly and store the reference here, as in\n\n  getattr(simport.load(cfg.CONF.repositories_metric_drives), \u0027check_status\u0027)\n\nthere is no need for default value because we enforce that sub classes to have the implemention.","commit_id":"41220c302762594fc1e008e7c2d288b958fe7e90"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"2784910a21c3491ab28d2846ac141cd6fa9b52b6","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    def __init__(self):"},{"line_number":38,"context_line":"        try:"},{"line_number":39,"context_line":"            self._metrics_repo \u003d simport.load("},{"line_number":40,"context_line":"                cfg.CONF.repositories.metrics_driver)()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        except Exception as ex:"},{"line_number":43,"context_line":"            LOG.exception(ex)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_9a93f6a3","line":40,"in_reply_to":"3f4b6375_6cb2f3e8","updated":"2017-10-23 03:06:23.000000000","message":"Done","commit_id":"41220c302762594fc1e008e7c2d288b958fe7e90"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"ade3453c1f0a440b30ecd241ad771b57cb93ea6c","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        except Exception as ex:"},{"line_number":43,"context_line":"            LOG.exception(ex)"},{"line_number":44,"context_line":"            raise falcon.HTTPInternalServerError(\u0027Service unavailable\u0027,"},{"line_number":45,"context_line":"                                                 ex.message)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def health_check(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_ccc0c72d","line":44,"updated":"2017-10-20 04:17:38.000000000","message":"With this change this exception is bit invalid because any failure in import/retrieving the method will be an error on the code-level not on the accessibility of a service so I suggest to change it to be really 500 meaning that server has simply encountered really bad situation.","commit_id":"41220c302762594fc1e008e7c2d288b958fe7e90"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"2784910a21c3491ab28d2846ac141cd6fa9b52b6","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        except Exception as ex:"},{"line_number":43,"context_line":"            LOG.exception(ex)"},{"line_number":44,"context_line":"            raise falcon.HTTPInternalServerError(\u0027Service unavailable\u0027,"},{"line_number":45,"context_line":"                                                 ex.message)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def health_check(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_3ad3e262","line":44,"in_reply_to":"3f4b6375_ccc0c72d","updated":"2017-10-23 03:06:23.000000000","message":"Done","commit_id":"41220c302762594fc1e008e7c2d288b958fe7e90"}]}
