)]}'
{"nova/availability_zones.py":[{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"827a33b7e6d6b04c15d0d079421e7a76ede3ad0e","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"def get_only_available_zones(context):"},{"line_number":98,"context_line":"    \"\"\"Return only available zones.\"\"\""},{"line_number":99,"context_line":"    enabled_services \u003d db.service_get_all(context, False)"},{"line_number":100,"context_line":"    enabled_services \u003d set_availability_zones(context, enabled_services)"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAP3%2F%2Fncc%3D","line":98,"updated":"2013-07-15 19:56:59.000000000","message":"Why not combine this with the function below, and add a parameter get_only_enabled\u003dFalse?","commit_id":"fc1ff8e7abd4e6c4a392a888e0fde0c39ee2aa47"}],"nova/compute/api.py":[{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"087c2c979547b173239058a9e00dd34b76d2c57c","unresolved":false,"context_lines":[{"line_number":1054,"context_line":"        az, forced_host, forced_node \u003d self._handle_availability_zone\\"},{"line_number":1055,"context_line":"            (availability_zone)"},{"line_number":1056,"context_line":"        if az and forced_host is None and az not in available_zones:"},{"line_number":1057,"context_line":"            msg \u003d _(\u0027The input zone is not available\u0027)"},{"line_number":1058,"context_line":"            raise exception.InvalidRequest(msg)"},{"line_number":1059,"context_line":""},{"line_number":1060,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2F3Q8%3D","line":1057,"updated":"2013-06-19 15:10:44.000000000","message":"I don\u0027t think a user would understand the term \"input zone\".\n\n\"The requested availability zone is not available\" would be better","commit_id":"55532bb2fa0a408d0d55f5951195bd72e66c2619"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"b032dc6554dd1446a313162359497f594c8d709f","unresolved":false,"context_lines":[{"line_number":1059,"context_line":""},{"line_number":1060,"context_line":"        ctxt \u003d context.elevated()"},{"line_number":1061,"context_line":"        available_zones, not_available_zones \u003d \\"},{"line_number":1062,"context_line":"            availability_zones.get_availability_zones(ctxt)"},{"line_number":1063,"context_line":"        az, forced_host, forced_node \u003d \\"},{"line_number":1064,"context_line":"            self._handle_availability_zone(availability_zone)"},{"line_number":1065,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FgdY%3D","line":1062,"updated":"2013-06-28 21:23:28.000000000","message":"I don\u0027t think this command should require an elevated context, if it does it should be considered a bug.\n\nAlso this command hits the DB, and we should only attempt it if availability_zone is not None.","commit_id":"a814c4bc7702673947f3f85eb69d2e784277a856"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"5a3ddf6e1fbc6ade982482f06be0c33b0e00fb9d","unresolved":false,"context_lines":[{"line_number":1062,"context_line":"                availability_zones.get_availability_zones(ctxt)"},{"line_number":1063,"context_line":"            if forced_host is None and az not in available_zones:"},{"line_number":1064,"context_line":"                msg \u003d _(\u0027The requested availability zone is not available!\u0027)"},{"line_number":1065,"context_line":"                raise exception.InvalidRequest(msg)"},{"line_number":1066,"context_line":""},{"line_number":1067,"context_line":"        self._check_create_policies(context, availability_zone,"},{"line_number":1068,"context_line":"                requested_networks, block_device_mapping)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPn%2F%2FSRk%3D","line":1065,"updated":"2013-07-05 06:25:23.000000000","message":"If a cloud deployer does not want to schedule based on AZs this line breaks that option (if a user passes in a a bogus AZ).","commit_id":"23ebf89b8bbb43d8de34dbeca50695a1697b6b0b"},{"author":{"_account_id":4468,"name":"Wangpan","email":"hzwangpan@corp.netease.com","username":"hzwangpan"},"change_message_id":"6b95cf264599ed8bf465595eaf15cbd30128c6c2","unresolved":false,"context_lines":[{"line_number":766,"context_line":"            available_zones, not_available_zones \u003d \\"},{"line_number":767,"context_line":"                availability_zones.get_availability_zones(ctxt)"},{"line_number":768,"context_line":""},{"line_number":769,"context_line":"            if availability_zone and forced_host is None and availability_zone\\"},{"line_number":770,"context_line":"                    not in available_zones:"},{"line_number":771,"context_line":"                msg \u003d _(\u0027The requested availability zone is not available!\u0027)"},{"line_number":772,"context_line":"                raise exception.InvalidRequest(msg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAP3%2F%2F3Tg%3D","line":769,"updated":"2013-07-10 06:37:37.000000000","message":"availability_zone is checked at the above \u0027if\u0027, why checking it again here?","commit_id":"acdbd7d939dc9eddbda01e421a9cf5c2e8b1f003"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"a54fbc2ca371335535c73f724a5f5a553a0d6c75","unresolved":false,"context_lines":[{"line_number":762,"context_line":"        availability_zone, forced_host, forced_node \u003d handle_az("},{"line_number":763,"context_line":"                                                            availability_zone)"},{"line_number":764,"context_line":"        if availability_zone:"},{"line_number":765,"context_line":"            ctxt \u003d context.elevated()"},{"line_number":766,"context_line":"            available_zones, not_available_zones \u003d \\"},{"line_number":767,"context_line":"                availability_zones.get_availability_zones(ctxt)"},{"line_number":768,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAP3%2F%2FzSw%3D","line":765,"updated":"2013-07-11 07:37:14.000000000","message":"minor nit: I would prefer to call this elevated or something to make sure, this is an elevated context. Although other places in this file just do \u0027context \u003d context.elevated()\u0027","commit_id":"40b5ee3669107682c11297258b4e56553cf74466"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"a54fbc2ca371335535c73f724a5f5a553a0d6c75","unresolved":false,"context_lines":[{"line_number":764,"context_line":"        if availability_zone:"},{"line_number":765,"context_line":"            ctxt \u003d context.elevated()"},{"line_number":766,"context_line":"            available_zones, not_available_zones \u003d \\"},{"line_number":767,"context_line":"                availability_zones.get_availability_zones(ctxt)"},{"line_number":768,"context_line":""},{"line_number":769,"context_line":"            if forced_host is None and availability_zone not in \\"},{"line_number":770,"context_line":"                    available_zones:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAP3%2F%2FzSs%3D","line":767,"updated":"2013-07-11 07:37:14.000000000","message":"This function will do 2 DB calls, but one for available and one for not available.  If we are going to get both sets perhaps we should have two different error msgs?  Or add an option to just get the available AZs.\n\nThat way we don\u0027t fetch unused data from the DB","commit_id":"40b5ee3669107682c11297258b4e56553cf74466"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"a54fbc2ca371335535c73f724a5f5a553a0d6c75","unresolved":false,"context_lines":[{"line_number":771,"context_line":"                msg \u003d _(\u0027The requested availability zone is not available!\u0027)"},{"line_number":772,"context_line":"                raise exception.InvalidRequest(msg)"},{"line_number":773,"context_line":""},{"line_number":774,"context_line":"        base_options \u003d self._validate_and_build_base_options(context,"},{"line_number":775,"context_line":"                instance_type, boot_meta, image_href, image_id, kernel_id,"},{"line_number":776,"context_line":"                ramdisk_id, min_count, max_count, display_name,"},{"line_number":777,"context_line":"                display_description, key_name, key_data, security_groups,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAP3%2F%2FzUM%3D","line":774,"updated":"2013-07-11 07:37:14.000000000","message":"The logic above should be moved into here, where other validation is done","commit_id":"40b5ee3669107682c11297258b4e56553cf74466"}]}
