)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"5aa12ac8a8472c5c08376c427bd687866fc6d0ac","unresolved":false,"context_lines":[{"line_number":12,"context_line":"Recent changes in nova and cinder broke booting from EBS instance."},{"line_number":13,"context_line":"For example last change in cinder is here"},{"line_number":14,"context_line":"(that broke booting) - https://review.openstack.org/#/c/182994/"},{"line_number":15,"context_line":"And fix in nova is here - https://review.openstack.org/#/c/213433/"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I3915e2f04163568f758bb9e98bd5394af80aa431"},{"line_number":18,"context_line":"Closes-Bug: #1485424"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"fa1b9901_e096af93","line":15,"updated":"2015-08-18 03:11:38.000000000","message":"this is obsolete","commit_id":"78930ed5bcabfda65252f1415d1336929de6708d"}],"tempest/scenario/test_server_ebs_boot.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"e6253d4c1cd4e98a563db8937a8dda1436fe6914","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_50e74940","line":1,"updated":"2015-08-17 14:47:46.000000000","message":"Should only have a Foundation copyright if you are actually working for the foundation.","commit_id":"08e480812f57afa208bd443b115b3a467c0935c7"}],"tempest/scenario/test_volume_boot_pattern.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"46cb0f777ec3e90df42d127ca07ff6f9089e5434","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        bd_map \u003d [{"},{"line_number":58,"context_line":"            \u0027device_name\u0027: \u0027vda\u0027,"},{"line_number":59,"context_line":"            \u0027volume_id\u0027: vol_id,"},{"line_number":60,"context_line":"            \u0027delete_on_termination\u0027: \u00271\u0027 if delete_on_termination else \u00270\u0027}]"},{"line_number":61,"context_line":"        create_kwargs[\u0027block_device_mapping\u0027] \u003d bd_map"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _boot_instance_from_volume(self, vol_id, keypair\u003dNone,"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_4703ea42","line":60,"updated":"2015-08-18 08:19:24.000000000","message":"\u0027delete_on_termination\u0027: int(delete_on_termination)","commit_id":"509a296a43108383350481efc59f4dcbe8ffab78"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"a7c88520cfd1e65ef6143eac3df287f7231fb7cc","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        bd_map \u003d [{"},{"line_number":58,"context_line":"            \u0027device_name\u0027: \u0027vda\u0027,"},{"line_number":59,"context_line":"            \u0027volume_id\u0027: vol_id,"},{"line_number":60,"context_line":"            \u0027delete_on_termination\u0027: \u00271\u0027 if delete_on_termination else \u00270\u0027}]"},{"line_number":61,"context_line":"        create_kwargs[\u0027block_device_mapping\u0027] \u003d bd_map"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _boot_instance_from_volume(self, vol_id, keypair\u003dNone,"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_ea68c5f7","line":60,"in_reply_to":"fa1b9901_4703ea42","updated":"2015-08-18 08:39:18.000000000","message":"Done","commit_id":"509a296a43108383350481efc59f4dcbe8ffab78"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"46cb0f777ec3e90df42d127ca07ff6f9089e5434","unresolved":false,"context_lines":[{"line_number":58,"context_line":"            \u0027device_name\u0027: \u0027vda\u0027,"},{"line_number":59,"context_line":"            \u0027volume_id\u0027: vol_id,"},{"line_number":60,"context_line":"            \u0027delete_on_termination\u0027: \u00271\u0027 if delete_on_termination else \u00270\u0027}]"},{"line_number":61,"context_line":"        create_kwargs[\u0027block_device_mapping\u0027] \u003d bd_map"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _boot_instance_from_volume(self, vol_id, keypair\u003dNone,"},{"line_number":64,"context_line":"                                   security_group\u003dNone,"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_07309200","line":61,"updated":"2015-08-18 08:19:24.000000000","message":"Here you could return {\"block_device_mapping\": bd_map}. and don\u0027t pass create_kwargs in this method.","commit_id":"509a296a43108383350481efc59f4dcbe8ffab78"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"a7c88520cfd1e65ef6143eac3df287f7231fb7cc","unresolved":false,"context_lines":[{"line_number":58,"context_line":"            \u0027device_name\u0027: \u0027vda\u0027,"},{"line_number":59,"context_line":"            \u0027volume_id\u0027: vol_id,"},{"line_number":60,"context_line":"            \u0027delete_on_termination\u0027: \u00271\u0027 if delete_on_termination else \u00270\u0027}]"},{"line_number":61,"context_line":"        create_kwargs[\u0027block_device_mapping\u0027] \u003d bd_map"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _boot_instance_from_volume(self, vol_id, keypair\u003dNone,"},{"line_number":64,"context_line":"                                   security_group\u003dNone,"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_0aabb91e","line":61,"in_reply_to":"fa1b9901_07309200","updated":"2015-08-18 08:39:18.000000000","message":"IMHO, it\u0027s not good to create dict inside auxiliary function...\nI prefer to return dict from this func as you mentioned and call dict.update in caller func","commit_id":"509a296a43108383350481efc59f4dcbe8ffab78"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"462a1f15d5351b407eae18679d5d84df927d5e39","unresolved":false,"context_lines":[{"line_number":58,"context_line":"            \u0027device_name\u0027: \u0027vda\u0027,"},{"line_number":59,"context_line":"            \u0027volume_id\u0027: vol_id,"},{"line_number":60,"context_line":"            \u0027delete_on_termination\u0027: \u00271\u0027 if delete_on_termination else \u00270\u0027}]"},{"line_number":61,"context_line":"        create_kwargs[\u0027block_device_mapping\u0027] \u003d bd_map"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _boot_instance_from_volume(self, vol_id, keypair\u003dNone,"},{"line_number":64,"context_line":"                                   security_group\u003dNone,"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_be376faf","line":61,"in_reply_to":"fa1b9901_0aabb91e","updated":"2015-08-18 09:46:54.000000000","message":"It don\"t fully follow the logic here. You don\"t like to create a dict inside auxiliary function but you are okay with creating a list (the bd_map variable) inside an auxiliary function ?\n\nIMO you should just consider _update_with_bdm to be a method, this method returns a value and in that case the type of this value is a dict.\n\nIn general you should avoid writing functions with side effects and imo it\u0027s best when a function doesn\"t touch/change its parameters.\n\n\n\u003eI prefer to return dict from this func as you mentioned and call dict.update in caller func\n  Sounds good to me :)","commit_id":"509a296a43108383350481efc59f4dcbe8ffab78"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"46cb0f777ec3e90df42d127ca07ff6f9089e5434","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    def _boot_instance_from_volume(self, vol_id, keypair\u003dNone,"},{"line_number":64,"context_line":"                                   security_group\u003dNone,"},{"line_number":65,"context_line":"                                   delete_on_termination\u003dFalse):"},{"line_number":66,"context_line":"        create_kwargs \u003d dict()"},{"line_number":67,"context_line":"        self._update_with_bdm(create_kwargs, vol_id,"},{"line_number":68,"context_line":"                              delete_on_termination\u003ddelete_on_termination)"},{"line_number":69,"context_line":"        if keypair:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_e71d5e74","line":66,"updated":"2015-08-18 08:19:24.000000000","message":"Then here you would do:\n\n create_kwargs \u003d self._update_with_bdm(...)","commit_id":"509a296a43108383350481efc59f4dcbe8ffab78"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"2ac46f28dc6d198c63f6234b55030772ec27e717","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    @test.idempotent_id(\u0027557cd2c2-4eb8-4dce-98be-f86765ff311b\u0027)"},{"line_number":140,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":141,"context_line":"    @test.services(\u0027compute\u0027, \u0027volume\u0027, \u0027image\u0027)"},{"line_number":142,"context_line":"    def _ttest_volume_boot_pattern(self):"},{"line_number":143,"context_line":"        keypair \u003d self.create_keypair()"},{"line_number":144,"context_line":"        security_group \u003d self._create_security_group()"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa1b9901_30a55946","line":142,"updated":"2015-08-20 08:50:54.000000000","message":"there\u0027s a typo here :(","commit_id":"8041f6916eb2883090ae4582d5182f238a8e7729"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"79d3940da2ad9f1c0fb3d64c62d7359b15a6cfe8","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    @test.idempotent_id(\u0027557cd2c2-4eb8-4dce-98be-f86765ff311b\u0027)"},{"line_number":140,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":141,"context_line":"    @test.services(\u0027compute\u0027, \u0027volume\u0027, \u0027image\u0027)"},{"line_number":142,"context_line":"    def _ttest_volume_boot_pattern(self):"},{"line_number":143,"context_line":"        keypair \u003d self.create_keypair()"},{"line_number":144,"context_line":"        security_group \u003d self._create_security_group()"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa1b9901_8101753a","line":142,"in_reply_to":"fa1b9901_30a55946","updated":"2015-08-20 09:59:03.000000000","message":"thanks for reminder","commit_id":"8041f6916eb2883090ae4582d5182f238a8e7729"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"919fa6a36a33a47632685728dbc3f62771dde9e6","unresolved":false,"context_lines":[{"line_number":191,"context_line":"                                                   delete_on_termination\u003dTrue)"},{"line_number":192,"context_line":"        # create EBS image"},{"line_number":193,"context_line":"        name \u003d data_utils.rand_name(\u0027image\u0027)"},{"line_number":194,"context_line":"        image \u003d self.create_server_snapshot(instance, name\u003dname)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        # delete instance"},{"line_number":197,"context_line":"        self._delete_server(instance)"}],"source_content_type":"text/x-python","patch_set":13,"id":"da20952f_aa3b9bd0","line":194,"updated":"2015-08-27 16:42:21.000000000","message":"There\u0027s a bug here. You create an image, but after, you don\u0027t wait that the volume snapshot is in status \"available\". If the snapshot is in state \"creating\" for let\u0027s say 30sec, the server created L200 will fail to boot:\n\n Traceback (most recent call last):\n   File \"/opt/stack/new/nova/nova/compute/manager.py\", line 1734, in _prep_block_device\n     wait_func\u003dself._await_block_device_map_created)\n   File \"/opt/stack/new/nova/nova/virt/block_device.py\", line 453, in attach_block_devices\n     map(_log_and_attach, block_device_mapping)\n   File \"/opt/stack/new/nova/nova/virt/block_device.py\", line 451, in _log_and_attach\n     bdm.attach(*attach_args, **attach_kwargs)\n   File \"/opt/stack/new/nova/nova/virt/block_device.py\", line 337, in attach\n     snapshot, availability_zone\u003dav_zone)\n   File \"/opt/stack/new/nova/nova/volume/cinder.py\", line 391, in create\n     raise exception.InvalidInput(reason\u003de)\n InvalidInput: Invalid input received: Invalid snapshot: Originating snapshot status must be one of\u0027available\u0027 values (HTTP 400)","commit_id":"c8bd4b12b020c1ec2e92b6d7f3fbd10eca379835"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"d542c60394dc87cdb43896594356731f990420d2","unresolved":false,"context_lines":[{"line_number":191,"context_line":"                                                   delete_on_termination\u003dTrue)"},{"line_number":192,"context_line":"        # create EBS image"},{"line_number":193,"context_line":"        name \u003d data_utils.rand_name(\u0027image\u0027)"},{"line_number":194,"context_line":"        image \u003d self.create_server_snapshot(instance, name\u003dname)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        # delete instance"},{"line_number":197,"context_line":"        self._delete_server(instance)"}],"source_content_type":"text/x-python","patch_set":13,"id":"da20952f_ca47ef1b","line":194,"in_reply_to":"da20952f_aa3b9bd0","updated":"2015-08-27 16:46:05.000000000","message":"Jordan push a bug skip or straight up revert, this just landed and it\u0027s clearly broken","commit_id":"c8bd4b12b020c1ec2e92b6d7f3fbd10eca379835"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"06fde70130532c1d8a312c438a4d86696c50c7d2","unresolved":false,"context_lines":[{"line_number":191,"context_line":"                                                   delete_on_termination\u003dTrue)"},{"line_number":192,"context_line":"        # create EBS image"},{"line_number":193,"context_line":"        name \u003d data_utils.rand_name(\u0027image\u0027)"},{"line_number":194,"context_line":"        image \u003d self.create_server_snapshot(instance, name\u003dname)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        # delete instance"},{"line_number":197,"context_line":"        self._delete_server(instance)"}],"source_content_type":"text/x-python","patch_set":13,"id":"da20952f_d58554ad","line":194,"in_reply_to":"da20952f_aa3b9bd0","updated":"2015-08-27 17:15:51.000000000","message":"ok. I understand it.\nThis should fix the bug - https://review.openstack.org/#/c/217804/\n\nI\u0027m sorry for inconvenience","commit_id":"c8bd4b12b020c1ec2e92b6d7f3fbd10eca379835"}]}
