)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"b7f693d1401986c1cde015e894b65706b66f21a6","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     James Gu \u003cjgu@suse.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-09-26 22:56:06 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"support cassandra db in devstack"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Support Cassandra db and persister (Java) deployment in devstack."},{"line_number":10,"context_line":"Monasca rest API Cassandra integration for retrieving metric,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"7f515b1d_7dcff855","line":7,"updated":"2017-09-27 08:27:03.000000000","message":"The commit title should not start with lowercase latter.","commit_id":"d31c4eb4924610edaf3f2cb3d251925700a1c999"}],"devstack/files/cassandra/monasca_schema.cql":[{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"a3915f0ba71df00ace0ff30691a0024d8a73a4bc","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    value double,\r"},{"line_number":26,"context_line":"    value_meta text,\r"},{"line_number":27,"context_line":"    primary key (metric_id, time_stamp)\r"},{"line_number":28,"context_line":")\r"},{"line_number":29,"context_line":"WITH CLUSTERING ORDER BY (time_stamp ASC);\r"},{"line_number":30,"context_line":"\r"},{"line_number":31,"context_line":"create table monasca.metrics (\r"}],"source_content_type":"text/x-cassandra","patch_set":8,"id":"3f4b6375_314e0038","line":28,"updated":"2017-10-26 05:06:00.000000000","message":"Should a \"bucket\" be added. One issue with Cassandra is that as the number of samples per row approaches 100K, there is a performance cliff.","commit_id":"01ed388270eb46deacd01ca28410bc96ab59b909"},{"author":{"_account_id":24580,"name":"James Gu","email":"james.gu@microsoft.com","username":"jamesgu"},"change_message_id":"5d8a057bca032c1f67379c75f081766925a33842","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    value double,\r"},{"line_number":26,"context_line":"    value_meta text,\r"},{"line_number":27,"context_line":"    primary key (metric_id, time_stamp)\r"},{"line_number":28,"context_line":")\r"},{"line_number":29,"context_line":"WITH CLUSTERING ORDER BY (time_stamp ASC);\r"},{"line_number":30,"context_line":"\r"},{"line_number":31,"context_line":"create table monasca.metrics (\r"}],"source_content_type":"text/x-cassandra","patch_set":8,"id":"3f4b6375_71ceb85a","line":28,"in_reply_to":"3f4b6375_314e0038","updated":"2017-10-26 05:26:15.000000000","message":"I have seen more than 100k with no significant impact. But you are right there is a practical limit, some says it\u0027s 300k, some says it\u0027s 100k. I\u0027ll do some testing to see what that is for this specific table. I was hoping that the practical limit would be sufficient with a constrained collection interval and retention period combination.","commit_id":"01ed388270eb46deacd01ca28410bc96ab59b909"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"6cccbbb343e2a70151926487fd6022b801f063f6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\r"},{"line_number":2,"context_line":"// (C) Copyright 2017 SUSE LLC\r"},{"line_number":3,"context_line":"//\r"},{"line_number":4,"context_line":"// Licensed under the Apache License, Version 2.0 (the \"License\");\r"}],"source_content_type":"text/x-cassandra","patch_set":37,"id":"df87a7cf_baa4dc09","line":1,"updated":"2017-12-04 12:46:17.000000000","message":"Why empty line at the beginning of the file?","commit_id":"71cbae8881e93d6ffde2702cb1a386a0e29225d5"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"6cccbbb343e2a70151926487fd6022b801f063f6","unresolved":false,"context_lines":[{"line_number":77,"context_line":");\r"},{"line_number":78,"context_line":"\r"},{"line_number":79,"context_line":"create table monasca.alarm_state_history (\r"},{"line_number":80,"context_line":"        tenant_id text,\r"},{"line_number":81,"context_line":"        alarm_id text,\r"},{"line_number":82,"context_line":"        time_stamp timestamp,\r"},{"line_number":83,"context_line":"        metric text,\r"},{"line_number":84,"context_line":"        old_state text,\r"},{"line_number":85,"context_line":"        new_state text,\r"},{"line_number":86,"context_line":"        reason text,\r"},{"line_number":87,"context_line":"        reason_data text,\r"},{"line_number":88,"context_line":"        sub_alarms text,\r"},{"line_number":89,"context_line":"primary key ((tenant_id, alarm_id), time_stamp)\r"},{"line_number":90,"context_line":");\r"},{"line_number":91,"context_line":"\r"}],"source_content_type":"text/x-cassandra","patch_set":37,"id":"df87a7cf_1a3ce891","line":88,"range":{"start_line":80,"start_character":0,"end_line":88,"end_character":24},"updated":"2017-12-04 12:46:17.000000000","message":"Use same indentation for whole file.","commit_id":"71cbae8881e93d6ffde2702cb1a386a0e29225d5"},{"author":{"_account_id":6593,"name":"Dirk Mueller","email":"dirk@dmllr.de","username":"dmllr"},"change_message_id":"f75402290ecbd831dd9ea887546d7cef3f717946","unresolved":false,"context_lines":[{"line_number":15,"context_line":"\r"},{"line_number":16,"context_line":"\r"},{"line_number":17,"context_line":"drop schema if exists monasca;\r"},{"line_number":18,"context_line":"\r"},{"line_number":19,"context_line":"create schema monasca with replication \u003d { \u0027class\u0027 : \u0027SimpleStrategy\u0027, \u0027replication_factor\u0027 : 1 };\r"},{"line_number":20,"context_line":"\r"},{"line_number":21,"context_line":"create table monasca.measurements (\r"}],"source_content_type":"text/x-cassandra","patch_set":44,"id":"df87a7cf_5b746468","line":18,"updated":"2017-12-06 21:51:12.000000000","message":"I see no versioning here, not even in a comment. what if we ever have to change anything?","commit_id":"7d81d41d2c6fafd270aaede0db2c4feef360508f"},{"author":{"_account_id":24580,"name":"James Gu","email":"james.gu@microsoft.com","username":"jamesgu"},"change_message_id":"e55473239550f7bdde6550c84cfa3a453b8e46c3","unresolved":false,"context_lines":[{"line_number":15,"context_line":"\r"},{"line_number":16,"context_line":"\r"},{"line_number":17,"context_line":"drop schema if exists monasca;\r"},{"line_number":18,"context_line":"\r"},{"line_number":19,"context_line":"create schema monasca with replication \u003d { \u0027class\u0027 : \u0027SimpleStrategy\u0027, \u0027replication_factor\u0027 : 1 };\r"},{"line_number":20,"context_line":"\r"},{"line_number":21,"context_line":"create table monasca.measurements (\r"}],"source_content_type":"text/x-cassandra","patch_set":44,"id":"df87a7cf_7184e9b1","line":18,"in_reply_to":"df87a7cf_5b746468","updated":"2017-12-07 08:41:46.000000000","message":"I am adding a version in comments for devstack deployment. For production deployment, I don\u0027t think Monasca supports backwards compatibility on db schema version for vertica or influxdb yet. I imagine we potentially could even tag keyspace name with version number, or a more proper place in metadata. But backwards DB schema version support is  not in the scope of first Cassandra release.","commit_id":"7d81d41d2c6fafd270aaede0db2c4feef360508f"},{"author":{"_account_id":6593,"name":"Dirk Mueller","email":"dirk@dmllr.de","username":"dmllr"},"change_message_id":"f75402290ecbd831dd9ea887546d7cef3f717946","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\r"},{"line_number":17,"context_line":"drop schema if exists monasca;\r"},{"line_number":18,"context_line":"\r"},{"line_number":19,"context_line":"create schema monasca with replication \u003d { \u0027class\u0027 : \u0027SimpleStrategy\u0027, \u0027replication_factor\u0027 : 1 };\r"},{"line_number":20,"context_line":"\r"},{"line_number":21,"context_line":"create table monasca.measurements (\r"},{"line_number":22,"context_line":"    metric_id blob,\r"}],"source_content_type":"text/x-cassandra","patch_set":44,"id":"df87a7cf_1b6edc94","line":19,"updated":"2017-12-06 21:51:12.000000000","message":"should the replication factor really be hardcoded to 1?","commit_id":"7d81d41d2c6fafd270aaede0db2c4feef360508f"},{"author":{"_account_id":24580,"name":"James Gu","email":"james.gu@microsoft.com","username":"jamesgu"},"change_message_id":"e55473239550f7bdde6550c84cfa3a453b8e46c3","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\r"},{"line_number":17,"context_line":"drop schema if exists monasca;\r"},{"line_number":18,"context_line":"\r"},{"line_number":19,"context_line":"create schema monasca with replication \u003d { \u0027class\u0027 : \u0027SimpleStrategy\u0027, \u0027replication_factor\u0027 : 1 };\r"},{"line_number":20,"context_line":"\r"},{"line_number":21,"context_line":"create table monasca.measurements (\r"},{"line_number":22,"context_line":"    metric_id blob,\r"}],"source_content_type":"text/x-cassandra","patch_set":44,"id":"df87a7cf_f1f31972","line":19,"in_reply_to":"df87a7cf_1b6edc94","updated":"2017-12-07 08:41:46.000000000","message":"Yes, for devstack, the replication factor should be set to 1.","commit_id":"7d81d41d2c6fafd270aaede0db2c4feef360508f"}],"devstack/files/monasca-persister/persister.yml":[{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"d143a0edc208d6bb686819b432d52d5a02352ee5","unresolved":false,"context_lines":[{"line_number":71,"context_line":"  maxRequests: 32000"},{"line_number":72,"context_line":"  # socket time out in milli seconds when creating a new connection"},{"line_number":73,"context_line":"  connectionTimeout: 5000"},{"line_number":74,"context_line":"  # number of retries in upsert query. The retry interval is exponential, "},{"line_number":75,"context_line":"  #, i.e., 1, 2, 4, 8 ... seconds. Retry is blocking."},{"line_number":76,"context_line":"  maxWriteRetries: 8"},{"line_number":77,"context_line":"  maxDefinitionCacheSize: 20000000"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"ff5d4b2f_fed929f4","line":74,"updated":"2017-09-19 07:47:02.000000000","message":"nit: whitespace","commit_id":"a17a313a76415598891b8bcb5abfdeeab05b6b5b"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"6cccbbb343e2a70151926487fd6022b801f063f6","unresolved":false,"context_lines":[{"line_number":22,"context_line":"  batchSize: %MONASCA_PERSISTER_BATCH_SIZE%"},{"line_number":23,"context_line":"  numThreads: 1"},{"line_number":24,"context_line":"  maxBatchTime: %MONASCA_PERSISTER_MAX_BATCH_TIME%"},{"line_number":25,"context_line":"  commitBatchTime: 0"},{"line_number":26,"context_line":"# See http://kafka.apache.org/documentation.html#api for semantics and defaults."},{"line_number":27,"context_line":"  topic: alarm-state-transitions"},{"line_number":28,"context_line":"  groupId: 1_alarm-state-transitions"}],"source_content_type":"text/x-yaml","patch_set":37,"id":"df87a7cf_daba00dd","line":25,"range":{"start_line":25,"start_character":19,"end_line":25,"end_character":20},"updated":"2017-12-04 12:46:17.000000000","message":"Don\u0027t you want to use `%MONASCA_PERSISTER_COMMIT_BATCH_TIME%` here?","commit_id":"71cbae8881e93d6ffde2702cb1a386a0e29225d5"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"6cccbbb343e2a70151926487fd6022b801f063f6","unresolved":false,"context_lines":[{"line_number":30,"context_line":"  clientId : 1"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"metricConfiguration:"},{"line_number":33,"context_line":"  batchSize:  %MONASCA_PERSISTER_BATCH_SIZE%"},{"line_number":34,"context_line":"  numThreads: %MONASCA_PERSISTER_METRIC_THREADS%"},{"line_number":35,"context_line":"  maxBatchTime: %MONASCA_PERSISTER_MAX_BATCH_TIME%"},{"line_number":36,"context_line":"  commitBatchTime: %MONASCA_PERSISTER_COMMIT_BATCH_TIME%"}],"source_content_type":"text/x-yaml","patch_set":37,"id":"df87a7cf_3a776c3d","line":33,"range":{"start_line":33,"start_character":13,"end_line":33,"end_character":14},"updated":"2017-12-04 12:46:17.000000000","message":"Remove too many spaces","commit_id":"71cbae8881e93d6ffde2702cb1a386a0e29225d5"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"6cccbbb343e2a70151926487fd6022b801f063f6","unresolved":false,"context_lines":[{"line_number":63,"context_line":"cassandraDbConfiguration:"},{"line_number":64,"context_line":"  contactPoints:"},{"line_number":65,"context_line":"    - %CASSANDRADB_HOST%"},{"line_number":66,"context_line":"  port: 9042"},{"line_number":67,"context_line":"  user: mon_persister"},{"line_number":68,"context_line":"  password: password"},{"line_number":69,"context_line":"  keyspace: monasca"}],"source_content_type":"text/x-yaml","patch_set":37,"id":"df87a7cf_9a7a3822","line":66,"range":{"start_line":66,"start_character":8,"end_line":66,"end_character":12},"updated":"2017-12-04 12:46:17.000000000","message":"Use config variable","commit_id":"71cbae8881e93d6ffde2702cb1a386a0e29225d5"},{"author":{"_account_id":24580,"name":"James Gu","email":"james.gu@microsoft.com","username":"jamesgu"},"change_message_id":"096660f10e03c3b269028426479ebeccb9b529a2","unresolved":false,"context_lines":[{"line_number":63,"context_line":"cassandraDbConfiguration:"},{"line_number":64,"context_line":"  contactPoints:"},{"line_number":65,"context_line":"    - %CASSANDRADB_HOST%"},{"line_number":66,"context_line":"  port: 9042"},{"line_number":67,"context_line":"  user: mon_persister"},{"line_number":68,"context_line":"  password: password"},{"line_number":69,"context_line":"  keyspace: monasca"}],"source_content_type":"text/x-yaml","patch_set":37,"id":"df87a7cf_d40f2b2c","line":66,"range":{"start_line":66,"start_character":8,"end_line":66,"end_character":12},"in_reply_to":"df87a7cf_9a7a3822","updated":"2017-12-04 19:18:06.000000000","message":"I have reservation using config variables for the Cassandra port number. All port numbers are statically coded in the monasca devstack, such as kafka, zookeeper, influxdb. Only the server host is dynamic, i.e. configurable.","commit_id":"71cbae8881e93d6ffde2702cb1a386a0e29225d5"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"6cccbbb343e2a70151926487fd6022b801f063f6","unresolved":false,"context_lines":[{"line_number":70,"context_line":"  localDataCenter: datacenter1"},{"line_number":71,"context_line":"  maxConnections: 5"},{"line_number":72,"context_line":"  maxRequests: 2048"},{"line_number":73,"context_line":"  # socket time out in milli seconds when creating a new connection"},{"line_number":74,"context_line":"  connectionTimeout: 5000"},{"line_number":75,"context_line":"  # how long the driver waits for a response from server. Must be"},{"line_number":76,"context_line":"  # longer than the server side timeouts in the cassandra.yaml"}],"source_content_type":"text/x-yaml","patch_set":37,"id":"df87a7cf_3a020cb6","line":73,"range":{"start_line":73,"start_character":23,"end_line":73,"end_character":36},"updated":"2017-12-04 12:46:17.000000000","message":"milliseconds","commit_id":"71cbae8881e93d6ffde2702cb1a386a0e29225d5"}],"devstack/lib/persister.sh":[{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"d143a0edc208d6bb686819b432d52d5a02352ee5","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        s|%MONASCA_PERSISTER_APP_PORT%|${MONASCA_PERSISTER_APP_PORT}|g;"},{"line_number":197,"context_line":"        s|%MONASCA_PERSISTER_ADMIN_PORT%|${MONASCA_PERSISTER_ADMIN_PORT}|g;"},{"line_number":198,"context_line":"        s|%MONASCA_PERSISTER_LOG_DIR%|${MONASCA_PERSISTER_LOG_DIR}|g;"},{"line_number":199,"context_line":"        s|batchSize: 1000000|batchSize: 20|g;"},{"line_number":200,"context_line":"        s|maxBatchTime: 60|maxBatchTime: 10|g;"},{"line_number":201,"context_line":"    \" -i ${MONASCA_PERSISTER_CONF}"},{"line_number":202,"context_line":""}],"source_content_type":"text/x-sh","patch_set":3,"id":"ff5d4b2f_befcd13e","line":199,"updated":"2017-09-19 07:47:02.000000000","message":"I don\u0027t actually understand these two lines. You changes persister.yml held in this repository but now we you kind of rollbacking these changes ?","commit_id":"a17a313a76415598891b8bcb5abfdeeab05b6b5b"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"a23a2d10a789c28b25d5316a44951035432ff0fb","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        s|%MONASCA_PERSISTER_APP_PORT%|${MONASCA_PERSISTER_APP_PORT}|g;"},{"line_number":197,"context_line":"        s|%MONASCA_PERSISTER_ADMIN_PORT%|${MONASCA_PERSISTER_ADMIN_PORT}|g;"},{"line_number":198,"context_line":"        s|%MONASCA_PERSISTER_LOG_DIR%|${MONASCA_PERSISTER_LOG_DIR}|g;"},{"line_number":199,"context_line":"        s|batchSize: 1000000|batchSize: 20|g;"},{"line_number":200,"context_line":"        s|maxBatchTime: 60|maxBatchTime: 10|g;"},{"line_number":201,"context_line":"    \" -i ${MONASCA_PERSISTER_CONF}"},{"line_number":202,"context_line":""}],"source_content_type":"text/x-sh","patch_set":3,"id":"7f515b1d_88061a86","line":199,"in_reply_to":"7f515b1d_9f99c46f","updated":"2017-09-26 07:04:11.000000000","message":"Seems fine enough, nevertheless could you stick to the style of setting up this file like presented above ? With placeholders and stuff ? I\u0027d also suggest having variables to be able to modify these two variables prior to deployment if necessary.","commit_id":"a17a313a76415598891b8bcb5abfdeeab05b6b5b"},{"author":{"_account_id":24580,"name":"James Gu","email":"james.gu@microsoft.com","username":"jamesgu"},"change_message_id":"f5d7f9d718395d5998333adcecd92d33ffcdf496","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        s|%MONASCA_PERSISTER_APP_PORT%|${MONASCA_PERSISTER_APP_PORT}|g;"},{"line_number":197,"context_line":"        s|%MONASCA_PERSISTER_ADMIN_PORT%|${MONASCA_PERSISTER_ADMIN_PORT}|g;"},{"line_number":198,"context_line":"        s|%MONASCA_PERSISTER_LOG_DIR%|${MONASCA_PERSISTER_LOG_DIR}|g;"},{"line_number":199,"context_line":"        s|batchSize: 1000000|batchSize: 20|g;"},{"line_number":200,"context_line":"        s|maxBatchTime: 60|maxBatchTime: 10|g;"},{"line_number":201,"context_line":"    \" -i ${MONASCA_PERSISTER_CONF}"},{"line_number":202,"context_line":""}],"source_content_type":"text/x-sh","patch_set":3,"id":"7f515b1d_9f99c46f","line":199,"in_reply_to":"ff5d4b2f_befcd13e","updated":"2017-09-25 21:43:22.000000000","message":"persister by default ships with a large number for batch size and flush time interval for efficiency reasons in vertica and influxdb. Cassandra does not recommend using large batches for performance reasons. Here we reduce that to a smaller number that we have found to the sweet spot for Cassandra deployment.","commit_id":"a17a313a76415598891b8bcb5abfdeeab05b6b5b"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"76ef16191449bb92c114ee97783ce11d2d3a997b","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        iniset \"$MONASCA_PERSISTER_CONF\" repositories metrics_driver ${M_REPO_DRIVER_INFLUX}"},{"line_number":158,"context_line":"        iniset \"$MONASCA_PERSISTER_CONF\" repositories alarm_state_history_driver ${AH_REPO_DRIVER_INFLUX}"},{"line_number":159,"context_line":"    else"},{"line_number":160,"context_line":"        iniset \"$MONASCA_PERSISTER_CONF\" cassandra contact_points ${SERVICE_HOST}"},{"line_number":161,"context_line":"        iniset \"$MONASCA_PERSISTER_CONF\" repositories metrics_driver ${M_REPO_DRIVER_CASSANDRA}"},{"line_number":162,"context_line":"        iniset \"$MONASCA_PERSISTER_CONF\" repositories alarm_state_history_driver ${AH_REPO_DRIVER_CASSANDRA}"},{"line_number":163,"context_line":"    fi"}],"source_content_type":"text/x-sh","patch_set":8,"id":"7f515b1d_68175ea5","line":160,"updated":"2017-09-26 07:08:06.000000000","message":"Oh, you did so :D","commit_id":"01ed388270eb46deacd01ca28410bc96ab59b909"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"b7f693d1401986c1cde015e894b65706b66f21a6","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    # ensure fresh installation of configuration file"},{"line_number":186,"context_line":"    rm -rf $MONASCA_PERSISTER_CONF"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    if [[ \"${MONASCA_METRICS_DB,,}\" \u003d\u003d \u0027cassandra\u0027 ]]; then"},{"line_number":189,"context_line":"        MONASCA_PERSISTER_BATCH_SIZE\u003d20"},{"line_number":190,"context_line":"        MONASCA_PERSISTER_MAX_BATCH_TIME\u003d10"},{"line_number":191,"context_line":"    else"}],"source_content_type":"text/x-sh","patch_set":11,"id":"7f515b1d_7dca584e","line":188,"updated":"2017-09-27 08:27:03.000000000","message":"Move this bit after L56. There is somehow similar code to differentiate some variables between python and java impls, so it seems like nice place to this one there as well.","commit_id":"d31c4eb4924610edaf3f2cb3d251925700a1c999"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"6cccbbb343e2a70151926487fd6022b801f063f6","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        iniset \"$MONASCA_PERSISTER_CONF\" repositories alarm_state_history_driver ${AH_REPO_DRIVER_INFLUX}"},{"line_number":173,"context_line":"    elif [[ \"${MONASCA_METRICS_DB,,}\" \u003d\u003d \u0027cassandra\u0027 ]]; then"},{"line_number":174,"context_line":"        iniset \"$MONASCA_PERSISTER_CONF\" cassandra contact_points ${SERVICE_HOST}"},{"line_number":175,"context_line":"        iniset \"$MONASCA_PERSISTER_CONF\" cassandra port 9042"},{"line_number":176,"context_line":"        # iniset \"$MONASCA_PERSISTER_CONF\" cassandra user monasca"},{"line_number":177,"context_line":"        # iniset \"$MONASCA_PERSISTER_CONF\" cassandra password password"},{"line_number":178,"context_line":"        iniset \"$MONASCA_PERSISTER_CONF\" cassandra keyspace monasca"}],"source_content_type":"text/x-sh","patch_set":37,"id":"df87a7cf_ba985c6a","line":175,"range":{"start_line":175,"start_character":56,"end_line":175,"end_character":60},"updated":"2017-12-04 12:46:17.000000000","message":"Use config variable","commit_id":"71cbae8881e93d6ffde2702cb1a386a0e29225d5"}],"devstack/plugin.sh":[{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"2afc7939b306825712912d9a57dafa98e1456753","unresolved":false,"context_lines":[{"line_number":482,"context_line":"    sleep 15s"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"    export CQLSH_NO_BUNDLED\u003dtrue"},{"line_number":485,"context_line":"    #always needed for Monasca api"},{"line_number":486,"context_line":"    pip_install_gr cassandra-driver"},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"}"}],"source_content_type":"text/x-sh","patch_set":42,"id":"df87a7cf_b8dda815","line":485,"updated":"2017-12-05 14:49:40.000000000","message":"Add space after comment symbol","commit_id":"6d92070e61c92ff478f4c6af2cdcf9c20e7973a7"}],"devstack/settings":[{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"d143a0edc208d6bb686819b432d52d5a02352ee5","unresolved":false,"context_lines":[{"line_number":20,"context_line":"# of the Monasca API and the Monasca Persister. These variables can be set here"},{"line_number":21,"context_line":"# or in the DevStack local.conf file."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"MONASCA_API_IMPLEMENTATION_LANG\u003d${MONASCA_API_IMPLEMENTATION_LANG:-java}"},{"line_number":24,"context_line":"# MONASCA_API_IMPLEMENTATION_LANG\u003d${MONASCA_API_IMPLEMENTATION_LANG:-python}"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"MONASCA_PERSISTER_IMPLEMENTATION_LANG\u003d${MONASCA_PERSISTER_IMPLEMENTATION_LANG:-java}"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"ff5d4b2f_dead4532","line":23,"updated":"2017-09-19 07:47:02.000000000","message":"This will effectively swap default implemention to Java ? Are you sure this is wanted ? If not I prefer not to have it committed and for you to keep it only locally.","commit_id":"a17a313a76415598891b8bcb5abfdeeab05b6b5b"}],"docs/monasca-api-spec.md":[{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"2c26fab6c22b641c9b90009e6b10ff71715fcb97","unresolved":false,"context_lines":[{"line_number":771,"context_line":""},{"line_number":772,"context_line":""},{"line_number":773,"context_line":"## Offset"},{"line_number":774,"context_line":"Offsets can be either identifier offsets, timestamp offsets or combinational offsets that have an identifier part and timestamp part. The identifier can be an integer or string (including hexadecimal numbers) The use of either integer, string, timestamp or combination is determined by the resource being queried."},{"line_number":775,"context_line":""},{"line_number":776,"context_line":"For example, an integer offset would look like this:"},{"line_number":777,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":48,"id":"df87a7cf_acb39de8","line":774,"range":{"start_line":774,"start_character":207,"end_line":774,"end_character":208},"updated":"2017-12-11 15:48:27.000000000","message":"Period missing.","commit_id":"56549b616fedddb1c0c5dd70b3cbf111b116f210"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"2c26fab6c22b641c9b90009e6b10ff71715fcb97","unresolved":false,"context_lines":[{"line_number":771,"context_line":""},{"line_number":772,"context_line":""},{"line_number":773,"context_line":"## Offset"},{"line_number":774,"context_line":"Offsets can be either identifier offsets, timestamp offsets or combinational offsets that have an identifier part and timestamp part. The identifier can be an integer or string (including hexadecimal numbers) The use of either integer, string, timestamp or combination is determined by the resource being queried."},{"line_number":775,"context_line":""},{"line_number":776,"context_line":"For example, an integer offset would look like this:"},{"line_number":777,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":48,"id":"df87a7cf_2cea2dd7","line":774,"updated":"2017-12-11 15:48:27.000000000","message":"Please wrap modified lines.","commit_id":"56549b616fedddb1c0c5dd70b3cbf111b116f210"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"2c26fab6c22b641c9b90009e6b10ff71715fcb97","unresolved":false,"context_lines":[{"line_number":810,"context_line":""},{"line_number":811,"context_line":"```"},{"line_number":812,"context_line":"A combinational offset with hexdecimal id would look as follows:"},{"line_number":813,"context_line":"offset\u003d01ce0acc66131296c8a17294f39aee44ea8963ec_2104-01-01T00:00:01Z"},{"line_number":814,"context_line":""},{"line_number":815,"context_line":"Different resources use different offset types because of the internal implementation of different resources depends on different types of mechanisms for indexing and identifying resources. The type and form of the offsets for each resource can be determined by referring to the examples in each resource section below."},{"line_number":816,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":48,"id":"df87a7cf_acb71df5","line":813,"updated":"2017-12-11 15:48:27.000000000","message":"Please put this in the code block as examples above.","commit_id":"56549b616fedddb1c0c5dd70b3cbf111b116f210"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"2c26fab6c22b641c9b90009e6b10ff71715fcb97","unresolved":false,"context_lines":[{"line_number":816,"context_line":""},{"line_number":817,"context_line":"The offset is determined by the ID of the last element in the result list. Users wishing to manually create a query URL can use the ID of the last element in the previously returned result set as the offset. The proceeding result set will return all elements with an ID greater than the offset up to the limit. The automatically generated offset in the next link does exactly this; it uses the ID in the last element."},{"line_number":818,"context_line":""},{"line_number":819,"context_line":"For measurement and statistics resources backed up by the Cassandra database and InfluxDB (Python api only), the offset contains both ID and timestamp. The ID and timestamp part are determined by the ID and timestamp value of the last element in the previously returned result set respectively. The proceeding result set will return all elements with either an ID greater than the ID in the offset or the same ID as the offset but having a tempstamp value greater than the timestamp in the offset."},{"line_number":820,"context_line":""},{"line_number":821,"context_line":"The offset can take the form of an integer ID, string ID, timestamp, or a combination of both ID and timestamp, but the user should treat the offset as an opaque reference. When using offsets in manually generated URLs, users enter them as strings that look like integers, timestamps, or strings. Future releases may change the type and form of the offsets for each resource."},{"line_number":822,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":48,"id":"df87a7cf_0cf2c99a","line":819,"range":{"start_line":819,"start_character":151,"end_line":819,"end_character":497},"updated":"2017-12-11 15:48:27.000000000","message":"That has been explained in the preceding paragraph. Please remove.","commit_id":"56549b616fedddb1c0c5dd70b3cbf111b116f210"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"2c26fab6c22b641c9b90009e6b10ff71715fcb97","unresolved":false,"context_lines":[{"line_number":818,"context_line":""},{"line_number":819,"context_line":"For measurement and statistics resources backed up by the Cassandra database and InfluxDB (Python api only), the offset contains both ID and timestamp. The ID and timestamp part are determined by the ID and timestamp value of the last element in the previously returned result set respectively. The proceeding result set will return all elements with either an ID greater than the ID in the offset or the same ID as the offset but having a tempstamp value greater than the timestamp in the offset."},{"line_number":820,"context_line":""},{"line_number":821,"context_line":"The offset can take the form of an integer ID, string ID, timestamp, or a combination of both ID and timestamp, but the user should treat the offset as an opaque reference. When using offsets in manually generated URLs, users enter them as strings that look like integers, timestamps, or strings. Future releases may change the type and form of the offsets for each resource."},{"line_number":822,"context_line":""},{"line_number":823,"context_line":"## Limit"},{"line_number":824,"context_line":"The Monasca API has a server-wide default limit that is applied. Users may specify their own limit in the URL, but the server-wide limit may not be exceeded. The Monasca server-wide limit is configured in the Monasca API config file as maxQueryLimit. Users may specify a limit up to the maxQueryLimit."}],"source_content_type":"text/x-markdown","patch_set":48,"id":"df87a7cf_6c3cb52e","line":821,"updated":"2017-12-11 15:48:27.000000000","message":"Please wrap.","commit_id":"56549b616fedddb1c0c5dd70b3cbf111b116f210"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"2c26fab6c22b641c9b90009e6b10ff71715fcb97","unresolved":false,"context_lines":[{"line_number":1393,"context_line":"        },"},{"line_number":1394,"context_line":"        {"},{"line_number":1395,"context_line":"            \"rel\": \"next\","},{"line_number":1396,"context_line":"            \"href\": \"http://192.168.10.4:8070/v2.0/metrics/measurements?offset\u003d2015-03-03T05%3A24%3A55Z\u0026name\u003dcpu.system_perc\u0026dimensions\u003dhostname%3Adevstack\u0026start_time\u003d2015-03-00T00%3A00%3A00Z\""},{"line_number":1397,"context_line":"        }"},{"line_number":1398,"context_line":"    ],"},{"line_number":1399,"context_line":"    \"elements\": ["}],"source_content_type":"text/x-markdown","patch_set":48,"id":"df87a7cf_0c4e49c0","line":1396,"range":{"start_line":1396,"start_character":79,"end_line":1396,"end_character":103},"updated":"2017-12-11 15:48:27.000000000","message":"Please update the returned offset.","commit_id":"56549b616fedddb1c0c5dd70b3cbf111b116f210"}],"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":"d143a0edc208d6bb686819b432d52d5a02352ee5","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from monasca_api.common.repositories import metrics_repository"},{"line_number":23,"context_line":"from oslo_config import cfg"},{"line_number":24,"context_line":"from oslo_log import log"},{"line_number":25,"context_line":"from struct import unpack"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from monasca_common.rest import utils as rest_utils"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff5d4b2f_be585156","line":25,"updated":"2017-09-19 07:47:02.000000000","message":"This `struct` library is standard library of python hence it should added somewhere along 16-18 (alphabetical order). The approach in Openstack is that imports are grouped in 3 chunks:\n\n1) standard library imports (i.e. struct)\n2) program dependencies (i.e. oslo_log)\n3) local modules (i.e. onasca_api.common.repositories.exception).\n\nTherefore you\u0027ve chances to imports are wrong and should be partially rollbacked to previous state in the manner described above.","commit_id":"a17a313a76415598891b8bcb5abfdeeab05b6b5b"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"d143a0edc208d6bb686819b432d52d5a02352ee5","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"            self.measurement_sql \u003d (\u0027select time_stamp, value, value_meta \u0027"},{"line_number":69,"context_line":"                                    \u0027from measurements where %s %s %s %s\u0027)"},{"line_number":70,"context_line":"            self.metric_id_eq \u003d \u0027metric_id \u003d %s\u0027"},{"line_number":71,"context_line":"            self.metric_id_in \u003d \u0027metric_id in %s\u0027"},{"line_number":72,"context_line":"            self.offset_time_condition \u003d \"and times_tamp \u003e %s\""},{"line_number":73,"context_line":"            self.start_time_condition \u003d \"and time_stamp \u003e\u003d %s\""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff5d4b2f_fe0c8943","line":70,"updated":"2017-09-19 07:47:02.000000000","message":"A lot of strings that I suggest to move outside the repository (module level) or make them class variables. The reason is that we will need to execute all that several times for each instance of this repo. I\u0027d also suggest wrap all these preparations (self.session.prepare) into own method to boost up the readability.","commit_id":"a17a313a76415598891b8bcb5abfdeeab05b6b5b"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"d143a0edc208d6bb686819b432d52d5a02352ee5","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            self.measurement_sql \u003d (\u0027select time_stamp, value, value_meta \u0027"},{"line_number":69,"context_line":"                                    \u0027from measurements where %s %s %s %s\u0027)"},{"line_number":70,"context_line":"            self.metric_id_eq \u003d \u0027metric_id \u003d %s\u0027"},{"line_number":71,"context_line":"            self.metric_id_in \u003d \u0027metric_id in %s\u0027"},{"line_number":72,"context_line":"            self.offset_time_condition \u003d \"and times_tamp \u003e %s\""},{"line_number":73,"context_line":"            self.start_time_condition \u003d \"and time_stamp \u003e\u003d %s\""},{"line_number":74,"context_line":"            self.end_time_condition \u003d \"and time_stamp \u003c\u003d %s\""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff5d4b2f_3908fb26","line":71,"updated":"2017-09-19 07:47:02.000000000","message":"Lines 71-87 are for sure candidates to be module or at least class level variables. Just to have one instance of each per interpreter.","commit_id":"a17a313a76415598891b8bcb5abfdeeab05b6b5b"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"d143a0edc208d6bb686819b432d52d5a02352ee5","unresolved":false,"context_lines":[{"line_number":258,"context_line":"            conditions.append(\u0027\u0027)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        if (not name) or dimensions:"},{"line_number":261,"context_line":"            conditions.append(self.allow_filtering)"},{"line_number":262,"context_line":"        else:"},{"line_number":263,"context_line":"            conditions.append(\u0027\u0027)"},{"line_number":264,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff5d4b2f_d90e7f31","line":261,"updated":"2017-09-19 07:47:02.000000000","message":"In overall I like this idea of keeping the constant chunks of query in own variables. Just the approach I\u0027d change, for that see comments above.","commit_id":"a17a313a76415598891b8bcb5abfdeeab05b6b5b"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"76ef16191449bb92c114ee97783ce11d2d3a997b","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                rows \u003d self.session.execute("},{"line_number":132,"context_line":"                    self.dim_name_by_metric_stmt,"},{"line_number":133,"context_line":"                    [region, tenant_id, metric_name])"},{"line_number":134,"context_line":"                orderedList \u003d True"},{"line_number":135,"context_line":"            else:"},{"line_number":136,"context_line":"                rows \u003d self.session.execute("},{"line_number":137,"context_line":"                    self.dim_name_stmt,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f515b1d_a81c36c1","line":134,"updated":"2017-09-26 07:08:06.000000000","message":"That\u0027s not too python. The words in variables are separated with _ and lowercase","commit_id":"01ed388270eb46deacd01ca28410bc96ab59b909"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"6cccbbb343e2a70151926487fd6022b801f063f6","unresolved":false,"context_lines":[{"line_number":308,"context_line":"                futures.append(self.session.execute_async(query[0], query[1]))"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"        else:"},{"line_number":311,"context_line":"            query \u003d self._build_metrics_by_name_query(tenant_id, region, name, dimensions, None, start_time,"},{"line_number":312,"context_line":"                                                      end_time, dimension_offset, limit)"},{"line_number":313,"context_line":"            futures.append(self.session.execute_async(query[0], query[1]))"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"        return futures"},{"line_number":316,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"df87a7cf_1a1f086d","line":313,"range":{"start_line":311,"start_character":0,"end_line":313,"end_character":74},"updated":"2017-12-04 12:46:17.000000000","message":"I would prefer if you could move this up and execute it `if not dimensions:` and return there to make code more readable by returning fast.","commit_id":"71cbae8881e93d6ffde2702cb1a386a0e29225d5"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"2afc7939b306825712912d9a57dafa98e1456753","unresolved":false,"context_lines":[{"line_number":491,"context_line":""},{"line_number":492,"context_line":"        try:"},{"line_number":493,"context_line":"            if len(metrics) \u003e 1 and not group_by:"},{"line_number":494,"context_line":"                # ignore offset_id even it is set"},{"line_number":495,"context_line":"                count, series_list \u003d self._query_merge_measurements(metrics,"},{"line_number":496,"context_line":"                                                                    dimensions,"},{"line_number":497,"context_line":"                                                                    start_timestamp,"}],"source_content_type":"text/x-python","patch_set":42,"id":"df87a7cf_b112a308","line":494,"range":{"start_line":494,"start_character":35,"end_line":494,"end_character":49},"updated":"2017-12-05 14:49:40.000000000","message":"Not sure what you mean in this comment.","commit_id":"6d92070e61c92ff478f4c6af2cdcf9c20e7973a7"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"2afc7939b306825712912d9a57dafa98e1456753","unresolved":false,"context_lines":[{"line_number":737,"context_line":"            else:"},{"line_number":738,"context_line":"                grouped_metrics[key] \u003d [metric]"},{"line_number":739,"context_line":""},{"line_number":740,"context_line":"            metric[\u0027dimensions\u0027] \u003d display_dimensions"},{"line_number":741,"context_line":""},{"line_number":742,"context_line":"        grouped_metrics \u003d grouped_metrics.items()"},{"line_number":743,"context_line":"        grouped_metrics.sort(key\u003dlambda k: k[0])"}],"source_content_type":"text/x-python","patch_set":42,"id":"df87a7cf_ea126d58","line":740,"range":{"start_line":740,"start_character":12,"end_line":740,"end_character":53},"updated":"2017-12-05 14:49:40.000000000","message":"shouldn\u0027t this be before `if key in grouped_metrics:` in line 735","commit_id":"6d92070e61c92ff478f4c6af2cdcf9c20e7973a7"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"2afc7939b306825712912d9a57dafa98e1456753","unresolved":false,"context_lines":[{"line_number":796,"context_line":"            stat_start_time \u003d MetricsRepository._parse_time_string(first_measure[0])"},{"line_number":797,"context_line":""},{"line_number":798,"context_line":"            # skip blank intervals at the beginning"},{"line_number":799,"context_line":"            stat_start_time \u003d start_time + timedelta(seconds\u003d((stat_start_time - start_time).seconds / period) * period)"},{"line_number":800,"context_line":""},{"line_number":801,"context_line":"            stats_list \u003d []"},{"line_number":802,"context_line":"            stats_count \u003d 0"}],"source_content_type":"text/x-python","patch_set":42,"id":"df87a7cf_4a44b91b","line":799,"range":{"start_line":799,"start_character":12,"end_line":799,"end_character":27},"updated":"2017-12-05 14:49:40.000000000","message":"don\u0027t use same name like in line 796","commit_id":"6d92070e61c92ff478f4c6af2cdcf9c20e7973a7"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"2afc7939b306825712912d9a57dafa98e1456753","unresolved":false,"context_lines":[{"line_number":796,"context_line":"            stat_start_time \u003d MetricsRepository._parse_time_string(first_measure[0])"},{"line_number":797,"context_line":""},{"line_number":798,"context_line":"            # skip blank intervals at the beginning"},{"line_number":799,"context_line":"            stat_start_time \u003d start_time + timedelta(seconds\u003d((stat_start_time - start_time).seconds / period) * period)"},{"line_number":800,"context_line":""},{"line_number":801,"context_line":"            stats_list \u003d []"},{"line_number":802,"context_line":"            stats_count \u003d 0"}],"source_content_type":"text/x-python","patch_set":42,"id":"df87a7cf_0af471ce","line":799,"range":{"start_line":799,"start_character":101,"end_line":799,"end_character":119},"updated":"2017-12-05 14:49:40.000000000","message":"why you are doing division and multiplication with same variable at the same time?","commit_id":"6d92070e61c92ff478f4c6af2cdcf9c20e7973a7"},{"author":{"_account_id":24580,"name":"James Gu","email":"james.gu@microsoft.com","username":"jamesgu"},"change_message_id":"d1367ff0a4cd4241bc7fcc62ac43125a9e7660d7","unresolved":false,"context_lines":[{"line_number":796,"context_line":"            stat_start_time \u003d MetricsRepository._parse_time_string(first_measure[0])"},{"line_number":797,"context_line":""},{"line_number":798,"context_line":"            # skip blank intervals at the beginning"},{"line_number":799,"context_line":"            stat_start_time \u003d start_time + timedelta(seconds\u003d((stat_start_time - start_time).seconds / period) * period)"},{"line_number":800,"context_line":""},{"line_number":801,"context_line":"            stats_list \u003d []"},{"line_number":802,"context_line":"            stats_count \u003d 0"}],"source_content_type":"text/x-python","patch_set":42,"id":"df87a7cf_5b4d6d70","line":799,"range":{"start_line":799,"start_character":101,"end_line":799,"end_character":119},"in_reply_to":"df87a7cf_0af471ce","updated":"2017-12-05 17:44:22.000000000","message":"we need to find the start time of the stat period that is not empty. For the math part of integer multiplication and division, for example, 57 / 10 * 10 would be 50, that takes us back to the beginning of that stat period.","commit_id":"6d92070e61c92ff478f4c6af2cdcf9c20e7973a7"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"2afc7939b306825712912d9a57dafa98e1456753","unresolved":false,"context_lines":[{"line_number":811,"context_line":"                if (time_stamp - stat_start_time).seconds \u003e\u003d period:"},{"line_number":812,"context_line":""},{"line_number":813,"context_line":"                    stat \u003d MetricsRepository._create_stat(statistics, stat_start_time, stats_count,"},{"line_number":814,"context_line":"                                                          stats_sum, stats_min, stats_max)"},{"line_number":815,"context_line":""},{"line_number":816,"context_line":"                    stats_list.append(stat)"},{"line_number":817,"context_line":"                    limit -\u003d 1"}],"source_content_type":"text/x-python","patch_set":42,"id":"df87a7cf_6abc1ddc","line":814,"range":{"start_line":814,"start_character":69,"end_line":814,"end_character":89},"updated":"2017-12-05 14:49:40.000000000","message":"For the first time in this loop stats_min and stats_max are always same here because of line 804, is that what you want?","commit_id":"6d92070e61c92ff478f4c6af2cdcf9c20e7973a7"},{"author":{"_account_id":24580,"name":"James Gu","email":"james.gu@microsoft.com","username":"jamesgu"},"change_message_id":"d1367ff0a4cd4241bc7fcc62ac43125a9e7660d7","unresolved":false,"context_lines":[{"line_number":811,"context_line":"                if (time_stamp - stat_start_time).seconds \u003e\u003d period:"},{"line_number":812,"context_line":""},{"line_number":813,"context_line":"                    stat \u003d MetricsRepository._create_stat(statistics, stat_start_time, stats_count,"},{"line_number":814,"context_line":"                                                          stats_sum, stats_min, stats_max)"},{"line_number":815,"context_line":""},{"line_number":816,"context_line":"                    stats_list.append(stat)"},{"line_number":817,"context_line":"                    limit -\u003d 1"}],"source_content_type":"text/x-python","patch_set":42,"id":"df87a7cf_1b7e056b","line":814,"range":{"start_line":814,"start_character":69,"end_line":814,"end_character":89},"in_reply_to":"df87a7cf_6abc1ddc","updated":"2017-12-05 17:44:22.000000000","message":"yes. the initial input value is meant to set as the first mneasure\u0027s value. they got updated when loop through all the measurements in the series.","commit_id":"6d92070e61c92ff478f4c6af2cdcf9c20e7973a7"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"2afc7939b306825712912d9a57dafa98e1456753","unresolved":false,"context_lines":[{"line_number":820,"context_line":""},{"line_number":821,"context_line":"                    stats_sum \u003d 0"},{"line_number":822,"context_line":"                    stats_count \u003d 0"},{"line_number":823,"context_line":"                    stats_min \u003d value"},{"line_number":824,"context_line":"                    stats_max \u003d value"},{"line_number":825,"context_line":"                    stat_start_time +\u003d timedelta(seconds\u003dperiod)"},{"line_number":826,"context_line":""},{"line_number":827,"context_line":"                stats_count +\u003d 1"}],"source_content_type":"text/x-python","patch_set":42,"id":"df87a7cf_2a99356d","line":824,"range":{"start_line":823,"start_character":0,"end_line":824,"end_character":37},"updated":"2017-12-05 14:49:40.000000000","message":"why setting both to value if they will be overwritten in line 829-830?","commit_id":"6d92070e61c92ff478f4c6af2cdcf9c20e7973a7"},{"author":{"_account_id":24580,"name":"James Gu","email":"james.gu@microsoft.com","username":"jamesgu"},"change_message_id":"d1367ff0a4cd4241bc7fcc62ac43125a9e7660d7","unresolved":false,"context_lines":[{"line_number":820,"context_line":""},{"line_number":821,"context_line":"                    stats_sum \u003d 0"},{"line_number":822,"context_line":"                    stats_count \u003d 0"},{"line_number":823,"context_line":"                    stats_min \u003d value"},{"line_number":824,"context_line":"                    stats_max \u003d value"},{"line_number":825,"context_line":"                    stat_start_time +\u003d timedelta(seconds\u003dperiod)"},{"line_number":826,"context_line":""},{"line_number":827,"context_line":"                stats_count +\u003d 1"}],"source_content_type":"text/x-python","patch_set":42,"id":"df87a7cf_7bd6312a","line":824,"range":{"start_line":823,"start_character":0,"end_line":824,"end_character":37},"in_reply_to":"df87a7cf_2a99356d","updated":"2017-12-05 17:44:22.000000000","message":"stats min and max need to be reset to the first measurement\u0027s value when the next measurement is found to be in the next stat period. line 829 and 830 will still get the same value for stat min and max in this case. I am changing to add an else block to make the logic more clearly.","commit_id":"6d92070e61c92ff478f4c6af2cdcf9c20e7973a7"},{"author":{"_account_id":6593,"name":"Dirk Mueller","email":"dirk@dmllr.de","username":"dmllr"},"change_message_id":"f75402290ecbd831dd9ea887546d7cef3f717946","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            json_dim_value_list.sort(key\u003dlambda x: x[u\u0027dimension_value\u0027])"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"            return json_dim_value_list"},{"line_number":160,"context_line":"        except Exception as ex:"},{"line_number":161,"context_line":"            LOG.exception(ex)"},{"line_number":162,"context_line":"            raise exceptions.RepositoryException(ex)"},{"line_number":163,"context_line":""}],"source_content_type":"text/x-python","patch_set":44,"id":"df87a7cf_a000dd68","line":160,"updated":"2017-12-06 21:51:12.000000000","message":"put this after the last access to self.session rather than at the end","commit_id":"7d81d41d2c6fafd270aaede0db2c4feef360508f"},{"author":{"_account_id":6593,"name":"Dirk Mueller","email":"dirk@dmllr.de","username":"dmllr"},"change_message_id":"f75402290ecbd831dd9ea887546d7cef3f717946","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                json_dim_name_list.sort(key\u003dlambda x: x[u\u0027dimension_name\u0027])"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"            return json_dim_name_list"},{"line_number":187,"context_line":"        except Exception as ex:"},{"line_number":188,"context_line":"            LOG.exception(ex)"},{"line_number":189,"context_line":"            raise exceptions.RepositoryException(ex)"},{"line_number":190,"context_line":""}],"source_content_type":"text/x-python","patch_set":44,"id":"df87a7cf_20f4cd85","line":187,"updated":"2017-12-06 21:51:12.000000000","message":"put this after the last access to self.session rather than at the end?","commit_id":"7d81d41d2c6fafd270aaede0db2c4feef360508f"},{"author":{"_account_id":6593,"name":"Dirk Mueller","email":"dirk@dmllr.de","username":"dmllr"},"change_message_id":"f75402290ecbd831dd9ea887546d7cef3f717946","unresolved":false,"context_lines":[{"line_number":222,"context_line":"                                                       start_time\u003dNone, end_time\u003dNone))"},{"line_number":223,"context_line":"                    else:"},{"line_number":224,"context_line":"                        non_offset_futures.extend("},{"line_number":225,"context_line":"                            self._list_metrics_by_name(tenant_id, region, name, dimensions, offset_dimensions, limit,"},{"line_number":226,"context_line":"                                                       start_time\u003dNone, end_time\u003dNone))"},{"line_number":227,"context_line":"                else:"},{"line_number":228,"context_line":"                    non_offset_futures.extend("}],"source_content_type":"text/x-python","patch_set":44,"id":"df87a7cf_404471b7","line":225,"updated":"2017-12-06 21:51:12.000000000","message":"that complicated _list_metrics..() call here is exactly the same in both cases? call it only once and move the store of teh result inside the if condition","commit_id":"7d81d41d2c6fafd270aaede0db2c4feef360508f"},{"author":{"_account_id":24580,"name":"James Gu","email":"james.gu@microsoft.com","username":"jamesgu"},"change_message_id":"e55473239550f7bdde6550c84cfa3a453b8e46c3","unresolved":false,"context_lines":[{"line_number":222,"context_line":"                                                       start_time\u003dNone, end_time\u003dNone))"},{"line_number":223,"context_line":"                    else:"},{"line_number":224,"context_line":"                        non_offset_futures.extend("},{"line_number":225,"context_line":"                            self._list_metrics_by_name(tenant_id, region, name, dimensions, offset_dimensions, limit,"},{"line_number":226,"context_line":"                                                       start_time\u003dNone, end_time\u003dNone))"},{"line_number":227,"context_line":"                else:"},{"line_number":228,"context_line":"                    non_offset_futures.extend("}],"source_content_type":"text/x-python","patch_set":44,"id":"df87a7cf_8bd931f4","line":225,"in_reply_to":"df87a7cf_404471b7","updated":"2017-12-07 08:41:46.000000000","message":"Done","commit_id":"7d81d41d2c6fafd270aaede0db2c4feef360508f"},{"author":{"_account_id":6593,"name":"Dirk Mueller","email":"dirk@dmllr.de","username":"dmllr"},"change_message_id":"f75402290ecbd831dd9ea887546d7cef3f717946","unresolved":false,"context_lines":[{"line_number":241,"context_line":"            for future in non_offset_futures:"},{"line_number":242,"context_line":"                rows \u003d future.result()"},{"line_number":243,"context_line":"                for row in rows:"},{"line_number":244,"context_line":"                    metric_list.append(self._process_metric_row(row))"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"            return metric_list"},{"line_number":247,"context_line":""}],"source_content_type":"text/x-python","patch_set":44,"id":"df87a7cf_e02ee541","line":244,"updated":"2017-12-06 21:51:12.000000000","message":"metric_list.extend((self._process_metric_row(r) for r in future.result())","commit_id":"7d81d41d2c6fafd270aaede0db2c4feef360508f"},{"author":{"_account_id":6593,"name":"Dirk Mueller","email":"dirk@dmllr.de","username":"dmllr"},"change_message_id":"f75402290ecbd831dd9ea887546d7cef3f717946","unresolved":false,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"            return metric_list"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        except Exception as ex:"},{"line_number":249,"context_line":"            LOG.exception(ex)"},{"line_number":250,"context_line":"            raise exceptions.RepositoryException(ex)"},{"line_number":251,"context_line":""}],"source_content_type":"text/x-python","patch_set":44,"id":"df87a7cf_206e0d95","line":248,"updated":"2017-12-06 21:51:12.000000000","message":"this is a fairly broad exception statement, can the try/exception clause be made more specific and covering fewer lines of code?","commit_id":"7d81d41d2c6fafd270aaede0db2c4feef360508f"},{"author":{"_account_id":24580,"name":"James Gu","email":"james.gu@microsoft.com","username":"jamesgu"},"change_message_id":"e55473239550f7bdde6550c84cfa3a453b8e46c3","unresolved":false,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"            return metric_list"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        except Exception as ex:"},{"line_number":249,"context_line":"            LOG.exception(ex)"},{"line_number":250,"context_line":"            raise exceptions.RepositoryException(ex)"},{"line_number":251,"context_line":""}],"source_content_type":"text/x-python","patch_set":44,"id":"df87a7cf_85d922f4","line":248,"in_reply_to":"df87a7cf_206e0d95","updated":"2017-12-07 08:41:46.000000000","message":"understood the request. Was following existing influxdb repo which try/catch and throw repo exception. there are a number of different type of Cassandra exception that could be raised, but the handling should be the same and it seems that the api expects this method to rethrow them as repoexception.","commit_id":"7d81d41d2c6fafd270aaede0db2c4feef360508f"},{"author":{"_account_id":6593,"name":"Dirk Mueller","email":"dirk@dmllr.de","username":"dmllr"},"change_message_id":"f75402290ecbd831dd9ea887546d7cef3f717946","unresolved":false,"context_lines":[{"line_number":276,"context_line":"            return futures"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"        wildcard_dimensions \u003d []"},{"line_number":279,"context_line":"        for key, value in dimensions.items():"},{"line_number":280,"context_line":"            if not value:"},{"line_number":281,"context_line":"                wildcard_dimensions.append(key)"},{"line_number":282,"context_line":""}],"source_content_type":"text/x-python","patch_set":44,"id":"df87a7cf_a0dd3d43","line":279,"updated":"2017-12-06 21:51:12.000000000","message":"something more descriptive than key and value would be useful here, but that seems to be in several places in this file (also sometimes k,v is used sometimes key,value)","commit_id":"7d81d41d2c6fafd270aaede0db2c4feef360508f"},{"author":{"_account_id":6593,"name":"Dirk Mueller","email":"dirk@dmllr.de","username":"dmllr"},"change_message_id":"f75402290ecbd831dd9ea887546d7cef3f717946","unresolved":false,"context_lines":[{"line_number":328,"context_line":"                                     limit):"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"        conditions \u003d [REGION_EQ, TENANT_EQ]"},{"line_number":331,"context_line":"        params \u003d [region, tenant_id.encode(\u0027utf8\u0027)]"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        if name:"},{"line_number":334,"context_line":"            conditions.append(METRIC_NAME_EQ)"}],"source_content_type":"text/x-python","patch_set":44,"id":"df87a7cf_607735d6","line":331,"updated":"2017-12-06 21:51:12.000000000","message":"no quoting here?!","commit_id":"7d81d41d2c6fafd270aaede0db2c4feef360508f"},{"author":{"_account_id":24580,"name":"James Gu","email":"james.gu@microsoft.com","username":"jamesgu"},"change_message_id":"e55473239550f7bdde6550c84cfa3a453b8e46c3","unresolved":false,"context_lines":[{"line_number":328,"context_line":"                                     limit):"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"        conditions \u003d [REGION_EQ, TENANT_EQ]"},{"line_number":331,"context_line":"        params \u003d [region, tenant_id.encode(\u0027utf8\u0027)]"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        if name:"},{"line_number":334,"context_line":"            conditions.append(METRIC_NAME_EQ)"}],"source_content_type":"text/x-python","patch_set":44,"id":"df87a7cf_8587e2b5","line":331,"in_reply_to":"df87a7cf_607735d6","updated":"2017-12-07 08:41:46.000000000","message":"not sure I fully understand the question. I don\u0027t think quotes are needed. params are passed as string objects to bind the parameterized statement.","commit_id":"7d81d41d2c6fafd270aaede0db2c4feef360508f"},{"author":{"_account_id":6593,"name":"Dirk Mueller","email":"dirk@dmllr.de","username":"dmllr"},"change_message_id":"8c9cb85f3b229849e11321e9a2f0f6a289743d4f","unresolved":false,"context_lines":[{"line_number":328,"context_line":"                                     limit):"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"        conditions \u003d [REGION_EQ, TENANT_EQ]"},{"line_number":331,"context_line":"        params \u003d [region, tenant_id.encode(\u0027utf8\u0027)]"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        if name:"},{"line_number":334,"context_line":"            conditions.append(METRIC_NAME_EQ)"}],"source_content_type":"text/x-python","patch_set":44,"id":"df87a7cf_5fd8bd1c","line":331,"in_reply_to":"df87a7cf_8587e2b5","updated":"2017-12-07 14:46:37.000000000","message":"Ok, thanks for the clarification!","commit_id":"7d81d41d2c6fafd270aaede0db2c4feef360508f"},{"author":{"_account_id":6593,"name":"Dirk Mueller","email":"dirk@dmllr.de","username":"dmllr"},"change_message_id":"f75402290ecbd831dd9ea887546d7cef3f717946","unresolved":false,"context_lines":[{"line_number":541,"context_line":"            series_list \u003d []"},{"line_number":542,"context_line":"            remaining \u003d limit"},{"line_number":543,"context_line":"            for index, sublist in enumerate(grouped_metrics):"},{"line_number":544,"context_line":"                if index \u003d\u003d 0:"},{"line_number":545,"context_line":"                    sub_count, results \u003d self._query_merge_measurements(sublist,"},{"line_number":546,"context_line":"                                                                        sublist[0][\u0027dimensions\u0027],"},{"line_number":547,"context_line":"                                                                        start_timestamp,"}],"source_content_type":"text/x-python","patch_set":44,"id":"df87a7cf_6025f5c1","line":544,"updated":"2017-12-06 21:51:12.000000000","message":"is there a way to make this enumerate / index more elegant by pulling the \"first\" case outside the loop?","commit_id":"7d81d41d2c6fafd270aaede0db2c4feef360508f"},{"author":{"_account_id":6593,"name":"Dirk Mueller","email":"dirk@dmllr.de","username":"dmllr"},"change_message_id":"f75402290ecbd831dd9ea887546d7cef3f717946","unresolved":false,"context_lines":[{"line_number":565,"context_line":""},{"line_number":566,"context_line":"            return series_list"},{"line_number":567,"context_line":""},{"line_number":568,"context_line":"        except Exception as ex:"},{"line_number":569,"context_line":"            LOG.exception(ex)"},{"line_number":570,"context_line":"            raise exceptions.RepositoryException(ex)"},{"line_number":571,"context_line":""}],"source_content_type":"text/x-python","patch_set":44,"id":"df87a7cf_fb2bf87e","line":568,"updated":"2017-12-06 21:51:12.000000000","message":"whats the reason for this toplevel exception here?","commit_id":"7d81d41d2c6fafd270aaede0db2c4feef360508f"},{"author":{"_account_id":24580,"name":"James Gu","email":"james.gu@microsoft.com","username":"jamesgu"},"change_message_id":"e55473239550f7bdde6550c84cfa3a453b8e46c3","unresolved":false,"context_lines":[{"line_number":565,"context_line":""},{"line_number":566,"context_line":"            return series_list"},{"line_number":567,"context_line":""},{"line_number":568,"context_line":"        except Exception as ex:"},{"line_number":569,"context_line":"            LOG.exception(ex)"},{"line_number":570,"context_line":"            raise exceptions.RepositoryException(ex)"},{"line_number":571,"context_line":""}],"source_content_type":"text/x-python","patch_set":44,"id":"df87a7cf_203364f8","line":568,"in_reply_to":"df87a7cf_fb2bf87e","updated":"2017-12-07 08:41:46.000000000","message":"This is the catch all and rethrow as repoexception similar to the influxdb repo class. I assume this is what the repo api is expected.","commit_id":"7d81d41d2c6fafd270aaede0db2c4feef360508f"},{"author":{"_account_id":6593,"name":"Dirk Mueller","email":"dirk@dmllr.de","username":"dmllr"},"change_message_id":"f75402290ecbd831dd9ea887546d7cef3f717946","unresolved":false,"context_lines":[{"line_number":665,"context_line":"            params.append(limit)"},{"line_number":666,"context_line":"        else:"},{"line_number":667,"context_line":"            conditions.append(\u0027\u0027)"},{"line_number":668,"context_line":""},{"line_number":669,"context_line":"        if fetch_size:"},{"line_number":670,"context_line":"            return SimpleStatement(MEASUREMENT_LIST_CQL % tuple(conditions), fetch_size\u003dfetch_size), params"},{"line_number":671,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":44,"id":"df87a7cf_db9b94c6","line":668,"updated":"2017-12-06 21:51:12.000000000","message":"this looks like code duplication to the previous case where conditions/params are built. can this be split out into a single function and used in both places?","commit_id":"7d81d41d2c6fafd270aaede0db2c4feef360508f"}],"monasca_api/common/repositories/influxdb/metrics_repository.py":[{"author":{"_account_id":6593,"name":"Dirk Mueller","email":"dirk@dmllr.de","username":"dmllr"},"change_message_id":"f75402290ecbd831dd9ea887546d7cef3f717946","unresolved":false,"context_lines":[{"line_number":533,"context_line":"        offset_timestamp \u003d offset"},{"line_number":534,"context_line":""},{"line_number":535,"context_line":"        if offset:"},{"line_number":536,"context_line":"            offset_tuple \u003d offset.split(\u0027_\u0027)"},{"line_number":537,"context_line":"            if len(offset_tuple) \u003e 1:"},{"line_number":538,"context_line":"                offset_id \u003d int(offset_tuple[0])"},{"line_number":539,"context_line":"                offset_timestamp \u003d offset_tuple[1]"}],"source_content_type":"text/x-python","patch_set":44,"id":"df87a7cf_80c7d945","line":536,"updated":"2017-12-06 21:51:12.000000000","message":"split doesn\u0027t really return a tuple so that naming seems confusing","commit_id":"7d81d41d2c6fafd270aaede0db2c4feef360508f"},{"author":{"_account_id":6593,"name":"Dirk Mueller","email":"dirk@dmllr.de","username":"dmllr"},"change_message_id":"f75402290ecbd831dd9ea887546d7cef3f717946","unresolved":false,"context_lines":[{"line_number":534,"context_line":""},{"line_number":535,"context_line":"        if offset:"},{"line_number":536,"context_line":"            offset_tuple \u003d offset.split(\u0027_\u0027)"},{"line_number":537,"context_line":"            if len(offset_tuple) \u003e 1:"},{"line_number":538,"context_line":"                offset_id \u003d int(offset_tuple[0])"},{"line_number":539,"context_line":"                offset_timestamp \u003d offset_tuple[1]"},{"line_number":540,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":44,"id":"df87a7cf_a0b21de5","line":537,"updated":"2017-12-06 21:51:12.000000000","message":"if \"_\" in offset:\n      offset_id_str, _, offset_timestamp \u003d offset.partition(\u0027_\u0027)\n      offset_id \u003d int(offset_id_str)","commit_id":"7d81d41d2c6fafd270aaede0db2c4feef360508f"},{"author":{"_account_id":24580,"name":"James Gu","email":"james.gu@microsoft.com","username":"jamesgu"},"change_message_id":"e55473239550f7bdde6550c84cfa3a453b8e46c3","unresolved":false,"context_lines":[{"line_number":534,"context_line":""},{"line_number":535,"context_line":"        if offset:"},{"line_number":536,"context_line":"            offset_tuple \u003d offset.split(\u0027_\u0027)"},{"line_number":537,"context_line":"            if len(offset_tuple) \u003e 1:"},{"line_number":538,"context_line":"                offset_id \u003d int(offset_tuple[0])"},{"line_number":539,"context_line":"                offset_timestamp \u003d offset_tuple[1]"},{"line_number":540,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":44,"id":"df87a7cf_5160c501","line":537,"in_reply_to":"df87a7cf_a0b21de5","updated":"2017-12-07 08:41:46.000000000","message":"Done!","commit_id":"7d81d41d2c6fafd270aaede0db2c4feef360508f"}],"monasca_api/conf/cassandra.py":[{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"d143a0edc208d6bb686819b432d52d5a02352ee5","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from oslo_config import types"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"cassandra_opts \u003d ["},{"line_number":22,"context_line":"    cfg.ListOpt(\u0027contactPoints\u0027,"},{"line_number":23,"context_line":"                default\u003d[\u0027127.0.0.1\u0027],"},{"line_number":24,"context_line":"                item_type\u003dtypes.HostAddress(),"},{"line_number":25,"context_line":"                help\u003d\u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff5d4b2f_d9379fe3","line":22,"updated":"2017-09-19 07:47:02.000000000","message":"I don\u0027t like this. You\u0027re deleting the option. I would add deprecation note (see oslo_config.cfg.Opt for keywords) and mark cluster_ip_address as such. After that you can add new configuration option.\n\nBTW, and that\u0027s nit, I\u0027d name it `contact_points`. That\u0027s bit more pythonic ;).","commit_id":"a17a313a76415598891b8bcb5abfdeeab05b6b5b"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"a23a2d10a789c28b25d5316a44951035432ff0fb","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from oslo_config import types"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"cassandra_opts \u003d ["},{"line_number":22,"context_line":"    cfg.ListOpt(\u0027contactPoints\u0027,"},{"line_number":23,"context_line":"                default\u003d[\u0027127.0.0.1\u0027],"},{"line_number":24,"context_line":"                item_type\u003dtypes.HostAddress(),"},{"line_number":25,"context_line":"                help\u003d\u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f515b1d_c8f3f29d","line":22,"in_reply_to":"7f515b1d_852e0e41","updated":"2017-09-26 07:04:11.000000000","message":"Hmm...actually I think you might be right that it hasn\u0027t been tried. Let\u0027s keep it but make it like `contact_points`","commit_id":"a17a313a76415598891b8bcb5abfdeeab05b6b5b"},{"author":{"_account_id":24580,"name":"James Gu","email":"james.gu@microsoft.com","username":"jamesgu"},"change_message_id":"f5d7f9d718395d5998333adcecd92d33ffcdf496","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from oslo_config import types"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"cassandra_opts \u003d ["},{"line_number":22,"context_line":"    cfg.ListOpt(\u0027contactPoints\u0027,"},{"line_number":23,"context_line":"                default\u003d[\u0027127.0.0.1\u0027],"},{"line_number":24,"context_line":"                item_type\u003dtypes.HostAddress(),"},{"line_number":25,"context_line":"                help\u003d\u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f515b1d_852e0e41","line":22,"in_reply_to":"ff5d4b2f_d9379fe3","updated":"2017-09-25 21:43:22.000000000","message":"I Like the idea to change to contact_points for pythonix.\nabout deprecating cluster_ip_addresses, it is not really option known by Cassandra. So I am replacing it with the Cassandra term contact points. But Cassandra module in Monasca was really completed or used by any. I do nto see worth the trouble going thru and mark it as deprecated and honestly it will be just more confusing for all who will be just see the first Cassandra release.","commit_id":"a17a313a76415598891b8bcb5abfdeeab05b6b5b"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"d143a0edc208d6bb686819b432d52d5a02352ee5","unresolved":false,"context_lines":[{"line_number":25,"context_line":"                help\u003d\u0027\u0027\u0027"},{"line_number":26,"context_line":"Comma separated list of Cassandra node IP addresses"},{"line_number":27,"context_line":"\u0027\u0027\u0027),"},{"line_number":28,"context_line":"    cfg.StrOpt(\u0027keyspace\u0027, default\u003d\u0027monasca\u0027,"},{"line_number":29,"context_line":"               help\u003d\u0027\u0027\u0027"},{"line_number":30,"context_line":"keyspace where metric are stored"},{"line_number":31,"context_line":"\u0027\u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff5d4b2f_993127f0","line":28,"updated":"2017-09-19 07:47:02.000000000","message":"Will it be used ?","commit_id":"a17a313a76415598891b8bcb5abfdeeab05b6b5b"},{"author":{"_account_id":24580,"name":"James Gu","email":"james.gu@microsoft.com","username":"jamesgu"},"change_message_id":"f5d7f9d718395d5998333adcecd92d33ffcdf496","unresolved":false,"context_lines":[{"line_number":25,"context_line":"                help\u003d\u0027\u0027\u0027"},{"line_number":26,"context_line":"Comma separated list of Cassandra node IP addresses"},{"line_number":27,"context_line":"\u0027\u0027\u0027),"},{"line_number":28,"context_line":"    cfg.StrOpt(\u0027keyspace\u0027, default\u003d\u0027monasca\u0027,"},{"line_number":29,"context_line":"               help\u003d\u0027\u0027\u0027"},{"line_number":30,"context_line":"keyspace where metric are stored"},{"line_number":31,"context_line":"\u0027\u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f515b1d_c22e3ca4","line":28,"in_reply_to":"ff5d4b2f_993127f0","updated":"2017-09-25 21:43:22.000000000","message":"Yes","commit_id":"a17a313a76415598891b8bcb5abfdeeab05b6b5b"},{"author":{"_account_id":6593,"name":"Dirk Mueller","email":"dirk@dmllr.de","username":"dmllr"},"change_message_id":"f75402290ecbd831dd9ea887546d7cef3f717946","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from oslo_config import types"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"cassandra_opts \u003d ["},{"line_number":22,"context_line":"    cfg.ListOpt(\u0027contact_points\u0027,"},{"line_number":23,"context_line":"                default\u003d[\u0027127.0.0.1\u0027],"},{"line_number":24,"context_line":"                item_type\u003dtypes.HostAddress(),"},{"line_number":25,"context_line":"                help\u003d\u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":44,"id":"df87a7cf_a083fdcb","line":22,"updated":"2017-12-06 21:51:12.000000000","message":"add the old name back as deprecatedoption?","commit_id":"7d81d41d2c6fafd270aaede0db2c4feef360508f"},{"author":{"_account_id":24580,"name":"James Gu","email":"james.gu@microsoft.com","username":"jamesgu"},"change_message_id":"e55473239550f7bdde6550c84cfa3a453b8e46c3","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from oslo_config import types"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"cassandra_opts \u003d ["},{"line_number":22,"context_line":"    cfg.ListOpt(\u0027contact_points\u0027,"},{"line_number":23,"context_line":"                default\u003d[\u0027127.0.0.1\u0027],"},{"line_number":24,"context_line":"                item_type\u003dtypes.HostAddress(),"},{"line_number":25,"context_line":"                help\u003d\u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":44,"id":"df87a7cf_31a74152","line":22,"in_reply_to":"df87a7cf_a083fdcb","updated":"2017-12-07 08:41:46.000000000","message":"Cassandra wasn\u0027t ever completed or released in the previous try. I think we may not want to cause more confusion using deprecated option.","commit_id":"7d81d41d2c6fafd270aaede0db2c4feef360508f"}],"monasca_api/tests/test_repositories.py":[{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"2afc7939b306825712912d9a57dafa98e1456753","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 Cray Inc. All Rights Reserved."},{"line_number":2,"context_line":"# (C) Copyright 2016-2017 Hewlett Packard Enterprise Development LP"},{"line_number":3,"context_line":"# Copyright 2017 Fujitsu LIMITED"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":7,"context_line":"# a copy of the License at"}],"source_content_type":"text/x-python","patch_set":42,"id":"df87a7cf_2a9ff503","line":4,"updated":"2017-12-05 14:49:40.000000000","message":"Add Suse Copyright","commit_id":"6d92070e61c92ff478f4c6af2cdcf9c20e7973a7"},{"author":{"_account_id":6593,"name":"Dirk Mueller","email":"dirk@dmllr.de","username":"dmllr"},"change_message_id":"f75402290ecbd831dd9ea887546d7cef3f717946","unresolved":false,"context_lines":[{"line_number":400,"context_line":"            merge_metrics_flag\u003dTrue,"},{"line_number":401,"context_line":"            group_by\u003dNone)"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"        # TODO(Cassandra) shorted out temporarily until the api is implemented in Cassandra"},{"line_number":404,"context_line":"        self.assertNotEqual(["},{"line_number":405,"context_line":"            {"},{"line_number":406,"context_line":"                u\u0027dimensions\u0027: None,"}],"source_content_type":"text/x-python","patch_set":44,"id":"df87a7cf_404b11af","line":403,"updated":"2017-12-06 21:51:12.000000000","message":"ExpectedFail","commit_id":"7d81d41d2c6fafd270aaede0db2c4feef360508f"},{"author":{"_account_id":24580,"name":"James Gu","email":"james.gu@microsoft.com","username":"jamesgu"},"change_message_id":"e55473239550f7bdde6550c84cfa3a453b8e46c3","unresolved":false,"context_lines":[{"line_number":400,"context_line":"            merge_metrics_flag\u003dTrue,"},{"line_number":401,"context_line":"            group_by\u003dNone)"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"        # TODO(Cassandra) shorted out temporarily until the api is implemented in Cassandra"},{"line_number":404,"context_line":"        self.assertNotEqual(["},{"line_number":405,"context_line":"            {"},{"line_number":406,"context_line":"                u\u0027dimensions\u0027: None,"}],"source_content_type":"text/x-python","patch_set":44,"id":"df87a7cf_d14cd59f","line":403,"in_reply_to":"df87a7cf_404b11af","updated":"2017-12-07 08:41:46.000000000","message":"Nice catch! I forgot to turn back on the test case.","commit_id":"7d81d41d2c6fafd270aaede0db2c4feef360508f"},{"author":{"_account_id":6593,"name":"Dirk Mueller","email":"dirk@dmllr.de","username":"dmllr"},"change_message_id":"f75402290ecbd831dd9ea887546d7cef3f717946","unresolved":false,"context_lines":[{"line_number":460,"context_line":"                                    [\u002709c2f5e7-9245-4b7e-bce1-01ed64a3c63d\u0027],"},{"line_number":461,"context_line":"                                    None, None, None, None)"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"        # TODO(Cassandra) shorted out temporarily until the api is implemented in Cassandra"},{"line_number":464,"context_line":"        self.assertNotEqual("},{"line_number":465,"context_line":"            [{"},{"line_number":466,"context_line":"                u\u0027id\u0027: u\u00271463659107000\u0027,"}],"source_content_type":"text/x-python","patch_set":44,"id":"df87a7cf_c05f2170","line":463,"updated":"2017-12-06 21:51:12.000000000","message":"wrap this in an expectedFail instead.","commit_id":"7d81d41d2c6fafd270aaede0db2c4feef360508f"}],"monasca_api/v2/reference/helpers.py":[{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"76ef16191449bb92c114ee97783ce11d2d3a997b","unresolved":false,"context_lines":[{"line_number":551,"context_line":"                                u\u0027href\u0027: self_link.decode(\u0027utf8\u0027)},"},{"line_number":552,"context_line":"                               ]}"},{"line_number":553,"context_line":"        for measurement in measurements:"},{"line_number":554,"context_line":"            LOG.info(\u0027helpers:paginate: measurements element: %s\u0027 % measurement)"},{"line_number":555,"context_line":"            if len(measurement[\u0027measurements\u0027]) \u003e\u003d limit:"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"                new_offset \u003d measurement[\u0027measurements\u0027][limit - 1][0]"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f515b1d_485ca27d","line":554,"updated":"2017-09-26 07:08:06.000000000","message":"That might be a large chunk of data to be pushed into logging. So maybe debug ? Also this is oslo.log, so can pass measurement as 2nd argument of LOG.info (or debug actually) and it will be interpolated only if given severity is enabled.","commit_id":"01ed388270eb46deacd01ca28410bc96ab59b909"},{"author":{"_account_id":24580,"name":"James Gu","email":"james.gu@microsoft.com","username":"jamesgu"},"change_message_id":"5d8a057bca032c1f67379c75f081766925a33842","unresolved":false,"context_lines":[{"line_number":551,"context_line":"                                u\u0027href\u0027: self_link.decode(\u0027utf8\u0027)},"},{"line_number":552,"context_line":"                               ]}"},{"line_number":553,"context_line":"        for measurement in measurements:"},{"line_number":554,"context_line":"            LOG.info(\u0027helpers:paginate: measurements element: %s\u0027 % measurement)"},{"line_number":555,"context_line":"            if len(measurement[\u0027measurements\u0027]) \u003e\u003d limit:"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"                new_offset \u003d measurement[\u0027measurements\u0027][limit - 1][0]"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f4b6375_71a0f890","line":554,"in_reply_to":"3f4b6375_f13ce893","updated":"2017-10-26 05:26:15.000000000","message":"Yes, debugging instrumentation that accidentally slipped in. I do not want to print out customer in production. Removed this already in the later version. Thanks, Roland!","commit_id":"01ed388270eb46deacd01ca28410bc96ab59b909"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"a3915f0ba71df00ace0ff30691a0024d8a73a4bc","unresolved":false,"context_lines":[{"line_number":551,"context_line":"                                u\u0027href\u0027: self_link.decode(\u0027utf8\u0027)},"},{"line_number":552,"context_line":"                               ]}"},{"line_number":553,"context_line":"        for measurement in measurements:"},{"line_number":554,"context_line":"            LOG.info(\u0027helpers:paginate: measurements element: %s\u0027 % measurement)"},{"line_number":555,"context_line":"            if len(measurement[\u0027measurements\u0027]) \u003e\u003d limit:"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"                new_offset \u003d measurement[\u0027measurements\u0027][limit - 1][0]"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f4b6375_f13ce893","line":554,"in_reply_to":"7f515b1d_485ca27d","updated":"2017-10-26 05:06:00.000000000","message":"Agree, this should change to probably DEBUG.","commit_id":"01ed388270eb46deacd01ca28410bc96ab59b909"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"2afc7939b306825712912d9a57dafa98e1456753","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 Cray Inc. All Rights Reserved."},{"line_number":2,"context_line":"# (C) Copyright 2014,2016-2017 Hewlett Packard Enterprise Development LP"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":6,"context_line":"# a copy of the License at"}],"source_content_type":"text/x-python","patch_set":42,"id":"df87a7cf_6a95fde3","line":3,"updated":"2017-12-05 14:49:40.000000000","message":"Add Suse Copyright","commit_id":"6d92070e61c92ff478f4c6af2cdcf9c20e7973a7"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"2afc7939b306825712912d9a57dafa98e1456753","unresolved":false,"context_lines":[{"line_number":672,"context_line":"            else:"},{"line_number":673,"context_line":"                limit -\u003d len(statistic[\u0027statistics\u0027])"},{"line_number":674,"context_line":"                statistic_elements.append(statistic)"},{"line_number":675,"context_line":"                if \u0027end_time\u0027 in statistic:"},{"line_number":676,"context_line":"                    del statistic[\u0027end_time\u0027]"},{"line_number":677,"context_line":""},{"line_number":678,"context_line":"        resource[u\u0027elements\u0027] \u003d statistic_elements"},{"line_number":679,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"df87a7cf_cadf69d4","line":676,"range":{"start_line":675,"start_character":15,"end_line":676,"end_character":45},"updated":"2017-12-05 14:49:40.000000000","message":"Should it be here or before `statistic_elements.append(statistic)`?","commit_id":"6d92070e61c92ff478f4c6af2cdcf9c20e7973a7"},{"author":{"_account_id":24580,"name":"James Gu","email":"james.gu@microsoft.com","username":"jamesgu"},"change_message_id":"d1367ff0a4cd4241bc7fcc62ac43125a9e7660d7","unresolved":false,"context_lines":[{"line_number":672,"context_line":"            else:"},{"line_number":673,"context_line":"                limit -\u003d len(statistic[\u0027statistics\u0027])"},{"line_number":674,"context_line":"                statistic_elements.append(statistic)"},{"line_number":675,"context_line":"                if \u0027end_time\u0027 in statistic:"},{"line_number":676,"context_line":"                    del statistic[\u0027end_time\u0027]"},{"line_number":677,"context_line":""},{"line_number":678,"context_line":"        resource[u\u0027elements\u0027] \u003d statistic_elements"},{"line_number":679,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"df87a7cf_7bf39174","line":676,"range":{"start_line":675,"start_character":15,"end_line":676,"end_character":45},"in_reply_to":"df87a7cf_cadf69d4","updated":"2017-12-05 17:44:22.000000000","message":"the result is the same no matter the order because it is by reference. I moved up to make it more readable","commit_id":"6d92070e61c92ff478f4c6af2cdcf9c20e7973a7"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"1bc09eb6e5748a8bfe0679f2c2b793646b678d52","unresolved":false,"context_lines":[{"line_number":554,"context_line":"        for measurement in measurements:"},{"line_number":555,"context_line":"            if len(measurement[\u0027measurements\u0027]) \u003e\u003d limit:"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"                new_offset \u003d (\u0027_\u0027).join([measurement[\u0027id\u0027], measurement[\u0027measurements\u0027][limit - 1][0]])"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"                next_link \u003d build_base_uri(parsed_uri)"},{"line_number":560,"context_line":""}],"source_content_type":"text/x-python","patch_set":46,"id":"df87a7cf_f3d30ad4","line":557,"updated":"2017-12-07 17:33:11.000000000","message":"You\u0027re changing how measurement offset is returned. Please update the measurement resource response example in documentation for that. You may also want to add short note on Cassandra offsets here [1].\n\nPlease also wrap the line here.\n\n[1] https://github.com/openstack/monasca-api/blob/master/docs/monasca-api-spec.md#offset","commit_id":"3d7162c55182a666f76ac8de6b35e4f6f6c1ba83"}],"monasca_tempest_tests/tests/api/helpers.py":[{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"2afc7939b306825712912d9a57dafa98e1456753","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# (C) Copyright 2015 Hewlett Packard Enterprise Development Company LP"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":5,"context_line":"# a copy of the License at"}],"source_content_type":"text/x-python","patch_set":42,"id":"df87a7cf_aafd453b","line":2,"updated":"2017-12-05 14:49:40.000000000","message":"Add Suse Copyright","commit_id":"6d92070e61c92ff478f4c6af2cdcf9c20e7973a7"}],"monasca_tempest_tests/tests/api/test_dimensions.py":[{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"1bc09eb6e5748a8bfe0679f2c2b793646b678d52","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        param \u003d \u0027?start_time\u003d\u0027 + time_iso"},{"line_number":74,"context_line":"        returned_name_set \u003d set()"},{"line_number":75,"context_line":"        metric_name1_count \u003d 0"},{"line_number":76,"context_line":"        for i in range(constants.MAX_RETRIES):"},{"line_number":77,"context_line":"            resp, response_body \u003d cls.monasca_client.list_metrics("},{"line_number":78,"context_line":"                param)"}],"source_content_type":"text/x-python","patch_set":46,"id":"df87a7cf_13eb0e13","line":75,"updated":"2017-12-07 17:33:11.000000000","message":"You should put this initialization inside the for loop.","commit_id":"3d7162c55182a666f76ac8de6b35e4f6f6c1ba83"},{"author":{"_account_id":24580,"name":"James Gu","email":"james.gu@microsoft.com","username":"jamesgu"},"change_message_id":"bbb906d9ff1182a82b0f95251e485ba440172216","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        param \u003d \u0027?start_time\u003d\u0027 + time_iso"},{"line_number":74,"context_line":"        returned_name_set \u003d set()"},{"line_number":75,"context_line":"        metric_name1_count \u003d 0"},{"line_number":76,"context_line":"        for i in range(constants.MAX_RETRIES):"},{"line_number":77,"context_line":"            resp, response_body \u003d cls.monasca_client.list_metrics("},{"line_number":78,"context_line":"                param)"}],"source_content_type":"text/x-python","patch_set":46,"id":"df87a7cf_77903dee","line":75,"in_reply_to":"df87a7cf_13eb0e13","updated":"2017-12-07 22:30:44.000000000","message":"very nice catch! Fixed","commit_id":"3d7162c55182a666f76ac8de6b35e4f6f6c1ba83"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"2e50c64ad9fda64c470057f84d0eb1f17f0aab63","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                    metric_name1_count +\u003d 1"},{"line_number":84,"context_line":"            # Java version of influxdb never returns both metric1 in the list but Python does."},{"line_number":85,"context_line":"            if cls._test_metric_names.issubset(returned_name_set) \\"},{"line_number":86,"context_line":"                    and (metric_name1_count \u003e\u003d 2 or i \u003d\u003d constants.MAX_RETRIES - 1):"},{"line_number":87,"context_line":"                return"},{"line_number":88,"context_line":"            time.sleep(constants.RETRY_WAIT_SECS)"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":48,"id":"df87a7cf_3c5d5e78","line":86,"range":{"start_line":86,"start_character":44,"end_line":86,"end_character":46},"updated":"2017-12-12 14:22:08.000000000","message":"\u003d\u003d","commit_id":"56549b616fedddb1c0c5dd70b3cbf111b116f210"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"5d12f2680ac19911bbc1854a985dbe9a714209ab","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                    metric_name1_count +\u003d 1"},{"line_number":84,"context_line":"            # Java version of influxdb never returns both metric1 in the list but Python does."},{"line_number":85,"context_line":"            if cls._test_metric_names.issubset(returned_name_set) \\"},{"line_number":86,"context_line":"                    and (metric_name1_count \u003e\u003d 2 or i \u003d\u003d constants.MAX_RETRIES - 1):"},{"line_number":87,"context_line":"                return"},{"line_number":88,"context_line":"            time.sleep(constants.RETRY_WAIT_SECS)"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":48,"id":"df87a7cf_4309442f","line":86,"range":{"start_line":86,"start_character":44,"end_line":86,"end_character":46},"in_reply_to":"df87a7cf_3c5d5e78","updated":"2017-12-13 12:03:51.000000000","message":"Any reason for leaving `\u003e\u003d` here?","commit_id":"56549b616fedddb1c0c5dd70b3cbf111b116f210"}]}
