)]}'
{"nova/cmd/status.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5220f62211e50196302f67292651baae936abb1f","unresolved":false,"context_lines":[{"line_number":196,"context_line":"            versions \u003d self._placement_get(\"/\")"},{"line_number":197,"context_line":"            max_version \u003d pkg_resources.parse_version("},{"line_number":198,"context_line":"                versions[\"versions\"][0][\"max_version\"])"},{"line_number":199,"context_line":"            # NOTE(mriedem): 1.14 is required by nova-compute services to"},{"line_number":200,"context_line":"            # get and set parent resource provider UUIDs for nested resource"},{"line_number":201,"context_line":"            # provider support."},{"line_number":202,"context_line":"            # NOTE: If you bump this version, remember to update the history"},{"line_number":203,"context_line":"            # section in the nova-status man page (doc/source/cli/nova-status)."},{"line_number":204,"context_line":"            needs_version \u003d pkg_resources.parse_version(\"1.17\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_86d6904f","line":201,"range":{"start_line":199,"start_character":12,"end_line":201,"end_character":31},"updated":"2018-01-24 17:19:49.000000000","message":"This could be updated...","commit_id":"6a818ebc1987d728958e26e131f6b46f462c04ac"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"798e927346dce9db74a2f2699eee34a11e854cc3","unresolved":false,"context_lines":[{"line_number":196,"context_line":"            versions \u003d self._placement_get(\"/\")"},{"line_number":197,"context_line":"            max_version \u003d pkg_resources.parse_version("},{"line_number":198,"context_line":"                versions[\"versions\"][0][\"max_version\"])"},{"line_number":199,"context_line":"            # NOTE(mriedem): 1.14 is required by nova-compute services to"},{"line_number":200,"context_line":"            # get and set parent resource provider UUIDs for nested resource"},{"line_number":201,"context_line":"            # provider support."},{"line_number":202,"context_line":"            # NOTE: If you bump this version, remember to update the history"},{"line_number":203,"context_line":"            # section in the nova-status man page (doc/source/cli/nova-status)."},{"line_number":204,"context_line":"            needs_version \u003d pkg_resources.parse_version(\"1.17\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_245a8129","line":201,"range":{"start_line":199,"start_character":12,"end_line":201,"end_character":31},"in_reply_to":"5f93b717_86d6904f","updated":"2018-01-30 19:00:11.000000000","message":"Done","commit_id":"6a818ebc1987d728958e26e131f6b46f462c04ac"}],"nova/scheduler/client/report.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5220f62211e50196302f67292651baae936abb1f","unresolved":false,"context_lines":[{"line_number":310,"context_line":"        API to claim resources against one or more resource providers that meet"},{"line_number":311,"context_line":"        the requested resource constraints."},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"        The provider summaries is a dict, keyed by resource provider UUID, of"},{"line_number":314,"context_line":"        inventory and capacity information for any resource provider involved"},{"line_number":315,"context_line":"        in the allocation_requests."},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"        :returns: A tuple with a list of allocation_request dicts, a dict of"},{"line_number":318,"context_line":"                  provider information, and the microversion used to request"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_66d26437","line":315,"range":{"start_line":313,"start_character":8,"end_line":315,"end_character":35},"updated":"2018-01-24 17:19:49.000000000","message":"These also include traits now right?","commit_id":"6a818ebc1987d728958e26e131f6b46f462c04ac"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"798e927346dce9db74a2f2699eee34a11e854cc3","unresolved":false,"context_lines":[{"line_number":310,"context_line":"        API to claim resources against one or more resource providers that meet"},{"line_number":311,"context_line":"        the requested resource constraints."},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"        The provider summaries is a dict, keyed by resource provider UUID, of"},{"line_number":314,"context_line":"        inventory and capacity information for any resource provider involved"},{"line_number":315,"context_line":"        in the allocation_requests."},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"        :returns: A tuple with a list of allocation_request dicts, a dict of"},{"line_number":318,"context_line":"                  provider information, and the microversion used to request"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_e43fb9b1","line":315,"range":{"start_line":313,"start_character":8,"end_line":315,"end_character":35},"in_reply_to":"5f93b717_66d26437","updated":"2018-01-30 19:00:11.000000000","message":"Done","commit_id":"6a818ebc1987d728958e26e131f6b46f462c04ac"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5220f62211e50196302f67292651baae936abb1f","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        # prepped to accept the whole shebang, we\u0027ll join up all the resources"},{"line_number":329,"context_line":"        # and traits in the query string (via a new method on ResourceRequest)."},{"line_number":330,"context_line":"        res \u003d resources.get_request_group(None).resources"},{"line_number":331,"context_line":"        required_traits \u003d resources.get_request_group(None).required_traits"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        resource_query \u003d \",\".join("},{"line_number":334,"context_line":"            sorted(\"%s:%s\" % (rc, amount)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_860a1088","line":331,"range":{"start_line":331,"start_character":36,"end_line":331,"end_character":53},"updated":"2018-01-24 17:19:49.000000000","message":"This caches the request group so it\u0027s fine to call it twice.","commit_id":"6a818ebc1987d728958e26e131f6b46f462c04ac"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7405ea9c47b744eefe42e89371f2ec1e7bc92060","unresolved":false,"context_lines":[{"line_number":339,"context_line":"        if required_traits:"},{"line_number":340,"context_line":"            qs_params[\u0027required\u0027] \u003d \",\".join(required_traits)"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"        version \u003d \u00271.17\u0027"},{"line_number":343,"context_line":"        url \u003d \"/allocation_candidates?%s\" % parse.urlencode(qs_params)"},{"line_number":344,"context_line":"        resp \u003d self.get(url, version\u003dversion)"},{"line_number":345,"context_line":"        if resp.status_code \u003d\u003d 200:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_9c85ca5c","line":342,"updated":"2018-01-31 19:44:53.000000000","message":"We should probably also update this doc:\n\nhttps://docs.openstack.org/nova/latest/user/placement.html#queens-17-0-0","commit_id":"6a818ebc1987d728958e26e131f6b46f462c04ac"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5220f62211e50196302f67292651baae936abb1f","unresolved":false,"context_lines":[{"line_number":347,"context_line":"            return (data[\u0027allocation_requests\u0027], data[\u0027provider_summaries\u0027],"},{"line_number":348,"context_line":"                    version)"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        msg \u003d (\"Failed to retrieve allocation candidates from placement API \""},{"line_number":351,"context_line":"               \"for filters %(resources)s. Got %(status_code)d: %(err_text)s.\")"},{"line_number":352,"context_line":"        args \u003d {"},{"line_number":353,"context_line":"            \u0027resources\u0027: res,"},{"line_number":354,"context_line":"            \u0027status_code\u0027: resp.status_code,"},{"line_number":355,"context_line":"            \u0027err_text\u0027: resp.text,"},{"line_number":356,"context_line":"        }"},{"line_number":357,"context_line":"        LOG.error(msg, args)"},{"line_number":358,"context_line":"        return None, None, None"},{"line_number":359,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_465e48e7","line":356,"range":{"start_line":350,"start_character":8,"end_line":356,"end_character":9},"updated":"2018-01-24 17:19:49.000000000","message":"nit: should probably update this to include the required traits.","commit_id":"6a818ebc1987d728958e26e131f6b46f462c04ac"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"798e927346dce9db74a2f2699eee34a11e854cc3","unresolved":false,"context_lines":[{"line_number":347,"context_line":"            return (data[\u0027allocation_requests\u0027], data[\u0027provider_summaries\u0027],"},{"line_number":348,"context_line":"                    version)"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        msg \u003d (\"Failed to retrieve allocation candidates from placement API \""},{"line_number":351,"context_line":"               \"for filters %(resources)s. Got %(status_code)d: %(err_text)s.\")"},{"line_number":352,"context_line":"        args \u003d {"},{"line_number":353,"context_line":"            \u0027resources\u0027: res,"},{"line_number":354,"context_line":"            \u0027status_code\u0027: resp.status_code,"},{"line_number":355,"context_line":"            \u0027err_text\u0027: resp.text,"},{"line_number":356,"context_line":"        }"},{"line_number":357,"context_line":"        LOG.error(msg, args)"},{"line_number":358,"context_line":"        return None, None, None"},{"line_number":359,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_4478ed8e","line":356,"range":{"start_line":350,"start_character":8,"end_line":356,"end_character":9},"in_reply_to":"5f93b717_465e48e7","updated":"2018-01-30 19:00:11.000000000","message":"Done","commit_id":"6a818ebc1987d728958e26e131f6b46f462c04ac"}],"releasenotes/notes/request-traits-in-nova-ffcb00f76229b6e9.yaml":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"9c0ef5377ae13443baa21677b0b1cdc4ea029e86","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add traits support to the Nova. The new flavor extra spec is added to"},{"line_number":5,"context_line":"    support specifying the required traits. The syntax of extra spec is"},{"line_number":6,"context_line":"    as below:"},{"line_number":7,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":9,"id":"7f96bb07_ceb98879","line":4,"range":{"start_line":4,"start_character":35,"end_line":4,"end_character":39},"updated":"2018-01-24 16:59:45.000000000","message":"A new","commit_id":"6a818ebc1987d728958e26e131f6b46f462c04ac"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"9c0ef5377ae13443baa21677b0b1cdc4ea029e86","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add traits support to the Nova. The new flavor extra spec is added to"},{"line_number":5,"context_line":"    support specifying the required traits. The syntax of extra spec is"},{"line_number":6,"context_line":"    as below:"},{"line_number":7,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":9,"id":"7f96bb07_4ef7b85a","line":4,"range":{"start_line":4,"start_character":23,"end_line":4,"end_character":34},"updated":"2018-01-24 16:59:45.000000000","message":"there\u0027s either a word missing, identifying some part of nova, or \u0027the\u0027 can be removed to indicate that it is all of Nova. Based on what\u0027s below it looks like perhaps you want \"scheduler\"?","commit_id":"6a818ebc1987d728958e26e131f6b46f462c04ac"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"798e927346dce9db74a2f2699eee34a11e854cc3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add traits support to the Nova. The new flavor extra spec is added to"},{"line_number":5,"context_line":"    support specifying the required traits. The syntax of extra spec is"},{"line_number":6,"context_line":"    as below:"},{"line_number":7,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":9,"id":"5f93b717_64964942","line":4,"range":{"start_line":4,"start_character":35,"end_line":4,"end_character":39},"in_reply_to":"7f96bb07_ceb98879","updated":"2018-01-30 19:00:11.000000000","message":"Done","commit_id":"6a818ebc1987d728958e26e131f6b46f462c04ac"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"9c0ef5377ae13443baa21677b0b1cdc4ea029e86","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    The scheduler will pass traits to the GET /allocation_candidates endpoint"},{"line_number":12,"context_line":"    in the Placement API to filter out resource providers with each of the"},{"line_number":13,"context_line":"    required traits. Currently the only valid value is required. For any other"},{"line_number":14,"context_line":"    value will be considered as invalid."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"7f96bb07_8e74e0d0","line":13,"range":{"start_line":13,"start_character":65,"end_line":13,"end_character":72},"updated":"2018-01-24 16:59:45.000000000","message":"Any","commit_id":"6a818ebc1987d728958e26e131f6b46f462c04ac"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"9c0ef5377ae13443baa21677b0b1cdc4ea029e86","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    The scheduler will pass traits to the GET /allocation_candidates endpoint"},{"line_number":12,"context_line":"    in the Placement API to filter out resource providers with each of the"},{"line_number":13,"context_line":"    required traits. Currently the only valid value is required. For any other"},{"line_number":14,"context_line":"    value will be considered as invalid."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"7f96bb07_0e52103c","line":13,"range":{"start_line":13,"start_character":55,"end_line":13,"end_character":63},"updated":"2018-01-24 16:59:45.000000000","message":"consider quoting \"required\"","commit_id":"6a818ebc1987d728958e26e131f6b46f462c04ac"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"9c0ef5377ae13443baa21677b0b1cdc4ea029e86","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    - trait:STORAGE_DISK_SSD\u003drequired"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    The scheduler will pass traits to the GET /allocation_candidates endpoint"},{"line_number":12,"context_line":"    in the Placement API to filter out resource providers with each of the"},{"line_number":13,"context_line":"    required traits. Currently the only valid value is required. For any other"},{"line_number":14,"context_line":"    value will be considered as invalid."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"5f93b717_2313ee68","line":13,"range":{"start_line":12,"start_character":11,"end_line":13,"end_character":19},"updated":"2018-01-24 16:59:45.000000000","message":"filter out means remove and that\u0027s now what\u0027s happening here, try:\n\n...in the Placement API to include only resource providers that can satisfy the required traits.\n\nThe use of the word \"satisfy\" is sufficiently ambiguous that nested providers can be thought of as part of the satisfying group.","commit_id":"6a818ebc1987d728958e26e131f6b46f462c04ac"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"798e927346dce9db74a2f2699eee34a11e854cc3","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    The scheduler will pass traits to the GET /allocation_candidates endpoint"},{"line_number":12,"context_line":"    in the Placement API to filter out resource providers with each of the"},{"line_number":13,"context_line":"    required traits. Currently the only valid value is required. For any other"},{"line_number":14,"context_line":"    value will be considered as invalid."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"5f93b717_4491cd46","line":13,"range":{"start_line":13,"start_character":65,"end_line":13,"end_character":72},"in_reply_to":"7f96bb07_8e74e0d0","updated":"2018-01-30 19:00:11.000000000","message":"Done","commit_id":"6a818ebc1987d728958e26e131f6b46f462c04ac"}]}
