)]}'
{"tempest/api/network/test_metering.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"a9ddebb47895995d27a7a9abfbf8a9f2b171b42d","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        cls.adm_tenant \u003d cls.config.identity.admin_tenant_name"},{"line_number":35,"context_line":"        if not all((cls.adm_user, cls.adm_pass, cls.adm_tenant)):"},{"line_number":36,"context_line":"            msg \u003d (\"Missing Volume Admin API credentials \""},{"line_number":37,"context_line":"                   \"in configuration.\")"},{"line_number":38,"context_line":"            raise cls.skipException(msg)"},{"line_number":39,"context_line":"        cls.isolated_creds \u003d isolated_creds.IsolatedCreds(cls.__name__)"},{"line_number":40,"context_line":"        creds \u003d cls.isolated_creds.get_admin_creds()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BOec%3D","line":37,"updated":"2013-11-28 16:53:40.000000000","message":"I don\u0027t get why \"Volume Admin API credentials\"","commit_id":"005858422be861a8700d8c896096bc11b07849f0"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"0d8a8e64fc8e9ea8cb5d7770b253f987e5c2428f","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        cls.adm_tenant \u003d cls.config.identity.admin_tenant_name"},{"line_number":35,"context_line":"        if not all((cls.adm_user, cls.adm_pass, cls.adm_tenant)):"},{"line_number":36,"context_line":"            msg \u003d (\"Missing Volume Admin API credentials \""},{"line_number":37,"context_line":"                   \"in configuration.\")"},{"line_number":38,"context_line":"            raise cls.skipException(msg)"},{"line_number":39,"context_line":"        cls.isolated_creds \u003d isolated_creds.IsolatedCreds(cls.__name__)"},{"line_number":40,"context_line":"        creds \u003d cls.isolated_creds.get_admin_creds()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BLG8%3D","line":37,"in_reply_to":"AAAATn%2F%2BOec%3D","updated":"2013-11-29 21:44:15.000000000","message":"Oops. I copied/pasted this code from the Volume API, and forgot to change the error message. Cargo cult coding is bad.","commit_id":"005858422be861a8700d8c896096bc11b07849f0"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"a9ddebb47895995d27a7a9abfbf8a9f2b171b42d","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        resp, create_body \u003d self.client.create_meter_label(name)"},{"line_number":56,"context_line":"        self.assertEqual(resp[\u0027status\u0027], \u0027201\u0027)"},{"line_number":57,"context_line":"        label_id \u003d create_body[\u0027metering_label\u0027][\u0027id\u0027]"},{"line_number":58,"context_line":"        self.addCleanup(self._delete_meter_label, label_id)"},{"line_number":59,"context_line":"        return label_id"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _delete_meter_label(self, meter_label_id):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BOdg%3D","line":58,"updated":"2013-11-28 16:53:40.000000000","message":"Do you know if the cleanup actions are executed in FIFO or LIFO order? In the first case we might have a problem?","commit_id":"005858422be861a8700d8c896096bc11b07849f0"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"0d8a8e64fc8e9ea8cb5d7770b253f987e5c2428f","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        resp, create_body \u003d self.client.create_meter_label(name)"},{"line_number":56,"context_line":"        self.assertEqual(resp[\u0027status\u0027], \u0027201\u0027)"},{"line_number":57,"context_line":"        label_id \u003d create_body[\u0027metering_label\u0027][\u0027id\u0027]"},{"line_number":58,"context_line":"        self.addCleanup(self._delete_meter_label, label_id)"},{"line_number":59,"context_line":"        return label_id"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _delete_meter_label(self, meter_label_id):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BLG4%3D","line":58,"in_reply_to":"AAAATn%2F%2BOdg%3D","updated":"2013-11-29 21:44:15.000000000","message":"They are executed in LIFO order, according to http://docs.python.org/2/library/unittest.html#unittest.TestCase.addCleanup","commit_id":"005858422be861a8700d8c896096bc11b07849f0"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"a9ddebb47895995d27a7a9abfbf8a9f2b171b42d","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        meter_labels_ids \u003d \\"},{"line_number":69,"context_line":"            [label[\u0027id\u0027] for label in list_body[\u0027metering_labels\u0027]]"},{"line_number":70,"context_line":"        self.assertNotIn(meter_label_id, meter_labels_ids)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _delete_meter_label_rule(self, rule_id):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BOd8%3D","line":69,"updated":"2013-11-28 16:53:40.000000000","message":"backslash here.\nAt some point I stopped reading the related huge mailing list thread so I don\u0027t know what\u0027s the official stance.\n\nNot sure what to do, just raising the point.","commit_id":"005858422be861a8700d8c896096bc11b07849f0"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"0d8a8e64fc8e9ea8cb5d7770b253f987e5c2428f","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        meter_labels_ids \u003d \\"},{"line_number":69,"context_line":"            [label[\u0027id\u0027] for label in list_body[\u0027metering_labels\u0027]]"},{"line_number":70,"context_line":"        self.assertNotIn(meter_label_id, meter_labels_ids)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _delete_meter_label_rule(self, rule_id):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BLG0%3D","line":69,"in_reply_to":"AAAATn%2F%2BOd8%3D","updated":"2013-11-29 21:44:15.000000000","message":"I\u0027m not sure how I should break this line either. I think I\u0027ll keep it this way, unless a reviewer knows the exact rule.","commit_id":"005858422be861a8700d8c896096bc11b07849f0"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"a9ddebb47895995d27a7a9abfbf8a9f2b171b42d","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        label_id \u003d self._create_meter_label()"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        resp, list_body \u003d self.client.list_meter_labels()"},{"line_number":86,"context_line":"        self.assertEqual(resp[\u0027status\u0027], \u0027200\u0027)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        metering_labels_ids \u003d \\"},{"line_number":89,"context_line":"            [label[\u0027id\u0027] for label in list_body[\u0027metering_labels\u0027]]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BOdo%3D","line":86,"updated":"2013-11-28 16:53:40.000000000","message":"For consistency with the _delete method perhaps this check should be in _create?","commit_id":"005858422be861a8700d8c896096bc11b07849f0"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"0d8a8e64fc8e9ea8cb5d7770b253f987e5c2428f","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        label_id \u003d self._create_meter_label()"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        resp, list_body \u003d self.client.list_meter_labels()"},{"line_number":86,"context_line":"        self.assertEqual(resp[\u0027status\u0027], \u0027200\u0027)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        metering_labels_ids \u003d \\"},{"line_number":89,"context_line":"            [label[\u0027id\u0027] for label in list_body[\u0027metering_labels\u0027]]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BLGk%3D","line":86,"in_reply_to":"AAAATn%2F%2BOdo%3D","updated":"2013-11-29 21:44:15.000000000","message":"Indeed.","commit_id":"005858422be861a8700d8c896096bc11b07849f0"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"2891f7949774c5e3715221110b74cccabe8a2cb2","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    def setUpClass(cls):"},{"line_number":28,"context_line":"        super(MeteringTest, cls).setUpClass()"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        # These tests must be run by the admin, who is the only one able to"},{"line_number":31,"context_line":"        # create metering labels and rules according to the default policy."},{"line_number":32,"context_line":"        cls.adm_user \u003d cls.config.identity.admin_username"},{"line_number":33,"context_line":"        cls.adm_pass \u003d cls.config.identity.admin_password"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BK7Q%3D","line":30,"updated":"2013-11-29 22:24:02.000000000","message":"This class should inherit from BaseAdminNetworkTest","commit_id":"620859e18949c47c5aaf48d9ba99a401185bd077"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"9bc55af65b657f9d46cff79291f2e432a2558bdd","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    def setUpClass(cls):"},{"line_number":28,"context_line":"        super(MeteringTest, cls).setUpClass()"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        # These tests must be run by the admin, who is the only one able to"},{"line_number":31,"context_line":"        # create metering labels and rules according to the default policy."},{"line_number":32,"context_line":"        cls.adm_user \u003d cls.config.identity.admin_username"},{"line_number":33,"context_line":"        cls.adm_pass \u003d cls.config.identity.admin_password"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BGo0%3D","line":30,"in_reply_to":"AAAATn%2F%2BK7Q%3D","updated":"2013-12-02 15:25:29.000000000","message":"Done","commit_id":"620859e18949c47c5aaf48d9ba99a401185bd077"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"2891f7949774c5e3715221110b74cccabe8a2cb2","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        super(MeteringTest, cls).setUpClass()"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        # These tests must be run by the admin, who is the only one able to"},{"line_number":31,"context_line":"        # create metering labels and rules according to the default policy."},{"line_number":32,"context_line":"        cls.adm_user \u003d cls.config.identity.admin_username"},{"line_number":33,"context_line":"        cls.adm_pass \u003d cls.config.identity.admin_password"},{"line_number":34,"context_line":"        cls.adm_tenant \u003d cls.config.identity.admin_tenant_name"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BK7M%3D","line":31,"updated":"2013-11-29 22:24:02.000000000","message":"The isolated cred stuff should really be in BaseNetworkTest as it is for BaseComputeTest","commit_id":"620859e18949c47c5aaf48d9ba99a401185bd077"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"9bc55af65b657f9d46cff79291f2e432a2558bdd","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        super(MeteringTest, cls).setUpClass()"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        # These tests must be run by the admin, who is the only one able to"},{"line_number":31,"context_line":"        # create metering labels and rules according to the default policy."},{"line_number":32,"context_line":"        cls.adm_user \u003d cls.config.identity.admin_username"},{"line_number":33,"context_line":"        cls.adm_pass \u003d cls.config.identity.admin_password"},{"line_number":34,"context_line":"        cls.adm_tenant \u003d cls.config.identity.admin_tenant_name"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BGow%3D","line":31,"in_reply_to":"AAAATn%2F%2BK7M%3D","updated":"2013-12-02 15:25:29.000000000","message":"Done","commit_id":"620859e18949c47c5aaf48d9ba99a401185bd077"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"40ec6e5854edb045d5e710a3805f3308ecf12d54","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2013 eNovance SAS \u003clicensing@enovance.com\u003e"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Author: Cyril Roelandt \u003ccyril.roelandt@enovance.com\u003e"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9va4%3D","line":1,"updated":"2013-12-06 14:40:03.000000000","message":"please add \"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4\" on the top.","commit_id":"c57763082a1fca94af9348871491f99e639ab49c"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"baf6c3525902a921a1b6a884e19755b8459f92e3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2013 eNovance SAS \u003clicensing@enovance.com\u003e"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Author: Cyril Roelandt \u003ccyril.roelandt@enovance.com\u003e"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9qrQ%3D","line":1,"in_reply_to":"AAAATn%2F9rJY%3D","updated":"2013-12-09 02:11:58.000000000","message":"David, thank you very much for your reminder!","commit_id":"c57763082a1fca94af9348871491f99e639ab49c"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"79d66a394aa790e6f07d375a27c4d625b15c926f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2013 eNovance SAS \u003clicensing@enovance.com\u003e"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Author: Cyril Roelandt \u003ccyril.roelandt@enovance.com\u003e"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9rJY%3D","line":1,"in_reply_to":"AAAATn%2F9va4%3D","updated":"2013-12-08 18:37:46.000000000","message":"There was a recent email thread on openstack-dev, which was not resolved, about a proposal to *remove* all editor-specific lines. I don\u0027t think reviewers should be -1\u0027ing patches that do not have them. That has certainly not been our practice.","commit_id":"c57763082a1fca94af9348871491f99e639ab49c"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"40ec6e5854edb045d5e710a3805f3308ecf12d54","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2013 eNovance SAS \u003clicensing@enovance.com\u003e"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Author: Cyril Roelandt \u003ccyril.roelandt@enovance.com\u003e"},{"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"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9vZ4%3D","line":3,"updated":"2013-12-06 14:40:03.000000000","message":"Not sure if the author info is required. Normally there\u0027s not author\u0027s info here.","commit_id":"c57763082a1fca94af9348871491f99e639ab49c"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"40ec6e5854edb045d5e710a3805f3308ecf12d54","unresolved":false,"context_lines":[{"line_number":15,"context_line":"# under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from tempest.api.network import base"},{"line_number":18,"context_line":"from tempest.common.utils.data_utils import rand_name"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class MeteringTest(base.BaseAdminNetworkTest):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9vYU%3D","line":18,"updated":"2013-12-06 14:40:03.000000000","message":"the best practice is importing module:\nfrom tempest.common.utils import data_utils","commit_id":"c57763082a1fca94af9348871491f99e639ab49c"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"53d161aefe1653053f05ab7bb69b2b12ffec48c0","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        rule_ids \u003d [rule[\u0027id\u0027] for rule in list_body[\u0027metering_label_rules\u0027]]"},{"line_number":58,"context_line":"        self.assertNotIn(rule_id, rule_ids)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def test_create_meter_label(self):"},{"line_number":61,"context_line":"        # The _create_meter_label() function creates a meter_label, make sure"},{"line_number":62,"context_line":"        # it worked, and makes sure it will be deleted."},{"line_number":63,"context_line":"        self._create_meter_label()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9K2w%3D","line":60,"updated":"2013-12-16 01:42:38.000000000","message":"It seems that this test is not executed in the gate.\nI think it needs to add a \"@attr(type\u003d\u0027smoke\u0027)\"(or type\u003d\u0027gate\u0027) for merging this test to the master tree.","commit_id":"990a0e926ff4be5de72dafc68e2e5b7127b52860"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"53d161aefe1653053f05ab7bb69b2b12ffec48c0","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        self._create_meter_label()"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def test_create_meter_label_rule(self):"},{"line_number":66,"context_line":"        label_id \u003d self._create_meter_label()"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        resp, create_body \u003d self.admin_client.create_meter_label_rule("},{"line_number":69,"context_line":"            label_id, \u00270.0.0.0/0\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9K2o%3D","line":66,"updated":"2013-12-16 01:42:38.000000000","message":"ditto","commit_id":"990a0e926ff4be5de72dafc68e2e5b7127b52860"}]}
