)]}'
{"nova/api/openstack/compute/servers.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"5b081f6bdcbfa9850d640957c9962fa19018930b","unresolved":false,"context_lines":[{"line_number":847,"context_line":"                try:"},{"line_number":848,"context_line":"                    block_device.validate_device_name(bdm[\"device_name\"])"},{"line_number":849,"context_line":"                except exception.InvalidBDMFormat:"},{"line_number":850,"context_line":"                    expl \u003d _(\"Invalid device name found in the \""},{"line_number":851,"context_line":"                            \"block device mapping.\")"},{"line_number":852,"context_line":"                    raise exc.HTTPBadRequest(explanation\u003dexpl)"},{"line_number":853,"context_line":"                if \u0027delete_on_termination\u0027 in bdm:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPn%2F%2F%2B%2F8%3D","line":850,"updated":"2013-06-15 12:42:52.000000000","message":"can we provide more details here? Telling the user the data is invalid, but not pointing at what is invalid makes for frustrated users.","commit_id":"a71700062ec1cec810a307db860070dad6505745"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"fe0f88242e3a47a676766aa415c5f739bef3e184","unresolved":false,"context_lines":[{"line_number":847,"context_line":"                try:"},{"line_number":848,"context_line":"                    block_device.validate_device_name(bdm[\"device_name\"])"},{"line_number":849,"context_line":"                except exception.InvalidBDMFormat:"},{"line_number":850,"context_line":"                    expl \u003d _(\"Invalid device name found in the \""},{"line_number":851,"context_line":"                            \"block device mapping.\")"},{"line_number":852,"context_line":"                    raise exc.HTTPBadRequest(explanation\u003dexpl)"},{"line_number":853,"context_line":"                if \u0027delete_on_termination\u0027 in bdm:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPn%2F%2F6uY%3D","line":850,"in_reply_to":"AAAAPn%2F%2F%2B%2F8%3D","updated":"2013-06-18 10:02:31.000000000","message":"Thanks for taking a look - totally agreed.\n\nI made the called code throw more informative exceptions and I reused them in the next patch.","commit_id":"a71700062ec1cec810a307db860070dad6505745"}],"nova/block_device.py":[{"author":{"_account_id":360,"name":"Dan Prince","email":"dprince@redhat.com","username":"dan-prince"},"change_message_id":"d6baf6c06a8d47ac788a807c0da8a7d162f9ca5b","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        else:"},{"line_number":166,"context_line":"            raise exception.InvalidBDMFormat("},{"line_number":167,"context_line":"                details\u003d\"Urecognized legacy format.\")"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        return cls(new_bdm, non_computable_fields)"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPn%2F%2FklE%3D","line":167,"updated":"2013-06-27 15:36:57.000000000","message":"spelling fix: Unrecognized.","commit_id":"5ef6c26f64f705b7be56c29c467d848222c4743e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"20b46cbdd65aa43658e7362a77e8521e1952fd6c","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        if bdm_dict.get(\u0027boot_index\u0027):"},{"line_number":119,"context_line":"            try:"},{"line_number":120,"context_line":"                bdm_dict[\u0027boot_index\u0027] \u003d int(bdm_dict[\u0027boot_index\u0027])"},{"line_number":121,"context_line":"            except ValueError:"},{"line_number":122,"context_line":"                raise exception.InvalidBDMFormat("},{"line_number":123,"context_line":"                    details\u003d\"Boot index is invalid.\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAP3%2F%2F1iQ%3D","line":120,"updated":"2013-07-10 16:32:49.000000000","message":"Oh, one other thing. do you need to validate that this is \u003e\u003d -1 or something? It seems like you\u0027re using -1 as a special \"earliest possible\" boot index. Is there a problem if someone provides an index of -10?","commit_id":"8c3e2b2a1c833dc9fcb452dd552ff854a8c53dee"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"35b997d1b7be56635f67c670508d494d213e0805","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        if bdm_dict.get(\u0027boot_index\u0027):"},{"line_number":119,"context_line":"            try:"},{"line_number":120,"context_line":"                bdm_dict[\u0027boot_index\u0027] \u003d int(bdm_dict[\u0027boot_index\u0027])"},{"line_number":121,"context_line":"            except ValueError:"},{"line_number":122,"context_line":"                raise exception.InvalidBDMFormat("},{"line_number":123,"context_line":"                    details\u003d\"Boot index is invalid.\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAP3%2F%2F1eE%3D","line":120,"in_reply_to":"AAAAP3%2F%2F1iQ%3D","updated":"2013-07-10 16:54:31.000000000","message":"If you look at the following patch in _validate_bdm - 0 and upwards are boot orders, and -1 means never boot from it. -10 will be fine too as it will mean the same thing.","commit_id":"8c3e2b2a1c833dc9fcb452dd552ff854a8c53dee"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"13e47a23cc3421679dfd9c439fb2397ce1cbbd88","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        else:"},{"line_number":166,"context_line":"            raise exception.InvalidBDMFormat("},{"line_number":167,"context_line":"                details\u003d\"Urecognized legacy format.\")"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        return cls(new_bdm, non_computable_fields)"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAP3%2F%2F1j8%3D","line":167,"updated":"2013-07-10 16:29:49.000000000","message":"\"Unrecognized\" is misspelled.","commit_id":"8c3e2b2a1c833dc9fcb452dd552ff854a8c53dee"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"8c6b072c5b23fe36c398de80e72ef0449f0b40a6","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                details\u003d\"Some fields are invalid.\")"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        if bdm_dict.get(\u0027no_device\u0027):"},{"line_number":102,"context_line":"            return"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        # Check that all required fields are there"},{"line_number":105,"context_line":"        if (self._required_fields and"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAP3%2F%2Fros%3D","line":102,"updated":"2013-07-13 07:27:45.000000000","message":"Again, not convinced yet that this should be in the public API","commit_id":"194834a5fccfb04a66400e348f688fbd9152972d"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"92b2afedc8bf6f91fa11742a642c3d9cab29499c","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                details\u003d\"Some fields are invalid.\")"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        if bdm_dict.get(\u0027no_device\u0027):"},{"line_number":102,"context_line":"            return"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        # Check that all required fields are there"},{"line_number":105,"context_line":"        if (self._required_fields and"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAP3%2F%2FoLg%3D","line":102,"in_reply_to":"AAAAP3%2F%2Fros%3D","updated":"2013-07-15 18:16:57.000000000","message":"See comment on the first patch please.","commit_id":"194834a5fccfb04a66400e348f688fbd9152972d"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"8c6b072c5b23fe36c398de80e72ef0449f0b40a6","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            elif source_type !\u003d \u0027blank\u0027:"},{"line_number":186,"context_line":"                if not device_uuid:"},{"line_number":187,"context_line":"                    raise exception.InvalidBDMFormat("},{"line_number":188,"context_line":"                        \"Missing device uuid.\")"},{"line_number":189,"context_line":"                api_dict[source_type + \u0027_id\u0027] \u003d device_uuid"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        api_dict.pop(\u0027uuid\u0027, None)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAP3%2F%2Frog%3D","line":188,"updated":"2013-07-13 07:27:45.000000000","message":"Heh, I think the missing details\u003d here means the message ends up being just \u0027missing device uuid\" without the \"Block Device Mapping is Invalid\" bit\n\nAlso s/uuid/UUID/","commit_id":"194834a5fccfb04a66400e348f688fbd9152972d"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"92b2afedc8bf6f91fa11742a642c3d9cab29499c","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            elif source_type !\u003d \u0027blank\u0027:"},{"line_number":186,"context_line":"                if not device_uuid:"},{"line_number":187,"context_line":"                    raise exception.InvalidBDMFormat("},{"line_number":188,"context_line":"                        \"Missing device uuid.\")"},{"line_number":189,"context_line":"                api_dict[source_type + \u0027_id\u0027] \u003d device_uuid"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        api_dict.pop(\u0027uuid\u0027, None)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAP3%2F%2FosU%3D","line":188,"in_reply_to":"AAAAP3%2F%2Frog%3D","updated":"2013-07-15 18:16:57.000000000","message":"Correct - will do!","commit_id":"194834a5fccfb04a66400e348f688fbd9152972d"},{"author":{"_account_id":6593,"name":"Dirk Mueller","email":"dirk@dmllr.de","username":"dmllr"},"change_message_id":"e557b042fcad3187550c8ede2b06cf82777b8242","unresolved":false,"context_lines":[{"line_number":310,"context_line":""},{"line_number":311,"context_line":"def validate_and_default_volume_size(bdm):"},{"line_number":312,"context_line":"    if bdm.get(\u0027volume_size\u0027):"},{"line_number":313,"context_line":"        try:"},{"line_number":314,"context_line":"            bdm[\u0027volume_size\u0027] \u003d utils.validate_integer_string("},{"line_number":315,"context_line":"                bdm[\u0027volume_size\u0027], \u0027volume_size\u0027)"},{"line_number":316,"context_line":"        except exception.InvalidInput as e:"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAQn%2F%2F4Zc%3D","line":313,"updated":"2013-07-19 21:20:57.000000000","message":"The old code accepted \"empty\" volume_size to be compatible with old novaclients and rejected also negative volume_sizes. This seems to be lost here.","commit_id":"f386abfe639c5bacde8e6505366288d893cce65c"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"84cd543e3454decd45362c0c8b8b4996ea264ecb","unresolved":false,"context_lines":[{"line_number":310,"context_line":""},{"line_number":311,"context_line":"def validate_and_default_volume_size(bdm):"},{"line_number":312,"context_line":"    if bdm.get(\u0027volume_size\u0027):"},{"line_number":313,"context_line":"        try:"},{"line_number":314,"context_line":"            bdm[\u0027volume_size\u0027] \u003d utils.validate_integer_string("},{"line_number":315,"context_line":"                bdm[\u0027volume_size\u0027], \u0027volume_size\u0027)"},{"line_number":316,"context_line":"        except exception.InvalidInput as e:"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAQn%2F%2F2IU%3D","line":313,"in_reply_to":"AAAAQn%2F%2F4Zc%3D","updated":"2013-07-22 08:28:18.000000000","message":"This will accept empty as well - see line 312 - however good catch on the negative values - I will update.","commit_id":"f386abfe639c5bacde8e6505366288d893cce65c"}]}
