)]}'
{"nova/api/openstack/compute/schemas/scheduler_hints.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"e5f435a89a07c6b98df1bf805f48f0b5fc5402c0","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            \u0027pattern\u0027: \u0027^\\/[0-9a-f.:]+$\u0027"},{"line_number":53,"context_line":"        },"},{"line_number":54,"context_line":"    },"},{"line_number":55,"context_line":"    \u0027additionalProperties\u0027: True  # allow out of tree extensions"},{"line_number":56,"context_line":"}"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_e5622fd8","line":55,"updated":"2015-08-27 14:27:05.000000000","message":"Emm....This changed the v2.1 API also, we should only change for v2.1 compatible mode.","commit_id":"a7f8f8b3742e459adee3e08b9c9d8fadf8d6adb6"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"93aada38ce165442c3fcdc01063ffc50878667df","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            \u0027pattern\u0027: \u0027^\\/[0-9a-f.:]+$\u0027"},{"line_number":53,"context_line":"        },"},{"line_number":54,"context_line":"    },"},{"line_number":55,"context_line":"    \u0027additionalProperties\u0027: True  # allow out of tree extensions"},{"line_number":56,"context_line":"}"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_1f28a2e1","line":55,"in_reply_to":"da20952f_e5622fd8","updated":"2015-08-28 10:15:32.000000000","message":"That was actually intentional, but maybe that was a bad move...","commit_id":"a7f8f8b3742e459adee3e08b9c9d8fadf8d6adb6"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"51a7e35c2a16df225c6c45a2afa7ab41de8fa921","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            \u0027pattern\u0027: \u0027^\\/[0-9a-f.:]+$\u0027"},{"line_number":53,"context_line":"        },"},{"line_number":54,"context_line":"    },"},{"line_number":55,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":56,"context_line":"}"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_a11859d4","line":55,"updated":"2015-09-04 00:28:52.000000000","message":"To be honest, I prefer this way than the previous revision which changes base part. but here is different from the other schemas.\nSo I think here should contain some NOTE for explaining this reason.","commit_id":"6b30233b126a82bf87802e581e8507f880867383"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"698af023062d633a769234b52471ad59bc6fafe7","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            \u0027pattern\u0027: \u0027^\\/[0-9a-f.:]+$\u0027"},{"line_number":53,"context_line":"        },"},{"line_number":54,"context_line":"    },"},{"line_number":55,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":56,"context_line":"}"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_1ce64c15","line":55,"in_reply_to":"da20952f_a11859d4","updated":"2015-09-04 00:58:10.000000000","message":"This allow that for v2.1 also. Lets see if any trick in validators.py can skip this schema for extra param","commit_id":"6b30233b126a82bf87802e581e8507f880867383"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"3fc115a312551cf41e53d5baa006002880347fc2","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            \u0027pattern\u0027: \u0027^\\/[0-9a-f.:]+$\u0027"},{"line_number":53,"context_line":"        },"},{"line_number":54,"context_line":"    },"},{"line_number":55,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":56,"context_line":"}"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_fa2ef78a","line":55,"updated":"2015-09-04 03:19:52.000000000","message":"Please write the NOTE like\n\n # NOTE: As this Mail:\n http://lists.openstack.org/pipermail/openstack-dev/2015-June/067996.html\n pointed out the limit the scheduler-hints in the API is problematic. This\n patch relax the validation of scheduler hints for v2.1 also.","commit_id":"463fc5d70d4f29171ae321e65894fe59238fc384"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"8d2436ebd876a516fb9687c88cd2c4a35f064a12","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            \u0027pattern\u0027: \u0027^\\/[0-9a-f.:]+$\u0027"},{"line_number":53,"context_line":"        },"},{"line_number":54,"context_line":"    },"},{"line_number":55,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":56,"context_line":"}"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_5aa283fd","line":55,"in_reply_to":"da20952f_fa2ef78a","updated":"2015-09-04 03:22:37.000000000","message":"Done","commit_id":"463fc5d70d4f29171ae321e65894fe59238fc384"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"cf25123b5d96defc0f9598af999c399c91900d53","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    # http://lists.openstack.org/pipermail/openstack-dev/2015-June/067996.html"},{"line_number":57,"context_line":"    # pointed out the limit the scheduler-hints in the API is problematic. So"},{"line_number":58,"context_line":"    # relax it."},{"line_number":59,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":60,"context_line":"}"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_71a66010","line":59,"updated":"2015-09-05 10:25:25.000000000","message":"This change breaks our microversions contract because thus change affects v2.1 also without version bump.\nI think we need more discussions at this time.","commit_id":"088b850ad52ab03da91f33ebf69f901082bd913f"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"cd6b17a9481e8b4f06be2a84e8bc26975f1e56f2","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    # http://lists.openstack.org/pipermail/openstack-dev/2015-June/067996.html"},{"line_number":57,"context_line":"    # pointed out the limit the scheduler-hints in the API is problematic. So"},{"line_number":58,"context_line":"    # relax it."},{"line_number":59,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":60,"context_line":"}"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_772dd5fc","line":59,"in_reply_to":"da20952f_17cfb956","updated":"2015-09-07 09:10:33.000000000","message":"We really only want this relax for the v2.1 compat mode.","commit_id":"088b850ad52ab03da91f33ebf69f901082bd913f"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"fded0353076928aca8ae9dd43d4528c55ed6ee50","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    # http://lists.openstack.org/pipermail/openstack-dev/2015-June/067996.html"},{"line_number":57,"context_line":"    # pointed out the limit the scheduler-hints in the API is problematic. So"},{"line_number":58,"context_line":"    # relax it."},{"line_number":59,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":60,"context_line":"}"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_f3e494e0","line":59,"in_reply_to":"da20952f_5030d655","updated":"2015-09-07 11:34:01.000000000","message":"Yeah, my concern was the same as Alex.\nBut John said that is acceptable as v2.1 API.\n\nhttps://review.openstack.org/#/c/220440/ provides clean way for implementing out-of-tree filters.\n\nI guess operators need time for migrating v2.0 compatible to v2.1.\nSo as a first step, we need to separate v2.0 api schema from v2.1 for this api. and v2.0 api schema\u0027s additionalProperties is True like this. At the same time, we will provide the above clean way and operators  can switch to v2.1 after implementing the way which returns customized API parameters in their own schedulers.","commit_id":"088b850ad52ab03da91f33ebf69f901082bd913f"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"57c858dc215cea449c7267b3ed48245992c01284","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    # http://lists.openstack.org/pipermail/openstack-dev/2015-June/067996.html"},{"line_number":57,"context_line":"    # pointed out the limit the scheduler-hints in the API is problematic. So"},{"line_number":58,"context_line":"    # relax it."},{"line_number":59,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":60,"context_line":"}"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_17cfb956","line":59,"in_reply_to":"da20952f_71a66010","updated":"2015-09-07 09:09:49.000000000","message":"Hmm, thats true...","commit_id":"088b850ad52ab03da91f33ebf69f901082bd913f"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e0ee96862af54e8649c2b888aa032c2d7c5d2011","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    # http://lists.openstack.org/pipermail/openstack-dev/2015-June/067996.html"},{"line_number":57,"context_line":"    # pointed out the limit the scheduler-hints in the API is problematic. So"},{"line_number":58,"context_line":"    # relax it."},{"line_number":59,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":60,"context_line":"}"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_921d1775","line":59,"in_reply_to":"da20952f_772dd5fc","updated":"2015-09-07 09:50:35.000000000","message":"Yeah, right.\nAnd as gmann said on http://lists.openstack.org/pipermail/openstack-dev/2015-September/073766.html , it seems too rash to fix this kind of problem without enough considering.\n\nHow about separate v2 compatible API schemas from v2.1 for some APIs if we need to fix this problem?\nI guess it is not difficult to do that.","commit_id":"088b850ad52ab03da91f33ebf69f901082bd913f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e57495d167f3eb7908d3e3070920cef7caf66d0e","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    # http://lists.openstack.org/pipermail/openstack-dev/2015-June/067996.html"},{"line_number":57,"context_line":"    # pointed out the limit the scheduler-hints in the API is problematic. So"},{"line_number":58,"context_line":"    # relax it."},{"line_number":59,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":60,"context_line":"}"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_ed227251","line":59,"in_reply_to":"da20952f_921d1775","updated":"2015-09-07 10:01:32.000000000","message":"Yea, I also agree to have separate schema for cases which needs to be fixed only for v2.1 comp mode. Else we need to keep putting hacking on validators.py which results to be bad code with too much hacking trick.","commit_id":"088b850ad52ab03da91f33ebf69f901082bd913f"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"23b7b8623a8c9301055406878e323ecde3b07e6f","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    # http://lists.openstack.org/pipermail/openstack-dev/2015-June/067996.html"},{"line_number":57,"context_line":"    # pointed out the limit the scheduler-hints in the API is problematic. So"},{"line_number":58,"context_line":"    # relax it."},{"line_number":59,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":60,"context_line":"}"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_aaa209fa","line":59,"in_reply_to":"da20952f_964e6636","updated":"2015-09-08 00:03:01.000000000","message":"@Alex\n\nI cannot understand why out-of-tree filters cannot be exposed to users. I feel it is great to know available scheduler-hints parameters by users even if out-of-tree filters.","commit_id":"088b850ad52ab03da91f33ebf69f901082bd913f"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2a80805d08ff07fdfe950e96c0b332e0ef68e927","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    # http://lists.openstack.org/pipermail/openstack-dev/2015-June/067996.html"},{"line_number":57,"context_line":"    # pointed out the limit the scheduler-hints in the API is problematic. So"},{"line_number":58,"context_line":"    # relax it."},{"line_number":59,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":60,"context_line":"}"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_cf575858","line":59,"in_reply_to":"da20952f_964e6636","updated":"2015-09-07 15:20:29.000000000","message":"So, there are two concerns :\n- keeping the same behaviour as for v2.0, ie. relax validation of in-tree hints and accept free-form hints \u003d\u003e that should be the goal of that change\n- provide a mechanism for microversions that allows hints validation based on what filters are activated and identify how/if we should accept out-of-tree hints (re: defcore and refstack) \u003d\u003e that needs to be addressed for Mitaka in a spec IMHO","commit_id":"088b850ad52ab03da91f33ebf69f901082bd913f"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c730ced3a34937903b065cc7f8ed67d35a890487","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    # http://lists.openstack.org/pipermail/openstack-dev/2015-June/067996.html"},{"line_number":57,"context_line":"    # pointed out the limit the scheduler-hints in the API is problematic. So"},{"line_number":58,"context_line":"    # relax it."},{"line_number":59,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":60,"context_line":"}"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_eda592a1","line":59,"in_reply_to":"da20952f_ed227251","updated":"2015-09-07 10:05:31.000000000","message":"I think we can specify \"2.0\" to the decorator schema like\n\n    @extensions.expected_errors((400, 404))\n    @validation.schema(schema_v20, \u00272.0\u0027)\n    @validation.schema(schema)\n    def update(self, req, id, body):\n        ...\n\nand we need to add some code to the decorator to check the api works v2.0 compatible mode.","commit_id":"088b850ad52ab03da91f33ebf69f901082bd913f"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"48c31a54ca9eb6d8db10ff242ba70f2dbdbe11d2","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    # http://lists.openstack.org/pipermail/openstack-dev/2015-June/067996.html"},{"line_number":57,"context_line":"    # pointed out the limit the scheduler-hints in the API is problematic. So"},{"line_number":58,"context_line":"    # relax it."},{"line_number":59,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":60,"context_line":"}"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_5030d655","line":59,"in_reply_to":"da20952f_eda592a1","updated":"2015-09-07 11:08:59.000000000","message":"If we didn\u0027t fix this for v2.1 API, when people switch to v2.1 API, the out of tree filters will be broken.","commit_id":"088b850ad52ab03da91f33ebf69f901082bd913f"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3df7d8bf0ef3596ac13ef9b6e521507056179e9c","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    # http://lists.openstack.org/pipermail/openstack-dev/2015-June/067996.html"},{"line_number":57,"context_line":"    # pointed out the limit the scheduler-hints in the API is problematic. So"},{"line_number":58,"context_line":"    # relax it."},{"line_number":59,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":60,"context_line":"}"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_964e6636","line":59,"in_reply_to":"da20952f_f3e494e0","updated":"2015-09-07 11:57:04.000000000","message":"I think https://review.openstack.org/#/c/220440/  is only for upstream filters. I don\u0027t want the out-of-tree filters\u0027 hint show in the json-schema, that make people think those out-of-tree filters also part of nova api. But finally people found those hints only existed in specific deployment.\n\nSo IadditionalProperties should be True(this is for out-of-tree filters). Then all the  upstream hints will be shown by https://review.openstack.org/#/c/220440/ .","commit_id":"088b850ad52ab03da91f33ebf69f901082bd913f"}],"nova/api/validation/validators.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"9ab3267c4cc4b185d75738862fb2d039b71bd7f0","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                     verb))"},{"line_number":110,"context_line":"    else:"},{"line_number":111,"context_line":"        additional_properties \u003d schema.get(\"additionalProperties\", False)"},{"line_number":112,"context_line":"        if not additional_properties:"},{"line_number":113,"context_line":"            # only strip out parameters if additionalProperties is False"},{"line_number":114,"context_line":"            for prop in extra_properties:"},{"line_number":115,"context_line":"                del instance[prop]"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_735ce94a","line":112,"updated":"2015-09-01 13:14:03.000000000","message":"actually the parameter aP is the value of \"additionalProperties\"\n\nAnd we need unittest for this in https://github.com/openstack/nova/blob/master/nova/tests/unit/api/openstack/test_legacy_v2_compatible_wrapper.py","commit_id":"a7f8f8b3742e459adee3e08b9c9d8fadf8d6adb6"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"7f6e6dd4f3d15b196c87fab602980ac79ec3a506","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                     verb))"},{"line_number":110,"context_line":"    else:"},{"line_number":111,"context_line":"        additional_properties \u003d schema.get(\"additionalProperties\", False)"},{"line_number":112,"context_line":"        if not additional_properties:"},{"line_number":113,"context_line":"            # only strip out parameters if additionalProperties is False"},{"line_number":114,"context_line":"            for prop in extra_properties:"},{"line_number":115,"context_line":"                del instance[prop]"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_8e6cf0d0","line":112,"in_reply_to":"da20952f_735ce94a","updated":"2015-09-01 13:15:28.000000000","message":"Emm. the unittest already have.","commit_id":"a7f8f8b3742e459adee3e08b9c9d8fadf8d6adb6"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"7e5e4ef54c095f3257f2ae8a420d61a861d323a8","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                     verb))"},{"line_number":110,"context_line":"    else:"},{"line_number":111,"context_line":"        additional_properties \u003d schema.get(\"additionalProperties\", False)"},{"line_number":112,"context_line":"        if not additional_properties:"},{"line_number":113,"context_line":"            # only strip out parameters if additionalProperties is False"},{"line_number":114,"context_line":"            for prop in extra_properties:"},{"line_number":115,"context_line":"                del instance[prop]"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_a2d9bf85","line":112,"in_reply_to":"da20952f_735ce94a","updated":"2015-09-01 15:54:50.000000000","message":"The \u0027aP\u0027 param is never used, so I\u0027ll remove it.","commit_id":"a7f8f8b3742e459adee3e08b9c9d8fadf8d6adb6"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3872cdda3a9641e7f23e2e598271ccf691f8466c","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                                require_authority\u003dTrue)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"def _soft_validate_additional_properties(validator, instance, schema):"},{"line_number":79,"context_line":"    \"\"\"This validator function is used for legacy v2 compatible mode in v2.1."},{"line_number":80,"context_line":"    This will skip all the addtional properties checking but keep check the"},{"line_number":81,"context_line":"    \u0027patternProperties\u0027. \u0027patternProperties\u0027 is used for metadata API."}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_8a035376","line":78,"updated":"2015-09-02 05:16:04.000000000","message":"Em....We can\u0027t remove aP. We will get error as below:\n\nERROR (BadRequest): _soft_validate_additional_properties() takes exactly 3 arguments (4 given) (HTTP 400) (Request-ID: req-0ffc45e3-c73c-4eb2-8b2b-2aa269c0163d)","commit_id":"a0c6f4922de31db3dfbd867c25d026b085098ed3"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"32959e7c105afba95d77e0e3a09ac9f210cc1c4c","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                                require_authority\u003dTrue)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"def _soft_validate_additional_properties(validator, instance, schema):"},{"line_number":79,"context_line":"    \"\"\"This validator function is used for legacy v2 compatible mode in v2.1."},{"line_number":80,"context_line":"    This will skip all the addtional properties checking but keep check the"},{"line_number":81,"context_line":"    \u0027patternProperties\u0027. \u0027patternProperties\u0027 is used for metadata API."}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_a28e6d25","line":78,"in_reply_to":"da20952f_8a035376","updated":"2015-09-02 13:31:55.000000000","message":"It wasn\u0027t used in the method at all. I removed it from the method signature and any test that called it.\n\nAlso, how did a variable name like \u0027aP\u0027 ever get into the codebase? We should never name things like that.","commit_id":"a0c6f4922de31db3dfbd867c25d026b085098ed3"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"4955e889cc71028f53b82f4f575519909bd32cf3","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                                require_authority\u003dTrue)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"def _soft_validate_additional_properties(validator, instance, schema):"},{"line_number":79,"context_line":"    \"\"\"This validator function is used for legacy v2 compatible mode in v2.1."},{"line_number":80,"context_line":"    This will skip all the addtional properties checking but keep check the"},{"line_number":81,"context_line":"    \u0027patternProperties\u0027. \u0027patternProperties\u0027 is used for metadata API."}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_caf14b97","line":78,"in_reply_to":"da20952f_8a035376","updated":"2015-09-02 05:21:52.000000000","message":"Yea, we need that arg","commit_id":"a0c6f4922de31db3dfbd867c25d026b085098ed3"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3872cdda3a9641e7f23e2e598271ccf691f8466c","unresolved":false,"context_lines":[{"line_number":90,"context_line":"      properties on the instance will not be touched."},{"line_number":91,"context_line":"    - if the schema has an additionalProperties value of False, or does not"},{"line_number":92,"context_line":"      specify a value for additionalProperties, the extra properties will"},{"line_number":93,"context_line":"      stripped from the instance."},{"line_number":94,"context_line":"    \"\"\""},{"line_number":95,"context_line":"    if not validator.is_type(instance, \"object\"):"},{"line_number":96,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_aa089792","line":93,"updated":"2015-09-02 05:16:04.000000000","message":"thanks for the doc!","commit_id":"a0c6f4922de31db3dfbd867c25d026b085098ed3"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"32959e7c105afba95d77e0e3a09ac9f210cc1c4c","unresolved":false,"context_lines":[{"line_number":90,"context_line":"      properties on the instance will not be touched."},{"line_number":91,"context_line":"    - if the schema has an additionalProperties value of False, or does not"},{"line_number":92,"context_line":"      specify a value for additionalProperties, the extra properties will"},{"line_number":93,"context_line":"      stripped from the instance."},{"line_number":94,"context_line":"    \"\"\""},{"line_number":95,"context_line":"    if not validator.is_type(instance, \"object\"):"},{"line_number":96,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_e2c30537","line":93,"in_reply_to":"da20952f_aa089792","updated":"2015-09-02 13:31:55.000000000","message":"I wrote it for my own benefit. I needed to understand the logic, and this is one reason why I felt that the \u0027aP\u0027 parameter isn\u0027t used and should be removed.","commit_id":"a0c6f4922de31db3dfbd867c25d026b085098ed3"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3872cdda3a9641e7f23e2e598271ccf691f8466c","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            error % (\", \".join(repr(extra) for extra in extra_properties),"},{"line_number":117,"context_line":"                     verb))"},{"line_number":118,"context_line":"    else:"},{"line_number":119,"context_line":"        if not schema.get(\"additionalProperties\", False):"},{"line_number":120,"context_line":"            # only strip out parameters if additionalProperties is False"},{"line_number":121,"context_line":"            for prop in extra_properties:"},{"line_number":122,"context_line":"                del instance[prop]"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_4afd3b6d","line":119,"updated":"2015-09-02 05:16:04.000000000","message":"we should use aP at here.\n\nif not aP:\n\n....","commit_id":"a0c6f4922de31db3dfbd867c25d026b085098ed3"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"4955e889cc71028f53b82f4f575519909bd32cf3","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            error % (\", \".join(repr(extra) for extra in extra_properties),"},{"line_number":117,"context_line":"                     verb))"},{"line_number":118,"context_line":"    else:"},{"line_number":119,"context_line":"        if not schema.get(\"additionalProperties\", False):"},{"line_number":120,"context_line":"            # only strip out parameters if additionalProperties is False"},{"line_number":121,"context_line":"            for prop in extra_properties:"},{"line_number":122,"context_line":"                del instance[prop]"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_ca1f0bb6","line":119,"in_reply_to":"da20952f_4afd3b6d","updated":"2015-09-02 05:21:52.000000000","message":"but scheduler_hints schema will have this as False right?","commit_id":"a0c6f4922de31db3dfbd867c25d026b085098ed3"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"32959e7c105afba95d77e0e3a09ac9f210cc1c4c","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            error % (\", \".join(repr(extra) for extra in extra_properties),"},{"line_number":117,"context_line":"                     verb))"},{"line_number":118,"context_line":"    else:"},{"line_number":119,"context_line":"        if not schema.get(\"additionalProperties\", False):"},{"line_number":120,"context_line":"            # only strip out parameters if additionalProperties is False"},{"line_number":121,"context_line":"            for prop in extra_properties:"},{"line_number":122,"context_line":"                del instance[prop]"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_c21601a7","line":119,"in_reply_to":"da20952f_ca1f0bb6","updated":"2015-09-02 13:31:55.000000000","message":"This is where the logic wasn\u0027t very clear. If we use the schema value, then \u0027aP\u0027 isn\u0027t needed. If we use \u0027aP\u0027, then why do we have the \u0027additionalProperties\u0027 value in the schema?","commit_id":"a0c6f4922de31db3dfbd867c25d026b085098ed3"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"c5445771ecb09c47918b68d8a2a869ee18aa5b6b","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    - if the schema has an additionalProperties value of True, the extra"},{"line_number":88,"context_line":"      properties on the instance will not be touched."},{"line_number":89,"context_line":"    - if the schema has an additionalProperties value of False and there"},{"line_number":90,"context_line":"      aren\u0027t patternProperties specified, the extra properties will stripped"},{"line_number":91,"context_line":"      from the instance."},{"line_number":92,"context_line":"    - if the schema has an additionalProperties value of False and there"},{"line_number":93,"context_line":"      are patternProperties specified, the extra properties will not be"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_dd5f7b3f","line":90,"updated":"2015-09-03 20:03:30.000000000","message":"nit: will *be*","commit_id":"6b30233b126a82bf87802e581e8507f880867383"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"435fabba7752ae84fe8250f2bfc3d7749972e636","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    - if the schema has an additionalProperties value of True, the extra"},{"line_number":88,"context_line":"      properties on the instance will not be touched."},{"line_number":89,"context_line":"    - if the schema has an additionalProperties value of False and there"},{"line_number":90,"context_line":"      aren\u0027t patternProperties specified, the extra properties will stripped"},{"line_number":91,"context_line":"      from the instance."},{"line_number":92,"context_line":"    - if the schema has an additionalProperties value of False and there"},{"line_number":93,"context_line":"      are patternProperties specified, the extra properties will not be"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_974b1687","line":90,"in_reply_to":"da20952f_dd5f7b3f","updated":"2015-09-04 03:10:52.000000000","message":"thanks","commit_id":"6b30233b126a82bf87802e581e8507f880867383"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a72b34428831698bb1deb51fb356363ab014091d","unresolved":false,"context_lines":[{"line_number":91,"context_line":"      from the instance."},{"line_number":92,"context_line":"    - if the schema has an additionalProperties value of False and there"},{"line_number":93,"context_line":"      are patternProperties specified, the extra properties will not be"},{"line_number":94,"context_line":"      touched"},{"line_number":95,"context_line":"    \"\"\""},{"line_number":96,"context_line":"    if not validator.is_type(instance, \"object\") or aP:"},{"line_number":97,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_977a36f0","line":94,"updated":"2015-09-04 02:56:16.000000000","message":"We should add in this case, we do raise validation error if pattern does not match.","commit_id":"6b30233b126a82bf87802e581e8507f880867383"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"435fabba7752ae84fe8250f2bfc3d7749972e636","unresolved":false,"context_lines":[{"line_number":91,"context_line":"      from the instance."},{"line_number":92,"context_line":"    - if the schema has an additionalProperties value of False and there"},{"line_number":93,"context_line":"      are patternProperties specified, the extra properties will not be"},{"line_number":94,"context_line":"      touched"},{"line_number":95,"context_line":"    \"\"\""},{"line_number":96,"context_line":"    if not validator.is_type(instance, \"object\") or aP:"},{"line_number":97,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_b7509a33","line":94,"in_reply_to":"da20952f_977a36f0","updated":"2015-09-04 03:10:52.000000000","message":"thanks","commit_id":"6b30233b126a82bf87802e581e8507f880867383"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"c5445771ecb09c47918b68d8a2a869ee18aa5b6b","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    if patterns:"},{"line_number":114,"context_line":"        error \u003d \"Additional properties are not allowed (%s %s unexpected)\""},{"line_number":115,"context_line":"        verb \u003d \"was\" if len(extra_properties) \u003d\u003d 1 else \"were\""},{"line_number":116,"context_line":"        yield jsonschema_exc.ValidationError("},{"line_number":117,"context_line":"            error % (\", \".join(repr(extra) for extra in extra_properties),"},{"line_number":118,"context_line":"                     verb))"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_d2d20a00","line":115,"updated":"2015-09-03 20:03:30.000000000","message":"well, this change is not needed, right?","commit_id":"6b30233b126a82bf87802e581e8507f880867383"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"435fabba7752ae84fe8250f2bfc3d7749972e636","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    if patterns:"},{"line_number":114,"context_line":"        error \u003d \"Additional properties are not allowed (%s %s unexpected)\""},{"line_number":115,"context_line":"        verb \u003d \"was\" if len(extra_properties) \u003d\u003d 1 else \"were\""},{"line_number":116,"context_line":"        yield jsonschema_exc.ValidationError("},{"line_number":117,"context_line":"            error % (\", \".join(repr(extra) for extra in extra_properties),"},{"line_number":118,"context_line":"                     verb))"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_17606600","line":115,"in_reply_to":"da20952f_d2d20a00","updated":"2015-09-04 03:10:52.000000000","message":"yea, I can remove it","commit_id":"6b30233b126a82bf87802e581e8507f880867383"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"ee989948638e95d12e5707fcb20378c3f4ecb062","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                                require_authority\u003dTrue)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"def _soft_validate_additional_properties(validator, aP, instance, schema):"},{"line_number":79,"context_line":"    \"\"\"This validator function is used for legacy v2 compatible mode in v2.1."},{"line_number":80,"context_line":"    This will skip all the addtional properties checking but keep check the"},{"line_number":81,"context_line":"    \u0027patternProperties\u0027. \u0027patternProperties\u0027 is used for metadata API."}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_c8e9db80","line":78,"updated":"2015-09-04 13:17:56.000000000","message":"If we are changing the logic of this method so that the \u0027aP\u0027 parameter is actually used, we should either rename it to something sensible and meaningful, or add a comment explaining why we are using such a terrible name for this parameter.","commit_id":"088b850ad52ab03da91f33ebf69f901082bd913f"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a2fb9ceabe04794f2646836f81a64dc46b9cda28","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                                require_authority\u003dTrue)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"def _soft_validate_additional_properties(validator, aP, instance, schema):"},{"line_number":79,"context_line":"    \"\"\"This validator function is used for legacy v2 compatible mode in v2.1."},{"line_number":80,"context_line":"    This will skip all the addtional properties checking but keep check the"},{"line_number":81,"context_line":"    \u0027patternProperties\u0027. \u0027patternProperties\u0027 is used for metadata API."}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_3e7fec67","line":78,"in_reply_to":"da20952f_c8e9db80","updated":"2015-09-09 02:07:00.000000000","message":"yea, let me check the name. Actually I copy that name from the json-schema implement","commit_id":"088b850ad52ab03da91f33ebf69f901082bd913f"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"ee989948638e95d12e5707fcb20378c3f4ecb062","unresolved":false,"context_lines":[{"line_number":78,"context_line":"def _soft_validate_additional_properties(validator, aP, instance, schema):"},{"line_number":79,"context_line":"    \"\"\"This validator function is used for legacy v2 compatible mode in v2.1."},{"line_number":80,"context_line":"    This will skip all the addtional properties checking but keep check the"},{"line_number":81,"context_line":"    \u0027patternProperties\u0027. \u0027patternProperties\u0027 is used for metadata API."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    If there are not any properties on the instance that are not specified in"},{"line_number":84,"context_line":"    the schema, this will return without any effect. If there are any such"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_68b1af8e","line":81,"updated":"2015-09-04 13:17:56.000000000","message":"You didn\u0027t add the condition when the \u0027aP\u0027 parameter is passed. That overrides all of the remaining logic, so it\u0027s very important to document that, and also emphasizes why it is important to give it a meaningful name.","commit_id":"088b850ad52ab03da91f33ebf69f901082bd913f"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"3cb6c011472721c82bca711833b15b97369bc370","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        if len(extra_properties) \u003d\u003d 1:"},{"line_number":116,"context_line":"            verb \u003d \u0027was\u0027"},{"line_number":117,"context_line":"        else:"},{"line_number":118,"context_line":"            verb \u003d \u0027were\u0027"},{"line_number":119,"context_line":"        yield jsonschema_exc.ValidationError("},{"line_number":120,"context_line":"            error % (\", \".join(repr(extra) for extra in extra_properties),"},{"line_number":121,"context_line":"                     verb))"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_207e7e19","line":118,"updated":"2015-09-04 05:20:23.000000000","message":"nit: It seems not necessary to change here.. but I don\u0027t block this small thing.","commit_id":"088b850ad52ab03da91f33ebf69f901082bd913f"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"20616e015de4a625a5f369051e8cc8eb203fd99f","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        if len(extra_properties) \u003d\u003d 1:"},{"line_number":116,"context_line":"            verb \u003d \u0027was\u0027"},{"line_number":117,"context_line":"        else:"},{"line_number":118,"context_line":"            verb \u003d \u0027were\u0027"},{"line_number":119,"context_line":"        yield jsonschema_exc.ValidationError("},{"line_number":120,"context_line":"            error % (\", \".join(repr(extra) for extra in extra_properties),"},{"line_number":121,"context_line":"                     verb))"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_80e98ab9","line":118,"in_reply_to":"da20952f_207e7e19","updated":"2015-09-04 05:25:09.000000000","message":"oops...","commit_id":"088b850ad52ab03da91f33ebf69f901082bd913f"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3189d346c5343dbf84f574d100afc370951ad294","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        if len(extra_properties) \u003d\u003d 1:"},{"line_number":116,"context_line":"            verb \u003d \u0027was\u0027"},{"line_number":117,"context_line":"        else:"},{"line_number":118,"context_line":"            verb \u003d \u0027were\u0027"},{"line_number":119,"context_line":"        yield jsonschema_exc.ValidationError("},{"line_number":120,"context_line":"            error % (\", \".join(repr(extra) for extra in extra_properties),"},{"line_number":121,"context_line":"                     verb))"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_232f6389","line":118,"in_reply_to":"da20952f_80e98ab9","updated":"2015-09-04 09:12:26.000000000","message":"Yeah I noticed it in PS3 but +1\u0027d it because it\u0027s a nit","commit_id":"088b850ad52ab03da91f33ebf69f901082bd913f"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"79e5cab61ef471832bc323454318d03c34a2ae32","unresolved":false,"context_lines":[{"line_number":94,"context_line":"      from the instance."},{"line_number":95,"context_line":"    - if the schema has an additionalProperties value of False and there"},{"line_number":96,"context_line":"      are patternProperties specified, the extra properties will not be"},{"line_number":97,"context_line":"      touched and raise validation error if pattern doesn\u0027t match."},{"line_number":98,"context_line":"    \"\"\""},{"line_number":99,"context_line":"    if (not validator.is_type(instance, \"object\") or"},{"line_number":100,"context_line":"            additional_properties_value):"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_cf34eafc","line":97,"updated":"2015-09-09 11:58:17.000000000","message":"The explanation for the behavior when \u0027additional_properties_value\u0027 is passed has still not been added.","commit_id":"4a29486f4cf15720d09ed0ed86c47cd07f5cd14a"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"a58fab2f26c232ce39f92b5b6943f97e363448a1","unresolved":false,"context_lines":[{"line_number":94,"context_line":"      from the instance."},{"line_number":95,"context_line":"    - if the schema has an additionalProperties value of False and there"},{"line_number":96,"context_line":"      are patternProperties specified, the extra properties will not be"},{"line_number":97,"context_line":"      touched and raise validation error if pattern doesn\u0027t match."},{"line_number":98,"context_line":"    \"\"\""},{"line_number":99,"context_line":"    if (not validator.is_type(instance, \"object\") or"},{"line_number":100,"context_line":"            additional_properties_value):"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_1c543052","line":97,"in_reply_to":"da20952f_0fa40c06","updated":"2015-09-10 12:13:15.000000000","message":"Fair enough; I\u0027ve created a bug report so that we don\u0027t forget: https://bugs.launchpad.net/nova/+bug/1494289","commit_id":"4a29486f4cf15720d09ed0ed86c47cd07f5cd14a"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"9840232c880216b96098909abc84a5e9265c25fa","unresolved":false,"context_lines":[{"line_number":94,"context_line":"      from the instance."},{"line_number":95,"context_line":"    - if the schema has an additionalProperties value of False and there"},{"line_number":96,"context_line":"      are patternProperties specified, the extra properties will not be"},{"line_number":97,"context_line":"      touched and raise validation error if pattern doesn\u0027t match."},{"line_number":98,"context_line":"    \"\"\""},{"line_number":99,"context_line":"    if (not validator.is_type(instance, \"object\") or"},{"line_number":100,"context_line":"            additional_properties_value):"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_0fa40c06","line":97,"in_reply_to":"da20952f_cf34eafc","updated":"2015-09-09 19:45:31.000000000","message":"I feel like we can fix that up after","commit_id":"4a29486f4cf15720d09ed0ed86c47cd07f5cd14a"}]}
