)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13555,"name":"Pradeep K Surisetty","username":"pradeepkumars","inactive":true},"change_message_id":"88edf546bf59661e307e51940267ceba4f60e3ad","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Yuriy Nesenenko \u003cynesenenko@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-04-15 15:49:18 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add Cinder create_backup volume scenario"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implemented create_backup volume scenario for Cinder"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"7aaa499b_147f2c67","line":7,"updated":"2015-04-15 13:00:16.000000000","message":"As you have both create_backup, delete_backup methods\nwhy dont you change this to \" Add Cinder create_backup \u0026 delete_backup\"  scenario","commit_id":"8cba53822d9db285d2a904c2bcc2c0a3bb382526"}],"rally-jobs/rally-mos_neutron.yaml":[{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"1d2c0285d903677fe55beb274e04558f3c3ba110","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        failure_rate:"},{"line_number":276,"context_line":"          max: 0"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":" CinderVolumes.create_volume_backup:"},{"line_number":279,"context_line":"    -"},{"line_number":280,"context_line":"      args:"},{"line_number":281,"context_line":"        do_delete: True"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"7aaa499b_aa7f2165","line":278,"updated":"2015-04-14 11:23:44.000000000","message":"This yaml document is not valid because of this 2 spaces. Here should be 3 spaces. (see line 262)","commit_id":"cea6246934176fc78dcbd3b6ef348927de905df9"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"6cc587d7fe0bad9b6d3644e20aa14730d546b993","unresolved":false,"context_lines":[{"line_number":289,"context_line":"          tenants: 1"},{"line_number":290,"context_line":"          users_per_tenant: 1"},{"line_number":291,"context_line":"        roles:"},{"line_number":292,"context_line":"          - \"Member\""},{"line_number":293,"context_line":"      sla:"},{"line_number":294,"context_line":"        failure_rate:"},{"line_number":295,"context_line":"          max: 0"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"5aa745d1_7a77e702","line":292,"updated":"2015-04-16 09:52:22.000000000","message":"Member role is granted to all users by default","commit_id":"1374e0cbaa4a1d7841679e3d16c88da8f7a7a7f0"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"e5cffbc472961385229337b4efe2a1b4dbf8ac04","unresolved":false,"context_lines":[{"line_number":289,"context_line":"          tenants: 1"},{"line_number":290,"context_line":"          users_per_tenant: 1"},{"line_number":291,"context_line":"        roles:"},{"line_number":292,"context_line":"\t      - \"Member\""},{"line_number":293,"context_line":"      sla:"},{"line_number":294,"context_line":"        failure_rate:"},{"line_number":295,"context_line":"          max: 0"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"5aa745d1_5e3776b0","line":292,"updated":"2015-04-16 13:06:50.000000000","message":"Seems tab here.\n\nAlso, there is no Member role in MOS, this role called \"_member_\"","commit_id":"ca96b38056e9a4ecd7bbfd529ffcd3d894bd00b7"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ec38d2b1abd623205bdbb48d35f9705338ff7ce2","unresolved":false,"context_lines":[{"line_number":289,"context_line":"          tenants: 1"},{"line_number":290,"context_line":"          users_per_tenant: 1"},{"line_number":291,"context_line":"        roles:"},{"line_number":292,"context_line":"          - \"_member_\""},{"line_number":293,"context_line":"      sla:"},{"line_number":294,"context_line":"        failure_rate:"},{"line_number":295,"context_line":"          max: 0"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"5aa745d1_4ae20b05","line":292,"updated":"2015-04-16 14:35:59.000000000","message":"MOS use cinder ceph backup driver. No need to add roles here","commit_id":"aa0bb27f383ef4c828d6064644dc1ca5f28d1a12"}],"rally-jobs/rally-mos_neutron_v3.yaml":[{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"73c5d09aa04cd28dea1011e2d3e04cb7aea9aeae","unresolved":false,"context_lines":[{"line_number":278,"context_line":" CinderVolumes.create_volume_backup:"},{"line_number":279,"context_line":"    -"},{"line_number":280,"context_line":"      args:"},{"line_number":281,"context_line":"        do_delete: true"},{"line_number":282,"context_line":"      runner:"},{"line_number":283,"context_line":"        type: \"constant\""},{"line_number":284,"context_line":"        times: 1"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"9aa53dc9_707db01b","line":281,"updated":"2015-04-07 13:33:40.000000000","message":"This should be capitalized:\n    True","commit_id":"b80513d6ad9dd84bb89bca00c5bd3810075b3f56"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"e7aca736f1b56ba3b676215d0d57d815f2b6188e","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        do_delete: True"},{"line_number":282,"context_line":"      runner:"},{"line_number":283,"context_line":"        type: \"constant\""},{"line_number":284,"context_line":"        times: 2"},{"line_number":285,"context_line":"        concurrency: 1"},{"line_number":286,"context_line":"      context:"},{"line_number":287,"context_line":"        users:"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"9aa53dc9_3cd2da5c","line":284,"updated":"2015-04-10 10:31:40.000000000","message":"It\u0027s better to use here times: 1 because we have very little resources on server.","commit_id":"b0d770d825b982799e0e347f691e93b54222c1ab"}],"rally-jobs/rally-neutron.yaml":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"31d9296be9565d4e805c17ed806fd2a92f575cd8","unresolved":false,"context_lines":[{"line_number":724,"context_line":"        size: 1"},{"line_number":725,"context_line":"      runner:"},{"line_number":726,"context_line":"        type: \"constant\""},{"line_number":727,"context_line":"        times: 1"},{"line_number":728,"context_line":"        concurrency: 1"},{"line_number":729,"context_line":"      context:"},{"line_number":730,"context_line":"        users:"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"baa041b7_b9556cc7","line":727,"updated":"2015-04-02 12:07:12.000000000","message":"IMHO `1\u0027 is too small value to analyze what is happening","commit_id":"b8c79c04e52e42c814c7574aab950150845529e6"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"73c5d09aa04cd28dea1011e2d3e04cb7aea9aeae","unresolved":false,"context_lines":[{"line_number":721,"context_line":"  CinderVolumes.create_volume_backup:"},{"line_number":722,"context_line":"    -"},{"line_number":723,"context_line":"      args:"},{"line_number":724,"context_line":"        do_delete: true"},{"line_number":725,"context_line":"      runner:"},{"line_number":726,"context_line":"        type: \"constant\""},{"line_number":727,"context_line":"        times: 2"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"9aa53dc9_b099f870","line":724,"updated":"2015-04-07 13:33:40.000000000","message":"Same here","commit_id":"b80513d6ad9dd84bb89bca00c5bd3810075b3f56"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"08eb8598d454b7ff4ee36493101e65435569ef7c","unresolved":false,"context_lines":[{"line_number":721,"context_line":"  CinderVolumes.create_volume_backup:"},{"line_number":722,"context_line":"    -"},{"line_number":723,"context_line":"      args:"},{"line_number":724,"context_line":"        do_delete: true"},{"line_number":725,"context_line":"      runner:"},{"line_number":726,"context_line":"        type: \"constant\""},{"line_number":727,"context_line":"        times: 2"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"9aa53dc9_415c204b","line":724,"updated":"2015-04-07 14:29:07.000000000","message":"We don\u0027t need to specify this parameter because he is by default true","commit_id":"b80513d6ad9dd84bb89bca00c5bd3810075b3f56"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"e7aca736f1b56ba3b676215d0d57d815f2b6188e","unresolved":false,"context_lines":[{"line_number":725,"context_line":"      runner:"},{"line_number":726,"context_line":"        type: \"constant\""},{"line_number":727,"context_line":"        times: 2"},{"line_number":728,"context_line":"        concurrency: 1"},{"line_number":729,"context_line":"      context:"},{"line_number":730,"context_line":"        users:"},{"line_number":731,"context_line":"          tenants: 1"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"9aa53dc9_9c71e678","line":728,"updated":"2015-04-10 10:31:40.000000000","message":"Lets make here concurrency: 2 to check how it work on multi-threading.","commit_id":"b0d770d825b982799e0e347f691e93b54222c1ab"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"3c8b21c6481f9f91f03536e014bf8b7419c8b9e2","unresolved":false,"context_lines":[{"line_number":725,"context_line":"      runner:"},{"line_number":726,"context_line":"        type: \"constant\""},{"line_number":727,"context_line":"        times: 2"},{"line_number":728,"context_line":"        concurrency: 1"},{"line_number":729,"context_line":"      context:"},{"line_number":730,"context_line":"        users:"},{"line_number":731,"context_line":"          tenants: 1"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"7aaa499b_547db7e5","line":728,"updated":"2015-04-15 11:52:37.000000000","message":"We should check concurrency. \n\nWhat will happen if we try to run 2 backups for 1 single volume?","commit_id":"ff3196d362c7a5890dc3d39f5627f78528453f26"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ca95b2ecba7fcc16d05b10e4be3053f2d2ef2376","unresolved":false,"context_lines":[{"line_number":725,"context_line":"      runner:"},{"line_number":726,"context_line":"        type: \"constant\""},{"line_number":727,"context_line":"        times: 2"},{"line_number":728,"context_line":"        concurrency: 1"},{"line_number":729,"context_line":"      context:"},{"line_number":730,"context_line":"        users:"},{"line_number":731,"context_line":"          tenants: 1"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"7aaa499b_94e1ff9c","line":728,"in_reply_to":"7aaa499b_547db7e5","updated":"2015-04-15 12:02:23.000000000","message":"You\u0027ll get 400 Bad Request responce.\nShould be:\ntimes: 2\nconcurrency: 2","commit_id":"ff3196d362c7a5890dc3d39f5627f78528453f26"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"3c8b21c6481f9f91f03536e014bf8b7419c8b9e2","unresolved":false,"context_lines":[{"line_number":732,"context_line":"          users_per_tenant: 1"},{"line_number":733,"context_line":"        volumes:"},{"line_number":734,"context_line":"          size: 1"},{"line_number":735,"context_line":"        roles:"},{"line_number":736,"context_line":"          - \"Member\""},{"line_number":737,"context_line":"      sla:"},{"line_number":738,"context_line":"        failure_rate:"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"7aaa499b_14872fd8","line":735,"updated":"2015-04-15 11:52:37.000000000","message":"why we need this?","commit_id":"ff3196d362c7a5890dc3d39f5627f78528453f26"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ca95b2ecba7fcc16d05b10e4be3053f2d2ef2376","unresolved":false,"context_lines":[{"line_number":732,"context_line":"          users_per_tenant: 1"},{"line_number":733,"context_line":"        volumes:"},{"line_number":734,"context_line":"          size: 1"},{"line_number":735,"context_line":"        roles:"},{"line_number":736,"context_line":"          - \"Member\""},{"line_number":737,"context_line":"      sla:"},{"line_number":738,"context_line":"        failure_rate:"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"7aaa499b_d48547ad","line":735,"in_reply_to":"7aaa499b_14872fd8","updated":"2015-04-15 12:02:23.000000000","message":"By default in devstack you only users with roles Member and admin could create objects in Swift. Swift is default back-and for cinder-backup","commit_id":"ff3196d362c7a5890dc3d39f5627f78528453f26"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"6cc587d7fe0bad9b6d3644e20aa14730d546b993","unresolved":false,"context_lines":[{"line_number":732,"context_line":"          tenants: 1"},{"line_number":733,"context_line":"          users_per_tenant: 1"},{"line_number":734,"context_line":"        roles:"},{"line_number":735,"context_line":"          - \"Member\""},{"line_number":736,"context_line":"      sla:"},{"line_number":737,"context_line":"        failure_rate:"},{"line_number":738,"context_line":"          max: 0"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"5aa745d1_85adb48a","line":735,"updated":"2015-04-16 09:52:22.000000000","message":"Member role is granted to all users by default","commit_id":"1374e0cbaa4a1d7841679e3d16c88da8f7a7a7f0"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"cb6a3fcf545ab6b328d3b89a8e95b50868076cc4","unresolved":false,"context_lines":[{"line_number":824,"context_line":"    -"},{"line_number":825,"context_line":"      args:"},{"line_number":826,"context_line":"        size: 1"},{"line_number":827,"context_line":"        do_delete: True"},{"line_number":828,"context_line":"      runner:"},{"line_number":829,"context_line":"        type: \"constant\""},{"line_number":830,"context_line":"        times: 2"}],"source_content_type":"text/x-yaml","patch_set":28,"id":"9a0c5dc1_83fd763c","line":827,"updated":"2015-05-13 11:30:28.000000000","message":"you should test 2 scenarios one with do_delete True and False","commit_id":"d4833550c5b84be97279e3fe31f01e8d948ec51b"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"cb6a3fcf545ab6b328d3b89a8e95b50868076cc4","unresolved":false,"context_lines":[{"line_number":833,"context_line":"        users:"},{"line_number":834,"context_line":"          tenants: 1"},{"line_number":835,"context_line":"          users_per_tenant: 1"},{"line_number":836,"context_line":"        roles:"},{"line_number":837,"context_line":"          - \"Member\""},{"line_number":838,"context_line":"      sla:"},{"line_number":839,"context_line":"        failure_rate:"}],"source_content_type":"text/x-yaml","patch_set":28,"id":"9a0c5dc1_a3d75abe","line":836,"updated":"2015-05-13 11:30:28.000000000","message":"Do we really need to add here roles?","commit_id":"d4833550c5b84be97279e3fe31f01e8d948ec51b"},{"author":{"_account_id":14305,"name":"Yuriy Nesenenko","email":"ynesenenko@mirantis.com","username":"yuriy_n"},"change_message_id":"d454d04e47c2fc8c2b09be854d1493ef6019adfc","unresolved":false,"context_lines":[{"line_number":833,"context_line":"        users:"},{"line_number":834,"context_line":"          tenants: 1"},{"line_number":835,"context_line":"          users_per_tenant: 1"},{"line_number":836,"context_line":"        roles:"},{"line_number":837,"context_line":"          - \"Member\""},{"line_number":838,"context_line":"      sla:"},{"line_number":839,"context_line":"        failure_rate:"}],"source_content_type":"text/x-yaml","patch_set":28,"id":"9a0c5dc1_beb1ad91","line":836,"in_reply_to":"9a0c5dc1_a3d75abe","updated":"2015-05-13 11:56:09.000000000","message":"By default, Devstack uses Swift as back-end for cinder-backup. And only users with roles Member and admin could create objects in Swift.","commit_id":"d4833550c5b84be97279e3fe31f01e8d948ec51b"}],"rally/benchmark/scenarios/cinder/utils.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"31d9296be9565d4e805c17ed806fd2a92f575cd8","unresolved":false,"context_lines":[{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    @base.atomic_action_timer(\"cinder.create_backup\")"},{"line_number":213,"context_line":"    def _create_backup(self, volume_id, **kwargs):"},{"line_number":214,"context_line":"        \"\"\"Creates a volume backup of the given volume."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        :param volume_id: The ID of the volume to backup."},{"line_number":217,"context_line":"        :param kwargs: Other optional parameters"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa041b7_06a4f7a3","line":214,"updated":"2015-04-02 12:07:12.000000000","message":"s/Creates/Create/  ref. PEP257","commit_id":"b8c79c04e52e42c814c7574aab950150845529e6"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"31d9296be9565d4e805c17ed806fd2a92f575cd8","unresolved":false,"context_lines":[{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        Returns when the backup is actually deleted."},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"        :param backup: backup object"},{"line_number":236,"context_line":"        \"\"\""},{"line_number":237,"context_line":"        backup.delete()"},{"line_number":238,"context_line":"        bench_utils.wait_for_delete("}],"source_content_type":"text/x-python","patch_set":4,"id":"baa041b7_667e23e6","line":235,"updated":"2015-04-02 12:07:12.000000000","message":"s/object/instance/","commit_id":"b8c79c04e52e42c814c7574aab950150845529e6"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"7e7f03391df636ebc61fbe24393b86e6760c8c22","unresolved":false,"context_lines":[{"line_number":224,"context_line":"            timeout\u003dCONF.benchmark.cinder_volume_create_timeout,"},{"line_number":225,"context_line":"            check_interval\u003dCONF.benchmark.cinder_volume_create_poll_interval"},{"line_number":226,"context_line":"        )"},{"line_number":227,"context_line":"        return backup"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    @base.atomic_action_timer(\"cinder.delete_backup\")"},{"line_number":230,"context_line":"    def _delete_backup(self, backup):"}],"source_content_type":"text/x-python","patch_set":24,"id":"1aca2d91_f6d1b5fc","line":227,"updated":"2015-05-06 20:16:08.000000000","message":"Python golf:\n\n    return bench_utils.wait_for(...)\n\nInstead of modifying \u0027backup\u0027 and returning it separately.","commit_id":"1df53f1ae8c2829b15c5c8d54432bc99c72cf488"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"7e7f03391df636ebc61fbe24393b86e6760c8c22","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        return backup"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    @base.atomic_action_timer(\"cinder.delete_backup\")"},{"line_number":230,"context_line":"    def _delete_backup(self, backup):"},{"line_number":231,"context_line":"        \"\"\"Delete the given backup."},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        Returns when the backup is actually deleted."}],"source_content_type":"text/x-python","patch_set":24,"id":"1aca2d91_36d16dce","line":230,"updated":"2015-05-06 20:16:08.000000000","message":"Backups are just volumes, so this function seems unnecessary.","commit_id":"1df53f1ae8c2829b15c5c8d54432bc99c72cf488"},{"author":{"_account_id":14305,"name":"Yuriy Nesenenko","email":"ynesenenko@mirantis.com","username":"yuriy_n"},"change_message_id":"9000dad6fe8d120f7488cb623510b6cc47b663bc","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        return backup"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    @base.atomic_action_timer(\"cinder.delete_backup\")"},{"line_number":230,"context_line":"    def _delete_backup(self, backup):"},{"line_number":231,"context_line":"        \"\"\"Delete the given backup."},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        Returns when the backup is actually deleted."}],"source_content_type":"text/x-python","patch_set":24,"id":"1aca2d91_dafa3cbd","line":230,"in_reply_to":"1aca2d91_36d16dce","updated":"2015-05-07 13:41:38.000000000","message":"By default, Cinder Backup uses object store provided with OpenStack Swift service for backup services. In contrast, OpenStack Cinder represents block storage. So I wouldn\u0027t say that backups are just volumes.","commit_id":"1df53f1ae8c2829b15c5c8d54432bc99c72cf488"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"bf9ec6410a928037142c159d7dbceac414a7cb9f","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        return backup"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    @base.atomic_action_timer(\"cinder.delete_backup\")"},{"line_number":230,"context_line":"    def _delete_backup(self, backup):"},{"line_number":231,"context_line":"        \"\"\"Delete the given backup."},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        Returns when the backup is actually deleted."}],"source_content_type":"text/x-python","patch_set":24,"id":"1aca2d91_3a937051","line":230,"in_reply_to":"1aca2d91_dafa3cbd","updated":"2015-05-07 13:44:03.000000000","message":"Ah, fair enough. I don\u0027t use Swift, so I didn\u0027t realize that. This function (and timing of backup deletion) is indeed necessary. Thanks for clarifying.","commit_id":"1df53f1ae8c2829b15c5c8d54432bc99c72cf488"}],"rally/benchmark/scenarios/cinder/volumes.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"32e8107af0af1b944c0e072eae65ccc006d2f9a3","unresolved":false,"context_lines":[{"line_number":394,"context_line":"    @validation.required_contexts(\"volumes\")"},{"line_number":395,"context_line":"    @validation.required_openstack(users\u003dTrue)"},{"line_number":396,"context_line":"    @base.scenario(context\u003d{\"cleanup\": [\"cinder\"]})"},{"line_number":397,"context_line":"    def create_backup(self, min_sleep\u003d0, max_sleep\u003d0, **kwargs):"},{"line_number":398,"context_line":"        \"\"\"Create a volume backup and then it"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"        :param size: volume size in GB"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6ced46_5459df58","line":397,"updated":"2015-03-25 10:35:49.000000000","message":"s/create_backup/create_and_delete_backup/ - there is a _delete_backup() in this scenario)","commit_id":"eabb95153c5dcd0b0585500ced0381a1dbf3aa20"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"629e166a3109f9bef8f2952fc410869be58df617","unresolved":false,"context_lines":[{"line_number":392,"context_line":"    @validation.required_services(consts.Service.CINDER)"},{"line_number":393,"context_line":"    @validation.required_openstack(users\u003dTrue)"},{"line_number":394,"context_line":"    @base.scenario(context\u003d{\"cleanup\": [\"cinder\"]})"},{"line_number":395,"context_line":"    def create_and_delete_backup(self, size, min_sleep\u003d0, max_sleep\u003d0,"},{"line_number":396,"context_line":"                                 **kwargs):"},{"line_number":397,"context_line":"        \"\"\"Create a volume backup and then delete it"},{"line_number":398,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"baa041b7_ab8f5922","line":395,"updated":"2015-04-02 09:57:33.000000000","message":"Yuriy, what do you think about adding optional argument to restore volume from backup or add volume_backup_and_restore scenario in the following patch?","commit_id":"b8c79c04e52e42c814c7574aab950150845529e6"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"629e166a3109f9bef8f2952fc410869be58df617","unresolved":false,"context_lines":[{"line_number":393,"context_line":"    @validation.required_openstack(users\u003dTrue)"},{"line_number":394,"context_line":"    @base.scenario(context\u003d{\"cleanup\": [\"cinder\"]})"},{"line_number":395,"context_line":"    def create_and_delete_backup(self, size, min_sleep\u003d0, max_sleep\u003d0,"},{"line_number":396,"context_line":"                                 **kwargs):"},{"line_number":397,"context_line":"        \"\"\"Create a volume backup and then delete it"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"        :param size: volume size in GB"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa041b7_8bbff5cf","line":396,"updated":"2015-04-02 09:57:33.000000000","message":"Please, add do_delete param","commit_id":"b8c79c04e52e42c814c7574aab950150845529e6"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"629e166a3109f9bef8f2952fc410869be58df617","unresolved":false,"context_lines":[{"line_number":401,"context_line":"                          and deletion (in seconds)"},{"line_number":402,"context_line":"        :param max_sleep: maximum sleep time between volume backup creation"},{"line_number":403,"context_line":"                          and deletion (in seconds)"},{"line_number":404,"context_line":"        :param kwargs: optional args to create a volume backup"},{"line_number":405,"context_line":"        \"\"\""},{"line_number":406,"context_line":"        volume \u003d self._create_volume(size, **kwargs)"},{"line_number":407,"context_line":"        backup \u003d self._create_backup(volume.id, **kwargs)"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa041b7_ebc8c176","line":404,"updated":"2015-04-02 09:57:33.000000000","message":"Please, add comment what optional params are supported","commit_id":"b8c79c04e52e42c814c7574aab950150845529e6"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"31d9296be9565d4e805c17ed806fd2a92f575cd8","unresolved":false,"context_lines":[{"line_number":403,"context_line":"                          and deletion (in seconds)"},{"line_number":404,"context_line":"        :param kwargs: optional args to create a volume backup"},{"line_number":405,"context_line":"        \"\"\""},{"line_number":406,"context_line":"        volume \u003d self._create_volume(size, **kwargs)"},{"line_number":407,"context_line":"        backup \u003d self._create_backup(volume.id, **kwargs)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"        self.sleep_between(min_sleep, max_sleep)"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa041b7_e6091333","line":406,"updated":"2015-04-02 12:07:12.000000000","message":"Why do create a volume per each scenario run? Maybe just use `volume\u0027 context and here deal with create/delete backup only","commit_id":"b8c79c04e52e42c814c7574aab950150845529e6"},{"author":{"_account_id":13555,"name":"Pradeep K Surisetty","username":"pradeepkumars","inactive":true},"change_message_id":"48489e64d3a4f88f1f427934c991234d2b104e0e","unresolved":false,"context_lines":[{"line_number":404,"context_line":"        backup \u003d self._create_backup(volume[\"id\"], **kwargs)"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"        if do_delete:"},{"line_number":407,"context_line":"            self._delete_backup(backup)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7aaa499b_21d5b242","line":407,"updated":"2015-04-12 14:33:10.000000000","message":"why do_delete? \n\nAnd also please check if volumes are getting deleted properly. \nAfter running these tests, my cinder backups are not deleted. \n\n[stack@localhost rally]$ cinder backup-list\n+--------------------------------------+--------------------------------------+--------+------+------+--------------+-----------+\n|                  ID                  |              Volume ID               | Status | Name | Size | Object Count | Container |\n+--------------------------------------+--------------------------------------+--------+------+------+--------------+-----------+\n| 12ee75c5-7246-4fd8-b444-57ddd630a48e | 3022d68b-0792-4316-93bb-0567c1a36855 | error  | None |  1   |     None     |    None   |\n| 2cd7709a-468c-44ea-a383-df92779ba7cd | faa3c033-c88c-4ed3-8b82-1396cc51420d | error  | None |  1   |     None     |    None   |\n| 64e62ebf-3c68-43d2-acc3-3de16d223ff1 | faa3c033-c88c-4ed3-8b82-1396cc51420d | error  | None |  1   |     None     |    None   |\n| 655c0163-fc97-48a8-9c5a-1f2ee452b445 | f91151fc-ee04-453a-be64-5625cf8513ab | error  | None |  1   |     None     |    None   |\n| df2ef3c7-b290-4054-bdf8-6964f4cef619 | f91151fc-ee04-453a-be64-5625cf8513ab | error  | None |  1   |     None     |    None   |\n| faa44049-731a-46dc-bb52-8cf9fe34b418 | 3022d68b-0792-4316-93bb-0567c1a36855 | error  | None |  1   |     None     |    None   |\n+--------------------------------------+--------------------------------------+--------+------+------+--------------+-----------+\n[stack@localhost rally]$","commit_id":"205b52b3f7010750409af3b7b81a742fbc08cf84"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"19f16ef61da2ed5f2cf3ba36ce37926d0d19c102","unresolved":false,"context_lines":[{"line_number":404,"context_line":"        backup \u003d self._create_backup(volume[\"id\"], **kwargs)"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"        if do_delete:"},{"line_number":407,"context_line":"            self._delete_backup(backup)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7aaa499b_67ee278d","line":407,"in_reply_to":"7aaa499b_21d5b242","updated":"2015-04-13 05:25:18.000000000","message":"do_delete is a kind of a Rally convenience. We use it in other scenarios too.","commit_id":"205b52b3f7010750409af3b7b81a742fbc08cf84"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ca95b2ecba7fcc16d05b10e4be3053f2d2ef2376","unresolved":false,"context_lines":[{"line_number":400,"context_line":"        :param do_delete: deletes volume backup if True"},{"line_number":401,"context_line":"        :param kwargs: optional args to create a volume backup"},{"line_number":402,"context_line":"        \"\"\""},{"line_number":403,"context_line":"        volume \u003d random.choice(self.context[\"tenant\"][\"volumes\"])"},{"line_number":404,"context_line":"        backup \u003d self._create_backup(volume[\"id\"], **kwargs)"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"        if do_delete:"}],"source_content_type":"text/x-python","patch_set":16,"id":"7aaa499b_5435b7f4","line":403,"updated":"2015-04-15 12:02:23.000000000","message":"It won\u0027t work stable with concurrency\u003e1. \n\nAfter \u0027create backup\u0027 invoke, cinder volume status will be \u0027backing-up\u0027 and you can\u0027t create the second backup until first finished. You\u0027ll get Bad Request error","commit_id":"ff3196d362c7a5890dc3d39f5627f78528453f26"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"7e7f03391df636ebc61fbe24393b86e6760c8c22","unresolved":false,"context_lines":[{"line_number":397,"context_line":"        \"\"\"Create a volume backup."},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"        :param size: volume size in GB"},{"line_number":400,"context_line":"        :param do_delete: deletes volume backup if True"},{"line_number":401,"context_line":"        :param kwargs: optional args to create a volume backup"},{"line_number":402,"context_line":"        \"\"\""},{"line_number":403,"context_line":"        volume \u003d self._create_volume(size, **kwargs)"}],"source_content_type":"text/x-python","patch_set":24,"id":"1aca2d91_165f9173","line":400,"updated":"2015-05-06 20:16:08.000000000","message":"This seems strange and unlike nearly every other benchmark in Rally. I know that create_and_upload_volume_to_image does it too, but that seems wrong as well. IMO this scenario should either delete the backup and volume as part of the benchmark (and reflect that in the function name), or rely on the cleanup context -- not try to do both.\n\nSince backups are just volumes, I don\u0027t see any value to timing the deletion of both the backup and the volume, so I\u0027d lean towards just relying on the cleanup context and not worrying about deleting the volume and its backup.","commit_id":"1df53f1ae8c2829b15c5c8d54432bc99c72cf488"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"bf9ec6410a928037142c159d7dbceac414a7cb9f","unresolved":false,"context_lines":[{"line_number":397,"context_line":"        \"\"\"Create a volume backup."},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"        :param size: volume size in GB"},{"line_number":400,"context_line":"        :param do_delete: deletes volume backup if True"},{"line_number":401,"context_line":"        :param kwargs: optional args to create a volume backup"},{"line_number":402,"context_line":"        \"\"\""},{"line_number":403,"context_line":"        volume \u003d self._create_volume(size, **kwargs)"}],"source_content_type":"text/x-python","patch_set":24,"id":"1aca2d91_3ae130d1","line":400,"in_reply_to":"1aca2d91_165f9173","updated":"2015-05-07 13:44:03.000000000","message":"Obviously the second part of this is now wrong as well; I\u0027d lean instead towards always deleting both, so that we get a benchmark of backup deletion as well.","commit_id":"1df53f1ae8c2829b15c5c8d54432bc99c72cf488"},{"author":{"_account_id":14305,"name":"Yuriy Nesenenko","email":"ynesenenko@mirantis.com","username":"yuriy_n"},"change_message_id":"2e2733f4f84de52076960f4093636576489d9804","unresolved":false,"context_lines":[{"line_number":397,"context_line":"        \"\"\"Create a volume backup."},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"        :param size: volume size in GB"},{"line_number":400,"context_line":"        :param do_delete: deletes volume backup if True"},{"line_number":401,"context_line":"        :param kwargs: optional args to create a volume backup"},{"line_number":402,"context_line":"        \"\"\""},{"line_number":403,"context_line":"        volume \u003d self._create_volume(size, **kwargs)"}],"source_content_type":"text/x-python","patch_set":24,"id":"1aca2d91_1479842f","line":400,"in_reply_to":"1aca2d91_165f9173","updated":"2015-05-08 11:47:25.000000000","message":"do_delete is a kind of a Rally convenience. Rally team uses it in other scenarios too.","commit_id":"1df53f1ae8c2829b15c5c8d54432bc99c72cf488"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"50135f827b8f21889892faa09034256c698158c2","unresolved":false,"context_lines":[{"line_number":399,"context_line":"        :param size: volume size in GB"},{"line_number":400,"context_line":"        :param do_delete: deletes volume backup if True"},{"line_number":401,"context_line":"        :param kwargs: optional args to create a volume backup"},{"line_number":402,"context_line":"        \"\"\""},{"line_number":403,"context_line":"        volume \u003d self._create_volume(size, **kwargs)"},{"line_number":404,"context_line":"        backup \u003d self._create_backup(volume.id, **kwargs)"},{"line_number":405,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"3acd31a7_a72aad7c","line":402,"updated":"2015-05-04 02:48:05.000000000","message":"You can use @validation.required_contexts(\"volumes\") instead of _create_volume here, since the scenario is for creating backup test, otherwise it\u0027s better to change the scenario name to create_volume_and_backup.","commit_id":"1df53f1ae8c2829b15c5c8d54432bc99c72cf488"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"26f7c1f11e9512de479442b5ee456c2d29a9dd19","unresolved":false,"context_lines":[{"line_number":399,"context_line":"        :param size: volume size in GB"},{"line_number":400,"context_line":"        :param do_delete: deletes volume backup if True"},{"line_number":401,"context_line":"        :param kwargs: optional args to create a volume backup"},{"line_number":402,"context_line":"        \"\"\""},{"line_number":403,"context_line":"        volume \u003d self._create_volume(size, **kwargs)"},{"line_number":404,"context_line":"        backup \u003d self._create_backup(volume.id, **kwargs)"},{"line_number":405,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"3acd31a7_47df5969","line":402,"in_reply_to":"3acd31a7_a72aad7c","updated":"2015-05-04 02:54:20.000000000","message":"Sorry, please ignore comment above, i didn\u0027t see the previous patch.. just a suggestion to change scenario name to create_volume_and_backup","commit_id":"1df53f1ae8c2829b15c5c8d54432bc99c72cf488"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"4b64ae498564c3e202753b7fe24ac72f97cc18a7","unresolved":false,"context_lines":[{"line_number":421,"context_line":"        \"\"\"Create a volume backup."},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"        :param size: volume size in GB"},{"line_number":424,"context_line":"        :param do_delete: deletes volume backup if True"},{"line_number":425,"context_line":"        :param kwargs: optional args to create a volume backup"},{"line_number":426,"context_line":"        \"\"\""},{"line_number":427,"context_line":"        volume \u003d self._create_volume(size, **kwargs)"}],"source_content_type":"text/x-python","patch_set":27,"id":"9a0c5dc1_43753e96","line":424,"updated":"2015-05-13 11:08:14.000000000","message":"This is misleading since do_delete\u003dTrue implies deleting volume AND backup, not just volume backup. Please correct:\n\n    :param do_delete: if True, volume and volume backup will\n                      be deleted after creation.","commit_id":"77306bf9fd0370150d8c55f8abc920e36296fc7a"}],"rally/consts.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"32e8107af0af1b944c0e072eae65ccc006d2f9a3","unresolved":false,"context_lines":[{"line_number":111,"context_line":"    SWIFT \u003d \"swift\""},{"line_number":112,"context_line":"    MISTRAL \u003d \"mistral\""},{"line_number":113,"context_line":"    MURANO \u003d \"murano\""},{"line_number":114,"context_line":"    CINDER_BACKUP \u003d \"cinder-backup\""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"class _ServiceType(utils.ImmutableMixin, utils.EnumMixin):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6ced46_0fde726d","line":114,"updated":"2015-03-25 10:35:49.000000000","message":"Okay, now this service must be added to _ServiceType class below - this must be mapped to some OpenStack service type","commit_id":"eabb95153c5dcd0b0585500ced0381a1dbf3aa20"}],"tests/unit/benchmark/scenarios/cinder/test_volumes.py":[{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"7e7f03391df636ebc61fbe24393b86e6760c8c22","unresolved":false,"context_lines":[{"line_number":373,"context_line":"        scenario._delete_volume \u003d mock.MagicMock()"},{"line_number":374,"context_line":"        scenario._delete_backup \u003d mock.MagicMock()"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"        scenario.create_volume_backup(1, do_delete\u003dTrue, fakearg\u003d\"f\")"},{"line_number":377,"context_line":"        scenario._create_volume.assert_called_once_with(1, fakearg\u003d\"f\")"},{"line_number":378,"context_line":"        scenario._create_backup.assert_called_once_with(fake_volume.id,"},{"line_number":379,"context_line":"                                                        fakearg\u003d\"f\")"}],"source_content_type":"text/x-python","patch_set":24,"id":"1aca2d91_59041a14","line":376,"updated":"2015-05-06 20:16:08.000000000","message":"If you end up retaining the do_delete kwarg, then there needs to be a test added with do_delete\u003dFalse.","commit_id":"1df53f1ae8c2829b15c5c8d54432bc99c72cf488"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"660bd9b5ed3805bbcabe3b374d491bcd15d894bb","unresolved":false,"context_lines":[{"line_number":373,"context_line":"        scenario._delete_volume \u003d mock.MagicMock()"},{"line_number":374,"context_line":"        scenario._delete_backup \u003d mock.MagicMock()"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"        scenario.create_volume_backup(1, do_delete\u003dTrue, fakearg\u003d\"f\")"},{"line_number":377,"context_line":"        scenario._create_volume.assert_called_once_with(1, fakearg\u003d\"f\")"},{"line_number":378,"context_line":"        scenario._create_backup.assert_called_once_with(fake_volume.id,"},{"line_number":379,"context_line":"                                                        fakearg\u003d\"f\")"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a0c5dc1_98550ac8","line":376,"updated":"2015-05-12 14:20:34.000000000","message":"We need to either get rid of do_delete or add a test with do_delete\u003dFalse.","commit_id":"c29c90bc864858821a10e99fdb0682120f32caa6"},{"author":{"_account_id":14305,"name":"Yuriy Nesenenko","email":"ynesenenko@mirantis.com","username":"yuriy_n"},"change_message_id":"9f2056d4e426f6f1a8fa20e8287be529a4f316e4","unresolved":false,"context_lines":[{"line_number":373,"context_line":"        scenario._delete_volume \u003d mock.MagicMock()"},{"line_number":374,"context_line":"        scenario._delete_backup \u003d mock.MagicMock()"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"        scenario.create_volume_backup(1, do_delete\u003dTrue, fakearg\u003d\"f\")"},{"line_number":377,"context_line":"        scenario._create_volume.assert_called_once_with(1, fakearg\u003d\"f\")"},{"line_number":378,"context_line":"        scenario._create_backup.assert_called_once_with(fake_volume.id,"},{"line_number":379,"context_line":"                                                        fakearg\u003d\"f\")"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a0c5dc1_4341e20a","line":376,"in_reply_to":"9a0c5dc1_98550ac8","updated":"2015-05-12 15:47:02.000000000","message":"Thanks for your comments. I discussed the issue about the flag do_delete with Rally team. It\u0027s used to delete objects after their creation right away, not after finishing the scenario. Look at the next patch.","commit_id":"c29c90bc864858821a10e99fdb0682120f32caa6"}]}
