)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2e23ddd967d04f0d1a80d6c2a3816012b23b0a26","unresolved":false,"context_lines":[{"line_number":11,"context_line":"If30afdb59d4c4268b97d3d10270df2cc729a0c4c when booting an instance."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The compute API create method will still convert these back to the"},{"line_number":14,"context_line":"legacy format for the time being until the compute API will now how to"},{"line_number":15,"context_line":"take advantage of the new format."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"blueprint: improve-block-device-handling"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAAPn%2F%2FhOU%3D","line":14,"updated":"2013-06-28 16:53:19.000000000","message":"s/now/know/","commit_id":"0e21a5153b1c0a1a953fd72725ff9b9518b8795f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2827838e13b0a991e1cf74cb5100563812771b2d","unresolved":false,"context_lines":[{"line_number":16,"context_line":"extension. This will be done in a subsequent patch."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"The compute API create method will still convert these back to the"},{"line_number":19,"context_line":"legacy format for the time being until the compute API will now how to"},{"line_number":20,"context_line":"take advantage of the new format."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"blueprint: improve-block-device-handling"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"AAAAP3%2F%2F1lQ%3D","line":19,"updated":"2013-07-10 16:23:39.000000000","message":"s/now/know/","commit_id":"03bcda63240f477d42551468238673a5d138e00d"}],"doc/api_samples/all_extensions/extensions-get-resp.json":[{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"dca3b89c3523a6063d88f833ae0e380b01124a99","unresolved":false,"context_lines":[{"line_number":110,"context_line":"            \"links\": [],"},{"line_number":111,"context_line":"            \"name\": \"ServerUsage\","},{"line_number":112,"context_line":"            \"namespace\": \"http://docs.openstack.org/compute/ext/server_usage/api/v1.1\","},{"line_number":113,"context_line":"            \"updated\": \"2013-04-29T00:00:00+00:00\""},{"line_number":114,"context_line":"        },"},{"line_number":115,"context_line":"        {"},{"line_number":116,"context_line":"            \"alias\": \"os-admin-actions\","}],"source_content_type":"application/json","patch_set":10,"id":"AAAAP3%2F%2Frp4%3D","line":113,"updated":"2013-07-13 07:16:40.000000000","message":"I\u0027d be nice to know what\u0027s causing these no-op changes","commit_id":"420faed74fecb9ede11354f70b95fcb914a2a588"}],"nova/api/openstack/compute/servers.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"3b30f6c77d5193c6f2e08cb4bea55ddca957002d","unresolved":false,"context_lines":[{"line_number":862,"context_line":"            block_device_mapping_v2 \u003d server_dict.get("},{"line_number":863,"context_line":"                \u0027block_device_mapping_v2\u0027, [])"},{"line_number":864,"context_line":"            # NOTE (ndipanov):  Disable usage of both legacy and new"},{"line_number":865,"context_line":"            #                   block_devuices in the same request"},{"line_number":866,"context_line":"            if block_device_mapping and block_device_mapping_v2:"},{"line_number":867,"context_line":"                expl \u003d _(\u0027Using different block_device_mapping syntaxes \u0027"},{"line_number":868,"context_line":"                         \u0027is not allowed in the same request.\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2F6n4%3D","line":865,"updated":"2013-06-18 10:56:47.000000000","message":"typo block_devuices","commit_id":"7cee24307620051bdc6dcd761497a1c9593b2e6e"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"4b36450031ac552f73caf877a9ac43fc36c37a33","unresolved":false,"context_lines":[{"line_number":862,"context_line":"            block_device_mapping_v2 \u003d server_dict.get("},{"line_number":863,"context_line":"                \u0027block_device_mapping_v2\u0027, [])"},{"line_number":864,"context_line":"            # NOTE (ndipanov):  Disable usage of both legacy and new"},{"line_number":865,"context_line":"            #                   block_devuices in the same request"},{"line_number":866,"context_line":"            if block_device_mapping and block_device_mapping_v2:"},{"line_number":867,"context_line":"                expl \u003d _(\u0027Using different block_device_mapping syntaxes \u0027"},{"line_number":868,"context_line":"                         \u0027is not allowed in the same request.\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2F6ZQ%3D","line":865,"in_reply_to":"AAAAPn%2F%2F6n4%3D","updated":"2013-06-18 13:42:44.000000000","message":"Done","commit_id":"7cee24307620051bdc6dcd761497a1c9593b2e6e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"3b30f6c77d5193c6f2e08cb4bea55ddca957002d","unresolved":false,"context_lines":[{"line_number":872,"context_line":"            # set apropriate flags to pass to create"},{"line_number":873,"context_line":"            legacy_bdm \u003d bool(block_device_mapping)"},{"line_number":874,"context_line":""},{"line_number":875,"context_line":"            # This will also do basic validation of block_devices"},{"line_number":876,"context_line":"            block_device_mapping_v2 \u003d ["},{"line_number":877,"context_line":"                block_device.BlockDeviceDict.from_api(bdm_dict)"},{"line_number":878,"context_line":"                for bdm_dict in block_device_mapping_v2]"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2F6nw%3D","line":875,"updated":"2013-06-18 10:56:47.000000000","message":"why does this need to be populated if the legacy block device type was used?","commit_id":"7cee24307620051bdc6dcd761497a1c9593b2e6e"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"4b36450031ac552f73caf877a9ac43fc36c37a33","unresolved":false,"context_lines":[{"line_number":872,"context_line":"            # set apropriate flags to pass to create"},{"line_number":873,"context_line":"            legacy_bdm \u003d bool(block_device_mapping)"},{"line_number":874,"context_line":""},{"line_number":875,"context_line":"            # This will also do basic validation of block_devices"},{"line_number":876,"context_line":"            block_device_mapping_v2 \u003d ["},{"line_number":877,"context_line":"                block_device.BlockDeviceDict.from_api(bdm_dict)"},{"line_number":878,"context_line":"                for bdm_dict in block_device_mapping_v2]"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2F6ZU%3D","line":875,"in_reply_to":"AAAAPn%2F%2F6nw%3D","updated":"2013-06-18 13:42:44.000000000","message":"It does not - however if both were passed in, it will not pass the check on line 866 and will blow up. if only legacy was passed - this will be an empty list - so a no-op.","commit_id":"7cee24307620051bdc6dcd761497a1c9593b2e6e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2e23ddd967d04f0d1a80d6c2a3816012b23b0a26","unresolved":false,"context_lines":[{"line_number":223,"context_line":"        block_device_mapping_v2 \u003d self._extract_block_device_mapping_v2("},{"line_number":224,"context_line":"            server_node)"},{"line_number":225,"context_line":"        if block_device_mapping_v2 is not None:"},{"line_number":226,"context_line":"            server[\"block_device_mapping_v2\"] \u003d block_device_mapping_v2"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        # NOTE(vish): Support this incorrect version because it was in the code"},{"line_number":229,"context_line":"        #             base for a while and we don\u0027t want to accidentally break"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPn%2F%2FhNM%3D","line":226,"updated":"2013-06-28 16:53:19.000000000","message":"Hrm, is this implying an externally-visible API version change?","commit_id":"0e21a5153b1c0a1a953fd72725ff9b9518b8795f"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ba4495e01af2553ef11b82aedf08a0500c3ea843","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        if block_device_mapping is not None:"},{"line_number":221,"context_line":"            server[\"block_device_mapping\"] \u003d block_device_mapping"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        block_device_mapping_v2 \u003d self._extract_block_device_mapping_v2("},{"line_number":224,"context_line":"            server_node)"},{"line_number":225,"context_line":"        if block_device_mapping_v2 is not None:"},{"line_number":226,"context_line":"            server[\"block_device_mapping_v2\"] \u003d block_device_mapping_v2"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2F528%3D","line":223,"updated":"2013-07-19 14:18:20.000000000","message":"What about v3 API?","commit_id":"5cb96d09a14934d1489a12fcbec67c70284a047a"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"d1f71372fe345d8f4c5a5c86c0672333aa010cdf","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        if block_device_mapping is not None:"},{"line_number":221,"context_line":"            server[\"block_device_mapping\"] \u003d block_device_mapping"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        block_device_mapping_v2 \u003d self._extract_block_device_mapping_v2("},{"line_number":224,"context_line":"            server_node)"},{"line_number":225,"context_line":"        if block_device_mapping_v2 is not None:"},{"line_number":226,"context_line":"            server[\"block_device_mapping_v2\"] \u003d block_device_mapping_v2"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2F5yQ%3D","line":223,"in_reply_to":"AAAAQn%2F%2F528%3D","updated":"2013-07-19 14:34:59.000000000","message":"Well - volumes are not going to be ported to v3 and block_devices are part of the volumes extension here. I was waiting for someone to port block device functionality to v3 servers (it\u0027s not there at all atm). and then add this as well.\n\nAlternatively I can do it - but would REALLY prefer to do it in a separate patch. I also informed cyeoh about this and he was cool with it.\n\nPS: v2 here stands for the v2 version of block devices - not the API v2","commit_id":"5cb96d09a14934d1489a12fcbec67c70284a047a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3d7ac5998ad80144abd6aff6b0f008fb99a6e270","unresolved":false,"context_lines":[{"line_number":944,"context_line":"                            block_device_mapping\u003dblock_device_mapping,"},{"line_number":945,"context_line":"                            auto_disk_config\u003dauto_disk_config,"},{"line_number":946,"context_line":"                            scheduler_hints\u003dscheduler_hints,"},{"line_number":947,"context_line":"                            legacy_bdm\u003dlegacy_bdm)"},{"line_number":948,"context_line":"        except exception.QuotaError as error:"},{"line_number":949,"context_line":"            raise exc.HTTPRequestEntityTooLarge("},{"line_number":950,"context_line":"                explanation\u003derror.format_message(),"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAQn%2F%2F5Xs%3D","line":947,"updated":"2013-07-19 16:53:57.000000000","message":"I\u0027d just like to register my feeling here that if BDM was an object, we wouldn\u0027t need this legacy flag to a method that already has about a hundred too many arguments :)","commit_id":"678a3c2e2961494c751ac86ee016c38bc0822af7"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"fa124ab7d3ae00a1d011cad2e042fa324c86d163","unresolved":false,"context_lines":[{"line_number":944,"context_line":"                            block_device_mapping\u003dblock_device_mapping,"},{"line_number":945,"context_line":"                            auto_disk_config\u003dauto_disk_config,"},{"line_number":946,"context_line":"                            scheduler_hints\u003dscheduler_hints,"},{"line_number":947,"context_line":"                            legacy_bdm\u003dlegacy_bdm)"},{"line_number":948,"context_line":"        except exception.QuotaError as error:"},{"line_number":949,"context_line":"            raise exc.HTTPRequestEntityTooLarge("},{"line_number":950,"context_line":"                explanation\u003derror.format_message(),"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAQn%2F%2F18c%3D","line":947,"in_reply_to":"AAAAQn%2F%2F5Xs%3D","updated":"2013-07-22 09:50:17.000000000","message":"I am strongly contemplating switching to objects once this series lands - only for the sake of not doing two things at once and getting some functionality in first.\n\nWill ping you async about it.","commit_id":"678a3c2e2961494c751ac86ee016c38bc0822af7"},{"author":{"_account_id":7808,"name":"Xavier Queralt","email":"xqueralt@gmail.com","username":"xqueralt"},"change_message_id":"87236be8d8098cd2248bf5ad3ae057566f5974de","unresolved":false,"context_lines":[{"line_number":1191,"context_line":"        \"\"\""},{"line_number":1192,"context_line":"        image_ref \u003d data[\u0027server\u0027].get(\u0027imageRef\u0027)"},{"line_number":1193,"context_line":"        bdm \u003d data[\u0027server\u0027].get(\u0027block_device_mapping\u0027)"},{"line_number":1194,"context_line":""},{"line_number":1195,"context_line":"        if not image_ref and bdm and self.ext_mgr.is_loaded(\u0027os-volumes\u0027):"},{"line_number":1196,"context_line":"            return \u0027\u0027"},{"line_number":1197,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAQn%2F%2Fn%2Bo%3D","line":1194,"updated":"2013-07-26 09:14:56.000000000","message":"I think that here you would like to check if block_device_mapping_v2 is present too to allow booting from a bdm using the new extension without an image.","commit_id":"2a45400106bc3a32935bed4549ab1c0cb21458ed"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"6064c2dcd28edee88889cf18461488b98c3a258a","unresolved":false,"context_lines":[{"line_number":1191,"context_line":"        \"\"\""},{"line_number":1192,"context_line":"        image_ref \u003d data[\u0027server\u0027].get(\u0027imageRef\u0027)"},{"line_number":1193,"context_line":"        bdm \u003d data[\u0027server\u0027].get(\u0027block_device_mapping\u0027)"},{"line_number":1194,"context_line":""},{"line_number":1195,"context_line":"        if not image_ref and bdm and self.ext_mgr.is_loaded(\u0027os-volumes\u0027):"},{"line_number":1196,"context_line":"            return \u0027\u0027"},{"line_number":1197,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAQn%2F%2Fn9k%3D","line":1194,"in_reply_to":"AAAAQn%2F%2Fn%2Bo%3D","updated":"2013-07-26 09:19:59.000000000","message":"Yep nice catch! Will do.","commit_id":"2a45400106bc3a32935bed4549ab1c0cb21458ed"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"8e46ed097d19c0991dab79ce6c6e84dd3e67ddb6","unresolved":false,"context_lines":[{"line_number":885,"context_line":"                    for bdm_dict in block_device_mapping_v2]"},{"line_number":886,"context_line":""},{"line_number":887,"context_line":"        block_device_mapping \u003d (block_device_mapping or"},{"line_number":888,"context_line":"                                block_device_mapping_v2)"},{"line_number":889,"context_line":""},{"line_number":890,"context_line":"        ret_resv_id \u003d False"},{"line_number":891,"context_line":"        # min_count and max_count are optional.  If they exist, they may come"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAQn%2F%2FnD8%3D","line":888,"updated":"2013-07-26 15:44:37.000000000","message":"The order is a bit off here - if you have both v2 and v1, we favour v1 ... but legacy_bdm will still be set to True\n\nThen again, you explicitly disallow for that, so it can\u0027t happen .... still a bit of a head-scratcher and reversing the order would avoid confusion","commit_id":"8c3475706d22da09846fc98b0fc12ca81d2b22e5"}],"nova/block_device.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"3b30f6c77d5193c6f2e08cb4bea55ddca957002d","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    @classmethod"},{"line_number":140,"context_line":"    def from_api(cls, api_dict):"},{"line_number":141,"context_line":"        \"\"\"Transfor the API format of data to the format internaly used"},{"line_number":142,"context_line":"        by Nova. Only validate if the source_type field makes sense."},{"line_number":143,"context_line":"        \"\"\""},{"line_number":144,"context_line":"        if not api_dict.get(\u0027no_device\u0027):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2F6ns%3D","line":141,"updated":"2013-06-18 10:56:47.000000000","message":"internaly \u003d\u003e internally","commit_id":"7cee24307620051bdc6dcd761497a1c9593b2e6e"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"4b36450031ac552f73caf877a9ac43fc36c37a33","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    @classmethod"},{"line_number":140,"context_line":"    def from_api(cls, api_dict):"},{"line_number":141,"context_line":"        \"\"\"Transfor the API format of data to the format internaly used"},{"line_number":142,"context_line":"        by Nova. Only validate if the source_type field makes sense."},{"line_number":143,"context_line":"        \"\"\""},{"line_number":144,"context_line":"        if not api_dict.get(\u0027no_device\u0027):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2F6ZM%3D","line":141,"in_reply_to":"AAAAPn%2F%2F6ns%3D","updated":"2013-06-18 13:42:44.000000000","message":"Done","commit_id":"7cee24307620051bdc6dcd761497a1c9593b2e6e"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"dca3b89c3523a6063d88f833ae0e380b01124a99","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                     \u0027guest_format\u0027, \u0027device_type\u0027, \u0027disk_bus\u0027, \u0027boot_index\u0027,"},{"line_number":45,"context_line":"                     \u0027device_name\u0027, \u0027delete_on_termination\u0027, \u0027snapshot_id\u0027,"},{"line_number":46,"context_line":"                     \u0027volume_id\u0027, \u0027volume_size\u0027, \u0027image_id\u0027, \u0027no_device\u0027,"},{"line_number":47,"context_line":"                     \u0027connection_info\u0027])"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"bdm_db_only_fields \u003d set([\u0027id\u0027, \u0027instance_uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAP3%2F%2FrpI%3D","line":47,"updated":"2013-07-13 07:16:40.000000000","message":"connection_info and no_device feel like they shouldn\u0027t be exposed in the API? Am I missing something?","commit_id":"420faed74fecb9ede11354f70b95fcb914a2a588"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"e573711de37d029f07b59e4f23ee2151ccec1e81","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                     \u0027guest_format\u0027, \u0027device_type\u0027, \u0027disk_bus\u0027, \u0027boot_index\u0027,"},{"line_number":45,"context_line":"                     \u0027device_name\u0027, \u0027delete_on_termination\u0027, \u0027snapshot_id\u0027,"},{"line_number":46,"context_line":"                     \u0027volume_id\u0027, \u0027volume_size\u0027, \u0027image_id\u0027, \u0027no_device\u0027,"},{"line_number":47,"context_line":"                     \u0027connection_info\u0027])"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"bdm_db_only_fields \u003d set([\u0027id\u0027, \u0027instance_uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAP3%2F%2FokQ%3D","line":47,"in_reply_to":"AAAAP3%2F%2FrpI%3D","updated":"2013-07-15 18:16:40.000000000","message":"You are correct regarding connection_info - I will remove it from the allowed fields. See below for no_device.","commit_id":"420faed74fecb9ede11354f70b95fcb914a2a588"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"dca3b89c3523a6063d88f833ae0e380b01124a99","unresolved":false,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        Only validate if the source_type field makes sense."},{"line_number":144,"context_line":"        \"\"\""},{"line_number":145,"context_line":"        if not api_dict.get(\u0027no_device\u0027):"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"            source_type \u003d api_dict.get(\u0027source_type\u0027)"},{"line_number":148,"context_line":"            device_uuid \u003d api_dict.get(\u0027uuid\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAP3%2F%2Frpo%3D","line":145,"updated":"2013-07-13 07:16:40.000000000","message":"This exposes no_device semantics to users of the API extension, right? What\u0027s the use case for that","commit_id":"420faed74fecb9ede11354f70b95fcb914a2a588"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"e573711de37d029f07b59e4f23ee2151ccec1e81","unresolved":false,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        Only validate if the source_type field makes sense."},{"line_number":144,"context_line":"        \"\"\""},{"line_number":145,"context_line":"        if not api_dict.get(\u0027no_device\u0027):"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"            source_type \u003d api_dict.get(\u0027source_type\u0027)"},{"line_number":148,"context_line":"            device_uuid \u003d api_dict.get(\u0027uuid\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAP3%2F%2Folg%3D","line":145,"in_reply_to":"AAAAP3%2F%2Frpo%3D","updated":"2013-07-15 18:16:40.000000000","message":"No device was supposed to be a way for a user to override the block_device_mapping supplied by the image. I wanted to keep this functionality.\n\nPython nova client will not allow for this functionality (I was going to add it), but the API will. Seems not a very used option thought since no one missed it from novaclient for a very long time.","commit_id":"420faed74fecb9ede11354f70b95fcb914a2a588"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"dca3b89c3523a6063d88f833ae0e380b01124a99","unresolved":false,"context_lines":[{"line_number":148,"context_line":"            device_uuid \u003d api_dict.get(\u0027uuid\u0027)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"            if source_type not in (\u0027volume\u0027, \u0027image\u0027, \u0027snapshot\u0027, \u0027blank\u0027):"},{"line_number":151,"context_line":"                raise exception.InvalidBDMFormat()"},{"line_number":152,"context_line":"            elif source_type !\u003d \u0027blank\u0027:"},{"line_number":153,"context_line":"                if not device_uuid:"},{"line_number":154,"context_line":"                    raise exception.InvalidBDMFormat()"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAP3%2F%2Frpk%3D","line":151,"updated":"2013-07-13 07:16:40.000000000","message":"Better exceptions coming in the next patch I see, ok","commit_id":"420faed74fecb9ede11354f70b95fcb914a2a588"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"e573711de37d029f07b59e4f23ee2151ccec1e81","unresolved":false,"context_lines":[{"line_number":148,"context_line":"            device_uuid \u003d api_dict.get(\u0027uuid\u0027)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"            if source_type not in (\u0027volume\u0027, \u0027image\u0027, \u0027snapshot\u0027, \u0027blank\u0027):"},{"line_number":151,"context_line":"                raise exception.InvalidBDMFormat()"},{"line_number":152,"context_line":"            elif source_type !\u003d \u0027blank\u0027:"},{"line_number":153,"context_line":"                if not device_uuid:"},{"line_number":154,"context_line":"                    raise exception.InvalidBDMFormat()"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAP3%2F%2FomM%3D","line":151,"in_reply_to":"AAAAP3%2F%2Frpk%3D","updated":"2013-07-15 18:16:40.000000000","message":"yes :)","commit_id":"420faed74fecb9ede11354f70b95fcb914a2a588"}],"nova/tests/api/openstack/compute/contrib/test_volumes.py":[{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"dca3b89c3523a6063d88f833ae0e380b01124a99","unresolved":false,"context_lines":[{"line_number":108,"context_line":"            self._block_device_mapping_seen \u003d kwargs.get("},{"line_number":109,"context_line":"                \u0027block_device_mapping\u0027)"},{"line_number":110,"context_line":"            self._block_device_mapping_v2_seen \u003d kwargs.get("},{"line_number":111,"context_line":"                \u0027block_device_mapping\u0027)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"            inst_type \u003d flavors.get_flavor_by_flavor_id(2)"},{"line_number":114,"context_line":"            resv_id \u003d None"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAP3%2F%2FrpY%3D","line":111,"updated":"2013-07-13 07:16:40.000000000","message":"I guess this really needs to check for legacy_bdm\u003dFalse before setting v2_seen?","commit_id":"420faed74fecb9ede11354f70b95fcb914a2a588"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"e573711de37d029f07b59e4f23ee2151ccec1e81","unresolved":false,"context_lines":[{"line_number":108,"context_line":"            self._block_device_mapping_seen \u003d kwargs.get("},{"line_number":109,"context_line":"                \u0027block_device_mapping\u0027)"},{"line_number":110,"context_line":"            self._block_device_mapping_v2_seen \u003d kwargs.get("},{"line_number":111,"context_line":"                \u0027block_device_mapping\u0027)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"            inst_type \u003d flavors.get_flavor_by_flavor_id(2)"},{"line_number":114,"context_line":"            resv_id \u003d None"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAP3%2F%2FoQQ%3D","line":111,"in_reply_to":"AAAAP3%2F%2FrpY%3D","updated":"2013-07-15 18:16:40.000000000","message":"Correct - thanks!","commit_id":"420faed74fecb9ede11354f70b95fcb914a2a588"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"dca3b89c3523a6063d88f833ae0e380b01124a99","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        body \u003d dict(server\u003ddict("},{"line_number":159,"context_line":"                name\u003d\u0027test_server\u0027, imageRef\u003dIMAGE_UUID,"},{"line_number":160,"context_line":"                flavorRef\u003d2, min_count\u003d1, max_count\u003d1,"},{"line_number":161,"context_line":"                block_device_mapping\u003d[dict("},{"line_number":162,"context_line":"                        source_type\u003d\u0027volume\u0027,"},{"line_number":163,"context_line":"                        volume_id\u003d1,"},{"line_number":164,"context_line":"                        device_name\u003d\u0027/dev/vda\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAP3%2F%2Frpc%3D","line":161,"updated":"2013-07-13 07:16:40.000000000","message":"Maybe I\u0027m missing something, but shouldn\u0027t that be block_device_mapping_v2\n\nIf so, why is the test passing?","commit_id":"420faed74fecb9ede11354f70b95fcb914a2a588"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"e573711de37d029f07b59e4f23ee2151ccec1e81","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        body \u003d dict(server\u003ddict("},{"line_number":159,"context_line":"                name\u003d\u0027test_server\u0027, imageRef\u003dIMAGE_UUID,"},{"line_number":160,"context_line":"                flavorRef\u003d2, min_count\u003d1, max_count\u003d1,"},{"line_number":161,"context_line":"                block_device_mapping\u003d[dict("},{"line_number":162,"context_line":"                        source_type\u003d\u0027volume\u0027,"},{"line_number":163,"context_line":"                        volume_id\u003d1,"},{"line_number":164,"context_line":"                        device_name\u003d\u0027/dev/vda\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAP3%2F%2FoQs%3D","line":161,"in_reply_to":"AAAAP3%2F%2Frpc%3D","updated":"2013-07-15 18:16:40.000000000","message":"Because block_device_mapping_v2_seen is totally bogus and is the same as v1 - will fix this - nice catch!","commit_id":"420faed74fecb9ede11354f70b95fcb914a2a588"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3d7ac5998ad80144abd6aff6b0f008fb99a6e270","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                       self._get_fake_compute_api_create())"},{"line_number":97,"context_line":"        fakes.stub_out_nw_api(self.stubs)"},{"line_number":98,"context_line":"        self._block_device_mapping_seen \u003d None"},{"line_number":99,"context_line":"        self._legac_bdm_seen \u003d True"},{"line_number":100,"context_line":"        self.flags("},{"line_number":101,"context_line":"            osapi_compute_extension\u003d["},{"line_number":102,"context_line":"                \u0027nova.api.openstack.compute.contrib.select_extensions\u0027],"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAQn%2F%2F5T4%3D","line":99,"updated":"2013-07-19 16:53:57.000000000","message":"typo in \"legacy\"","commit_id":"678a3c2e2961494c751ac86ee016c38bc0822af7"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"fa124ab7d3ae00a1d011cad2e042fa324c86d163","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                       self._get_fake_compute_api_create())"},{"line_number":97,"context_line":"        fakes.stub_out_nw_api(self.stubs)"},{"line_number":98,"context_line":"        self._block_device_mapping_seen \u003d None"},{"line_number":99,"context_line":"        self._legac_bdm_seen \u003d True"},{"line_number":100,"context_line":"        self.flags("},{"line_number":101,"context_line":"            osapi_compute_extension\u003d["},{"line_number":102,"context_line":"                \u0027nova.api.openstack.compute.contrib.select_extensions\u0027],"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAQn%2F%2F17Q%3D","line":99,"in_reply_to":"AAAAQn%2F%2F5T4%3D","updated":"2013-07-22 09:50:17.000000000","message":"Done","commit_id":"678a3c2e2961494c751ac86ee016c38bc0822af7"}]}
