)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"cc32f010d1623125bf719d121f889e7ff3203f97","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     bkopilov \u003cbkopilov@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-11-12 14:17:23 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Scenario - boot instances from multi backend volumes and attach/detach volumes"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Test steps:"},{"line_number":10,"context_line":"    * admin creates a volume type for each backend"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5a890539_5383ee03","line":7,"updated":"2014-11-12 14:00:41.000000000","message":"The commit message length is greater than 50 characters. please fix it.\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_GIT_commit_message_structure","commit_id":"e7df607acf680bcecb2ee1b6cc4c9d37c00465e7"}],"tempest/scenario/test_multibackend_volume_boot.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"e181a78f4052217abcfd33c14ca10521f5a4234c","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        self.volumes_client.wait_for_volume_status(volume[\u0027id\u0027], \u0027available\u0027)"},{"line_number":57,"context_line":"        return volume"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def _create_volume_snapshot(self, vol_id):"},{"line_number":60,"context_line":"        snap_name \u003d data_utils.rand_name(\u0027snapshot-\u0027)"},{"line_number":61,"context_line":"        _, snap \u003d self.snapshots_client.create_snapshot("},{"line_number":62,"context_line":"            volume_id\u003dvol_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_31e08d28","line":59,"updated":"2014-11-17 21:39:05.000000000","message":"Unused","commit_id":"e1e7fa18e87d54e035e965f4b3af1f67ee1f4a9e"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"fdd60189ff2f538a26445e339317117488451401","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        self.volumes_client.wait_for_volume_status(volume[\u0027id\u0027], \u0027available\u0027)"},{"line_number":57,"context_line":"        return volume"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def _create_volume_snapshot(self, vol_id):"},{"line_number":60,"context_line":"        snap_name \u003d data_utils.rand_name(\u0027snapshot-\u0027)"},{"line_number":61,"context_line":"        _, snap \u003d self.snapshots_client.create_snapshot("},{"line_number":62,"context_line":"            volume_id\u003dvol_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_624ddb99","line":59,"in_reply_to":"5a890539_31e08d28","updated":"2014-11-18 05:29:11.000000000","message":"Done","commit_id":"e1e7fa18e87d54e035e965f4b3af1f67ee1f4a9e"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"e181a78f4052217abcfd33c14ca10521f5a4234c","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        volume_attach2 \u003d self.create_volume(size\u003dvolume_size,"},{"line_number":97,"context_line":"                                            volume_type\u003dbackend2_name)"},{"line_number":98,"context_line":"        # attaching volumes to existing instances"},{"line_number":99,"context_line":"        self.volumes_client.attach_volume(volume_attach1[\u0027id\u0027], server2[\u0027id\u0027],"},{"line_number":100,"context_line":"                                          \u0027/dev/vdc\u0027)"},{"line_number":101,"context_line":"        self.volumes_client.attach_volume(volume_attach2[\u0027id\u0027], server1[\u0027id\u0027],"},{"line_number":102,"context_line":"                                          \u0027/dev/vdc\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_91eb01db","line":99,"updated":"2014-11-17 21:39:05.000000000","message":"Do not hard the code the device path path here","commit_id":"e1e7fa18e87d54e035e965f4b3af1f67ee1f4a9e"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"fdd60189ff2f538a26445e339317117488451401","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        volume_attach2 \u003d self.create_volume(size\u003dvolume_size,"},{"line_number":97,"context_line":"                                            volume_type\u003dbackend2_name)"},{"line_number":98,"context_line":"        # attaching volumes to existing instances"},{"line_number":99,"context_line":"        self.volumes_client.attach_volume(volume_attach1[\u0027id\u0027], server2[\u0027id\u0027],"},{"line_number":100,"context_line":"                                          \u0027/dev/vdc\u0027)"},{"line_number":101,"context_line":"        self.volumes_client.attach_volume(volume_attach2[\u0027id\u0027], server1[\u0027id\u0027],"},{"line_number":102,"context_line":"                                          \u0027/dev/vdc\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_0275f7c9","line":99,"in_reply_to":"5a890539_91eb01db","updated":"2014-11-18 05:29:11.000000000","message":"Done","commit_id":"e1e7fa18e87d54e035e965f4b3af1f67ee1f4a9e"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"e181a78f4052217abcfd33c14ca10521f5a4234c","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        self.volumes_client.attach_volume(volume_attach1[\u0027id\u0027], server2[\u0027id\u0027],"},{"line_number":100,"context_line":"                                          \u0027/dev/vdc\u0027)"},{"line_number":101,"context_line":"        self.volumes_client.attach_volume(volume_attach2[\u0027id\u0027], server1[\u0027id\u0027],"},{"line_number":102,"context_line":"                                          \u0027/dev/vdc\u0027)"},{"line_number":103,"context_line":"        # detaching volumes from instances"},{"line_number":104,"context_line":"        self.volumes_client.detach_volume(volume_attach1[\u0027id\u0027])"},{"line_number":105,"context_line":"        self.volumes_client.detach_volume(volume_attach2[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_719e9564","line":102,"updated":"2014-11-17 21:39:05.000000000","message":"Do not hard the code the device path path here","commit_id":"e1e7fa18e87d54e035e965f4b3af1f67ee1f4a9e"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"fdd60189ff2f538a26445e339317117488451401","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        self.volumes_client.attach_volume(volume_attach1[\u0027id\u0027], server2[\u0027id\u0027],"},{"line_number":100,"context_line":"                                          \u0027/dev/vdc\u0027)"},{"line_number":101,"context_line":"        self.volumes_client.attach_volume(volume_attach2[\u0027id\u0027], server1[\u0027id\u0027],"},{"line_number":102,"context_line":"                                          \u0027/dev/vdc\u0027)"},{"line_number":103,"context_line":"        # detaching volumes from instances"},{"line_number":104,"context_line":"        self.volumes_client.detach_volume(volume_attach1[\u0027id\u0027])"},{"line_number":105,"context_line":"        self.volumes_client.detach_volume(volume_attach2[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_427b7fbd","line":102,"in_reply_to":"5a890539_719e9564","updated":"2014-11-18 05:29:11.000000000","message":"Done","commit_id":"e1e7fa18e87d54e035e965f4b3af1f67ee1f4a9e"},{"author":{"_account_id":13010,"name":"Tomas Rusnak","email":"trusnak@redhat.com"},"change_message_id":"24b53d0f94bf0a87eef06b6ec6db93a30ced20ab","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    @test.services(\u0027compute\u0027, \u0027volume\u0027, \u0027image\u0027)"},{"line_number":68,"context_line":"    def test_multi_backend_boot(self):"},{"line_number":69,"context_line":"        # NOTE(bkopilov):volume_type is not deleted -to fix"},{"line_number":70,"context_line":"        backend1_name \u003d CONF.volume.backend1_name"},{"line_number":71,"context_line":"        backend2_name \u003d CONF.volume.backend2_name"},{"line_number":72,"context_line":"        volume_size \u003d CONF.volume.volume_size"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_47bd48d7","line":69,"updated":"2014-11-18 10:46:59.000000000","message":"What does it mean, Benny?","commit_id":"17150423bf992f969751ce2198299cc2d1b4bc55"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"9876dc246103a7a032f33151544a00d9d45052df","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    @test.services(\u0027compute\u0027, \u0027volume\u0027, \u0027image\u0027)"},{"line_number":68,"context_line":"    def test_multi_backend_boot(self):"},{"line_number":69,"context_line":"        # NOTE(bkopilov):volume_type is not deleted -to fix"},{"line_number":70,"context_line":"        backend1_name \u003d CONF.volume.backend1_name"},{"line_number":71,"context_line":"        backend2_name \u003d CONF.volume.backend2_name"},{"line_number":72,"context_line":"        volume_size \u003d CONF.volume.volume_size"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_fb4c0dca","line":69,"in_reply_to":"5a890539_2a52c134","updated":"2014-11-18 12:43:40.000000000","message":"s/NOTE/TODO\nthe explanation you wrote should be part of the comment.\n\nBut IIUC this means that you have resources leaking out of the tests - volume_type - this is bad.","commit_id":"17150423bf992f969751ce2198299cc2d1b4bc55"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"e8f685cc49f08914960445cd13c786f797ab4cc4","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    @test.services(\u0027compute\u0027, \u0027volume\u0027, \u0027image\u0027)"},{"line_number":68,"context_line":"    def test_multi_backend_boot(self):"},{"line_number":69,"context_line":"        # NOTE(bkopilov):volume_type is not deleted -to fix"},{"line_number":70,"context_line":"        backend1_name \u003d CONF.volume.backend1_name"},{"line_number":71,"context_line":"        backend2_name \u003d CONF.volume.backend2_name"},{"line_number":72,"context_line":"        volume_size \u003d CONF.volume.volume_size"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_2a52c134","line":69,"in_reply_to":"5a890539_47bd48d7","updated":"2014-11-18 11:31:29.000000000","message":"Hi , \nIn order to work with muti-backend we create a volume type for each backend .\neach volume type is linked to a backend , when you create a volume you set the volume_type .\nThe volume_type is created by admin , when other tenants are trying to create volumes they choose which volume_type .\nthese volume types are not deleted at the end  , i will need to add support for it .\nto delete volume_type, we must verify that a volume_type clean-up should be the last clean,  after cleaning instances and volumes .\n\nI need to figure out how to clean volume_types at the end , last in cleanup.\nBenny","commit_id":"17150423bf992f969751ce2198299cc2d1b4bc55"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"38e07f90a0a6b4a7affe8f4520440e3e10f13dc6","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    @test.services(\u0027compute\u0027, \u0027volume\u0027, \u0027image\u0027)"},{"line_number":68,"context_line":"    def test_multi_backend_boot(self):"},{"line_number":69,"context_line":"        # NOTE(bkopilov):volume_type is not deleted -to fix"},{"line_number":70,"context_line":"        backend1_name \u003d CONF.volume.backend1_name"},{"line_number":71,"context_line":"        backend2_name \u003d CONF.volume.backend2_name"},{"line_number":72,"context_line":"        volume_size \u003d CONF.volume.volume_size"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_b697fc46","line":69,"in_reply_to":"5a890539_fb4c0dca","updated":"2014-11-18 12:53:45.000000000","message":"yes , this will be fixed   . i need to check how to add this cleanup as last .","commit_id":"17150423bf992f969751ce2198299cc2d1b4bc55"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"9876dc246103a7a032f33151544a00d9d45052df","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    @test.services(\u0027compute\u0027, \u0027volume\u0027, \u0027image\u0027)"},{"line_number":68,"context_line":"    def test_multi_backend_boot(self):"},{"line_number":69,"context_line":"        # NOTE(bkopilov):volume_type is not deleted -to fix"},{"line_number":70,"context_line":"        backend1_name \u003d CONF.volume.backend1_name"},{"line_number":71,"context_line":"        backend2_name \u003d CONF.volume.backend2_name"},{"line_number":72,"context_line":"        volume_size \u003d CONF.volume.volume_size"},{"line_number":73,"context_line":"        volume_device_name \u003d CONF.volume_device_name"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_767bd47a","line":70,"updated":"2014-11-18 12:43:40.000000000","message":"this is way out of my element here, but:\nCould we change CONF.volume.backend* to a single list?\n\n1 - would remove a tempest.conf line - always a plus\n2 - would allow you to run the test with any number of backends you have in mind","commit_id":"17150423bf992f969751ce2198299cc2d1b4bc55"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"38e07f90a0a6b4a7affe8f4520440e3e10f13dc6","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    @test.services(\u0027compute\u0027, \u0027volume\u0027, \u0027image\u0027)"},{"line_number":68,"context_line":"    def test_multi_backend_boot(self):"},{"line_number":69,"context_line":"        # NOTE(bkopilov):volume_type is not deleted -to fix"},{"line_number":70,"context_line":"        backend1_name \u003d CONF.volume.backend1_name"},{"line_number":71,"context_line":"        backend2_name \u003d CONF.volume.backend2_name"},{"line_number":72,"context_line":"        volume_size \u003d CONF.volume.volume_size"},{"line_number":73,"context_line":"        volume_device_name \u003d CONF.volume_device_name"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_1670d03e","line":70,"in_reply_to":"5a890539_767bd47a","updated":"2014-11-18 12:53:45.000000000","message":"ok , basically please suggest solution for list with meaning full names as index .\nI dont want to use index place as int  , need meaning full name. \nBenny","commit_id":"17150423bf992f969751ce2198299cc2d1b4bc55"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"d6c934210712abb9436e844eaeec6712f5d87f45","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                                          volume_device_name)"},{"line_number":95,"context_line":"        # detaching volumes from instances"},{"line_number":96,"context_line":"        self.volumes_client.detach_volume(volume_attach1[\u0027id\u0027])"},{"line_number":97,"context_line":"        self.volumes_client.detach_volume(volume_attach2[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_c7593936","line":97,"updated":"2014-11-18 10:34:52.000000000","message":"Would also be useful to check that neither volume1 nor volume2 can be detached - the request to do so should fail. This should add negligibly to the test runtime and increase our coverage a little.\n\nI don\u0027t know enough about tempest to comment on resource cleanup, the comment seems to suggest that only the volume types are a problem?","commit_id":"17150423bf992f969751ce2198299cc2d1b4bc55"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"ecc0684f63e95f5dc8c125a8cca850b3092e9cd2","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                                          volume_device_name)"},{"line_number":95,"context_line":"        # detaching volumes from instances"},{"line_number":96,"context_line":"        self.volumes_client.detach_volume(volume_attach1[\u0027id\u0027])"},{"line_number":97,"context_line":"        self.volumes_client.detach_volume(volume_attach2[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_c738fd3f","line":97,"in_reply_to":"5a890539_8d7bcf79","updated":"2014-11-20 12:49:53.000000000","message":"I think we don\u0027t have nearly enough negative tests of expected behaviour, and that they are just as likely to find issues as positive ones.\n\nTo reverse the question, why /wouldn\u0027t/ you want negative tests? What is the downside?","commit_id":"17150423bf992f969751ce2198299cc2d1b4bc55"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"e8f685cc49f08914960445cd13c786f797ab4cc4","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                                          volume_device_name)"},{"line_number":95,"context_line":"        # detaching volumes from instances"},{"line_number":96,"context_line":"        self.volumes_client.detach_volume(volume_attach1[\u0027id\u0027])"},{"line_number":97,"context_line":"        self.volumes_client.detach_volume(volume_attach2[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_8d7bcf79","line":97,"in_reply_to":"5a890539_c7593936","updated":"2014-11-18 11:31:29.000000000","message":"Hi , \nthe volume_types is a problem , its not deleted , i will work on it .\nCan you explain what should i add to the test ? \nBasically i am not sure if its a good idea to add negative case here , it will be much usefull to verify that volumes is really attached and maybe try to write to volume from instance .\n\nWhat do you think ?\nBenny","commit_id":"17150423bf992f969751ce2198299cc2d1b4bc55"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"2b03bdfda1ca396fbeea2d8b0b0c4fc7555ea426","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        volume_device_name \u003d CONF.compute.volume_device_name"},{"line_number":76,"context_line":"        # create a volume type by admin tenant for each backend"},{"line_number":77,"context_line":"        self._create_volume_type(backend1_name)"},{"line_number":78,"context_line":"        self._create_volume_type(backend2_name)"},{"line_number":79,"context_line":"        # create a volume from image per backend type"},{"line_number":80,"context_line":"        volume1 \u003d self._create_volume_image_by_backend_name(volume_size,"},{"line_number":81,"context_line":"                                                            backend1_name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_890b15d4","line":78,"updated":"2015-01-06 16:42:21.000000000","message":"You might want to create another type that is a combination of the 2. \n\nextra_specs \u003d {\u0027volume_backend_name\u0027: (\"%s, %s\" % backend1_name, backend2_name)}\n\nThe scheduler will pick one of them at volume creation time.\nThen do a create, attach, detach for this one as well.","commit_id":"9d0ac8a6692d3e3253d1abc20574eaee2d5b3554"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"e9c498936526fa0459fd26bb3282367941448fd0","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        volume_device_name \u003d CONF.compute.volume_device_name"},{"line_number":76,"context_line":"        # create a volume type by admin tenant for each backend"},{"line_number":77,"context_line":"        self._create_volume_type(backend1_name)"},{"line_number":78,"context_line":"        self._create_volume_type(backend2_name)"},{"line_number":79,"context_line":"        # create a volume from image per backend type"},{"line_number":80,"context_line":"        volume1 \u003d self._create_volume_image_by_backend_name(volume_size,"},{"line_number":81,"context_line":"                                                            backend1_name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_7abf85d0","line":78,"in_reply_to":"3a961159_890b15d4","updated":"2015-01-06 18:35:51.000000000","message":"Thanks for your comment,\nin this test i do not want to send combination , i think we need  a seperate api and scenario test for scheduler.  we have to add support in tempest.conf for the schedular for expected result.\n\nWhats wrong with current implementation ? \nAm i missing something ?\nBenny","commit_id":"9d0ac8a6692d3e3253d1abc20574eaee2d5b3554"}]}
