)]}'
{"rally/plugins/openstack/context/ceilometer/samples.py":[{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"cb04f64ba4c83a5c6808c24d60a30281626d46da","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                \"minimum\": 1"},{"line_number":61,"context_line":"            },"},{"line_number":62,"context_line":"            \"metadata\": {"},{"line_number":63,"context_line":"                \"type\": \"array\","},{"line_number":64,"context_line":"            }"},{"line_number":65,"context_line":"        },"},{"line_number":66,"context_line":"        \"required\": [\"counter_name\", \"counter_type\", \"counter_unit\","}],"source_content_type":"text/x-python","patch_set":16,"id":"1a26ad4f_4288d522","line":63,"updated":"2015-10-28 02:04:10.000000000","message":"Do metadata items need to be a particular type, or can they be any type? As far as I can tell they\u0027re objects, in which case we should both define that, and define the contents of the metadata objects.","commit_id":"6e4659686f688ac9defa76bb48e935baf28ce419"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"6671e7c518f2587fd832d43ece00200c7816204a","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                \"minimum\": 1"},{"line_number":61,"context_line":"            },"},{"line_number":62,"context_line":"            \"metadata\": {"},{"line_number":63,"context_line":"                \"type\": \"array\","},{"line_number":64,"context_line":"            }"},{"line_number":65,"context_line":"        },"},{"line_number":66,"context_line":"        \"required\": [\"counter_name\", \"counter_type\", \"counter_unit\","}],"source_content_type":"text/x-python","patch_set":16,"id":"1a26ad4f_0fae6f85","line":63,"in_reply_to":"1a26ad4f_4288d522","updated":"2015-11-03 13:46:53.000000000","message":"Done","commit_id":"6e4659686f688ac9defa76bb48e935baf28ce419"},{"author":{"_account_id":7132,"name":"Nikita Konovalov","email":"nkonovalov@mirantis.com","username":"nkonovalov"},"change_message_id":"5af209a6b3b33774978cb184f7b7d093c88b8e06","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                            \"type\": \"string\""},{"line_number":77,"context_line":"                        },"},{"line_number":78,"context_line":"                    },"},{"line_number":79,"context_line":"                    \"additionalProperties\": True"},{"line_number":80,"context_line":"                }"},{"line_number":81,"context_line":"            }"},{"line_number":82,"context_line":"        },"}],"source_content_type":"text/x-python","patch_set":21,"id":"fa80f949_3bfb47c3","line":79,"updated":"2015-11-05 12:58:33.000000000","message":"What are the additional properties that are expected in this object? I think those should be declared explicitly and marked as non-required (if they are in fact optional). Allowing any properties makes the schema unclear.","commit_id":"31266e313a4fadc1a691acca835396f40afafe05"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"6fab209191a062d2fb06ede30952490028e88748","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                            \"type\": \"string\""},{"line_number":77,"context_line":"                        },"},{"line_number":78,"context_line":"                    },"},{"line_number":79,"context_line":"                    \"additionalProperties\": True"},{"line_number":80,"context_line":"                }"},{"line_number":81,"context_line":"            }"},{"line_number":82,"context_line":"        },"}],"source_content_type":"text/x-python","patch_set":21,"id":"fa80f949_70eb29b1","line":79,"in_reply_to":"fa80f949_3bfb47c3","updated":"2015-11-05 13:48:23.000000000","message":"\"additionalProperties\" was added to be sure that new scenarios that will be based on that context schema won\u0027t be fail if they need new fields in metadata to work with. But if you insist that it makes schema unclear we will add new field in explicit way at the sate time with the new scenarios.","commit_id":"31266e313a4fadc1a691acca835396f40afafe05"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"d1757d196ef2dcdc4a8b9430bf6fa7cf2117783d","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                        },"},{"line_number":75,"context_line":"                        \"created_at\": {"},{"line_number":76,"context_line":"                            \"type\": \"string\""},{"line_number":77,"context_line":"                        },"},{"line_number":78,"context_line":"                    },"},{"line_number":79,"context_line":"                }"},{"line_number":80,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa80f949_51b92e78","line":77,"updated":"2015-11-06 02:02:52.000000000","message":"remove ,","commit_id":"d2d75c3e6ece1783bc5726232bc85832b0b5dee7"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"6181d1ba5f049fbc64de872b36e7f7e9c56c2e51","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                        },"},{"line_number":75,"context_line":"                        \"created_at\": {"},{"line_number":76,"context_line":"                            \"type\": \"string\""},{"line_number":77,"context_line":"                        },"},{"line_number":78,"context_line":"                    },"},{"line_number":79,"context_line":"                }"},{"line_number":80,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa80f949_9862523d","line":77,"in_reply_to":"fa80f949_51b92e78","updated":"2015-11-06 08:54:26.000000000","message":"this looks like a niggle, I guess that it is a common practice to leave comma at the end of list or dict object that could be added with new items in inheriting patches","commit_id":"d2d75c3e6ece1783bc5726232bc85832b0b5dee7"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"d1757d196ef2dcdc4a8b9430bf6fa7cf2117783d","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                        \"created_at\": {"},{"line_number":76,"context_line":"                            \"type\": \"string\""},{"line_number":77,"context_line":"                        },"},{"line_number":78,"context_line":"                    },"},{"line_number":79,"context_line":"                }"},{"line_number":80,"context_line":"            }"},{"line_number":81,"context_line":"        },"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa80f949_f1b2a293","line":78,"updated":"2015-11-06 02:02:52.000000000","message":"here as well","commit_id":"d2d75c3e6ece1783bc5726232bc85832b0b5dee7"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"d1757d196ef2dcdc4a8b9430bf6fa7cf2117783d","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    DEFAULT_CONFIG \u003d {"},{"line_number":88,"context_line":"        \"resources_per_tenant\": 5,"},{"line_number":89,"context_line":"        \"samples_per_resource\": 5,"},{"line_number":90,"context_line":"        \"timestamp_interval\": 60,"},{"line_number":91,"context_line":"    }"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    @logging.log_task_wrapper(LOG.info, _(\"Enter context: `Ceilometer`\"))"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa80f949_31b4aa80","line":90,"updated":"2015-11-06 02:02:52.000000000","message":"remove ,","commit_id":"d2d75c3e6ece1783bc5726232bc85832b0b5dee7"}],"rally/plugins/openstack/scenarios/ceilometer/utils.py":[{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"5258ed3e929843e0347b2e5f3f29333f471bacfd","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            if v:"},{"line_number":65,"context_line":"                sample.update({k: v})"},{"line_number":66,"context_line":"        now \u003d timestamp or datetime.datetime.utcnow()"},{"line_number":67,"context_line":"        for i in range(count):"},{"line_number":68,"context_line":"            if interval:"},{"line_number":69,"context_line":"                sample[\"timestamp\"] \u003d (now - datetime.timedelta("},{"line_number":70,"context_line":"                    seconds\u003d(interval * i))).isoformat()"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_3d5b5c56","line":67,"updated":"2015-10-02 16:42:56.000000000","message":"six.range","commit_id":"f6facd33f25b2ef6dc22144feb8e6d103b378ac5"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"5dc1164c056bd633ed721e14942f27e8da508d1a","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            if v:"},{"line_number":65,"context_line":"                sample.update({k: v})"},{"line_number":66,"context_line":"        now \u003d timestamp or datetime.datetime.utcnow()"},{"line_number":67,"context_line":"        for i in range(count):"},{"line_number":68,"context_line":"            if interval:"},{"line_number":69,"context_line":"                sample[\"timestamp\"] \u003d (now - datetime.timedelta("},{"line_number":70,"context_line":"                    seconds\u003d(interval * i))).isoformat()"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_0a4f07be","line":67,"in_reply_to":"9a1a9d01_3d5b5c56","updated":"2015-10-05 08:19:11.000000000","message":"Done","commit_id":"f6facd33f25b2ef6dc22144feb8e6d103b378ac5"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"5258ed3e929843e0347b2e5f3f29333f471bacfd","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                sample[\"timestamp\"] \u003d (now - datetime.timedelta("},{"line_number":70,"context_line":"                    seconds\u003d(interval * i))).isoformat()"},{"line_number":71,"context_line":"            if metadata_list:"},{"line_number":72,"context_line":"                len_meta \u003d len(metadata_list)"},{"line_number":73,"context_line":"                for j in range(len_meta):"},{"line_number":74,"context_line":"                    if i \u003c count / len_meta * (j + 1):"},{"line_number":75,"context_line":"                        sample[\"resource_metadata\"] \u003d metadata_list[j]"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_d8026eb4","line":72,"updated":"2015-10-02 16:42:56.000000000","message":"if metadata_list is [] then we will get an error","commit_id":"f6facd33f25b2ef6dc22144feb8e6d103b378ac5"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"5dc1164c056bd633ed721e14942f27e8da508d1a","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                sample[\"timestamp\"] \u003d (now - datetime.timedelta("},{"line_number":70,"context_line":"                    seconds\u003d(interval * i))).isoformat()"},{"line_number":71,"context_line":"            if metadata_list:"},{"line_number":72,"context_line":"                len_meta \u003d len(metadata_list)"},{"line_number":73,"context_line":"                for j in range(len_meta):"},{"line_number":74,"context_line":"                    if i \u003c count / len_meta * (j + 1):"},{"line_number":75,"context_line":"                        sample[\"resource_metadata\"] \u003d metadata_list[j]"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_150408be","line":72,"in_reply_to":"9a1a9d01_d8026eb4","updated":"2015-10-05 08:19:11.000000000","message":"If metadata_list \u003d\u003d [] line 72 will never run","commit_id":"f6facd33f25b2ef6dc22144feb8e6d103b378ac5"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"5258ed3e929843e0347b2e5f3f29333f471bacfd","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                    seconds\u003d(interval * i))).isoformat()"},{"line_number":71,"context_line":"            if metadata_list:"},{"line_number":72,"context_line":"                len_meta \u003d len(metadata_list)"},{"line_number":73,"context_line":"                for j in range(len_meta):"},{"line_number":74,"context_line":"                    if i \u003c count / len_meta * (j + 1):"},{"line_number":75,"context_line":"                        sample[\"resource_metadata\"] \u003d metadata_list[j]"},{"line_number":76,"context_line":"            samples.append(sample)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_1fee8b8b","line":73,"updated":"2015-10-02 16:42:56.000000000","message":"Please put the NOTE what is going on here.","commit_id":"f6facd33f25b2ef6dc22144feb8e6d103b378ac5"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"5dc1164c056bd633ed721e14942f27e8da508d1a","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                    seconds\u003d(interval * i))).isoformat()"},{"line_number":71,"context_line":"            if metadata_list:"},{"line_number":72,"context_line":"                len_meta \u003d len(metadata_list)"},{"line_number":73,"context_line":"                for j in range(len_meta):"},{"line_number":74,"context_line":"                    if i \u003c count / len_meta * (j + 1):"},{"line_number":75,"context_line":"                        sample[\"resource_metadata\"] \u003d metadata_list[j]"},{"line_number":76,"context_line":"            samples.append(sample)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_d50530c2","line":73,"in_reply_to":"9a1a9d01_1fee8b8b","updated":"2015-10-05 08:19:11.000000000","message":"Done","commit_id":"f6facd33f25b2ef6dc22144feb8e6d103b378ac5"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"705a7b6689dc589403960c2671818102aa11f815","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            if interval:"},{"line_number":69,"context_line":"                sample[\"timestamp\"] \u003d (now - datetime.timedelta("},{"line_number":70,"context_line":"                    seconds\u003d(interval * i))).isoformat()"},{"line_number":71,"context_line":"            if metadata_list:"},{"line_number":72,"context_line":"                # NOTE(idegtiarov): Adding more then one template of metadata"},{"line_number":73,"context_line":"                # required it\u0027s proportional distribution among whole samples."},{"line_number":74,"context_line":"                len_meta \u003d len(metadata_list)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a29b11f_7286aa14","line":71,"updated":"2015-10-20 15:56:54.000000000","message":"Igor, this is not good behavior for using defining metadata for sample, because resource record in ceilometer will have last metadata from sample list. So, all resource will have identical metadata from metadata list, because last metadata is set by same rule.","commit_id":"28020ba1a2b95629fcf4219270245a28dc846e72"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"cb04f64ba4c83a5c6808c24d60a30281626d46da","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            if metadata_list:"},{"line_number":69,"context_line":"                # NOTE(idegtiarov): Adding more then one template of metadata"},{"line_number":70,"context_line":"                # required it\u0027s proportional distribution among whole samples."},{"line_number":71,"context_line":"                len_meta \u003d len(metadata_list)"},{"line_number":72,"context_line":"                for j in range(len_meta):"},{"line_number":73,"context_line":"                    if i \u003c count / len_meta * (j + 1):"},{"line_number":74,"context_line":"                        sample[\"resource_metadata\"] \u003d metadata_list[j]"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a26ad4f_e2cec159","line":71,"updated":"2015-10-28 02:04:10.000000000","message":"Since the metadata length doesn\u0027t change, this can be moved outside of the outer loop (for i in ...)","commit_id":"6e4659686f688ac9defa76bb48e935baf28ce419"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"6671e7c518f2587fd832d43ece00200c7816204a","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            if metadata_list:"},{"line_number":69,"context_line":"                # NOTE(idegtiarov): Adding more then one template of metadata"},{"line_number":70,"context_line":"                # required it\u0027s proportional distribution among whole samples."},{"line_number":71,"context_line":"                len_meta \u003d len(metadata_list)"},{"line_number":72,"context_line":"                for j in range(len_meta):"},{"line_number":73,"context_line":"                    if i \u003c count / len_meta * (j + 1):"},{"line_number":74,"context_line":"                        sample[\"resource_metadata\"] \u003d metadata_list[j]"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a26ad4f_1859bcfe","line":71,"in_reply_to":"1a26ad4f_e2cec159","updated":"2015-11-03 13:46:53.000000000","message":"Done","commit_id":"6e4659686f688ac9defa76bb48e935baf28ce419"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"cb04f64ba4c83a5c6808c24d60a30281626d46da","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                # NOTE(idegtiarov): Adding more then one template of metadata"},{"line_number":70,"context_line":"                # required it\u0027s proportional distribution among whole samples."},{"line_number":71,"context_line":"                len_meta \u003d len(metadata_list)"},{"line_number":72,"context_line":"                for j in range(len_meta):"},{"line_number":73,"context_line":"                    if i \u003c count / len_meta * (j + 1):"},{"line_number":74,"context_line":"                        sample[\"resource_metadata\"] \u003d metadata_list[j]"},{"line_number":75,"context_line":"            samples.append(sample)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a26ad4f_4204557d","line":72,"updated":"2015-10-28 02:04:10.000000000","message":"Consider using enumerate() here.","commit_id":"6e4659686f688ac9defa76bb48e935baf28ce419"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"6671e7c518f2587fd832d43ece00200c7816204a","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                # NOTE(idegtiarov): Adding more then one template of metadata"},{"line_number":70,"context_line":"                # required it\u0027s proportional distribution among whole samples."},{"line_number":71,"context_line":"                len_meta \u003d len(metadata_list)"},{"line_number":72,"context_line":"                for j in range(len_meta):"},{"line_number":73,"context_line":"                    if i \u003c count / len_meta * (j + 1):"},{"line_number":74,"context_line":"                        sample[\"resource_metadata\"] \u003d metadata_list[j]"},{"line_number":75,"context_line":"            samples.append(sample)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a26ad4f_d873447f","line":72,"in_reply_to":"1a26ad4f_4204557d","updated":"2015-11-03 13:46:53.000000000","message":"rewritten now","commit_id":"6e4659686f688ac9defa76bb48e935baf28ce419"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"cb04f64ba4c83a5c6808c24d60a30281626d46da","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                # required it\u0027s proportional distribution among whole samples."},{"line_number":71,"context_line":"                len_meta \u003d len(metadata_list)"},{"line_number":72,"context_line":"                for j in range(len_meta):"},{"line_number":73,"context_line":"                    if i \u003c count / len_meta * (j + 1):"},{"line_number":74,"context_line":"                        sample[\"resource_metadata\"] \u003d metadata_list[j]"},{"line_number":75,"context_line":"            samples.append(sample)"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1a26ad4f_c2d145fd","line":73,"updated":"2015-10-28 02:04:10.000000000","message":"This line needs a comment. :)","commit_id":"6e4659686f688ac9defa76bb48e935baf28ce419"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"f57eca10d4563ff8c7b9a9037cdad781854f215b","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        :param timestamp: specifies timestamp for samples"},{"line_number":44,"context_line":"        :param metadata_list: specifies list of resource metadata"},{"line_number":45,"context_line":"        :returns: list of samples used to create samples"},{"line_number":46,"context_line":"        \"\"\""},{"line_number":47,"context_line":"        samples \u003d []"},{"line_number":48,"context_line":"        sample \u003d {"},{"line_number":49,"context_line":"            \"counter_name\": counter_name,"}],"source_content_type":"text/x-python","patch_set":21,"id":"fa80f949_03c6159a","line":46,"updated":"2015-11-05 14:11:33.000000000","message":"If we have empty metadata_list then would be returned empty list. We could write:\n  if matadata_list:\n    return []\nAt the beggining. And then delete 65 and 71 line.","commit_id":"31266e313a4fadc1a691acca835396f40afafe05"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"24b735e102e9cd99c17218f8eaf32f23047b8a62","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        :param timestamp: specifies timestamp for samples"},{"line_number":44,"context_line":"        :param metadata_list: specifies list of resource metadata"},{"line_number":45,"context_line":"        :returns: list of samples used to create samples"},{"line_number":46,"context_line":"        \"\"\""},{"line_number":47,"context_line":"        samples \u003d []"},{"line_number":48,"context_line":"        sample \u003d {"},{"line_number":49,"context_line":"            \"counter_name\": counter_name,"}],"source_content_type":"text/x-python","patch_set":21,"id":"fa80f949_5cde3e40","line":46,"in_reply_to":"fa80f949_03c6159a","updated":"2015-11-05 15:09:26.000000000","message":"If metadata_list is empty we will return a list of samples without metadata","commit_id":"31266e313a4fadc1a691acca835396f40afafe05"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"f57eca10d4563ff8c7b9a9037cdad781854f215b","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            \"counter_type\": counter_type,"},{"line_number":51,"context_line":"            \"counter_unit\": counter_unit,"},{"line_number":52,"context_line":"            \"counter_volume\": counter_volume,"},{"line_number":53,"context_line":"            \"resource_id\": self.generate_random_name()"},{"line_number":54,"context_line":"        }"},{"line_number":55,"context_line":"        opt_fields \u003d {"},{"line_number":56,"context_line":"            \"project_id\": project_id,"}],"source_content_type":"text/x-python","patch_set":21,"id":"fa80f949_302281ba","line":53,"updated":"2015-11-05 14:11:33.000000000","message":"Why under resource id is name? Is it normal?","commit_id":"31266e313a4fadc1a691acca835396f40afafe05"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"24b735e102e9cd99c17218f8eaf32f23047b8a62","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            \"counter_type\": counter_type,"},{"line_number":51,"context_line":"            \"counter_unit\": counter_unit,"},{"line_number":52,"context_line":"            \"counter_volume\": counter_volume,"},{"line_number":53,"context_line":"            \"resource_id\": self.generate_random_name()"},{"line_number":54,"context_line":"        }"},{"line_number":55,"context_line":"        opt_fields \u003d {"},{"line_number":56,"context_line":"            \"project_id\": project_id,"}],"source_content_type":"text/x-python","patch_set":21,"id":"fa80f949_1ca516a1","line":53,"in_reply_to":"fa80f949_302281ba","updated":"2015-11-05 15:09:26.000000000","message":"Yep, it is normal. By this we guarantee unique resources for rally scenarios. Please take a look it was discussed in comments for parental commit https://review.openstack.org/#/c/192130/","commit_id":"31266e313a4fadc1a691acca835396f40afafe05"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"f57eca10d4563ff8c7b9a9037cdad781854f215b","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        now \u003d timestamp or datetime.datetime.utcnow()"},{"line_number":65,"context_line":"        len_meta \u003d len(metadata_list) if metadata_list else 0"},{"line_number":66,"context_line":"        for i in six.moves.xrange(count):"},{"line_number":67,"context_line":"            sample_item \u003d copy.copy(sample)"},{"line_number":68,"context_line":"            sample_item[\"timestamp\"] \u003d ("},{"line_number":69,"context_line":"                now - datetime.timedelta(seconds\u003d(interval * i))"},{"line_number":70,"context_line":"            ).isoformat()"}],"source_content_type":"text/x-python","patch_set":21,"id":"fa80f949_83bbe5e4","line":67,"updated":"2015-11-05 14:11:33.000000000","message":"We could write here sample_item \u003d dict(sample) and not to import copy module here.","commit_id":"31266e313a4fadc1a691acca835396f40afafe05"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"24b735e102e9cd99c17218f8eaf32f23047b8a62","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        now \u003d timestamp or datetime.datetime.utcnow()"},{"line_number":65,"context_line":"        len_meta \u003d len(metadata_list) if metadata_list else 0"},{"line_number":66,"context_line":"        for i in six.moves.xrange(count):"},{"line_number":67,"context_line":"            sample_item \u003d copy.copy(sample)"},{"line_number":68,"context_line":"            sample_item[\"timestamp\"] \u003d ("},{"line_number":69,"context_line":"                now - datetime.timedelta(seconds\u003d(interval * i))"},{"line_number":70,"context_line":"            ).isoformat()"}],"source_content_type":"text/x-python","patch_set":21,"id":"fa80f949_77723baf","line":67,"in_reply_to":"fa80f949_83bbe5e4","updated":"2015-11-05 15:09:26.000000000","message":"Agreed, according to the fact that we do not need deepcopy here we can use dict(sample). will improve. thanks","commit_id":"31266e313a4fadc1a691acca835396f40afafe05"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"f57eca10d4563ff8c7b9a9037cdad781854f215b","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                # NOTE(idegtiarov): Adding more then one template of metadata"},{"line_number":73,"context_line":"                # required it\u0027s proportional distribution among whole samples."},{"line_number":74,"context_line":"                sample_item[\"resource_metadata\"] \u003d metadata_list["},{"line_number":75,"context_line":"                    i * len_meta // count"},{"line_number":76,"context_line":"                ]"},{"line_number":77,"context_line":"            samples.append(sample_item)"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"fa80f949_b0675124","line":75,"updated":"2015-11-05 14:11:33.000000000","message":"for int we could use simply /","commit_id":"31266e313a4fadc1a691acca835396f40afafe05"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"24b735e102e9cd99c17218f8eaf32f23047b8a62","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                # NOTE(idegtiarov): Adding more then one template of metadata"},{"line_number":73,"context_line":"                # required it\u0027s proportional distribution among whole samples."},{"line_number":74,"context_line":"                sample_item[\"resource_metadata\"] \u003d metadata_list["},{"line_number":75,"context_line":"                    i * len_meta // count"},{"line_number":76,"context_line":"                ]"},{"line_number":77,"context_line":"            samples.append(sample_item)"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"fa80f949_81719de2","line":75,"in_reply_to":"fa80f949_b0675124","updated":"2015-11-05 15:09:26.000000000","message":"we cannot because of py3 check","commit_id":"31266e313a4fadc1a691acca835396f40afafe05"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"9ac3c23c90cad60eb01292fc4e8f3f5b3677e4a1","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                # NOTE(idegtiarov): Adding more then one template of metadata"},{"line_number":72,"context_line":"                # required it\u0027s proportional distribution among whole samples."},{"line_number":73,"context_line":"                sample_item[\"resource_metadata\"] \u003d metadata_list["},{"line_number":74,"context_line":"                    i * len_meta // count"},{"line_number":75,"context_line":"                ]"},{"line_number":76,"context_line":"            samples.append(sample_item)"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"fa80f949_650913dd","line":74,"updated":"2015-11-05 21:25:36.000000000","message":"This is much clearer, thank you!","commit_id":"d2d75c3e6ece1783bc5726232bc85832b0b5dee7"}],"test-requirements.txt":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"d1757d196ef2dcdc4a8b9430bf6fa7cf2117783d","unresolved":false,"context_lines":[{"line_number":6,"context_line":"coverage\u003e\u003d3.6"},{"line_number":7,"context_line":"ddt\u003e\u003d0.7.0"},{"line_number":8,"context_line":"mock\u003e\u003d1.2"},{"line_number":9,"context_line":"python-dateutil\u003e\u003d2.4.2"},{"line_number":10,"context_line":"testrepository\u003e\u003d0.0.18"},{"line_number":11,"context_line":"testtools\u003e\u003d1.4.0"},{"line_number":12,"context_line":""}],"source_content_type":"text/plain","patch_set":23,"id":"fa80f949_719792ec","line":9,"updated":"2015-11-06 02:02:52.000000000","message":"do we really need this tool? are you sure that datetime is not enough?","commit_id":"d2d75c3e6ece1783bc5726232bc85832b0b5dee7"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"6181d1ba5f049fbc64de872b36e7f7e9c56c2e51","unresolved":false,"context_lines":[{"line_number":6,"context_line":"coverage\u003e\u003d3.6"},{"line_number":7,"context_line":"ddt\u003e\u003d0.7.0"},{"line_number":8,"context_line":"mock\u003e\u003d1.2"},{"line_number":9,"context_line":"python-dateutil\u003e\u003d2.4.2"},{"line_number":10,"context_line":"testrepository\u003e\u003d0.0.18"},{"line_number":11,"context_line":"testtools\u003e\u003d1.4.0"},{"line_number":12,"context_line":""}],"source_content_type":"text/plain","patch_set":23,"id":"fa80f949_b80cf6ed","line":9,"in_reply_to":"fa80f949_719792ec","updated":"2015-11-06 08:54:26.000000000","message":"datetime is not enough for the tests where we need to parse string object into datetime object.","commit_id":"d2d75c3e6ece1783bc5726232bc85832b0b5dee7"}],"tests/unit/plugins/openstack/context/ceilometer/test_samples.py":[{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"cb04f64ba4c83a5c6808c24d60a30281626d46da","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                         \"created_at\": \"2015-09-04T12:34:19.000000\"},"},{"line_number":63,"context_line":"                        {\"status\": \"not_active\", \"name\": \"fake_resource_1\","},{"line_number":64,"context_line":"                         \"deleted\": \"False\","},{"line_number":65,"context_line":"                         \"created_at\": \"2015-16-00T12:34:19.000000\"}"},{"line_number":66,"context_line":"                    ]"},{"line_number":67,"context_line":"                }"},{"line_number":68,"context_line":"            },"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a26ad4f_e26a411a","line":65,"updated":"2015-10-28 02:04:10.000000000","message":"2015-16-00 isn\u0027t a real date. If this is being used as expected data, then I don\u0027t understand how this is generated.","commit_id":"6e4659686f688ac9defa76bb48e935baf28ce419"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"6671e7c518f2587fd832d43ece00200c7816204a","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                         \"created_at\": \"2015-09-04T12:34:19.000000\"},"},{"line_number":63,"context_line":"                        {\"status\": \"not_active\", \"name\": \"fake_resource_1\","},{"line_number":64,"context_line":"                         \"deleted\": \"False\","},{"line_number":65,"context_line":"                         \"created_at\": \"2015-16-00T12:34:19.000000\"}"},{"line_number":66,"context_line":"                    ]"},{"line_number":67,"context_line":"                }"},{"line_number":68,"context_line":"            },"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a26ad4f_b81688ef","line":65,"in_reply_to":"1a26ad4f_e26a411a","updated":"2015-11-03 13:46:53.000000000","message":"Oh shame on me, improved","commit_id":"6e4659686f688ac9defa76bb48e935baf28ce419"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"cb04f64ba4c83a5c6808c24d60a30281626d46da","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                \"resources_per_tenant\": 5,"},{"line_number":87,"context_line":"                \"samples_per_resource\": 5,"},{"line_number":88,"context_line":"                \"timestamp_intervals\": 60,"},{"line_number":89,"context_line":"                \"metadat_list\": ["},{"line_number":90,"context_line":"                    {\"status\": \"active\", \"name\": \"fake_resource\","},{"line_number":91,"context_line":"                     \"deleted\": \"False\","},{"line_number":92,"context_line":"                     \"created_at\": \"2015-09-04T12:34:19.000000\"},"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a26ad4f_8277cd01","line":89,"updated":"2015-10-28 02:04:10.000000000","message":"s/metadat_list/metadata_list/","commit_id":"6e4659686f688ac9defa76bb48e935baf28ce419"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"6671e7c518f2587fd832d43ece00200c7816204a","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                \"resources_per_tenant\": 5,"},{"line_number":87,"context_line":"                \"samples_per_resource\": 5,"},{"line_number":88,"context_line":"                \"timestamp_intervals\": 60,"},{"line_number":89,"context_line":"                \"metadat_list\": ["},{"line_number":90,"context_line":"                    {\"status\": \"active\", \"name\": \"fake_resource\","},{"line_number":91,"context_line":"                     \"deleted\": \"False\","},{"line_number":92,"context_line":"                     \"created_at\": \"2015-09-04T12:34:19.000000\"},"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a26ad4f_78d79023","line":89,"in_reply_to":"1a26ad4f_8277cd01","updated":"2015-11-03 13:46:53.000000000","message":"Done","commit_id":"6e4659686f688ac9defa76bb48e935baf28ce419"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"cb04f64ba4c83a5c6808c24d60a30281626d46da","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                % CTX)"},{"line_number":105,"context_line":"    @mock.patch("},{"line_number":106,"context_line":"        \"rally.common.utils.RandomNameGeneratorMixin.generate_random_name\")"},{"line_number":107,"context_line":"    def test_setup(self, mock_random_name_generator_mixin_generate_random_name,"},{"line_number":108,"context_line":"                   mock_ceilometer_scenario__create_samples):"},{"line_number":109,"context_line":"        tenants_count \u003d 2"},{"line_number":110,"context_line":"        users_per_tenant \u003d 2"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a26ad4f_a2ef69af","line":107,"updated":"2015-10-28 02:04:10.000000000","message":"Monkey patching the scenario object below will be cleaner than patching it for this epic variable name.","commit_id":"6e4659686f688ac9defa76bb48e935baf28ce419"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"6671e7c518f2587fd832d43ece00200c7816204a","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                % CTX)"},{"line_number":105,"context_line":"    @mock.patch("},{"line_number":106,"context_line":"        \"rally.common.utils.RandomNameGeneratorMixin.generate_random_name\")"},{"line_number":107,"context_line":"    def test_setup(self, mock_random_name_generator_mixin_generate_random_name,"},{"line_number":108,"context_line":"                   mock_ceilometer_scenario__create_samples):"},{"line_number":109,"context_line":"        tenants_count \u003d 2"},{"line_number":110,"context_line":"        users_per_tenant \u003d 2"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a26ad4f_38e118ff","line":107,"in_reply_to":"1a26ad4f_a2ef69af","updated":"2015-11-03 13:46:53.000000000","message":"Done","commit_id":"6e4659686f688ac9defa76bb48e935baf28ce419"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"cb04f64ba4c83a5c6808c24d60a30281626d46da","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        kwargs \u003d copy.deepcopy(sample)"},{"line_number":136,"context_line":"        kwargs.pop(\"resource_id\")"},{"line_number":137,"context_line":"        samples_to_create \u003d scenario._make_samples(count\u003dsamples_per_resource,"},{"line_number":138,"context_line":"                                                   interval\u003d60, **kwargs)"},{"line_number":139,"context_line":"        new_context \u003d copy.deepcopy(real_context)"},{"line_number":140,"context_line":"        for id_ in tenants.keys():"},{"line_number":141,"context_line":"            new_context[\"tenants\"][id_].setdefault(\"samples\", [])"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a26ad4f_421215b6","line":138,"updated":"2015-10-28 02:04:10.000000000","message":"As far as I can tell, you set the interval but you don\u0027t ever check to ensure that it\u0027s respected (or even that the timestamp is set on the samples).","commit_id":"6e4659686f688ac9defa76bb48e935baf28ce419"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"6671e7c518f2587fd832d43ece00200c7816204a","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        kwargs \u003d copy.deepcopy(sample)"},{"line_number":136,"context_line":"        kwargs.pop(\"resource_id\")"},{"line_number":137,"context_line":"        samples_to_create \u003d scenario._make_samples(count\u003dsamples_per_resource,"},{"line_number":138,"context_line":"                                                   interval\u003d60, **kwargs)"},{"line_number":139,"context_line":"        new_context \u003d copy.deepcopy(real_context)"},{"line_number":140,"context_line":"        for id_ in tenants.keys():"},{"line_number":141,"context_line":"            new_context[\"tenants\"][id_].setdefault(\"samples\", [])"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a26ad4f_f8e3a003","line":138,"in_reply_to":"1a26ad4f_421215b6","updated":"2015-11-03 13:46:53.000000000","message":"thanks for catching this, this helps not to have a bug in our benchmark tests. ))\ndone.","commit_id":"6e4659686f688ac9defa76bb48e935baf28ce419"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"cb04f64ba4c83a5c6808c24d60a30281626d46da","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            for i in samples_to_create]"},{"line_number":152,"context_line":"        ceilometer_ctx \u003d samples.CeilometerSampleGenerator(real_context)"},{"line_number":153,"context_line":"        ceilometer_ctx.setup()"},{"line_number":154,"context_line":"        self.assertEqual(new_context, ceilometer_ctx.context)"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def test_cleanup(self):"},{"line_number":157,"context_line":"        tenants, context \u003d self._gen_context(2, 5, 3, 3)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a26ad4f_22d6f9c5","line":154,"updated":"2015-10-28 02:04:10.000000000","message":"I have some serious concerns about the validity of this test, since AFAICT you the initial context you pass to the CeilometerSampleGenerator (`real_context`) contains the expected output data (i.e., the sample metadata) that should be generated by setup(). It\u0027s not clear, from the design of this test, if the data is being generated properly, or if it\u0027s merely passing out what is passed in when you initialize the object.","commit_id":"6e4659686f688ac9defa76bb48e935baf28ce419"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"6671e7c518f2587fd832d43ece00200c7816204a","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            for i in samples_to_create]"},{"line_number":152,"context_line":"        ceilometer_ctx \u003d samples.CeilometerSampleGenerator(real_context)"},{"line_number":153,"context_line":"        ceilometer_ctx.setup()"},{"line_number":154,"context_line":"        self.assertEqual(new_context, ceilometer_ctx.context)"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def test_cleanup(self):"},{"line_number":157,"context_line":"        tenants, context \u003d self._gen_context(2, 5, 3, 3)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a26ad4f_a9195c7b","line":154,"in_reply_to":"1a26ad4f_22d6f9c5","updated":"2015-11-03 13:46:53.000000000","message":"in test we create new_context data from our samples pattern and real context we have certain expectation what should be as a result of such operation and for the same real_context check result from setup method of CeilometerSampleGenerator instance if they are Equal we\u0027ve created correct context","commit_id":"6e4659686f688ac9defa76bb48e935baf28ce419"}],"tests/unit/plugins/openstack/scenarios/ceilometer/test_utils.py":[{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"cb04f64ba4c83a5c6808c24d60a30281626d46da","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                     \"counter_volume\": 1,"},{"line_number":45,"context_line":"                     \"resource_id\": \"fake_resource\","},{"line_number":46,"context_line":"                     \"timestamp\": \"2015-10-20T14:18:40\"}]"},{"line_number":47,"context_line":"        self.assertEqual(expected, result)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def test__list_alarms_by_id(self):"},{"line_number":50,"context_line":"        self.assertEqual(self.clients(\"ceilometer\").alarms.get.return_value,"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a26ad4f_e2ffa132","line":47,"updated":"2015-10-28 02:04:10.000000000","message":"The distribution of items from metadata_list is sufficiently complex that it needs more test coverage. (I\u0027d recommend using ddt.)","commit_id":"6e4659686f688ac9defa76bb48e935baf28ce419"}]}
