)]}'
{"patrole_tempest_plugin/tests/api/volume/test_volume_actions_rbac.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4ef00cab6022641cd6859c08939f9c873aa64201","unresolved":false,"context_lines":[{"line_number":111,"context_line":"    @rbac_rule_validation.action(service\u003d\"cinder\","},{"line_number":112,"context_line":"                                 rule\u003d\"volume:update\")"},{"line_number":113,"context_line":"    def test_volume_set_bootable(self):"},{"line_number":114,"context_line":"        volume \u003d self.create_volume()"},{"line_number":115,"context_line":"        self.rbac_utils.switch_role(self, toggle_rbac_role\u003dTrue)"},{"line_number":116,"context_line":"        self.client.set_bootable_volume(volume[\u0027id\u0027], bootable\u003dTrue)"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_e2aca98d","line":114,"range":{"start_line":114,"start_character":8,"end_line":114,"end_character":37},"updated":"2017-04-25 23:04:38.000000000","message":"We can use the class-level vol here with an appropriate clean up.","commit_id":"c766bb2acb71c4a41a67cbe2901fd53b5d4badb9"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4ef00cab6022641cd6859c08939f9c873aa64201","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    @rbac_rule_validation.action(service\u003d\"cinder\","},{"line_number":120,"context_line":"                                 rule\u003d\"volume:reserve_volume\")"},{"line_number":121,"context_line":"    def test_volume_reserve(self):"},{"line_number":122,"context_line":"        volume \u003d self.create_volume()"},{"line_number":123,"context_line":"        self.rbac_utils.switch_role(self, toggle_rbac_role\u003dTrue)"},{"line_number":124,"context_line":"        self.client.reserve_volume(volume[\u0027id\u0027])"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_02c79547","line":122,"range":{"start_line":122,"start_character":8,"end_line":122,"end_character":37},"updated":"2017-04-25 23:04:38.000000000","message":"Ditto.","commit_id":"c766bb2acb71c4a41a67cbe2901fd53b5d4badb9"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4ef00cab6022641cd6859c08939f9c873aa64201","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    @rbac_rule_validation.action(service\u003d\"cinder\","},{"line_number":128,"context_line":"                                 rule\u003d\"volume:unreserve_volume\")"},{"line_number":129,"context_line":"    def test_volume_unreserve(self):"},{"line_number":130,"context_line":"        volume \u003d self.create_volume()"},{"line_number":131,"context_line":"        self.rbac_utils.switch_role(self, toggle_rbac_role\u003dTrue)"},{"line_number":132,"context_line":"        self.client.unreserve_volume(volume[\u0027id\u0027])"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_c2c08d2d","line":130,"range":{"start_line":130,"start_character":8,"end_line":130,"end_character":37},"updated":"2017-04-25 23:04:38.000000000","message":"Ditto.","commit_id":"c766bb2acb71c4a41a67cbe2901fd53b5d4badb9"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4ef00cab6022641cd6859c08939f9c873aa64201","unresolved":false,"context_lines":[{"line_number":135,"context_line":"    @rbac_rule_validation.action(service\u003d\"cinder\","},{"line_number":136,"context_line":"                                 rule\u003d\"volume:retype\")"},{"line_number":137,"context_line":"    def test_volume_retype(self):"},{"line_number":138,"context_line":"        volume \u003d self.create_volume()"},{"line_number":139,"context_line":"        vol_type \u003d self.create_volume_type()[\u0027name\u0027]"},{"line_number":140,"context_line":"        self.rbac_utils.switch_role(self, toggle_rbac_role\u003dTrue)"},{"line_number":141,"context_line":"        self.client.retype_volume(volume[\u0027id\u0027], new_type\u003dvol_type)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_a2dd8115","line":138,"range":{"start_line":138,"start_character":8,"end_line":138,"end_character":37},"updated":"2017-04-25 23:04:38.000000000","message":"Might be true here too.","commit_id":"c766bb2acb71c4a41a67cbe2901fd53b5d4badb9"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"914cd2ee06d4927c25792205735542d3e38669c2","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        if CONF.image_feature_enabled.api_v1:"},{"line_number":40,"context_line":"            cls.image_client \u003d cls.os_primary.image_client"},{"line_number":41,"context_line":"        elif CONF.image_feature_enabled.api_v2:"},{"line_number":42,"context_line":"            cls.image_client \u003d cls.os.image_client_v2"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    @classmethod"},{"line_number":45,"context_line":"    def resource_setup(cls):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_f3ac0ba0","line":42,"range":{"start_line":42,"start_character":35,"end_line":42,"end_character":37},"updated":"2017-04-28 20:19:49.000000000","message":"os_primary","commit_id":"0399146454c748eca23a86bef21b215977568428"}],"patrole_tempest_plugin/tests/api/volume/test_volume_metadata_rbac.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4ef00cab6022641cd6859c08939f9c873aa64201","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from patrole_tempest_plugin import rbac_rule_validation"},{"line_number":22,"context_line":"from patrole_tempest_plugin.tests.api.volume import rbac_base"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"CONF \u003d config.CONF"},{"line_number":25,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class VolumeMetadataRbacTest(rbac_base.BaseVolumeRbacTest):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_e277093a","line":25,"range":{"start_line":24,"start_character":0,"end_line":25,"end_character":33},"updated":"2017-04-25 23:04:38.000000000","message":"Unused.","commit_id":"c766bb2acb71c4a41a67cbe2901fd53b5d4badb9"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4ef00cab6022641cd6859c08939f9c873aa64201","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    @decorators.idempotent_id(\u002787ea37d9-23ab-47b2-a59c-16fc4d2c6dfa\u0027)"},{"line_number":54,"context_line":"    def test_get_volume_metadata(self):"},{"line_number":55,"context_line":"        volume \u003d self.create_volume()"},{"line_number":56,"context_line":"        self._add_metadata(volume)"},{"line_number":57,"context_line":"        self.rbac_utils.switch_role(self, toggle_rbac_role\u003dTrue)"},{"line_number":58,"context_line":"        self.volumes_client.show_volume_metadata(volume[\u0027id\u0027])[\u0027metadata\u0027]"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_e29ee961","line":56,"range":{"start_line":56,"start_character":8,"end_line":56,"end_character":34},"updated":"2017-04-25 23:04:38.000000000","message":"This might not be necessary here.","commit_id":"c766bb2acb71c4a41a67cbe2901fd53b5d4badb9"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4ef00cab6022641cd6859c08939f9c873aa64201","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    @decorators.idempotent_id(\u00278ce2ff80-99ba-49ae-9bb1-7e96729ee5af\u0027)"},{"line_number":73,"context_line":"    def test_update_volume_metadata_item(self):"},{"line_number":74,"context_line":"        volume \u003d self.create_volume()"},{"line_number":75,"context_line":"        self._add_metadata(volume)"},{"line_number":76,"context_line":"        # Metadata to update"},{"line_number":77,"context_line":"        update_item \u003d {\"key3\": \"value3_update\"}"},{"line_number":78,"context_line":"        self.rbac_utils.switch_role(self, toggle_rbac_role\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_6284190d","line":75,"range":{"start_line":75,"start_character":8,"end_line":75,"end_character":34},"updated":"2017-04-25 23:04:38.000000000","message":"Arguably this could be done class-wide as well since only \"key1\" is deleted. Just use another key for the rest.","commit_id":"c766bb2acb71c4a41a67cbe2901fd53b5d4badb9"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4ef00cab6022641cd6859c08939f9c873aa64201","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    @rbac_rule_validation.action(service\u003d\"cinder\","},{"line_number":84,"context_line":"                                 rule\u003d\"volume:update_volume_metadata\")"},{"line_number":85,"context_line":"    def test_update_volume_metadata(self):"},{"line_number":86,"context_line":"        volume \u003d self.create_volume()"},{"line_number":87,"context_line":"        self._add_metadata(volume)"},{"line_number":88,"context_line":"        # Metadata to update"},{"line_number":89,"context_line":"        update \u003d {\"key3\": \"value3_update\"}"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_2295f140","line":86,"range":{"start_line":86,"start_character":8,"end_line":86,"end_character":37},"updated":"2017-04-25 23:04:38.000000000","message":"I don\u0027t think it\u0027s necessary to create a volume for each of these tests given that all we\u0027re doing is CRUD for metadata. We might as well quickly refactor the tests with a class-wide vol.","commit_id":"c766bb2acb71c4a41a67cbe2901fd53b5d4badb9"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"914cd2ee06d4927c25792205735542d3e38669c2","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        super(VolumeMetadataRbacTest, cls).setup_clients()"},{"line_number":29,"context_line":"        cls.client \u003d cls.volumes_client"},{"line_number":30,"context_line":"        if CONF.image_feature_enabled.api_v1:"},{"line_number":31,"context_line":"            cls.image_client \u003d cls.os.image_client"},{"line_number":32,"context_line":"        elif CONF.image_feature_enabled.api_v2:"},{"line_number":33,"context_line":"            cls.image_client \u003d cls.os.image_client_v2"},{"line_number":34,"context_line":"        cls.image_id \u003d CONF.compute.image_ref"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_7398fb73","line":31,"range":{"start_line":31,"start_character":35,"end_line":31,"end_character":37},"updated":"2017-04-28 20:19:49.000000000","message":"os_primary","commit_id":"0399146454c748eca23a86bef21b215977568428"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"914cd2ee06d4927c25792205735542d3e38669c2","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        if CONF.image_feature_enabled.api_v1:"},{"line_number":31,"context_line":"            cls.image_client \u003d cls.os.image_client"},{"line_number":32,"context_line":"        elif CONF.image_feature_enabled.api_v2:"},{"line_number":33,"context_line":"            cls.image_client \u003d cls.os.image_client_v2"},{"line_number":34,"context_line":"        cls.image_id \u003d CONF.compute.image_ref"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_538dff2f","line":33,"range":{"start_line":33,"start_character":35,"end_line":33,"end_character":37},"updated":"2017-04-28 20:19:49.000000000","message":"os_primary","commit_id":"0399146454c748eca23a86bef21b215977568428"}]}
