)]}'
{"nova/api/openstack/compute/legacy_v2/contrib/volumes.py":[{"author":{"_account_id":5319,"name":"Sam Stoelinga","email":"sammiestoel@gmail.com","username":"sammiestoel"},"change_message_id":"43f83ef4baba0bd27ea8887f6269c10d7f7a05ba","unresolved":false,"context_lines":[{"line_number":411,"context_line":"                if bdm.volume_id !\u003d volume_id:"},{"line_number":412,"context_line":"                    continue"},{"line_number":413,"context_line":"                if bdm.is_root:"},{"line_number":414,"context_line":"                    if instance.vm_state !\u003d vm_states.STOPPED:"},{"line_number":415,"context_line":"                        msg \u003d _(\"Can\u0027t detach root device volume \""},{"line_number":416,"context_line":"                                \"when instance is running.\")"},{"line_number":417,"context_line":"                        raise exc.HTTPForbidden(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_07fe2037","line":414,"updated":"2015-08-19 04:51:02.000000000","message":"would change this to\n\nif bdm.is_root and instance.vm_state !\u003d vm_states.STOPPED:","commit_id":"8a3fd11ca02ce8b94ad8f906af13eeb5776a8a72"},{"author":{"_account_id":14101,"name":"yapeng Yang","email":"a394954369@gmail.com","username":"yapeng"},"change_message_id":"8a137947b6a30be1869d6836e9d3986cb36a4339","unresolved":false,"context_lines":[{"line_number":411,"context_line":"                if bdm.volume_id !\u003d volume_id:"},{"line_number":412,"context_line":"                    continue"},{"line_number":413,"context_line":"                if bdm.is_root:"},{"line_number":414,"context_line":"                    if instance.vm_state !\u003d vm_states.STOPPED:"},{"line_number":415,"context_line":"                        msg \u003d _(\"Can\u0027t detach root device volume \""},{"line_number":416,"context_line":"                                \"when instance is running.\")"},{"line_number":417,"context_line":"                        raise exc.HTTPForbidden(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_a9ceed2a","line":414,"in_reply_to":"fa1b9901_07fe2037","updated":"2015-08-20 05:22:21.000000000","message":"Done","commit_id":"8a3fd11ca02ce8b94ad8f906af13eeb5776a8a72"},{"author":{"_account_id":7121,"name":"Hiroyuki Eguchi","email":"h-eguchi@az.jp.nec.com","username":"HiroyukiEguchi"},"change_message_id":"1c1290f1e07435704ffbc0b4a378ef0dd1873de1","unresolved":false,"context_lines":[{"line_number":411,"context_line":"                if bdm.volume_id !\u003d volume_id:"},{"line_number":412,"context_line":"                    continue"},{"line_number":413,"context_line":"                if bdm.is_root:"},{"line_number":414,"context_line":"                    if instance.vm_state !\u003d vm_states.STOPPED:"},{"line_number":415,"context_line":"                        msg \u003d _(\"Can\u0027t detach root device volume \""},{"line_number":416,"context_line":"                                \"when instance is running.\")"},{"line_number":417,"context_line":"                        raise exc.HTTPForbidden(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_bba42cb9","line":414,"in_reply_to":"fa1b9901_a9ceed2a","updated":"2015-08-25 06:11:42.000000000","message":"I got the point.\n\nI\u0027ll modify this as you say.","commit_id":"8a3fd11ca02ce8b94ad8f906af13eeb5776a8a72"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"7e874b7b1f2095c249342f528377b5c12e337c5b","unresolved":false,"context_lines":[{"line_number":411,"context_line":"            for bdm in bdms:"},{"line_number":412,"context_line":"                if bdm.volume_id !\u003d volume_id:"},{"line_number":413,"context_line":"                    continue"},{"line_number":414,"context_line":"                if bdm.is_root and instance.vm_state !\u003d vm_states.STOPPED:"},{"line_number":415,"context_line":"                    msg \u003d _(\"Can\u0027t detach root device volume \""},{"line_number":416,"context_line":"                            \"when instance is running.\")"},{"line_number":417,"context_line":"                    raise exc.HTTPForbidden(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_1b83f4cd","line":414,"updated":"2015-09-22 03:32:09.000000000","message":"Could you add a test on this?","commit_id":"3ffbc33094a019e6b99185fbf39991fda9dd19ff"},{"author":{"_account_id":7121,"name":"Hiroyuki Eguchi","email":"h-eguchi@az.jp.nec.com","username":"HiroyukiEguchi"},"change_message_id":"70e48536ef40cee1425beea30ff53085e0701613","unresolved":false,"context_lines":[{"line_number":411,"context_line":"            for bdm in bdms:"},{"line_number":412,"context_line":"                if bdm.volume_id !\u003d volume_id:"},{"line_number":413,"context_line":"                    continue"},{"line_number":414,"context_line":"                if bdm.is_root and instance.vm_state !\u003d vm_states.STOPPED:"},{"line_number":415,"context_line":"                    msg \u003d _(\"Can\u0027t detach root device volume \""},{"line_number":416,"context_line":"                            \"when instance is running.\")"},{"line_number":417,"context_line":"                    raise exc.HTTPForbidden(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_1c1df561","line":414,"in_reply_to":"ba15a1d1_1b83f4cd","updated":"2015-09-23 04:50:53.000000000","message":"I got the point.\nI will add a new test.","commit_id":"3ffbc33094a019e6b99185fbf39991fda9dd19ff"}],"nova/api/openstack/compute/volumes.py":[{"author":{"_account_id":5319,"name":"Sam Stoelinga","email":"sammiestoel@gmail.com","username":"sammiestoel"},"change_message_id":"43f83ef4baba0bd27ea8887f6269c10d7f7a05ba","unresolved":false,"context_lines":[{"line_number":386,"context_line":"                if bdm.volume_id !\u003d volume_id:"},{"line_number":387,"context_line":"                    continue"},{"line_number":388,"context_line":"                if bdm.is_root:"},{"line_number":389,"context_line":"                    if instance.vm_state !\u003d vm_states.STOPPED:"},{"line_number":390,"context_line":"                        msg \u003d _(\"Can\u0027t detach root device volume \""},{"line_number":391,"context_line":"                                \"when instance is running.\")"},{"line_number":392,"context_line":"                        raise exc.HTTPForbidden(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_e799ac20","line":389,"updated":"2015-08-19 04:51:02.000000000","message":"same here.","commit_id":"8a3fd11ca02ce8b94ad8f906af13eeb5776a8a72"},{"author":{"_account_id":7121,"name":"Hiroyuki Eguchi","email":"h-eguchi@az.jp.nec.com","username":"HiroyukiEguchi"},"change_message_id":"1c1290f1e07435704ffbc0b4a378ef0dd1873de1","unresolved":false,"context_lines":[{"line_number":386,"context_line":"                if bdm.volume_id !\u003d volume_id:"},{"line_number":387,"context_line":"                    continue"},{"line_number":388,"context_line":"                if bdm.is_root:"},{"line_number":389,"context_line":"                    if instance.vm_state !\u003d vm_states.STOPPED:"},{"line_number":390,"context_line":"                        msg \u003d _(\"Can\u0027t detach root device volume \""},{"line_number":391,"context_line":"                                \"when instance is running.\")"},{"line_number":392,"context_line":"                        raise exc.HTTPForbidden(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_7bae9499","line":389,"in_reply_to":"fa1b9901_e799ac20","updated":"2015-08-25 06:11:42.000000000","message":"I got the point.\n\nI\u0027ll modify this as you say.","commit_id":"8a3fd11ca02ce8b94ad8f906af13eeb5776a8a72"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"7e874b7b1f2095c249342f528377b5c12e337c5b","unresolved":false,"context_lines":[{"line_number":389,"context_line":"            for bdm in bdms:"},{"line_number":390,"context_line":"                if bdm.volume_id !\u003d volume_id:"},{"line_number":391,"context_line":"                    continue"},{"line_number":392,"context_line":"                if bdm.is_root and instance.vm_state !\u003d vm_states.STOPPED:"},{"line_number":393,"context_line":"                    msg \u003d _(\"Can\u0027t detach root device volume \""},{"line_number":394,"context_line":"                            \"when instance is running.\")"},{"line_number":395,"context_line":"                    raise exc.HTTPForbidden(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_3b86f8db","line":392,"updated":"2015-09-22 03:32:09.000000000","message":"Could you add a test on this?","commit_id":"3ffbc33094a019e6b99185fbf39991fda9dd19ff"},{"author":{"_account_id":7121,"name":"Hiroyuki Eguchi","email":"h-eguchi@az.jp.nec.com","username":"HiroyukiEguchi"},"change_message_id":"70e48536ef40cee1425beea30ff53085e0701613","unresolved":false,"context_lines":[{"line_number":389,"context_line":"            for bdm in bdms:"},{"line_number":390,"context_line":"                if bdm.volume_id !\u003d volume_id:"},{"line_number":391,"context_line":"                    continue"},{"line_number":392,"context_line":"                if bdm.is_root and instance.vm_state !\u003d vm_states.STOPPED:"},{"line_number":393,"context_line":"                    msg \u003d _(\"Can\u0027t detach root device volume \""},{"line_number":394,"context_line":"                            \"when instance is running.\")"},{"line_number":395,"context_line":"                    raise exc.HTTPForbidden(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_bc2e498a","line":392,"in_reply_to":"ba15a1d1_3b86f8db","updated":"2015-09-23 04:50:53.000000000","message":"I got the point.\nI will add a new test.","commit_id":"3ffbc33094a019e6b99185fbf39991fda9dd19ff"},{"author":{"_account_id":14084,"name":"Einst Crazy","email":"yu.changcai@99cloud.net","username":"Einst"},"change_message_id":"5f7e43985873376c4ed2b1bf8e6457df544f47c7","unresolved":false,"context_lines":[{"line_number":391,"context_line":"                    continue"},{"line_number":392,"context_line":"                if bdm.is_root and instance.vm_state !\u003d vm_states.STOPPED:"},{"line_number":393,"context_line":"                    msg \u003d _(\"Can\u0027t detach root device volume \""},{"line_number":394,"context_line":"                            \"when instance is running.\")"},{"line_number":395,"context_line":"                    raise exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":396,"context_line":"                try:"},{"line_number":397,"context_line":"                    self.compute_api.detach_volume(context, instance, volume)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_b581b0fd","line":394,"updated":"2015-09-22 07:42:42.000000000","message":"What if the vm is start after the root device is detached?","commit_id":"3ffbc33094a019e6b99185fbf39991fda9dd19ff"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"ea67b7c7363c0bfa3e441ce66e3b813a77fa6afa","unresolved":false,"context_lines":[{"line_number":391,"context_line":"                    continue"},{"line_number":392,"context_line":"                if bdm.is_root and instance.vm_state !\u003d vm_states.STOPPED:"},{"line_number":393,"context_line":"                    msg \u003d _(\"Can\u0027t detach root device volume \""},{"line_number":394,"context_line":"                            \"when instance is running.\")"},{"line_number":395,"context_line":"                    raise exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":396,"context_line":"                try:"},{"line_number":397,"context_line":"                    self.compute_api.detach_volume(context, instance, volume)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_1c5415fc","line":394,"in_reply_to":"ba15a1d1_4e197787","updated":"2015-09-23 04:42:43.000000000","message":"i thought about that early and decided that we could add the restrictions in a separate review. Because they are just restrictions, and do not bring anything useful for expirieced users.","commit_id":"3ffbc33094a019e6b99185fbf39991fda9dd19ff"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"0cfb0e6fcdd1e87cc38e077a6ccfe86500c81584","unresolved":false,"context_lines":[{"line_number":391,"context_line":"                    continue"},{"line_number":392,"context_line":"                if bdm.is_root and instance.vm_state !\u003d vm_states.STOPPED:"},{"line_number":393,"context_line":"                    msg \u003d _(\"Can\u0027t detach root device volume \""},{"line_number":394,"context_line":"                            \"when instance is running.\")"},{"line_number":395,"context_line":"                    raise exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":396,"context_line":"                try:"},{"line_number":397,"context_line":"                    self.compute_api.detach_volume(context, instance, volume)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_4e197787","line":394,"in_reply_to":"ba15a1d1_b581b0fd","updated":"2015-09-23 03:20:32.000000000","message":"fyi: aws rejects to start such instance. Also it rejects CreateImage operation (https://github.com/openstack/nova/blob/4efe5f0beee630bd19256649ad366725cb0a00a4/nova/api/openstack/compute/servers.py#L1057 in Nova). But it allows to resize the instance for example.","commit_id":"3ffbc33094a019e6b99185fbf39991fda9dd19ff"}],"nova/block_device.py":[{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"341e3c353eaba9b8ea4c544166745a911f093512","unresolved":false,"context_lines":[{"line_number":531,"context_line":"        # add a root device only when exists in bdms"},{"line_number":532,"context_line":"        if root_device_name \u003d\u003d bdm.device_name:"},{"line_number":533,"context_line":"            mappings[\u0027root\u0027] \u003d root_device_name"},{"line_number":534,"context_line":"            continue"},{"line_number":535,"context_line":"        # ebs volume case"},{"line_number":536,"context_line":"        if bdm.destination_type \u003d\u003d \u0027volume\u0027:"},{"line_number":537,"context_line":"            ebs_devices.append(bdm.device_name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_0b278d63","line":534,"updated":"2015-07-29 13:20:24.000000000","message":"This skips ebs_devices population if root device is volume","commit_id":"6f7e867e5fded23a9af58b0b08dad98234782ca8"},{"author":{"_account_id":7121,"name":"Hiroyuki Eguchi","email":"h-eguchi@az.jp.nec.com","username":"HiroyukiEguchi"},"change_message_id":"dde3ffe7889d4eda6e97ea76f4b850e8ab6104d8","unresolved":false,"context_lines":[{"line_number":531,"context_line":"        # add a root device only when exists in bdms"},{"line_number":532,"context_line":"        if root_device_name \u003d\u003d bdm.device_name:"},{"line_number":533,"context_line":"            mappings[\u0027root\u0027] \u003d root_device_name"},{"line_number":534,"context_line":"            continue"},{"line_number":535,"context_line":"        # ebs volume case"},{"line_number":536,"context_line":"        if bdm.destination_type \u003d\u003d \u0027volume\u0027:"},{"line_number":537,"context_line":"            ebs_devices.append(bdm.device_name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_65e2b405","line":534,"in_reply_to":"3a50d1a3_0b278d63","updated":"2015-08-18 00:47:05.000000000","message":"I got the point.\nI\u0027ll modify this.","commit_id":"6f7e867e5fded23a9af58b0b08dad98234782ca8"}],"nova/compute/utils.py":[{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"341e3c353eaba9b8ea4c544166745a911f093512","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    \"\"\""},{"line_number":101,"context_line":"    mappings \u003d block_device.instance_block_mapping(instance, bdms)"},{"line_number":102,"context_line":"    return get_next_device_name(instance, mappings.values(),"},{"line_number":103,"context_line":"                                instance[\u0027root_device_name\u0027], device)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"def default_device_names_for_instance(instance, root_device_name,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_4ebfe3cf","line":103,"updated":"2015-07-29 13:20:24.000000000","message":"The first is just a question: are we absolutely sure that instance always has not Null root device name?\n\nThe second is a proposal.\n\nIf you do not use mappings dict for root device name, probably it\u0027ll be better to do not call instance_block_mapping at all, but create device names list manually from bdms. What do you think?\n\nAs i see instance_block_mapping is used only here and in metadata api. It developed to return AWS compatible results. Here we do not need these details. If we do not use it here, we\u0027ll can move it later to a metadata related module to simplify base Nova code. And in this case we do not need to change it now.","commit_id":"6f7e867e5fded23a9af58b0b08dad98234782ca8"},{"author":{"_account_id":7121,"name":"Hiroyuki Eguchi","email":"h-eguchi@az.jp.nec.com","username":"HiroyukiEguchi"},"change_message_id":"dde3ffe7889d4eda6e97ea76f4b850e8ab6104d8","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    \"\"\""},{"line_number":101,"context_line":"    mappings \u003d block_device.instance_block_mapping(instance, bdms)"},{"line_number":102,"context_line":"    return get_next_device_name(instance, mappings.values(),"},{"line_number":103,"context_line":"                                instance[\u0027root_device_name\u0027], device)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"def default_device_names_for_instance(instance, root_device_name,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_c5f140cf","line":103,"in_reply_to":"3a50d1a3_4ebfe3cf","updated":"2015-08-18 00:47:05.000000000","message":"There is possibility that root device name is set to None when using Xendriver.\n\nTherefore, I will modify to be set manually when root device name is no value.\n\nThe instance_block_mapping method set manually when root_device_name is None.\n\nI agree with your proposal.\nI will modify not to use the instance_block_mapping method.","commit_id":"6f7e867e5fded23a9af58b0b08dad98234782ca8"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"ae14e5ed702778ade72a9ac6edc47e0d57ac61e5","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    \"\"\""},{"line_number":101,"context_line":"    mappings \u003d block_device.instance_block_mapping(instance, bdms)"},{"line_number":102,"context_line":"    return get_next_device_name(instance, mappings.values(),"},{"line_number":103,"context_line":"                                instance[\u0027root_device_name\u0027], device)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"def default_device_names_for_instance(instance, root_device_name,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_730a7bd4","line":103,"in_reply_to":"fa1b9901_c5f140cf","updated":"2015-08-18 04:04:46.000000000","message":"Could you please give more details: in what cases with xen root device name can be None? Besides this patch, it\u0027ll be very useful personally for me to expand my knowledge of Nova behavior with various hypervisors. Thanks.","commit_id":"6f7e867e5fded23a9af58b0b08dad98234782ca8"},{"author":{"_account_id":5319,"name":"Sam Stoelinga","email":"sammiestoel@gmail.com","username":"sammiestoel"},"change_message_id":"43f83ef4baba0bd27ea8887f6269c10d7f7a05ba","unresolved":false,"context_lines":[{"line_number":38,"context_line":"CONF \u003d cfg.CONF"},{"line_number":39,"context_line":"CONF.import_opt(\u0027host\u0027, \u0027nova.netconf\u0027)"},{"line_number":40,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":41,"context_line":"DEFAULT_ROOT_DEV_NAME \u003d \u0027/dev/sda1\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"def exception_to_dict(fault):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_47b2d895","line":41,"updated":"2015-08-19 04:51:02.000000000","message":"not sure about this, I remember seeing default as /dev/vda","commit_id":"8a3fd11ca02ce8b94ad8f906af13eeb5776a8a72"},{"author":{"_account_id":14101,"name":"yapeng Yang","email":"a394954369@gmail.com","username":"yapeng"},"change_message_id":"8a137947b6a30be1869d6836e9d3986cb36a4339","unresolved":false,"context_lines":[{"line_number":38,"context_line":"CONF \u003d cfg.CONF"},{"line_number":39,"context_line":"CONF.import_opt(\u0027host\u0027, \u0027nova.netconf\u0027)"},{"line_number":40,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":41,"context_line":"DEFAULT_ROOT_DEV_NAME \u003d \u0027/dev/sda1\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"def exception_to_dict(fault):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_69045549","line":41,"in_reply_to":"fa1b9901_47b2d895","updated":"2015-08-20 05:22:21.000000000","message":"i agree this, this shoud /dev/vda","commit_id":"8a3fd11ca02ce8b94ad8f906af13eeb5776a8a72"},{"author":{"_account_id":7121,"name":"Hiroyuki Eguchi","email":"h-eguchi@az.jp.nec.com","username":"HiroyukiEguchi"},"change_message_id":"1c1290f1e07435704ffbc0b4a378ef0dd1873de1","unresolved":false,"context_lines":[{"line_number":38,"context_line":"CONF \u003d cfg.CONF"},{"line_number":39,"context_line":"CONF.import_opt(\u0027host\u0027, \u0027nova.netconf\u0027)"},{"line_number":40,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":41,"context_line":"DEFAULT_ROOT_DEV_NAME \u003d \u0027/dev/sda1\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"def exception_to_dict(fault):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_3b91fc52","line":41,"in_reply_to":"fa1b9901_69045549","updated":"2015-08-25 06:11:42.000000000","message":"sorry\nI got the point.","commit_id":"8a3fd11ca02ce8b94ad8f906af13eeb5776a8a72"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"fb1f1e969fbfec5c5b845ba4d24e6c5503b1cf4c","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        else:"},{"line_number":108,"context_line":"            root_device_name \u003d DEFAULT_ROOT_DEV_NAME"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    dev_list \u003d [bdm.device_name for bdm in bdms]"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    default_ephemeral_device \u003d instance.get(\u0027default_ephemeral_device\u0027)"},{"line_number":113,"context_line":"    if default_ephemeral_device:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_f6d8b9f1","line":110,"updated":"2015-08-19 05:14:57.000000000","message":"Did you forget to add \u0027if bdm.device_name\u0027 check?","commit_id":"8a3fd11ca02ce8b94ad8f906af13eeb5776a8a72"},{"author":{"_account_id":7121,"name":"Hiroyuki Eguchi","email":"h-eguchi@az.jp.nec.com","username":"HiroyukiEguchi"},"change_message_id":"1c1290f1e07435704ffbc0b4a378ef0dd1873de1","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        else:"},{"line_number":108,"context_line":"            root_device_name \u003d DEFAULT_ROOT_DEV_NAME"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    dev_list \u003d [bdm.device_name for bdm in bdms]"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    default_ephemeral_device \u003d instance.get(\u0027default_ephemeral_device\u0027)"},{"line_number":113,"context_line":"    if default_ephemeral_device:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_9b884824","line":110,"in_reply_to":"fa1b9901_f6d8b9f1","updated":"2015-08-25 06:11:42.000000000","message":"I got the point.","commit_id":"8a3fd11ca02ce8b94ad8f906af13eeb5776a8a72"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"fb1f1e969fbfec5c5b845ba4d24e6c5503b1cf4c","unresolved":false,"context_lines":[{"line_number":161,"context_line":"            req_prefix, req_letter \u003d block_device.match_device(device)"},{"line_number":162,"context_line":"        except (TypeError, AttributeError, ValueError):"},{"line_number":163,"context_line":"            raise exception.InvalidDevicePath(path\u003ddevice)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    if not root_device_name:"},{"line_number":166,"context_line":"        root_device_name \u003d block_device.DEFAULT_ROOT_DEV_NAME"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_365f1174","line":164,"updated":"2015-08-19 05:14:57.000000000","message":"If you just assign a default name for root device, you could still pass in None to this function, but add here default name for Xen.","commit_id":"8a3fd11ca02ce8b94ad8f906af13eeb5776a8a72"},{"author":{"_account_id":7121,"name":"Hiroyuki Eguchi","email":"h-eguchi@az.jp.nec.com","username":"HiroyukiEguchi"},"change_message_id":"1c1290f1e07435704ffbc0b4a378ef0dd1873de1","unresolved":false,"context_lines":[{"line_number":161,"context_line":"            req_prefix, req_letter \u003d block_device.match_device(device)"},{"line_number":162,"context_line":"        except (TypeError, AttributeError, ValueError):"},{"line_number":163,"context_line":"            raise exception.InvalidDevicePath(path\u003ddevice)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    if not root_device_name:"},{"line_number":166,"context_line":"        root_device_name \u003d block_device.DEFAULT_ROOT_DEV_NAME"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_bb92ec49","line":164,"in_reply_to":"fa1b9901_365f1174","updated":"2015-08-25 06:11:42.000000000","message":"I got the point.\n\nI will add a new case for Xen here.","commit_id":"8a3fd11ca02ce8b94ad8f906af13eeb5776a8a72"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"fb1f1e969fbfec5c5b845ba4d24e6c5503b1cf4c","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        letter \u003d block_device.get_device_letter(device_path)"},{"line_number":185,"context_line":"        used_letters.add(letter)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    # NOTE(vish): remove this when xenapi is properly setting"},{"line_number":188,"context_line":"    #             default_ephemeral_device and default_swap_device"},{"line_number":189,"context_line":"    if is_xen:"},{"line_number":190,"context_line":"        flavor \u003d instance.get_flavor()"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_764fc992","line":187,"updated":"2015-08-19 05:14:57.000000000","message":"These devices are already considered here, so you probably do not need to handle they.","commit_id":"8a3fd11ca02ce8b94ad8f906af13eeb5776a8a72"},{"author":{"_account_id":7121,"name":"Hiroyuki Eguchi","email":"h-eguchi@az.jp.nec.com","username":"HiroyukiEguchi"},"change_message_id":"1c1290f1e07435704ffbc0b4a378ef0dd1873de1","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        letter \u003d block_device.get_device_letter(device_path)"},{"line_number":185,"context_line":"        used_letters.add(letter)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    # NOTE(vish): remove this when xenapi is properly setting"},{"line_number":188,"context_line":"    #             default_ephemeral_device and default_swap_device"},{"line_number":189,"context_line":"    if is_xen:"},{"line_number":190,"context_line":"        flavor \u003d instance.get_flavor()"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_7b01b469","line":187,"in_reply_to":"fa1b9901_764fc992","updated":"2015-08-25 06:11:42.000000000","message":"I got the point.\n\nremove \"if is_xen\" to handle all cases.","commit_id":"8a3fd11ca02ce8b94ad8f906af13eeb5776a8a72"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a4e5a33070b4f869bd78200269ac512bcad7fe44","unresolved":false,"context_lines":[{"line_number":99,"context_line":"    This method is a wrapper for get_next_device_name that gets the list"},{"line_number":100,"context_line":"    of used devices and the root device from a block device mapping."},{"line_number":101,"context_line":"    \"\"\""},{"line_number":102,"context_line":"    root_device_name \u003d instance[\u0027root_device_name\u0027]"},{"line_number":103,"context_line":"    dev_list \u003d [bdm.device_name for bdm in bdms if bdm.device_name]"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    return get_next_device_name(instance, dev_list,"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_34494d8c","line":102,"updated":"2015-08-27 09:54:07.000000000","message":"the instance should be an object. please use instance.root_device_name","commit_id":"87945d0ae92f719290e3f7497a323aa8014312c4"},{"author":{"_account_id":7121,"name":"Hiroyuki Eguchi","email":"h-eguchi@az.jp.nec.com","username":"HiroyukiEguchi"},"change_message_id":"ca7600efeb129ae34a0d4306f2fd46f1642346e8","unresolved":false,"context_lines":[{"line_number":99,"context_line":"    This method is a wrapper for get_next_device_name that gets the list"},{"line_number":100,"context_line":"    of used devices and the root device from a block device mapping."},{"line_number":101,"context_line":"    \"\"\""},{"line_number":102,"context_line":"    root_device_name \u003d instance[\u0027root_device_name\u0027]"},{"line_number":103,"context_line":"    dev_list \u003d [bdm.device_name for bdm in bdms if bdm.device_name]"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    return get_next_device_name(instance, dev_list,"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_79c65569","line":102,"in_reply_to":"da20952f_34494d8c","updated":"2015-08-31 05:18:42.000000000","message":"I got the point.","commit_id":"87945d0ae92f719290e3f7497a323aa8014312c4"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a4e5a33070b4f869bd78200269ac512bcad7fe44","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        letter \u003d block_device.get_device_letter(device_path)"},{"line_number":174,"context_line":"        used_letters.add(letter)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    flavor \u003d instance.get_flavor()"},{"line_number":177,"context_line":"    if flavor:"},{"line_number":178,"context_line":"        if flavor.ephemeral_gb and flavor.ephemeral_gb !\u003d 0:"},{"line_number":179,"context_line":"            used_letters.add(\u0027b\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_d713335b","line":176,"updated":"2015-08-27 09:54:07.000000000","message":"if we are change code here then lets please use instance.flavor","commit_id":"87945d0ae92f719290e3f7497a323aa8014312c4"},{"author":{"_account_id":7121,"name":"Hiroyuki Eguchi","email":"h-eguchi@az.jp.nec.com","username":"HiroyukiEguchi"},"change_message_id":"ca7600efeb129ae34a0d4306f2fd46f1642346e8","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        letter \u003d block_device.get_device_letter(device_path)"},{"line_number":174,"context_line":"        used_letters.add(letter)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    flavor \u003d instance.get_flavor()"},{"line_number":177,"context_line":"    if flavor:"},{"line_number":178,"context_line":"        if flavor.ephemeral_gb and flavor.ephemeral_gb !\u003d 0:"},{"line_number":179,"context_line":"            used_letters.add(\u0027b\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_19ae3998","line":176,"in_reply_to":"da20952f_d713335b","updated":"2015-08-31 05:18:42.000000000","message":"I got the point.","commit_id":"87945d0ae92f719290e3f7497a323aa8014312c4"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"95b4197a2ca97ac71ede5fb9b94b4a86f2bd9e78","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        letter \u003d block_device.get_device_letter(device_path)"},{"line_number":174,"context_line":"        used_letters.add(letter)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    flavor \u003d instance.flavor"},{"line_number":177,"context_line":"    if flavor:"},{"line_number":178,"context_line":"        if flavor.ephemeral_gb and flavor.ephemeral_gb !\u003d 0:"},{"line_number":179,"context_line":"            used_letters.add(\u0027b\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_03caada1","line":176,"updated":"2015-09-02 18:58:23.000000000","message":"Are you sure that you need to change this part of code? Could you explane why?","commit_id":"16ad6dd8e213c5798e77fc532abcb763ddb02b27"},{"author":{"_account_id":7121,"name":"Hiroyuki Eguchi","email":"h-eguchi@az.jp.nec.com","username":"HiroyukiEguchi"},"change_message_id":"7c6c0b1f4e6d765a9209fd69e3f9d6d175852da0","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        letter \u003d block_device.get_device_letter(device_path)"},{"line_number":174,"context_line":"        used_letters.add(letter)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    flavor \u003d instance.flavor"},{"line_number":177,"context_line":"    if flavor:"},{"line_number":178,"context_line":"        if flavor.ephemeral_gb and flavor.ephemeral_gb !\u003d 0:"},{"line_number":179,"context_line":"            used_letters.add(\u0027b\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_ed424368","line":176,"in_reply_to":"ba15a1d1_0b9d8a65","updated":"2015-09-20 06:09:38.000000000","message":"Thank you for explaining it.\nI understand what you talking about.\nIt is no necessary these changes.\nIt work fine my devstack environment without these changes.","commit_id":"16ad6dd8e213c5798e77fc532abcb763ddb02b27"},{"author":{"_account_id":7121,"name":"Hiroyuki Eguchi","email":"h-eguchi@az.jp.nec.com","username":"HiroyukiEguchi"},"change_message_id":"9d95c5885ad72b9a271a9bc6d5a61d9d397e2d97","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        letter \u003d block_device.get_device_letter(device_path)"},{"line_number":174,"context_line":"        used_letters.add(letter)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    flavor \u003d instance.flavor"},{"line_number":177,"context_line":"    if flavor:"},{"line_number":178,"context_line":"        if flavor.ephemeral_gb and flavor.ephemeral_gb !\u003d 0:"},{"line_number":179,"context_line":"            used_letters.add(\u0027b\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_58a59944","line":176,"in_reply_to":"ba15a1d1_375d7279","updated":"2015-09-17 01:43:28.000000000","message":"Without this change, \"Nova volume-attach\" fails when instance has a swap device or ephemeral disk.\n\nIf a instance has a swap device and ephemeral disk, an additional cinder disk should be attached to /dev/vdd.\nHowever It is attached to /dev/vdb without this change.","commit_id":"16ad6dd8e213c5798e77fc532abcb763ddb02b27"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"4a65d377a4d333f85fd2f678b971d697f4ac86e2","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        letter \u003d block_device.get_device_letter(device_path)"},{"line_number":174,"context_line":"        used_letters.add(letter)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    flavor \u003d instance.flavor"},{"line_number":177,"context_line":"    if flavor:"},{"line_number":178,"context_line":"        if flavor.ephemeral_gb and flavor.ephemeral_gb !\u003d 0:"},{"line_number":179,"context_line":"            used_letters.add(\u0027b\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_0b9d8a65","line":176,"in_reply_to":"ba15a1d1_58a59944","updated":"2015-09-17 07:14:12.000000000","message":"Could you explain this case more?\n\nThis function is called with full set of bdms [1]. But at booting stage ephemeral and swap devices are forcedly added to bdms if they are not specified by a user [2]. All non named bdms get device names during booting stage. So that bdms list passed in this function has all used device names. At least in theory.\n\nSo that i wonder that some changes are needed here to consider virtual devices.\n\n[1] https://github.com/openstack/nova/blob/a0951962301114e3f5b9eefa1865d5a466b07797/nova/compute/manager.py#L4508\n[2] https://github.com/openstack/nova/blob/master/nova/compute/api.py#L839","commit_id":"16ad6dd8e213c5798e77fc532abcb763ddb02b27"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"a715dd6b7bf92cd6d22afe52afc0b979a77b12dc","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        letter \u003d block_device.get_device_letter(device_path)"},{"line_number":174,"context_line":"        used_letters.add(letter)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    flavor \u003d instance.flavor"},{"line_number":177,"context_line":"    if flavor:"},{"line_number":178,"context_line":"        if flavor.ephemeral_gb and flavor.ephemeral_gb !\u003d 0:"},{"line_number":179,"context_line":"            used_letters.add(\u0027b\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_375d7279","line":176,"in_reply_to":"ba15a1d1_d156865b","updated":"2015-09-16 12:09:37.000000000","message":"I mean changes of this block as a whole, in comparison with master code. What part of the problem do these changes fix?","commit_id":"16ad6dd8e213c5798e77fc532abcb763ddb02b27"},{"author":{"_account_id":7121,"name":"Hiroyuki Eguchi","email":"h-eguchi@az.jp.nec.com","username":"HiroyukiEguchi"},"change_message_id":"1adc4076c822b82f84793760a445c98a31b41b7d","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        letter \u003d block_device.get_device_letter(device_path)"},{"line_number":174,"context_line":"        used_letters.add(letter)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    flavor \u003d instance.flavor"},{"line_number":177,"context_line":"    if flavor:"},{"line_number":178,"context_line":"        if flavor.ephemeral_gb and flavor.ephemeral_gb !\u003d 0:"},{"line_number":179,"context_line":"            used_letters.add(\u0027b\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_d156865b","line":176,"in_reply_to":"da20952f_03caada1","updated":"2015-09-16 11:23:08.000000000","message":"According to garyk\u0027s comments in Patch Set 4,\nwe are using \"instance.flavor\" instead of \"instance.get_flavor()\".\nSince the flavor-from-sysmeta-to-blob patches merged, the instance\nflavor is available from the instance itself","commit_id":"16ad6dd8e213c5798e77fc532abcb763ddb02b27"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"7e874b7b1f2095c249342f528377b5c12e337c5b","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    # NOTE(vish): remove this when xenapi is properly setting"},{"line_number":172,"context_line":"    #             default_ephemeral_device and default_swap_device"},{"line_number":173,"context_line":"    if is_xen:"},{"line_number":174,"context_line":"        flavor \u003d instance.get_flavor()"},{"line_number":175,"context_line":"        if flavor.ephemeral_gb:"},{"line_number":176,"context_line":"            used_letters.add(\u0027b\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_5b796cfb","side":"PARENT","line":173,"updated":"2015-09-22 03:32:09.000000000","message":"Now this is an unrelated change. Probably core reviewrs will ask to revert it.","commit_id":"c96ade8eb38387af962f6cf307f20f317a7729fd"},{"author":{"_account_id":7121,"name":"Hiroyuki Eguchi","email":"h-eguchi@az.jp.nec.com","username":"HiroyukiEguchi"},"change_message_id":"70e48536ef40cee1425beea30ff53085e0701613","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    # NOTE(vish): remove this when xenapi is properly setting"},{"line_number":172,"context_line":"    #             default_ephemeral_device and default_swap_device"},{"line_number":173,"context_line":"    if is_xen:"},{"line_number":174,"context_line":"        flavor \u003d instance.get_flavor()"},{"line_number":175,"context_line":"        if flavor.ephemeral_gb:"},{"line_number":176,"context_line":"            used_letters.add(\u0027b\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_7c53d117","side":"PARENT","line":173,"in_reply_to":"ba15a1d1_5b796cfb","updated":"2015-09-23 04:50:53.000000000","message":"I see.\nI cancel this change.","commit_id":"c96ade8eb38387af962f6cf307f20f317a7729fd"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"7e874b7b1f2095c249342f528377b5c12e337c5b","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    if not root_device_name:"},{"line_number":152,"context_line":"        if is_xen:"},{"line_number":153,"context_line":"            root_device_name \u003d \u0027/dev/xvda\u0027"},{"line_number":154,"context_line":"        else:"},{"line_number":155,"context_line":"            root_device_name \u003d block_device.DEFAULT_ROOT_DEV_NAME"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_1b0c5493","line":153,"updated":"2015-09-22 03:32:09.000000000","message":"Could you add a test for this case?","commit_id":"3ffbc33094a019e6b99185fbf39991fda9dd19ff"},{"author":{"_account_id":16523,"name":"ZhangLei","display_name":"ZhangLei","email":"zhang.lei@99cloud.net","username":"zhang.lei"},"change_message_id":"f29985aa083a603de8cfce8901d05a09e7b6a653","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    This method is a wrapper for get_next_device_name that gets the list"},{"line_number":100,"context_line":"    of used devices and the root device from a block device mapping."},{"line_number":101,"context_line":"    \"\"\""},{"line_number":102,"context_line":"    root_device_name \u003d instance.root_device_name"},{"line_number":103,"context_line":"    dev_list \u003d [bdm.device_name for bdm in bdms if bdm.device_name]"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3a7e1126_b286c6b7","line":101,"updated":"2015-12-17 05:45:30.000000000","message":"i think you need to modify the docstring","commit_id":"961894bce742a0bca1489373d3e8d4a8275ead89"}],"nova/tests/unit/compute/test_compute_utils.py":[{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"7e874b7b1f2095c249342f528377b5c12e337c5b","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        self.instance.default_swap_device \u003d None"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        self.data \u003d ["},{"line_number":105,"context_line":"            self._fake_bdm(\u0027/dev/vda\u0027),"},{"line_number":106,"context_line":"            self._fake_bdm(\u0027/dev/vdb\u0027),"},{"line_number":107,"context_line":"        ]"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_9b9384fa","line":105,"updated":"2015-09-22 03:32:09.000000000","message":"This affects all other tests of the class. What was a reason to do it?","commit_id":"3ffbc33094a019e6b99185fbf39991fda9dd19ff"},{"author":{"_account_id":7121,"name":"Hiroyuki Eguchi","email":"h-eguchi@az.jp.nec.com","username":"HiroyukiEguchi"},"change_message_id":"70e48536ef40cee1425beea30ff53085e0701613","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        self.instance.default_swap_device \u003d None"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        self.data \u003d ["},{"line_number":105,"context_line":"            self._fake_bdm(\u0027/dev/vda\u0027),"},{"line_number":106,"context_line":"            self._fake_bdm(\u0027/dev/vdb\u0027),"},{"line_number":107,"context_line":"        ]"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_9c1a656e","line":105,"in_reply_to":"ba15a1d1_9b9384fa","updated":"2015-09-23 04:50:53.000000000","message":"Some tests below assume that instance has a root device (/dev/vda) and ephemeral disk (dev/vdb).\nSo I think this code should be added here rather than be added in each test.","commit_id":"3ffbc33094a019e6b99185fbf39991fda9dd19ff"},{"author":{"_account_id":7121,"name":"Hiroyuki Eguchi","email":"h-eguchi@az.jp.nec.com","username":"HiroyukiEguchi"},"change_message_id":"dede17b59eaad6f59e2c7d0881053672c8112e52","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        self.instance.default_swap_device \u003d None"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        self.data \u003d ["},{"line_number":105,"context_line":"            self._fake_bdm(\u0027/dev/vda\u0027),"},{"line_number":106,"context_line":"            self._fake_bdm(\u0027/dev/vdb\u0027),"},{"line_number":107,"context_line":"        ]"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_17f06efc","line":105,"in_reply_to":"ba15a1d1_9c1a656e","updated":"2015-09-23 06:04:22.000000000","message":"I have modified so that the self.data is set in each test.","commit_id":"3ffbc33094a019e6b99185fbf39991fda9dd19ff"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"e70a681192125b3357f44a63cfbb7a1faeca7363","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                default_ephemeral_device\u003dNone)"},{"line_number":93,"context_line":"        else:"},{"line_number":94,"context_line":"            self.instance \u003d objects.Instance(uuid\u003duuid.uuid4().hex,"},{"line_number":95,"context_line":"                root_device_name\u003d\u0027/dev/vda\u0027,"},{"line_number":96,"context_line":"                default_ephemeral_device\u003d\u0027/dev/vdb\u0027)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        flavor \u003d objects.Flavor(**test_flavor.fake_flavor)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a2fa921_bc57d024","line":95,"updated":"2015-10-09 15:05:33.000000000","message":"This instance property is no longer used by get_device_name_for_instance. So you could remove it here (and above too).","commit_id":"3ac7f5a3eaf9870ea277b2750a741bc245d34a19"},{"author":{"_account_id":7121,"name":"Hiroyuki Eguchi","email":"h-eguchi@az.jp.nec.com","username":"HiroyukiEguchi"},"change_message_id":"7a1fce139a39943c8613893fb65bb2f13357e36b","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                default_ephemeral_device\u003dNone)"},{"line_number":93,"context_line":"        else:"},{"line_number":94,"context_line":"            self.instance \u003d objects.Instance(uuid\u003duuid.uuid4().hex,"},{"line_number":95,"context_line":"                root_device_name\u003d\u0027/dev/vda\u0027,"},{"line_number":96,"context_line":"                default_ephemeral_device\u003d\u0027/dev/vdb\u0027)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        flavor \u003d objects.Flavor(**test_flavor.fake_flavor)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a2ca52d_fbff3e32","line":95,"in_reply_to":"7a2fa921_bc57d024","updated":"2015-10-14 02:18:49.000000000","message":"I got the point. \nI\u0027ll remove a default_ephemeral_device param.","commit_id":"3ac7f5a3eaf9870ea277b2750a741bc245d34a19"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"e70a681192125b3357f44a63cfbb7a1faeca7363","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        device \u003d self._validate_device()"},{"line_number":178,"context_line":"        self.assertEqual(device, \u0027/dev/vdd\u0027)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def test_no_bdms(self):"},{"line_number":181,"context_line":"        self.data \u003d ["},{"line_number":182,"context_line":"            self._fake_bdm(\u0027/dev/vda\u0027),"},{"line_number":183,"context_line":"            self._fake_bdm(\u0027/dev/vdb\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a2fa921_5759b533","line":180,"updated":"2015-10-09 15:05:33.000000000","message":"Now this test is not consistent because it\u0027s named \u0027no_bdms\u0027, but you add bdms. In fact it checks the same case as test_later does. I think you could remove it.","commit_id":"3ac7f5a3eaf9870ea277b2750a741bc245d34a19"},{"author":{"_account_id":7121,"name":"Hiroyuki Eguchi","email":"h-eguchi@az.jp.nec.com","username":"HiroyukiEguchi"},"change_message_id":"7a1fce139a39943c8613893fb65bb2f13357e36b","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        device \u003d self._validate_device()"},{"line_number":178,"context_line":"        self.assertEqual(device, \u0027/dev/vdd\u0027)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def test_no_bdms(self):"},{"line_number":181,"context_line":"        self.data \u003d ["},{"line_number":182,"context_line":"            self._fake_bdm(\u0027/dev/vda\u0027),"},{"line_number":183,"context_line":"            self._fake_bdm(\u0027/dev/vdb\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a2ca52d_9b93aafa","line":180,"in_reply_to":"7a2fa921_5759b533","updated":"2015-10-14 02:18:49.000000000","message":"I see.\nI remove this test.","commit_id":"3ac7f5a3eaf9870ea277b2750a741bc245d34a19"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"e70a681192125b3357f44a63cfbb7a1faeca7363","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    def test_lxc_names_work(self):"},{"line_number":189,"context_line":"        self.instance[\u0027root_device_name\u0027] \u003d \u0027/dev/a\u0027"},{"line_number":190,"context_line":"        self.instance[\u0027ephemeral_device_name\u0027] \u003d \u0027/dev/b\u0027"},{"line_number":191,"context_line":"        self.data \u003d ["},{"line_number":192,"context_line":"            self._fake_bdm(\u0027/dev/a\u0027),"},{"line_number":193,"context_line":"            self._fake_bdm(\u0027/dev/b\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a2fa921_9788ad72","line":190,"updated":"2015-10-09 15:05:33.000000000","message":"This attribute is no longer used, so you could remove it.","commit_id":"3ac7f5a3eaf9870ea277b2750a741bc245d34a19"},{"author":{"_account_id":7121,"name":"Hiroyuki Eguchi","email":"h-eguchi@az.jp.nec.com","username":"HiroyukiEguchi"},"change_message_id":"7a1fce139a39943c8613893fb65bb2f13357e36b","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    def test_lxc_names_work(self):"},{"line_number":189,"context_line":"        self.instance[\u0027root_device_name\u0027] \u003d \u0027/dev/a\u0027"},{"line_number":190,"context_line":"        self.instance[\u0027ephemeral_device_name\u0027] \u003d \u0027/dev/b\u0027"},{"line_number":191,"context_line":"        self.data \u003d ["},{"line_number":192,"context_line":"            self._fake_bdm(\u0027/dev/a\u0027),"},{"line_number":193,"context_line":"            self._fake_bdm(\u0027/dev/b\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a2ca52d_bb90e6ed","line":190,"in_reply_to":"7a2fa921_9788ad72","updated":"2015-10-14 02:18:49.000000000","message":"I got the point.","commit_id":"3ac7f5a3eaf9870ea277b2750a741bc245d34a19"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"e70a681192125b3357f44a63cfbb7a1faeca7363","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                          self._validate_device, \u0027/dev/vda\u0027)"},{"line_number":220,"context_line":"        self.assertIn(\u0027/dev/vda\u0027, six.text_type(exc))"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def test_swap(self):"},{"line_number":223,"context_line":"        self.data \u003d ["},{"line_number":224,"context_line":"            self._fake_bdm(\u0027/dev/vda\u0027),"},{"line_number":225,"context_line":"            self._fake_bdm(\u0027/dev/vdb\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a2fa921_37b3d90b","line":222,"updated":"2015-10-09 15:05:33.000000000","message":"Since default_swap_device attribute is no longer used, this test does the same as test_later does. I think there is no reason to keep this test.","commit_id":"3ac7f5a3eaf9870ea277b2750a741bc245d34a19"},{"author":{"_account_id":7121,"name":"Hiroyuki Eguchi","email":"h-eguchi@az.jp.nec.com","username":"HiroyukiEguchi"},"change_message_id":"358e94e9ed5cc8bf76f8f3195508f2799448c7dc","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                          self._validate_device, \u0027/dev/vda\u0027)"},{"line_number":220,"context_line":"        self.assertIn(\u0027/dev/vda\u0027, six.text_type(exc))"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def test_swap(self):"},{"line_number":223,"context_line":"        self.data \u003d ["},{"line_number":224,"context_line":"            self._fake_bdm(\u0027/dev/vda\u0027),"},{"line_number":225,"context_line":"            self._fake_bdm(\u0027/dev/vdb\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a2ca52d_36586dfa","line":222,"in_reply_to":"5a2ca52d_db5e0245","updated":"2015-10-14 02:37:52.000000000","message":"sorry. I misunderstood.\nI leave these tests as it is.\n\n- test_ephemeral_xenapi\n- test_swap_xenapi\n- test_swap_and_ephemeral_xenapi\n- test_swap_and_one_attachment_xenapi","commit_id":"3ac7f5a3eaf9870ea277b2750a741bc245d34a19"},{"author":{"_account_id":7121,"name":"Hiroyuki Eguchi","email":"h-eguchi@az.jp.nec.com","username":"HiroyukiEguchi"},"change_message_id":"7a1fce139a39943c8613893fb65bb2f13357e36b","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                          self._validate_device, \u0027/dev/vda\u0027)"},{"line_number":220,"context_line":"        self.assertIn(\u0027/dev/vda\u0027, six.text_type(exc))"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def test_swap(self):"},{"line_number":223,"context_line":"        self.data \u003d ["},{"line_number":224,"context_line":"            self._fake_bdm(\u0027/dev/vda\u0027),"},{"line_number":225,"context_line":"            self._fake_bdm(\u0027/dev/vdb\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a2ca52d_db5e0245","line":222,"in_reply_to":"7a2fa921_37b3d90b","updated":"2015-10-14 02:18:49.000000000","message":"I see. I remove unnecessary following tests.\n\n- test_swap\n- test_swap_no_ephemeral\n- test_ephemeral_xenapi\n- test_swap_xenapi\n- test_swap_and_ephemeral_xenapi\n- test_swap_and_one_attachment_xenapi","commit_id":"3ac7f5a3eaf9870ea277b2750a741bc245d34a19"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"e70a681192125b3357f44a63cfbb7a1faeca7363","unresolved":false,"context_lines":[{"line_number":229,"context_line":"        device \u003d self._validate_device()"},{"line_number":230,"context_line":"        self.assertEqual(device, \u0027/dev/vdd\u0027)"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def test_swap_no_ephemeral(self):"},{"line_number":233,"context_line":"        self.data \u003d ["},{"line_number":234,"context_line":"            self._fake_bdm(\u0027/dev/vda\u0027),"},{"line_number":235,"context_line":"            self._fake_bdm(\u0027/dev/vdb\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a2fa921_77a4f1b8","line":232,"updated":"2015-10-09 15:05:33.000000000","message":"The same as for test_swap.","commit_id":"3ac7f5a3eaf9870ea277b2750a741bc245d34a19"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"e70a681192125b3357f44a63cfbb7a1faeca7363","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        self.assertEqual(device, \u0027/dev/vdc\u0027)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def test_ephemeral_xenapi(self):"},{"line_number":243,"context_line":"        self.data \u003d ["},{"line_number":244,"context_line":"            self._fake_bdm(\u0027/dev/vda\u0027),"},{"line_number":245,"context_line":"            self._fake_bdm(\u0027/dev/vdb\u0027),"},{"line_number":246,"context_line":"        ]"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a2fa921_77071182","line":243,"updated":"2015-10-09 15:05:33.000000000","message":"Since get_next_device_name still considers flavor attributes, you should check this. So i propose to do not touch this test.","commit_id":"3ac7f5a3eaf9870ea277b2750a741bc245d34a19"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"e70a681192125b3357f44a63cfbb7a1faeca7363","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        self.assertEqual(device, \u0027/dev/xvdc\u0027)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    def test_swap_xenapi(self):"},{"line_number":251,"context_line":"        self.data \u003d ["},{"line_number":252,"context_line":"            self._fake_bdm(\u0027/dev/xvda\u0027),"},{"line_number":253,"context_line":"            self._fake_bdm(\u0027/dev/xvdc\u0027),"},{"line_number":254,"context_line":"        ]"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a2fa921_37fd196e","line":251,"updated":"2015-10-09 15:05:33.000000000","message":"ditto","commit_id":"3ac7f5a3eaf9870ea277b2750a741bc245d34a19"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"e70a681192125b3357f44a63cfbb7a1faeca7363","unresolved":false,"context_lines":[{"line_number":256,"context_line":"        self.assertEqual(device, \u0027/dev/xvdb\u0027)"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    def test_swap_and_ephemeral_xenapi(self):"},{"line_number":259,"context_line":"        self.data \u003d ["},{"line_number":260,"context_line":"            self._fake_bdm(\u0027/dev/xvda\u0027),"},{"line_number":261,"context_line":"            self._fake_bdm(\u0027/dev/xvdb\u0027),"},{"line_number":262,"context_line":"            self._fake_bdm(\u0027/dev/xvdc\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a2fa921_5700d565","line":259,"updated":"2015-10-09 15:05:33.000000000","message":"ditto","commit_id":"3ac7f5a3eaf9870ea277b2750a741bc245d34a19"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"e70a681192125b3357f44a63cfbb7a1faeca7363","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        self.assertEqual(device, \u0027/dev/xvdd\u0027)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    def test_swap_and_one_attachment_xenapi(self):"},{"line_number":268,"context_line":"        self.data \u003d ["},{"line_number":269,"context_line":"            self._fake_bdm(\u0027/dev/xvda\u0027),"},{"line_number":270,"context_line":"            self._fake_bdm(\u0027/dev/xvdc\u0027),"},{"line_number":271,"context_line":"        ]"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a2fa921_f7fb2177","line":268,"updated":"2015-10-09 15:05:33.000000000","message":"ditto","commit_id":"3ac7f5a3eaf9870ea277b2750a741bc245d34a19"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"e70a681192125b3357f44a63cfbb7a1faeca7363","unresolved":false,"context_lines":[{"line_number":278,"context_line":"    def test_no_dev_root_device_name_get_next_name(self):"},{"line_number":279,"context_line":"        self.instance[\u0027root_device_name\u0027] \u003d \u0027vda\u0027"},{"line_number":280,"context_line":"        self.data \u003d ["},{"line_number":281,"context_line":"            self._fake_bdm(\u0027/dev/vda\u0027),"},{"line_number":282,"context_line":"            self._fake_bdm(\u0027/dev/vdb\u0027),"},{"line_number":283,"context_line":"        ]"},{"line_number":284,"context_line":"        device \u003d self._validate_device()"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a2fa921_578535cc","line":281,"updated":"2015-10-09 15:05:33.000000000","message":"Probably you should also use just \u0027vda\u0027 here?","commit_id":"3ac7f5a3eaf9870ea277b2750a741bc245d34a19"},{"author":{"_account_id":7121,"name":"Hiroyuki Eguchi","email":"h-eguchi@az.jp.nec.com","username":"HiroyukiEguchi"},"change_message_id":"7a1fce139a39943c8613893fb65bb2f13357e36b","unresolved":false,"context_lines":[{"line_number":278,"context_line":"    def test_no_dev_root_device_name_get_next_name(self):"},{"line_number":279,"context_line":"        self.instance[\u0027root_device_name\u0027] \u003d \u0027vda\u0027"},{"line_number":280,"context_line":"        self.data \u003d ["},{"line_number":281,"context_line":"            self._fake_bdm(\u0027/dev/vda\u0027),"},{"line_number":282,"context_line":"            self._fake_bdm(\u0027/dev/vdb\u0027),"},{"line_number":283,"context_line":"        ]"},{"line_number":284,"context_line":"        device \u003d self._validate_device()"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a2ca52d_fbadfe31","line":281,"in_reply_to":"7a2fa921_578535cc","updated":"2015-10-14 02:18:49.000000000","message":"I got the point.","commit_id":"3ac7f5a3eaf9870ea277b2750a741bc245d34a19"}],"nova/tests/unit/test_metadata.py":[{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"341e3c353eaba9b8ea4c544166745a911f093512","unresolved":false,"context_lines":[{"line_number":238,"context_line":"                       fake_bdm_get)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        expected \u003d {\u0027ami\u0027: \u0027sda1\u0027,"},{"line_number":241,"context_line":"                    \u0027root\u0027: \u0027/dev/sda1\u0027,"},{"line_number":242,"context_line":"                    \u0027ephemeral0\u0027: \u0027/dev/sdb\u0027,"},{"line_number":243,"context_line":"                    \u0027swap\u0027: \u0027/dev/sdc\u0027,"},{"line_number":244,"context_line":"                    \u0027ebs0\u0027: \u0027/dev/sdh\u0027}"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_e2dda5e0","side":"PARENT","line":241,"updated":"2015-07-29 13:20:24.000000000","message":"These keys are required for AWS compatibility. See http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html#instancedata-data-categories\n\nCould you set appropriate root_device_name for respective fake instance to ensure that these keys are returned in regular case?","commit_id":"4c8d4e9c9328b382828b35308e38998ee81a0088"},{"author":{"_account_id":7121,"name":"Hiroyuki Eguchi","email":"h-eguchi@az.jp.nec.com","username":"HiroyukiEguchi"},"change_message_id":"dde3ffe7889d4eda6e97ea76f4b850e8ab6104d8","unresolved":false,"context_lines":[{"line_number":238,"context_line":"                       fake_bdm_get)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        expected \u003d {\u0027ami\u0027: \u0027sda1\u0027,"},{"line_number":241,"context_line":"                    \u0027root\u0027: \u0027/dev/sda1\u0027,"},{"line_number":242,"context_line":"                    \u0027ephemeral0\u0027: \u0027/dev/sdb\u0027,"},{"line_number":243,"context_line":"                    \u0027swap\u0027: \u0027/dev/sdc\u0027,"},{"line_number":244,"context_line":"                    \u0027ebs0\u0027: \u0027/dev/sdh\u0027}"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_65b954e9","side":"PARENT","line":241,"in_reply_to":"3a50d1a3_e2dda5e0","updated":"2015-08-18 00:47:05.000000000","message":"I got the point.\nI\u0027ll modify this.","commit_id":"4c8d4e9c9328b382828b35308e38998ee81a0088"}]}
